From 1daab6b4ff28a211624ca0058629caea4828944d Mon Sep 17 00:00:00 2001 From: Toni Wilen Date: Mon, 30 Jun 2025 18:57:38 +0300 Subject: [PATCH] "Invalid" modes should still draw background color and sprites if AGA bordersprites are active. --- genlinetoscr.cpp | 187 +- linetoscr_aga_fm0.cpp | 83492 +++++++++++++++++++++------ linetoscr_aga_fm0_genlock.cpp | 45452 ++++++++++++--- linetoscr_aga_fm1.cpp | 80812 +++++++++++++++++++------- linetoscr_aga_fm1_genlock.cpp | 47436 +++++++++++---- linetoscr_aga_fm2.cpp | 73426 +++++++++++++++-------- linetoscr_aga_fm2_genlock.cpp | 43478 ++++++++++---- linetoscr_ecs_shres.cpp | 30 - linetoscr_ocs_ecs.cpp | 30548 +++++++--- linetoscr_ocs_ecs_genlock.cpp | 6302 +- linetoscr_ocs_ecs_ntsc.cpp | 31190 +++++++--- linetoscr_ocs_ecs_ntsc_genlock.cpp | 6476 ++- 12 files changed, 337876 insertions(+), 110953 deletions(-) diff --git a/genlinetoscr.cpp b/genlinetoscr.cpp index f9113500..464b4079 100644 --- a/genlinetoscr.cpp +++ b/genlinetoscr.cpp @@ -15,7 +15,7 @@ static FILE *outfile; static int outfile_indent = 0; -static int aga, outres, res, planes, modes, bplfmode, sprres, oddeven, ecsshres, genlock, ntsc, filtered; +static int aga, outres, res, planes, modes, bplfmode, sprres, oddeven, ecsshres, genlock, ntsc, filtered, modetype; static int isbuf2 = 0; static int maxplanes = 8; static char funcnames[500000], funcnamesf[500000]; @@ -245,6 +245,10 @@ static void gen_bplpixmode_aga(int num) static void gen_getbpl(int num, int maxplanes) { + if (modetype <= 0) { + return; + } + int p = planes < maxplanes ? planes : maxplanes; if (bplfmode == 2) { outf("loaded_pix = getbpl%d_64();", p); @@ -259,6 +263,10 @@ static void gen_getbpl(int num, int maxplanes) static void gen_shiftbpl(int maxplanes) { + if (modetype <= 0) { + return; + } + int p = planes < maxplanes ? planes : maxplanes; if (bplfmode == 2) { outf("shiftbpl%d_64();", p); @@ -269,6 +277,10 @@ static void gen_shiftbpl(int maxplanes) static void gen_shiftbpl_hr(int maxplanes) { + if (modetype <= 0) { + return; + } + int p = planes < maxplanes ? planes : maxplanes; int add; if (outres > res) { @@ -408,6 +420,10 @@ static void gen_copybpl_lines(int oddeven) static void gen_copybpl(void) { + if (modetype <= 0) { + return; + } + if (oddeven) { // bitplane shifter shifting outf("if (bpldat_copy[0] && (denise_hcounter_cmp & %d) == bplcon1_shift[0]) { ", ((16 << bplfmode) >> res) - 1); @@ -438,6 +454,10 @@ static void gen_copybpl(void) static void gen_copybpl_hr(int add) { + if (modetype <= 0) { + return; + } + int max; if (outres > res) { max = 1 << (outres - res); @@ -493,10 +513,14 @@ static void gen_matchspr(int i) if (sprres >= 0) { if (aga) { outf("matchsprites_aga(cnt + %d);", i); - } else if (ecsshres) { - outf("matchsprites_ecs_shres(cnt + %d);", i); } else { - outf("matchsprites(cnt + %d);", i); + if (modetype > 0) { + if (ecsshres) { + outf("matchsprites_ecs_shres(cnt + %d);", i); + } else { + outf("matchsprites(cnt + %d);", i); + } + } } } } @@ -539,15 +563,19 @@ static void gen_pix_aga(void) outf("gpix%d = get_genlock_transparency_border();", off); } outf(" dpix_val%d = bordercolor;", off); - outf(" if (denise_hdiw && bpl1dat_trigger) {"); - outf(" pix%d = loaded_pixs[%d];", off, off); - outf(" clxdat |= bplcoltable[pix%d];", off); - gen_bplpixmode_aga(off); + if (modetype > 0) { + outf(" if (denise_hdiw && bpl1dat_trigger) {"); + outf(" pix%d = loaded_pixs[%d];", off, off); + outf(" clxdat |= bplcoltable[pix%d];", off); + gen_bplpixmode_aga(off); + } outf(" }"); - outf(" last_bpl_pix = pix%d;", off); - outf("}"); - gen_shiftbpl_hr(maxplanes); - gen_copybpl_hr(off); + if (modetype > 0) { + outf(" last_bpl_pix = pix%d;", off); + outf("}"); + gen_shiftbpl_hr(maxplanes); + gen_copybpl_hr(off); + } if (sprres >= 0) { gen_sprpix(off); @@ -556,7 +584,9 @@ static void gen_pix_aga(void) } } - outf("loaded_pixs[%d] = loaded_pix;", off); + if (modetype > 0) { + outf("loaded_pixs[%d] = loaded_pix;", off); + } if (res > outres) { for (int i = 0; i < (1 << (res - outres)) - 1; i++) { @@ -568,31 +598,39 @@ static void gen_pix_aga(void) outf("gpix%d = get_genlock_transparency_border();", off); } outf(" dpix_val%d = bordercolor;", off); - outf(" if (denise_hdiw && bpl1dat_trigger) {"); - outf(" pix%d = loaded_pixs[%d];", off, off); - outf(" clxdat |= bplcoltable[pix%d];", off); - gen_bplpixmode_aga(off); + if (modetype > 0) { + outf(" if (denise_hdiw && bpl1dat_trigger) {"); + outf(" pix%d = loaded_pixs[%d];", off, off); + outf(" clxdat |= bplcoltable[pix%d];", off); + gen_bplpixmode_aga(off); + } outf(" }"); - outf(" last_bpl_pix = pix%d;", off); - outf("}"); - gen_shiftbpl_hr(maxplanes); - gen_copybpl_hr(off); - outf("loaded_pixs[%d] = loaded_pix;", off); + if (modetype > 0) { + outf(" last_bpl_pix = pix%d;", off); + outf("}"); + gen_shiftbpl_hr(maxplanes); + gen_copybpl_hr(off); + outf("loaded_pixs[%d] = loaded_pix;", off); + } } else { // HAM special case, all pixels must be processed. if (modes == CMODE_HAM) { gen_prepix(off); outf("if (!denise_blank_active) {"); outf(" dpix_val%d = bordercolor;", off); - outf(" if (denise_hdiw && bpl1dat_trigger) {"); - outf(" pix%d = loaded_pixs[%d];", off, off); - outf(" decode_ham_pixel_aga(pix%d);", off); - outf("}"); - outf(" last_bpl_pix = pix%d;", off); + if (modetype > 0) { + outf(" if (denise_hdiw && bpl1dat_trigger) {"); + outf(" pix%d = loaded_pixs[%d];", off, off); + outf(" decode_ham_pixel_aga(pix%d);", off); + } outf("}"); - gen_shiftbpl_hr(maxplanes); - gen_copybpl_hr(off); - outf("loaded_pixs[%d] = loaded_pix;", off); + if (modetype > 0) { + outf(" last_bpl_pix = pix%d;", off); + outf("}"); + gen_shiftbpl_hr(maxplanes); + gen_copybpl_hr(off); + outf("loaded_pixs[%d] = loaded_pix;", off); + } } else { gen_shiftbpl(maxplanes); } @@ -711,22 +749,24 @@ static void gen_pix(void) outf("gpix%d = get_genlock_transparency_border();", i); } outf(" dpix_val%d = bordercolor;", i); - outf(" if (denise_hdiw && bpl1dat_trigger) {"); - gen_getbpl(i, maxplanes); - outf(" clxdat |= bplcoltable[pix%d];", i); - if (planes > 4) { - outf(" if (decode_specials) {"); - outf(" pix%d = decode_denise_specials(pix%d);", i, i); + if (modetype > 0) { + outf(" if (denise_hdiw && bpl1dat_trigger) {"); + gen_getbpl(i, maxplanes); + outf(" clxdat |= bplcoltable[pix%d];", i); + if (planes > 4) { + outf(" if (decode_specials) {"); + outf(" pix%d = decode_denise_specials(pix%d);", i, i); + outf(" }"); + } + gen_bplpixmode_ecs(i); outf(" }"); + outf(" last_bpl_pix = pix%d;", i); } - gen_bplpixmode_ecs(i); - outf(" }"); - outf(" last_bpl_pix = pix%d;", i); outf("}"); gen_shiftbpl(maxplanes); pixt[i] = 1; } - if (sprres >= 0) { + if (sprres >= 0 && modetype > 0) { if (!scnt) { scnt++; gen_sprpix(i); @@ -835,13 +875,15 @@ 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;"); + if (modetype > 0) { + outf("int cmp = denise_hcounter_cmp << 2;"); + } } else { outf("int cnt = denise_hcounter << 2;"); } } -static bool gen_head(void) +static int gen_head(void) { char funcname[200]; @@ -879,49 +921,49 @@ static bool gen_head(void) if (filtered) { if (res <= outres) { - return false; + return 0; } } // shres on lores is useless if (res == 2 && outres == 0) { - return false; + return 0; } // skip non-existing modes if (!aga) { if (planes > 4 && res > 0) { - return false; + return -1; } if (planes > 6) { - return false; + return -1; } if (modes == CMODE_HAM && (res > 0 || planes <= 4)) { - return false; + return -1; } if (planes != 6 && modes == CMODE_EXTRAHB) { - return false; + return -1; } } else { if (modes == CMODE_HAM && (planes != 6 && planes != 8)) { - return false; + return -1; } if (planes != 6 && (modes == CMODE_EXTRAHB || modes == CMODE_EXTRAHB_ECS_KILLEHB)) { - return false; + return -1; } // FMODE=1: Superhires max 4 planes if (bplfmode == 1 && planes > 4 && res > 1) { - return false; + return -1; } // FMODE=0: Hires max 4 planes. if (bplfmode == 0 && planes > 4 && res > 0) { - return false; + return -1; } // FMODE=0: Superhires max 2 planes. if (bplfmode == 0 && planes > 2 && res > 1) { - return false; + return -1; } } - return true; + return 1; } static bool gen_fasthead(void) @@ -1430,6 +1472,7 @@ int main (int argc, char *argv[]) oddeven = 1; genlock = 0; ntsc = -1; + modetype = 0; for (bplfmode = 0; bplfmode < 3; bplfmode++) { @@ -1444,7 +1487,8 @@ int main (int argc, char *argv[]) for (planes = 2; planes <= 8; planes += 2) { for (modes = 0; modes < 5; modes++) { for (oddeven = 0; oddeven < 2; oddeven++) { - if (gen_head()) { + modetype = gen_head(); + if (modetype) { gen_start(); gen_init(); gen_pix_aga(); @@ -1454,7 +1498,8 @@ int main (int argc, char *argv[]) } gen_tail(); filtered = 1; - if (gen_head()) { + modetype = gen_head(); + if (modetype) { gen_start(); gen_init(); gen_pix_aga(); @@ -1489,7 +1534,8 @@ int main (int argc, char *argv[]) for (planes = 4; planes <= 8; planes += 4) { for (modes = 0; modes < 5; modes++) { for (oddeven = 0; oddeven < 2; oddeven++) { - if (gen_head()) { + modetype = gen_head(); + if (modetype) { gen_start(); gen_init(); gen_pix_aga(); @@ -1499,7 +1545,8 @@ int main (int argc, char *argv[]) } gen_tail(); filtered = 1; - if (gen_head()) { + modetype = gen_head(); + if (modetype) { gen_start(); gen_init(); gen_pix_aga(); @@ -1536,7 +1583,8 @@ int main (int argc, char *argv[]) planes = planecnts[pc]; for (modes = 0; modes < 4; modes++) { for (oddeven = 0; oddeven < 2; oddeven++) { - if (gen_head()) { + modetype = gen_head(); + if (modetype) { gen_start(); gen_init(); gen_pix(); @@ -1546,7 +1594,8 @@ int main (int argc, char *argv[]) } gen_tail(); filtered = 1; - if (gen_head()) { + modetype = gen_head(); + if (modetype) { gen_start(); gen_init(); gen_pix(); @@ -1581,7 +1630,8 @@ int main (int argc, char *argv[]) sprres = spr == 0 ? -1 : 0; for (modes = 0; modes < 4; modes++) { for (oddeven = 0; oddeven < 2; oddeven++) { - if (gen_head()) { + modetype = gen_head(); + if (modetype) { gen_start(); gen_init(); gen_pix(); @@ -1591,7 +1641,8 @@ int main (int argc, char *argv[]) } gen_tail(); filtered = 1; - if (gen_head()) { + modetype = gen_head(); + if (modetype) { gen_start(); gen_init(); gen_pix(); @@ -1625,7 +1676,8 @@ int main (int argc, char *argv[]) planes = planecnts[pc]; for (modes = 0; modes < 4; modes++) { for (oddeven = 0; oddeven < 2; oddeven++) { - if (gen_head()) { + modetype = gen_head(); + if (modetype) { gen_start(); gen_init(); gen_pix(); @@ -1635,7 +1687,8 @@ int main (int argc, char *argv[]) } gen_tail(); filtered = 1; - if (gen_head()) { + modetype = gen_head(); + if (modetype) { gen_start(); gen_init(); gen_pix(); @@ -1670,7 +1723,8 @@ int main (int argc, char *argv[]) sprres = spr == 0 ? -1 : 0; for (modes = 0; modes < 4; modes++) { for (oddeven = 0; oddeven < 2; oddeven++) { - if (gen_head()) { + modetype = gen_head(); + if (modetype) { gen_start(); gen_init(); gen_pix(); @@ -1680,7 +1734,8 @@ int main (int argc, char *argv[]) } gen_tail(); filtered = 1; - if (gen_head()) { + modetype = gen_head(); + if (modetype) { gen_start(); gen_init(); gen_pix(); diff --git a/linetoscr_aga_fm0.cpp b/linetoscr_aga_fm0.cpp index 3607ebbe..67cb3cd1 100644 --- a/linetoscr_aga_fm0.cpp +++ b/linetoscr_aga_fm0.cpp @@ -293,54 +293,6 @@ static void lts_aga_fm0_dpf1_p2_ilores_dlores_filtered(void) lts_null(); } static void lts_aga_fm0_ehb0_p2_ilores_dlores(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb0_p2_ilores_dlores_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb1_p2_ilores_dlores(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb1_p2_ilores_dlores_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham0_p2_ilores_dlores(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham0_p2_ilores_dlores_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham1_p2_ilores_dlores(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham1_p2_ilores_dlores_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb0_p2_ilores_dlores(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb0_p2_ilores_dlores_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb1_p2_ilores_dlores(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb1_p2_ilores_dlores_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_n0_p4_ilores_dlores(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -351,25 +303,12 @@ 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; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix0; } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4(); - } - loaded_pix = getbpl4(); - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; @@ -404,11 +343,11 @@ static void lts_aga_fm0_n0_p4_ilores_dlores(void) denise_cck++; } } -static void lts_aga_fm0_n0_p4_ilores_dlores_filtered(void) +static void lts_aga_fm0_ehb0_p2_ilores_dlores_filtered(void) { lts_null(); } -static void lts_aga_fm0_n1_p4_ilores_dlores(void) +static void lts_aga_fm0_ehb1_p2_ilores_dlores(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -419,28 +358,12 @@ 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; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix0; } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4e(); - } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl4o(); - } - loaded_pix = getbpl4(); - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; @@ -475,11 +398,11 @@ static void lts_aga_fm0_n1_p4_ilores_dlores(void) denise_cck++; } } -static void lts_aga_fm0_n1_p4_ilores_dlores_filtered(void) +static void lts_aga_fm0_ehb1_p2_ilores_dlores_filtered(void) { lts_null(); } -static void lts_aga_fm0_dpf0_p4_ilores_dlores(void) +static void lts_aga_fm0_ham0_p2_ilores_dlores(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -490,30 +413,12 @@ 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; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4(); - } - loaded_pix = getbpl4(); - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; @@ -548,11 +453,11 @@ static void lts_aga_fm0_dpf0_p4_ilores_dlores(void) denise_cck++; } } -static void lts_aga_fm0_dpf0_p4_ilores_dlores_filtered(void) +static void lts_aga_fm0_ham0_p2_ilores_dlores_filtered(void) { lts_null(); } -static void lts_aga_fm0_dpf1_p4_ilores_dlores(void) +static void lts_aga_fm0_ham1_p2_ilores_dlores(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -563,33 +468,12 @@ 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; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; - } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4e(); } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl4o(); - } - loaded_pix = getbpl4(); - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; @@ -624,59 +508,11 @@ static void lts_aga_fm0_dpf1_p4_ilores_dlores(void) denise_cck++; } } -static void lts_aga_fm0_dpf1_p4_ilores_dlores_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb0_p4_ilores_dlores(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb0_p4_ilores_dlores_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb1_p4_ilores_dlores(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb1_p4_ilores_dlores_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham0_p4_ilores_dlores(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham0_p4_ilores_dlores_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham1_p4_ilores_dlores(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham1_p4_ilores_dlores_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb0_p4_ilores_dlores(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb0_p4_ilores_dlores_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb1_p4_ilores_dlores(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb1_p4_ilores_dlores_filtered(void) +static void lts_aga_fm0_ham1_p2_ilores_dlores_filtered(void) { lts_null(); } -static void lts_aga_fm0_n0_p6_ilores_dlores(void) +static void lts_aga_fm0_kehb0_p2_ilores_dlores(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -687,25 +523,12 @@ 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; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix0; } - shiftbpl6(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6(); - } - loaded_pix = getbpl6(); - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; @@ -740,11 +563,11 @@ static void lts_aga_fm0_n0_p6_ilores_dlores(void) denise_cck++; } } -static void lts_aga_fm0_n0_p6_ilores_dlores_filtered(void) +static void lts_aga_fm0_kehb0_p2_ilores_dlores_filtered(void) { lts_null(); } -static void lts_aga_fm0_n1_p6_ilores_dlores(void) +static void lts_aga_fm0_kehb1_p2_ilores_dlores(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -755,28 +578,12 @@ 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; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix0; - } - shiftbpl6(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6e(); - } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl6o(); } - loaded_pix = getbpl6(); - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; @@ -811,11 +618,11 @@ static void lts_aga_fm0_n1_p6_ilores_dlores(void) denise_cck++; } } -static void lts_aga_fm0_n1_p6_ilores_dlores_filtered(void) +static void lts_aga_fm0_kehb1_p2_ilores_dlores_filtered(void) { lts_null(); } -static void lts_aga_fm0_dpf0_p6_ilores_dlores(void) +static void lts_aga_fm0_n0_p4_ilores_dlores(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -835,20 +642,15 @@ static void lts_aga_fm0_dpf0_p6_ilores_dlores(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix0; } - shiftbpl6(); + shiftbpl4(); if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6(); + copybpl4(); } - loaded_pix = getbpl6(); + loaded_pix = getbpl4(); loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { @@ -884,11 +686,11 @@ static void lts_aga_fm0_dpf0_p6_ilores_dlores(void) denise_cck++; } } -static void lts_aga_fm0_dpf0_p6_ilores_dlores_filtered(void) +static void lts_aga_fm0_n0_p4_ilores_dlores_filtered(void) { lts_null(); } -static void lts_aga_fm0_dpf1_p6_ilores_dlores(void) +static void lts_aga_fm0_n1_p4_ilores_dlores(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -908,23 +710,18 @@ static void lts_aga_fm0_dpf1_p6_ilores_dlores(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix0; } - shiftbpl6(); + shiftbpl4(); if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6e(); + copybpl4e(); } if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl6o(); + copybpl4o(); } - loaded_pix = getbpl6(); + loaded_pix = getbpl4(); loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { @@ -960,11 +757,11 @@ static void lts_aga_fm0_dpf1_p6_ilores_dlores(void) denise_cck++; } } -static void lts_aga_fm0_dpf1_p6_ilores_dlores_filtered(void) +static void lts_aga_fm0_n1_p4_ilores_dlores_filtered(void) { lts_null(); } -static void lts_aga_fm0_ehb0_p6_ilores_dlores(void) +static void lts_aga_fm0_dpf0_p4_ilores_dlores(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -984,21 +781,20 @@ static void lts_aga_fm0_ehb0_p6_ilores_dlores(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - pix0 ^= bplcon4_denise_xor_val; - if (!(pix0 & 0x20)) { - dpix_val0 = denise_colors.acolors[pix0]; - } else { - uae_u32 v = (denise_colors.color_regs_aga[pix0 & 0x1f] >> 1) & 0x7f7f7f; - dpix_val0 = CONVERT_RGB(v); + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; } last_bpl_pix = pix0; } - shiftbpl6(); + shiftbpl4(); if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6(); + copybpl4(); } - loaded_pix = getbpl6(); + loaded_pix = getbpl4(); loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { @@ -1034,11 +830,11 @@ static void lts_aga_fm0_ehb0_p6_ilores_dlores(void) denise_cck++; } } -static void lts_aga_fm0_ehb0_p6_ilores_dlores_filtered(void) +static void lts_aga_fm0_dpf0_p4_ilores_dlores_filtered(void) { lts_null(); } -static void lts_aga_fm0_ehb1_p6_ilores_dlores(void) +static void lts_aga_fm0_dpf1_p4_ilores_dlores(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -1058,24 +854,23 @@ static void lts_aga_fm0_ehb1_p6_ilores_dlores(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - pix0 ^= bplcon4_denise_xor_val; - if (!(pix0 & 0x20)) { - dpix_val0 = denise_colors.acolors[pix0]; - } else { - uae_u32 v = (denise_colors.color_regs_aga[pix0 & 0x1f] >> 1) & 0x7f7f7f; - dpix_val0 = CONVERT_RGB(v); + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; } last_bpl_pix = pix0; } - shiftbpl6(); + shiftbpl4(); if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6e(); + copybpl4e(); } if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl6o(); + copybpl4o(); } - loaded_pix = getbpl6(); + loaded_pix = getbpl4(); loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { @@ -1111,11 +906,11 @@ static void lts_aga_fm0_ehb1_p6_ilores_dlores(void) denise_cck++; } } -static void lts_aga_fm0_ehb1_p6_ilores_dlores_filtered(void) +static void lts_aga_fm0_dpf1_p4_ilores_dlores_filtered(void) { lts_null(); } -static void lts_aga_fm0_ham0_p6_ilores_dlores(void) +static void lts_aga_fm0_ehb0_p4_ilores_dlores(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -1126,25 +921,12 @@ 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; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = decode_ham_pixel_aga(pix0); - } - last_bpl_pix = pix0; - } - shiftbpl6(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6(); } - loaded_pix = getbpl6(); - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; @@ -1179,11 +961,11 @@ static void lts_aga_fm0_ham0_p6_ilores_dlores(void) denise_cck++; } } -static void lts_aga_fm0_ham0_p6_ilores_dlores_filtered(void) +static void lts_aga_fm0_ehb0_p4_ilores_dlores_filtered(void) { lts_null(); } -static void lts_aga_fm0_ham1_p6_ilores_dlores(void) +static void lts_aga_fm0_ehb1_p4_ilores_dlores(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -1194,28 +976,67 @@ 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; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = decode_ham_pixel_aga(pix0); + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); } - last_bpl_pix = pix0; + #endif + *buf1++ = t0; + *buf2++ = t0; } - shiftbpl6(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6e(); + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ehb1_p4_ilores_dlores_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_ham0_p4_ilores_dlores(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl6o(); + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; } - loaded_pix = getbpl6(); - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; @@ -1250,11 +1071,11 @@ static void lts_aga_fm0_ham1_p6_ilores_dlores(void) denise_cck++; } } -static void lts_aga_fm0_ham1_p6_ilores_dlores_filtered(void) +static void lts_aga_fm0_ham0_p4_ilores_dlores_filtered(void) { lts_null(); } -static void lts_aga_fm0_kehb0_p6_ilores_dlores(void) +static void lts_aga_fm0_ham1_p4_ilores_dlores(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -1265,26 +1086,12 @@ 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; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - pix0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[pix0 & 31]; - } - last_bpl_pix = pix0; - } - shiftbpl6(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6(); } - loaded_pix = getbpl6(); - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; @@ -1319,11 +1126,11 @@ static void lts_aga_fm0_kehb0_p6_ilores_dlores(void) denise_cck++; } } -static void lts_aga_fm0_kehb0_p6_ilores_dlores_filtered(void) +static void lts_aga_fm0_ham1_p4_ilores_dlores_filtered(void) { lts_null(); } -static void lts_aga_fm0_kehb1_p6_ilores_dlores(void) +static void lts_aga_fm0_kehb0_p4_ilores_dlores(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -1334,29 +1141,67 @@ 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; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - pix0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[pix0 & 31]; + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); } - last_bpl_pix = pix0; + #endif + *buf1++ = t0; + *buf2++ = t0; } - shiftbpl6(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6e(); + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_kehb0_p4_ilores_dlores_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_kehb1_p4_ilores_dlores(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl6o(); + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; } - loaded_pix = getbpl6(); - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; @@ -1391,11 +1236,11 @@ static void lts_aga_fm0_kehb1_p6_ilores_dlores(void) denise_cck++; } } -static void lts_aga_fm0_kehb1_p6_ilores_dlores_filtered(void) +static void lts_aga_fm0_kehb1_p4_ilores_dlores_filtered(void) { lts_null(); } -static void lts_aga_fm0_n0_p8_ilores_dlores(void) +static void lts_aga_fm0_n0_p6_ilores_dlores(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -1419,11 +1264,11 @@ static void lts_aga_fm0_n0_p8_ilores_dlores(void) } last_bpl_pix = pix0; } - shiftbpl8(); + shiftbpl6(); if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8(); + copybpl6(); } - loaded_pix = getbpl8(); + loaded_pix = getbpl6(); loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { @@ -1459,11 +1304,11 @@ static void lts_aga_fm0_n0_p8_ilores_dlores(void) denise_cck++; } } -static void lts_aga_fm0_n0_p8_ilores_dlores_filtered(void) +static void lts_aga_fm0_n0_p6_ilores_dlores_filtered(void) { lts_null(); } -static void lts_aga_fm0_n1_p8_ilores_dlores(void) +static void lts_aga_fm0_n1_p6_ilores_dlores(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -1487,14 +1332,14 @@ static void lts_aga_fm0_n1_p8_ilores_dlores(void) } last_bpl_pix = pix0; } - shiftbpl8(); + shiftbpl6(); if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e(); + copybpl6e(); } if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o(); + copybpl6o(); } - loaded_pix = getbpl8(); + loaded_pix = getbpl6(); loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { @@ -1530,11 +1375,11 @@ static void lts_aga_fm0_n1_p8_ilores_dlores(void) denise_cck++; } } -static void lts_aga_fm0_n1_p8_ilores_dlores_filtered(void) +static void lts_aga_fm0_n1_p6_ilores_dlores_filtered(void) { lts_null(); } -static void lts_aga_fm0_dpf0_p8_ilores_dlores(void) +static void lts_aga_fm0_dpf0_p6_ilores_dlores(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -1563,11 +1408,11 @@ static void lts_aga_fm0_dpf0_p8_ilores_dlores(void) } last_bpl_pix = pix0; } - shiftbpl8(); + shiftbpl6(); if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8(); + copybpl6(); } - loaded_pix = getbpl8(); + loaded_pix = getbpl6(); loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { @@ -1603,11 +1448,11 @@ static void lts_aga_fm0_dpf0_p8_ilores_dlores(void) denise_cck++; } } -static void lts_aga_fm0_dpf0_p8_ilores_dlores_filtered(void) +static void lts_aga_fm0_dpf0_p6_ilores_dlores_filtered(void) { lts_null(); } -static void lts_aga_fm0_dpf1_p8_ilores_dlores(void) +static void lts_aga_fm0_dpf1_p6_ilores_dlores(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -1636,14 +1481,14 @@ static void lts_aga_fm0_dpf1_p8_ilores_dlores(void) } last_bpl_pix = pix0; } - shiftbpl8(); + shiftbpl6(); if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e(); + copybpl6e(); } if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o(); + copybpl6o(); } - loaded_pix = getbpl8(); + loaded_pix = getbpl6(); loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { @@ -1679,27 +1524,11 @@ static void lts_aga_fm0_dpf1_p8_ilores_dlores(void) denise_cck++; } } -static void lts_aga_fm0_dpf1_p8_ilores_dlores_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb0_p8_ilores_dlores(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb0_p8_ilores_dlores_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb1_p8_ilores_dlores(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb1_p8_ilores_dlores_filtered(void) +static void lts_aga_fm0_dpf1_p6_ilores_dlores_filtered(void) { lts_null(); } -static void lts_aga_fm0_ham0_p8_ilores_dlores(void) +static void lts_aga_fm0_ehb0_p6_ilores_dlores(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -1719,15 +1548,21 @@ static void lts_aga_fm0_ham0_p8_ilores_dlores(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - dpix_val0 = decode_ham_pixel_aga(pix0); + pix0 ^= bplcon4_denise_xor_val; + if (!(pix0 & 0x20)) { + dpix_val0 = denise_colors.acolors[pix0]; + } else { + uae_u32 v = (denise_colors.color_regs_aga[pix0 & 0x1f] >> 1) & 0x7f7f7f; + dpix_val0 = CONVERT_RGB(v); + } } last_bpl_pix = pix0; } - shiftbpl8(); + shiftbpl6(); if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8(); + copybpl6(); } - loaded_pix = getbpl8(); + loaded_pix = getbpl6(); loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { @@ -1763,11 +1598,11 @@ static void lts_aga_fm0_ham0_p8_ilores_dlores(void) denise_cck++; } } -static void lts_aga_fm0_ham0_p8_ilores_dlores_filtered(void) +static void lts_aga_fm0_ehb0_p6_ilores_dlores_filtered(void) { lts_null(); } -static void lts_aga_fm0_ham1_p8_ilores_dlores(void) +static void lts_aga_fm0_ehb1_p6_ilores_dlores(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -1787,18 +1622,24 @@ static void lts_aga_fm0_ham1_p8_ilores_dlores(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - dpix_val0 = decode_ham_pixel_aga(pix0); + pix0 ^= bplcon4_denise_xor_val; + if (!(pix0 & 0x20)) { + dpix_val0 = denise_colors.acolors[pix0]; + } else { + uae_u32 v = (denise_colors.color_regs_aga[pix0 & 0x1f] >> 1) & 0x7f7f7f; + dpix_val0 = CONVERT_RGB(v); + } } last_bpl_pix = pix0; } - shiftbpl8(); + shiftbpl6(); if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e(); + copybpl6e(); } if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o(); + copybpl6o(); } - loaded_pix = getbpl8(); + loaded_pix = getbpl6(); loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { @@ -1834,27 +1675,11 @@ static void lts_aga_fm0_ham1_p8_ilores_dlores(void) denise_cck++; } } -static void lts_aga_fm0_ham1_p8_ilores_dlores_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb0_p8_ilores_dlores(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb0_p8_ilores_dlores_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb1_p8_ilores_dlores(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb1_p8_ilores_dlores_filtered(void) +static void lts_aga_fm0_ehb1_p6_ilores_dlores_filtered(void) { lts_null(); } -static void lts_aga_fm0_n0_p2_ilores_dlores_spr(void) +static void lts_aga_fm0_ham0_p6_ilores_dlores(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -1867,7 +1692,6 @@ static void lts_aga_fm0_n0_p2_ilores_dlores_spr(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -1875,32 +1699,18 @@ static void lts_aga_fm0_n0_p2_ilores_dlores_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + dpix_val0 = decode_ham_pixel_aga(pix0); } last_bpl_pix = pix0; } - shiftbpl2(); + shiftbpl6(); if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl2(); - } - loaded_pix = getbpl2(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } + copybpl6(); } + loaded_pix = getbpl6(); loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - } - } dtbuf[h][0] = dpix_val0; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -1933,11 +1743,11 @@ static void lts_aga_fm0_n0_p2_ilores_dlores_spr(void) denise_cck++; } } -static void lts_aga_fm0_n0_p2_ilores_dlores_spr_filtered(void) +static void lts_aga_fm0_ham0_p6_ilores_dlores_filtered(void) { lts_null(); } -static void lts_aga_fm0_n1_p2_ilores_dlores_spr(void) +static void lts_aga_fm0_ham1_p6_ilores_dlores(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -1950,7 +1760,6 @@ static void lts_aga_fm0_n1_p2_ilores_dlores_spr(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -1958,35 +1767,21 @@ static void lts_aga_fm0_n1_p2_ilores_dlores_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + dpix_val0 = decode_ham_pixel_aga(pix0); } last_bpl_pix = pix0; } - shiftbpl2(); + shiftbpl6(); if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl2e(); + copybpl6e(); } if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl2o(); - } - loaded_pix = getbpl2(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } + copybpl6o(); } + loaded_pix = getbpl6(); loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - } - } dtbuf[h][0] = dpix_val0; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -2019,11 +1814,11 @@ static void lts_aga_fm0_n1_p2_ilores_dlores_spr(void) denise_cck++; } } -static void lts_aga_fm0_n1_p2_ilores_dlores_spr_filtered(void) +static void lts_aga_fm0_ham1_p6_ilores_dlores_filtered(void) { lts_null(); } -static void lts_aga_fm0_dpf0_p2_ilores_dlores_spr(void) +static void lts_aga_fm0_kehb0_p6_ilores_dlores(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -2036,7 +1831,6 @@ static void lts_aga_fm0_dpf0_p2_ilores_dlores_spr(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -2044,37 +1838,19 @@ static void lts_aga_fm0_dpf0_p2_ilores_dlores_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; + pix0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[pix0 & 31]; } last_bpl_pix = pix0; } - shiftbpl2(); + shiftbpl6(); if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl2(); - } - loaded_pix = getbpl2(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } + copybpl6(); } + loaded_pix = getbpl6(); loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - } - } dtbuf[h][0] = dpix_val0; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -2107,11 +1883,11 @@ static void lts_aga_fm0_dpf0_p2_ilores_dlores_spr(void) denise_cck++; } } -static void lts_aga_fm0_dpf0_p2_ilores_dlores_spr_filtered(void) +static void lts_aga_fm0_kehb0_p6_ilores_dlores_filtered(void) { lts_null(); } -static void lts_aga_fm0_dpf1_p2_ilores_dlores_spr(void) +static void lts_aga_fm0_kehb1_p6_ilores_dlores(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -2124,7 +1900,6 @@ static void lts_aga_fm0_dpf1_p2_ilores_dlores_spr(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -2132,40 +1907,22 @@ static void lts_aga_fm0_dpf1_p2_ilores_dlores_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; + pix0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[pix0 & 31]; } last_bpl_pix = pix0; } - shiftbpl2(); + shiftbpl6(); if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl2e(); + copybpl6e(); } if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl2o(); - } - loaded_pix = getbpl2(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } + copybpl6o(); } + loaded_pix = getbpl6(); loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - } - } dtbuf[h][0] = dpix_val0; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -2198,59 +1955,11 @@ static void lts_aga_fm0_dpf1_p2_ilores_dlores_spr(void) denise_cck++; } } -static void lts_aga_fm0_dpf1_p2_ilores_dlores_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb0_p2_ilores_dlores_spr(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb0_p2_ilores_dlores_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb1_p2_ilores_dlores_spr(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb1_p2_ilores_dlores_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham0_p2_ilores_dlores_spr(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham0_p2_ilores_dlores_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham1_p2_ilores_dlores_spr(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham1_p2_ilores_dlores_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb0_p2_ilores_dlores_spr(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb0_p2_ilores_dlores_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb1_p2_ilores_dlores_spr(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb1_p2_ilores_dlores_spr_filtered(void) +static void lts_aga_fm0_kehb1_p6_ilores_dlores_filtered(void) { lts_null(); } -static void lts_aga_fm0_n0_p4_ilores_dlores_spr(void) +static void lts_aga_fm0_n0_p8_ilores_dlores(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -2263,7 +1972,6 @@ static void lts_aga_fm0_n0_p4_ilores_dlores_spr(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -2275,28 +1983,14 @@ static void lts_aga_fm0_n0_p4_ilores_dlores_spr(void) } last_bpl_pix = pix0; } - shiftbpl4(); + shiftbpl8(); if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4(); - } - loaded_pix = getbpl4(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } + copybpl8(); } + loaded_pix = getbpl8(); loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - } - } dtbuf[h][0] = dpix_val0; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -2329,11 +2023,11 @@ static void lts_aga_fm0_n0_p4_ilores_dlores_spr(void) denise_cck++; } } -static void lts_aga_fm0_n0_p4_ilores_dlores_spr_filtered(void) +static void lts_aga_fm0_n0_p8_ilores_dlores_filtered(void) { lts_null(); } -static void lts_aga_fm0_n1_p4_ilores_dlores_spr(void) +static void lts_aga_fm0_n1_p8_ilores_dlores(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -2346,7 +2040,6 @@ static void lts_aga_fm0_n1_p4_ilores_dlores_spr(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -2358,31 +2051,17 @@ static void lts_aga_fm0_n1_p4_ilores_dlores_spr(void) } last_bpl_pix = pix0; } - shiftbpl4(); + shiftbpl8(); if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4e(); + copybpl8e(); } if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl4o(); - } - loaded_pix = getbpl4(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } + copybpl8o(); } + loaded_pix = getbpl8(); loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - } - } dtbuf[h][0] = dpix_val0; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -2415,11 +2094,11 @@ static void lts_aga_fm0_n1_p4_ilores_dlores_spr(void) denise_cck++; } } -static void lts_aga_fm0_n1_p4_ilores_dlores_spr_filtered(void) +static void lts_aga_fm0_n1_p8_ilores_dlores_filtered(void) { lts_null(); } -static void lts_aga_fm0_dpf0_p4_ilores_dlores_spr(void) +static void lts_aga_fm0_dpf0_p8_ilores_dlores(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -2432,7 +2111,6 @@ static void lts_aga_fm0_dpf0_p4_ilores_dlores_spr(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -2449,28 +2127,14 @@ static void lts_aga_fm0_dpf0_p4_ilores_dlores_spr(void) } last_bpl_pix = pix0; } - shiftbpl4(); + shiftbpl8(); if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4(); - } - loaded_pix = getbpl4(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } + copybpl8(); } + loaded_pix = getbpl8(); loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - } - } dtbuf[h][0] = dpix_val0; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -2503,11 +2167,11 @@ static void lts_aga_fm0_dpf0_p4_ilores_dlores_spr(void) denise_cck++; } } -static void lts_aga_fm0_dpf0_p4_ilores_dlores_spr_filtered(void) +static void lts_aga_fm0_dpf0_p8_ilores_dlores_filtered(void) { lts_null(); } -static void lts_aga_fm0_dpf1_p4_ilores_dlores_spr(void) +static void lts_aga_fm0_dpf1_p8_ilores_dlores(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -2520,7 +2184,6 @@ static void lts_aga_fm0_dpf1_p4_ilores_dlores_spr(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -2537,31 +2200,17 @@ static void lts_aga_fm0_dpf1_p4_ilores_dlores_spr(void) } last_bpl_pix = pix0; } - shiftbpl4(); + shiftbpl8(); if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4e(); + copybpl8e(); } if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl4o(); - } - loaded_pix = getbpl4(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } + copybpl8o(); } + loaded_pix = getbpl8(); loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - } - } dtbuf[h][0] = dpix_val0; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -2594,59 +2243,11 @@ static void lts_aga_fm0_dpf1_p4_ilores_dlores_spr(void) denise_cck++; } } -static void lts_aga_fm0_dpf1_p4_ilores_dlores_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb0_p4_ilores_dlores_spr(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb0_p4_ilores_dlores_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb1_p4_ilores_dlores_spr(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb1_p4_ilores_dlores_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham0_p4_ilores_dlores_spr(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham0_p4_ilores_dlores_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham1_p4_ilores_dlores_spr(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham1_p4_ilores_dlores_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb0_p4_ilores_dlores_spr(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb0_p4_ilores_dlores_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb1_p4_ilores_dlores_spr(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb1_p4_ilores_dlores_spr_filtered(void) +static void lts_aga_fm0_dpf1_p8_ilores_dlores_filtered(void) { lts_null(); } -static void lts_aga_fm0_n0_p6_ilores_dlores_spr(void) +static void lts_aga_fm0_ehb0_p8_ilores_dlores(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -2657,42 +2258,14 @@ 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; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix0; } - shiftbpl6(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6(); - } - loaded_pix = getbpl6(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } - } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - } - } dtbuf[h][0] = dpix_val0; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -2725,11 +2298,11 @@ static void lts_aga_fm0_n0_p6_ilores_dlores_spr(void) denise_cck++; } } -static void lts_aga_fm0_n0_p6_ilores_dlores_spr_filtered(void) +static void lts_aga_fm0_ehb0_p8_ilores_dlores_filtered(void) { lts_null(); } -static void lts_aga_fm0_n1_p6_ilores_dlores_spr(void) +static void lts_aga_fm0_ehb1_p8_ilores_dlores(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -2740,45 +2313,14 @@ 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; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix0; } - shiftbpl6(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6e(); - } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl6o(); - } - loaded_pix = getbpl6(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } - } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - } - } dtbuf[h][0] = dpix_val0; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -2811,11 +2353,11 @@ static void lts_aga_fm0_n1_p6_ilores_dlores_spr(void) denise_cck++; } } -static void lts_aga_fm0_n1_p6_ilores_dlores_spr_filtered(void) +static void lts_aga_fm0_ehb1_p8_ilores_dlores_filtered(void) { lts_null(); } -static void lts_aga_fm0_dpf0_p6_ilores_dlores_spr(void) +static void lts_aga_fm0_ham0_p8_ilores_dlores(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -2828,7 +2370,6 @@ static void lts_aga_fm0_dpf0_p6_ilores_dlores_spr(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -2836,37 +2377,18 @@ static void lts_aga_fm0_dpf0_p6_ilores_dlores_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; + dpix_val0 = decode_ham_pixel_aga(pix0); } last_bpl_pix = pix0; } - shiftbpl6(); + shiftbpl8(); if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6(); - } - loaded_pix = getbpl6(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } + copybpl8(); } + loaded_pix = getbpl8(); loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - } - } dtbuf[h][0] = dpix_val0; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -2899,11 +2421,11 @@ static void lts_aga_fm0_dpf0_p6_ilores_dlores_spr(void) denise_cck++; } } -static void lts_aga_fm0_dpf0_p6_ilores_dlores_spr_filtered(void) +static void lts_aga_fm0_ham0_p8_ilores_dlores_filtered(void) { lts_null(); } -static void lts_aga_fm0_dpf1_p6_ilores_dlores_spr(void) +static void lts_aga_fm0_ham1_p8_ilores_dlores(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -2916,7 +2438,6 @@ static void lts_aga_fm0_dpf1_p6_ilores_dlores_spr(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -2924,40 +2445,21 @@ static void lts_aga_fm0_dpf1_p6_ilores_dlores_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; + dpix_val0 = decode_ham_pixel_aga(pix0); } last_bpl_pix = pix0; } - shiftbpl6(); + shiftbpl8(); if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6e(); + copybpl8e(); } if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl6o(); - } - loaded_pix = getbpl6(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } + copybpl8o(); } + loaded_pix = getbpl8(); loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - } - } dtbuf[h][0] = dpix_val0; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -2990,11 +2492,11 @@ static void lts_aga_fm0_dpf1_p6_ilores_dlores_spr(void) denise_cck++; } } -static void lts_aga_fm0_dpf1_p6_ilores_dlores_spr_filtered(void) +static void lts_aga_fm0_ham1_p8_ilores_dlores_filtered(void) { lts_null(); } -static void lts_aga_fm0_ehb0_p6_ilores_dlores_spr(void) +static void lts_aga_fm0_kehb0_p8_ilores_dlores(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -3005,48 +2507,14 @@ 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; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - pix0 ^= bplcon4_denise_xor_val; - if (!(pix0 & 0x20)) { - dpix_val0 = denise_colors.acolors[pix0]; - } else { - uae_u32 v = (denise_colors.color_regs_aga[pix0 & 0x1f] >> 1) & 0x7f7f7f; - dpix_val0 = CONVERT_RGB(v); - } - } - last_bpl_pix = pix0; - } - shiftbpl6(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6(); - } - loaded_pix = getbpl6(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - } - } dtbuf[h][0] = dpix_val0; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -3079,11 +2547,66 @@ static void lts_aga_fm0_ehb0_p6_ilores_dlores_spr(void) denise_cck++; } } -static void lts_aga_fm0_ehb0_p6_ilores_dlores_spr_filtered(void) +static void lts_aga_fm0_kehb0_p8_ilores_dlores_filtered(void) { lts_null(); } -static void lts_aga_fm0_ehb1_p6_ilores_dlores_spr(void) +static void lts_aga_fm0_kehb1_p8_ilores_dlores(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_kehb1_p8_ilores_dlores_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_n0_p2_ilores_dlores_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -3104,24 +2627,15 @@ static void lts_aga_fm0_ehb1_p6_ilores_dlores_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - pix0 ^= bplcon4_denise_xor_val; - if (!(pix0 & 0x20)) { - dpix_val0 = denise_colors.acolors[pix0]; - } else { - uae_u32 v = (denise_colors.color_regs_aga[pix0 & 0x1f] >> 1) & 0x7f7f7f; - dpix_val0 = CONVERT_RGB(v); - } + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix0; } - shiftbpl6(); + shiftbpl2(); if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6e(); - } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl6o(); + copybpl2(); } - loaded_pix = getbpl6(); + loaded_pix = getbpl2(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -3171,11 +2685,11 @@ static void lts_aga_fm0_ehb1_p6_ilores_dlores_spr(void) denise_cck++; } } -static void lts_aga_fm0_ehb1_p6_ilores_dlores_spr_filtered(void) +static void lts_aga_fm0_n0_p2_ilores_dlores_spr_filtered(void) { lts_null(); } -static void lts_aga_fm0_ham0_p6_ilores_dlores_spr(void) +static void lts_aga_fm0_n1_p2_ilores_dlores_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -3196,15 +2710,18 @@ static void lts_aga_fm0_ham0_p6_ilores_dlores_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - dpix_val0 = decode_ham_pixel_aga(pix0); + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix0; } - shiftbpl6(); + shiftbpl2(); if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6(); + copybpl2e(); } - loaded_pix = getbpl6(); + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl2o(); + } + loaded_pix = getbpl2(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -3254,11 +2771,11 @@ static void lts_aga_fm0_ham0_p6_ilores_dlores_spr(void) denise_cck++; } } -static void lts_aga_fm0_ham0_p6_ilores_dlores_spr_filtered(void) +static void lts_aga_fm0_n1_p2_ilores_dlores_spr_filtered(void) { lts_null(); } -static void lts_aga_fm0_ham1_p6_ilores_dlores_spr(void) +static void lts_aga_fm0_dpf0_p2_ilores_dlores_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -3279,18 +2796,20 @@ static void lts_aga_fm0_ham1_p6_ilores_dlores_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - dpix_val0 = decode_ham_pixel_aga(pix0); + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; } last_bpl_pix = pix0; } - shiftbpl6(); + shiftbpl2(); if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6e(); - } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl6o(); + copybpl2(); } - loaded_pix = getbpl6(); + loaded_pix = getbpl2(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -3340,11 +2859,11 @@ static void lts_aga_fm0_ham1_p6_ilores_dlores_spr(void) denise_cck++; } } -static void lts_aga_fm0_ham1_p6_ilores_dlores_spr_filtered(void) +static void lts_aga_fm0_dpf0_p2_ilores_dlores_spr_filtered(void) { lts_null(); } -static void lts_aga_fm0_kehb0_p6_ilores_dlores_spr(void) +static void lts_aga_fm0_dpf1_p2_ilores_dlores_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -3365,16 +2884,23 @@ static void lts_aga_fm0_kehb0_p6_ilores_dlores_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - pix0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[pix0 & 31]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; } last_bpl_pix = pix0; } - shiftbpl6(); + shiftbpl2(); if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6(); + copybpl2e(); } - loaded_pix = getbpl6(); + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl2o(); + } + loaded_pix = getbpl2(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -3424,11 +2950,11 @@ static void lts_aga_fm0_kehb0_p6_ilores_dlores_spr(void) denise_cck++; } } -static void lts_aga_fm0_kehb0_p6_ilores_dlores_spr_filtered(void) +static void lts_aga_fm0_dpf1_p2_ilores_dlores_spr_filtered(void) { lts_null(); } -static void lts_aga_fm0_kehb1_p6_ilores_dlores_spr(void) +static void lts_aga_fm0_ehb0_p2_ilores_dlores_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -3439,29 +2965,13 @@ 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; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - pix0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[pix0 & 31]; - } - last_bpl_pix = pix0; } - shiftbpl6(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6e(); - } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl6o(); - } - loaded_pix = getbpl6(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -3470,7 +2980,6 @@ static void lts_aga_fm0_kehb1_p6_ilores_dlores_spr(void) sv0 = svt; } } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { @@ -3511,11 +3020,11 @@ static void lts_aga_fm0_kehb1_p6_ilores_dlores_spr(void) denise_cck++; } } -static void lts_aga_fm0_kehb1_p6_ilores_dlores_spr_filtered(void) +static void lts_aga_fm0_ehb0_p2_ilores_dlores_spr_filtered(void) { lts_null(); } -static void lts_aga_fm0_n0_p8_ilores_dlores_spr(void) +static void lts_aga_fm0_ehb1_p2_ilores_dlores_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -3526,25 +3035,13 @@ 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; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix0; - } - shiftbpl8(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8(); } - loaded_pix = getbpl8(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -3553,7 +3050,6 @@ static void lts_aga_fm0_n0_p8_ilores_dlores_spr(void) sv0 = svt; } } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { @@ -3594,11 +3090,11 @@ static void lts_aga_fm0_n0_p8_ilores_dlores_spr(void) denise_cck++; } } -static void lts_aga_fm0_n0_p8_ilores_dlores_spr_filtered(void) +static void lts_aga_fm0_ehb1_p2_ilores_dlores_spr_filtered(void) { lts_null(); } -static void lts_aga_fm0_n1_p8_ilores_dlores_spr(void) +static void lts_aga_fm0_ham0_p2_ilores_dlores_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -3609,28 +3105,13 @@ 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; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix0; - } - shiftbpl8(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e(); } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o(); - } - loaded_pix = getbpl8(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -3639,7 +3120,6 @@ static void lts_aga_fm0_n1_p8_ilores_dlores_spr(void) sv0 = svt; } } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { @@ -3680,11 +3160,11 @@ static void lts_aga_fm0_n1_p8_ilores_dlores_spr(void) denise_cck++; } } -static void lts_aga_fm0_n1_p8_ilores_dlores_spr_filtered(void) +static void lts_aga_fm0_ham0_p2_ilores_dlores_spr_filtered(void) { lts_null(); } -static void lts_aga_fm0_dpf0_p8_ilores_dlores_spr(void) +static void lts_aga_fm0_ham1_p2_ilores_dlores_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -3695,30 +3175,13 @@ 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; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; } - shiftbpl8(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8(); - } - loaded_pix = getbpl8(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -3727,7 +3190,6 @@ static void lts_aga_fm0_dpf0_p8_ilores_dlores_spr(void) sv0 = svt; } } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { @@ -3768,11 +3230,11 @@ static void lts_aga_fm0_dpf0_p8_ilores_dlores_spr(void) denise_cck++; } } -static void lts_aga_fm0_dpf0_p8_ilores_dlores_spr_filtered(void) +static void lts_aga_fm0_ham1_p2_ilores_dlores_spr_filtered(void) { lts_null(); } -static void lts_aga_fm0_dpf1_p8_ilores_dlores_spr(void) +static void lts_aga_fm0_kehb0_p2_ilores_dlores_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -3783,33 +3245,13 @@ 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; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; } - shiftbpl8(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e(); - } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o(); - } - loaded_pix = getbpl8(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -3818,7 +3260,6 @@ static void lts_aga_fm0_dpf1_p8_ilores_dlores_spr(void) sv0 = svt; } } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { @@ -3859,27 +3300,11 @@ static void lts_aga_fm0_dpf1_p8_ilores_dlores_spr(void) denise_cck++; } } -static void lts_aga_fm0_dpf1_p8_ilores_dlores_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb0_p8_ilores_dlores_spr(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb0_p8_ilores_dlores_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb1_p8_ilores_dlores_spr(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb1_p8_ilores_dlores_spr_filtered(void) +static void lts_aga_fm0_kehb0_p2_ilores_dlores_spr_filtered(void) { lts_null(); } -static void lts_aga_fm0_ham0_p8_ilores_dlores_spr(void) +static void lts_aga_fm0_kehb1_p2_ilores_dlores_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -3890,25 +3315,13 @@ 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; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = decode_ham_pixel_aga(pix0); - } - last_bpl_pix = pix0; - } - shiftbpl8(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8(); } - loaded_pix = getbpl8(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -3917,7 +3330,6 @@ static void lts_aga_fm0_ham0_p8_ilores_dlores_spr(void) sv0 = svt; } } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { @@ -3958,11 +3370,11 @@ static void lts_aga_fm0_ham0_p8_ilores_dlores_spr(void) denise_cck++; } } -static void lts_aga_fm0_ham0_p8_ilores_dlores_spr_filtered(void) +static void lts_aga_fm0_kehb1_p2_ilores_dlores_spr_filtered(void) { lts_null(); } -static void lts_aga_fm0_ham1_p8_ilores_dlores_spr(void) +static void lts_aga_fm0_n0_p4_ilores_dlores_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -3983,18 +3395,15 @@ static void lts_aga_fm0_ham1_p8_ilores_dlores_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - dpix_val0 = decode_ham_pixel_aga(pix0); + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix0; } - shiftbpl8(); + shiftbpl4(); if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e(); - } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o(); + copybpl4(); } - loaded_pix = getbpl8(); + loaded_pix = getbpl4(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -4044,27 +3453,11 @@ static void lts_aga_fm0_ham1_p8_ilores_dlores_spr(void) denise_cck++; } } -static void lts_aga_fm0_ham1_p8_ilores_dlores_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb0_p8_ilores_dlores_spr(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb0_p8_ilores_dlores_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb1_p8_ilores_dlores_spr(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb1_p8_ilores_dlores_spr_filtered(void) +static void lts_aga_fm0_n0_p4_ilores_dlores_spr_filtered(void) { lts_null(); } -static void lts_aga_fm0_n0_p2_ihires_dlores(void) +static void lts_aga_fm0_n1_p4_ilores_dlores_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -4077,6 +3470,7 @@ static void lts_aga_fm0_n0_p2_ihires_dlores(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -4088,15 +3482,31 @@ static void lts_aga_fm0_n0_p2_ihires_dlores(void) } last_bpl_pix = pix0; } - shiftbpl2(); - if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { - copybpl2(); + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4e(); + } + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl4o(); + } + loaded_pix = getbpl4(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } } - loaded_pix = getbpl2(); loaded_pixs[0] = loaded_pix; - shiftbpl2(); internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } dtbuf[h][0] = dpix_val0; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -4129,7 +3539,11 @@ static void lts_aga_fm0_n0_p2_ihires_dlores(void) denise_cck++; } } -static void lts_aga_fm0_n0_p2_ihires_dlores_filtered(void) +static void lts_aga_fm0_n1_p4_ilores_dlores_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_dpf0_p4_ilores_dlores_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -4142,6 +3556,7 @@ static void lts_aga_fm0_n0_p2_ihires_dlores_filtered(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -4149,36 +3564,37 @@ static void lts_aga_fm0_n0_p2_ihires_dlores_filtered(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; } last_bpl_pix = pix0; } - shiftbpl2(); - if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { - copybpl2(); + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4(); } - loaded_pix = getbpl2(); - loaded_pixs[0] = loaded_pix; - uae_u8 pix1 = 0; - uae_u32 dpix_val1 = BLANK_COLOR; - if (!denise_blank_active) { - dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; + loaded_pix = getbpl4(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; } - last_bpl_pix = pix1; - } - shiftbpl2(); - if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { - copybpl2(); } - loaded_pix = getbpl2(); - loaded_pixs[1] = loaded_pix; + loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } dtbuf[h][0] = dpix_val0; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -4211,7 +3627,11 @@ static void lts_aga_fm0_n0_p2_ihires_dlores_filtered(void) denise_cck++; } } -static void lts_aga_fm0_n1_p2_ihires_dlores(void) +static void lts_aga_fm0_dpf0_p4_ilores_dlores_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_dpf1_p4_ilores_dlores_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -4224,6 +3644,7 @@ static void lts_aga_fm0_n1_p2_ihires_dlores(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -4231,22 +3652,40 @@ static void lts_aga_fm0_n1_p2_ihires_dlores(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; } last_bpl_pix = pix0; } - shiftbpl2(); - if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { - copybpl2e(); + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4e(); } - if (bpldat_copy[1] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[1]) { - copybpl2o(); + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl4o(); + } + loaded_pix = getbpl4(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } } - loaded_pix = getbpl2(); loaded_pixs[0] = loaded_pix; - shiftbpl2(); internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } dtbuf[h][0] = dpix_val0; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -4279,7 +3718,11 @@ static void lts_aga_fm0_n1_p2_ihires_dlores(void) denise_cck++; } } -static void lts_aga_fm0_n1_p2_ihires_dlores_filtered(void) +static void lts_aga_fm0_dpf1_p4_ilores_dlores_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_ehb0_p4_ilores_dlores_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -4290,51 +3733,29 @@ 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; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix0; - } - shiftbpl2(); - if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { - copybpl2e(); - } - if (bpldat_copy[1] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[1]) { - copybpl2o(); } - loaded_pix = getbpl2(); - loaded_pixs[0] = loaded_pix; - uae_u8 pix1 = 0; - uae_u32 dpix_val1 = BLANK_COLOR; - if (!denise_blank_active) { - dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; } - last_bpl_pix = pix1; - } - shiftbpl2(); - if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { - copybpl2e(); - } - if (bpldat_copy[1] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[1]) { - copybpl2o(); } - loaded_pix = getbpl2(); - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } dtbuf[h][0] = dpix_val0; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -4367,7 +3788,11 @@ static void lts_aga_fm0_n1_p2_ihires_dlores_filtered(void) denise_cck++; } } -static void lts_aga_fm0_dpf0_p2_ihires_dlores(void) +static void lts_aga_fm0_ehb0_p4_ilores_dlores_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_ehb1_p4_ilores_dlores_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -4378,33 +3803,29 @@ 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; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; } - shiftbpl2(); - if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { - copybpl2(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } } - loaded_pix = getbpl2(); - loaded_pixs[0] = loaded_pix; - shiftbpl2(); internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } dtbuf[h][0] = dpix_val0; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -4437,7 +3858,11 @@ static void lts_aga_fm0_dpf0_p2_ihires_dlores(void) denise_cck++; } } -static void lts_aga_fm0_dpf0_p2_ihires_dlores_filtered(void) +static void lts_aga_fm0_ehb1_p4_ilores_dlores_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_ham0_p4_ilores_dlores_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -4448,55 +3873,29 @@ 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; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; - } - shiftbpl2(); - if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { - copybpl2(); } - loaded_pix = getbpl2(); - loaded_pixs[0] = loaded_pix; - uae_u8 pix1 = 0; - uae_u32 dpix_val1 = BLANK_COLOR; - if (!denise_blank_active) { - dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - if (dpf_lookup_no[pix1]) { - val1 += dblpfofs[bpldualpf2of]; - } - val1 ^= bplcon4_denise_xor_val; - dpix_val1 = denise_colors.acolors[val1]; + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; } - last_bpl_pix = pix1; - } - shiftbpl2(); - if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { - copybpl2(); } - loaded_pix = getbpl2(); - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } dtbuf[h][0] = dpix_val0; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -4529,7 +3928,11 @@ static void lts_aga_fm0_dpf0_p2_ihires_dlores_filtered(void) denise_cck++; } } -static void lts_aga_fm0_dpf1_p2_ihires_dlores(void) +static void lts_aga_fm0_ham0_p4_ilores_dlores_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_ham1_p4_ilores_dlores_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -4540,36 +3943,29 @@ 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; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; - } - shiftbpl2(); - if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { - copybpl2e(); } - if (bpldat_copy[1] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[1]) { - copybpl2o(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } } - loaded_pix = getbpl2(); - loaded_pixs[0] = loaded_pix; - shiftbpl2(); internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } dtbuf[h][0] = dpix_val0; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -4602,7 +3998,11 @@ static void lts_aga_fm0_dpf1_p2_ihires_dlores(void) denise_cck++; } } -static void lts_aga_fm0_dpf1_p2_ihires_dlores_filtered(void) +static void lts_aga_fm0_ham1_p4_ilores_dlores_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_kehb0_p4_ilores_dlores_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -4613,61 +4013,29 @@ 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; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; - } - shiftbpl2(); - if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { - copybpl2e(); - } - if (bpldat_copy[1] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[1]) { - copybpl2o(); } - loaded_pix = getbpl2(); - loaded_pixs[0] = loaded_pix; - uae_u8 pix1 = 0; - uae_u32 dpix_val1 = BLANK_COLOR; - if (!denise_blank_active) { - dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - if (dpf_lookup_no[pix1]) { - val1 += dblpfofs[bpldualpf2of]; - } - val1 ^= bplcon4_denise_xor_val; - dpix_val1 = denise_colors.acolors[val1]; + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; } - last_bpl_pix = pix1; - } - shiftbpl2(); - if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { - copybpl2e(); - } - if (bpldat_copy[1] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[1]) { - copybpl2o(); } - loaded_pix = getbpl2(); - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } dtbuf[h][0] = dpix_val0; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -4700,55 +4068,11 @@ static void lts_aga_fm0_dpf1_p2_ihires_dlores_filtered(void) denise_cck++; } } -static void lts_aga_fm0_ehb0_p2_ihires_dlores(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb0_p2_ihires_dlores_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb1_p2_ihires_dlores(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb1_p2_ihires_dlores_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham0_p2_ihires_dlores(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham0_p2_ihires_dlores_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham1_p2_ihires_dlores(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham1_p2_ihires_dlores_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb0_p2_ihires_dlores(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb0_p2_ihires_dlores_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb1_p2_ihires_dlores(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb1_p2_ihires_dlores_filtered(void) +static void lts_aga_fm0_kehb0_p4_ilores_dlores_spr_filtered(void) { lts_null(); } -static void lts_aga_fm0_n0_p4_ihires_dlores(void) +static void lts_aga_fm0_kehb1_p4_ilores_dlores_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -4759,28 +4083,29 @@ 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; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix0; } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } } - loaded_pix = getbpl4(); - loaded_pixs[0] = loaded_pix; - shiftbpl4(); internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } dtbuf[h][0] = dpix_val0; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -4813,7 +4138,11 @@ static void lts_aga_fm0_n0_p4_ihires_dlores(void) denise_cck++; } } -static void lts_aga_fm0_n0_p4_ihires_dlores_filtered(void) +static void lts_aga_fm0_kehb1_p4_ilores_dlores_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_n0_p6_ilores_dlores_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -4826,6 +4155,7 @@ static void lts_aga_fm0_n0_p4_ihires_dlores_filtered(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -4837,32 +4167,28 @@ static void lts_aga_fm0_n0_p4_ihires_dlores_filtered(void) } last_bpl_pix = pix0; } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4(); + shiftbpl6(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6(); + } + loaded_pix = getbpl6(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } } - loaded_pix = getbpl4(); loaded_pixs[0] = loaded_pix; - uae_u8 pix1 = 0; - uae_u32 dpix_val1 = BLANK_COLOR; - if (!denise_blank_active) { - dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix1; - } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4(); - } - loaded_pix = getbpl4(); - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } dtbuf[h][0] = dpix_val0; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -4895,7 +4221,11 @@ static void lts_aga_fm0_n0_p4_ihires_dlores_filtered(void) denise_cck++; } } -static void lts_aga_fm0_n1_p4_ihires_dlores(void) +static void lts_aga_fm0_n0_p6_ilores_dlores_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_n1_p6_ilores_dlores_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -4908,6 +4238,7 @@ static void lts_aga_fm0_n1_p4_ihires_dlores(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -4919,18 +4250,31 @@ static void lts_aga_fm0_n1_p4_ihires_dlores(void) } last_bpl_pix = pix0; } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4e(); + shiftbpl6(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6e(); } - if (bpldat_copy[1] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[1]) { - copybpl4o(); + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl6o(); + } + loaded_pix = getbpl6(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } } - loaded_pix = getbpl4(); loaded_pixs[0] = loaded_pix; - shiftbpl4(); internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } dtbuf[h][0] = dpix_val0; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -4963,7 +4307,11 @@ static void lts_aga_fm0_n1_p4_ihires_dlores(void) denise_cck++; } } -static void lts_aga_fm0_n1_p4_ihires_dlores_filtered(void) +static void lts_aga_fm0_n1_p6_ilores_dlores_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_dpf0_p6_ilores_dlores_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -4976,6 +4324,7 @@ static void lts_aga_fm0_n1_p4_ihires_dlores_filtered(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -4983,42 +4332,37 @@ static void lts_aga_fm0_n1_p4_ihires_dlores_filtered(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; } last_bpl_pix = pix0; } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4e(); - } - if (bpldat_copy[1] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[1]) { - copybpl4o(); + shiftbpl6(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6(); } - loaded_pix = getbpl4(); - loaded_pixs[0] = loaded_pix; - uae_u8 pix1 = 0; - uae_u32 dpix_val1 = BLANK_COLOR; - if (!denise_blank_active) { - dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; + loaded_pix = getbpl6(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; } - last_bpl_pix = pix1; - } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4e(); - } - if (bpldat_copy[1] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[1]) { - copybpl4o(); } - loaded_pix = getbpl4(); - loaded_pixs[1] = loaded_pix; + loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } dtbuf[h][0] = dpix_val0; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -5051,7 +4395,11 @@ static void lts_aga_fm0_n1_p4_ihires_dlores_filtered(void) denise_cck++; } } -static void lts_aga_fm0_dpf0_p4_ihires_dlores(void) +static void lts_aga_fm0_dpf0_p6_ilores_dlores_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_dpf1_p6_ilores_dlores_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -5064,6 +4412,7 @@ static void lts_aga_fm0_dpf0_p4_ihires_dlores(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -5080,15 +4429,31 @@ static void lts_aga_fm0_dpf0_p4_ihires_dlores(void) } last_bpl_pix = pix0; } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4(); + shiftbpl6(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6e(); + } + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl6o(); + } + loaded_pix = getbpl6(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } } - loaded_pix = getbpl4(); loaded_pixs[0] = loaded_pix; - shiftbpl4(); internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } dtbuf[h][0] = dpix_val0; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -5121,7 +4486,11 @@ static void lts_aga_fm0_dpf0_p4_ihires_dlores(void) denise_cck++; } } -static void lts_aga_fm0_dpf0_p4_ihires_dlores_filtered(void) +static void lts_aga_fm0_dpf1_p6_ilores_dlores_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_ehb0_p6_ilores_dlores_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -5134,6 +4503,7 @@ static void lts_aga_fm0_dpf0_p4_ihires_dlores_filtered(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -5141,46 +4511,38 @@ static void lts_aga_fm0_dpf0_p4_ihires_dlores_filtered(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; + pix0 ^= bplcon4_denise_xor_val; + if (!(pix0 & 0x20)) { + dpix_val0 = denise_colors.acolors[pix0]; + } else { + uae_u32 v = (denise_colors.color_regs_aga[pix0 & 0x1f] >> 1) & 0x7f7f7f; + dpix_val0 = CONVERT_RGB(v); } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; } last_bpl_pix = pix0; } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4(); + shiftbpl6(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6(); } - loaded_pix = getbpl4(); - loaded_pixs[0] = loaded_pix; - uae_u8 pix1 = 0; - uae_u32 dpix_val1 = BLANK_COLOR; - if (!denise_blank_active) { - dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - if (dpf_lookup_no[pix1]) { - val1 += dblpfofs[bpldualpf2of]; - } - val1 ^= bplcon4_denise_xor_val; - dpix_val1 = denise_colors.acolors[val1]; + loaded_pix = getbpl6(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; } - last_bpl_pix = pix1; } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4(); - } - loaded_pix = getbpl4(); - loaded_pixs[1] = loaded_pix; + loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } dtbuf[h][0] = dpix_val0; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -5213,7 +4575,11 @@ static void lts_aga_fm0_dpf0_p4_ihires_dlores_filtered(void) denise_cck++; } } -static void lts_aga_fm0_dpf1_p4_ihires_dlores(void) +static void lts_aga_fm0_ehb0_p6_ilores_dlores_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_ehb1_p6_ilores_dlores_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -5226,6 +4592,7 @@ static void lts_aga_fm0_dpf1_p4_ihires_dlores(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -5233,27 +4600,41 @@ static void lts_aga_fm0_dpf1_p4_ihires_dlores(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; + pix0 ^= bplcon4_denise_xor_val; + if (!(pix0 & 0x20)) { + dpix_val0 = denise_colors.acolors[pix0]; + } else { + uae_u32 v = (denise_colors.color_regs_aga[pix0 & 0x1f] >> 1) & 0x7f7f7f; + dpix_val0 = CONVERT_RGB(v); } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; } last_bpl_pix = pix0; } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4e(); + shiftbpl6(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6e(); } - if (bpldat_copy[1] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[1]) { - copybpl4o(); + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl6o(); + } + loaded_pix = getbpl6(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } } - loaded_pix = getbpl4(); loaded_pixs[0] = loaded_pix; - shiftbpl4(); internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } dtbuf[h][0] = dpix_val0; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -5286,7 +4667,11 @@ static void lts_aga_fm0_dpf1_p4_ihires_dlores(void) denise_cck++; } } -static void lts_aga_fm0_dpf1_p4_ihires_dlores_filtered(void) +static void lts_aga_fm0_ehb1_p6_ilores_dlores_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_ham0_p6_ilores_dlores_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -5299,6 +4684,7 @@ static void lts_aga_fm0_dpf1_p4_ihires_dlores_filtered(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -5306,52 +4692,118 @@ static void lts_aga_fm0_dpf1_p4_ihires_dlores_filtered(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; + dpix_val0 = decode_ham_pixel_aga(pix0); } last_bpl_pix = pix0; } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4e(); + shiftbpl6(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6(); } - if (bpldat_copy[1] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[1]) { - copybpl4o(); + loaded_pix = getbpl6(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } } - loaded_pix = getbpl4(); loaded_pixs[0] = loaded_pix; - uae_u8 pix1 = 0; - uae_u32 dpix_val1 = BLANK_COLOR; + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ham0_p6_ilores_dlores_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_ham1_p6_ilores_dlores_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { - dpix_val1 = bordercolor; + dpix_val0 = bordercolor; if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - if (dpf_lookup_no[pix1]) { - val1 += dblpfofs[bpldualpf2of]; - } - val1 ^= bplcon4_denise_xor_val; - dpix_val1 = denise_colors.acolors[val1]; + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = decode_ham_pixel_aga(pix0); } - last_bpl_pix = pix1; + last_bpl_pix = pix0; } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4e(); + shiftbpl6(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6e(); } - if (bpldat_copy[1] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[1]) { - copybpl4o(); + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl6o(); } - loaded_pix = getbpl4(); - loaded_pixs[1] = loaded_pix; + loaded_pix = getbpl6(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } dtbuf[h][0] = dpix_val0; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -5384,215 +4836,95 @@ static void lts_aga_fm0_dpf1_p4_ihires_dlores_filtered(void) denise_cck++; } } -static void lts_aga_fm0_ehb0_p4_ihires_dlores(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb0_p4_ihires_dlores_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb1_p4_ihires_dlores(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb1_p4_ihires_dlores_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham0_p4_ihires_dlores(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham0_p4_ihires_dlores_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham1_p4_ihires_dlores(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham1_p4_ihires_dlores_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb0_p4_ihires_dlores(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb0_p4_ihires_dlores_filtered(void) +static void lts_aga_fm0_ham1_p6_ilores_dlores_spr_filtered(void) { lts_null(); } -static void lts_aga_fm0_kehb1_p4_ihires_dlores(void) +static void lts_aga_fm0_kehb0_p6_ilores_dlores_spr(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + pix0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[pix0 & 31]; + } + last_bpl_pix = pix0; + } + shiftbpl6(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6(); + } + loaded_pix = getbpl6(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm0_kehb1_p4_ihires_dlores_filtered(void) +static void lts_aga_fm0_kehb0_p6_ilores_dlores_spr_filtered(void) { lts_null(); } -static void lts_aga_fm0_n0_p6_ihires_dlores(void) -{ - lts_null(); -} -static void lts_aga_fm0_n0_p6_ihires_dlores_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_n1_p6_ihires_dlores(void) -{ - lts_null(); -} -static void lts_aga_fm0_n1_p6_ihires_dlores_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_dpf0_p6_ihires_dlores(void) -{ - lts_null(); -} -static void lts_aga_fm0_dpf0_p6_ihires_dlores_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_dpf1_p6_ihires_dlores(void) -{ - lts_null(); -} -static void lts_aga_fm0_dpf1_p6_ihires_dlores_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb0_p6_ihires_dlores(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb0_p6_ihires_dlores_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb1_p6_ihires_dlores(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb1_p6_ihires_dlores_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham0_p6_ihires_dlores(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham0_p6_ihires_dlores_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham1_p6_ihires_dlores(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham1_p6_ihires_dlores_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb0_p6_ihires_dlores(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb0_p6_ihires_dlores_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb1_p6_ihires_dlores(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb1_p6_ihires_dlores_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_n0_p8_ihires_dlores(void) -{ - lts_null(); -} -static void lts_aga_fm0_n0_p8_ihires_dlores_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_n1_p8_ihires_dlores(void) -{ - lts_null(); -} -static void lts_aga_fm0_n1_p8_ihires_dlores_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_dpf0_p8_ihires_dlores(void) -{ - lts_null(); -} -static void lts_aga_fm0_dpf0_p8_ihires_dlores_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_dpf1_p8_ihires_dlores(void) -{ - lts_null(); -} -static void lts_aga_fm0_dpf1_p8_ihires_dlores_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb0_p8_ihires_dlores(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb0_p8_ihires_dlores_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb1_p8_ihires_dlores(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb1_p8_ihires_dlores_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham0_p8_ihires_dlores(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham0_p8_ihires_dlores_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham1_p8_ihires_dlores(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham1_p8_ihires_dlores_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb0_p8_ihires_dlores(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb0_p8_ihires_dlores_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb1_p8_ihires_dlores(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb1_p8_ihires_dlores_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_n0_p2_ihires_dlores_spr(void) +static void lts_aga_fm0_kehb1_p6_ilores_dlores_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -5613,15 +4945,19 @@ static void lts_aga_fm0_n0_p2_ihires_dlores_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + pix0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[pix0 & 31]; } last_bpl_pix = pix0; } - shiftbpl2(); - if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { - copybpl2(); + shiftbpl6(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6e(); } - loaded_pix = getbpl2(); + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl6o(); + } + loaded_pix = getbpl6(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -5631,7 +4967,6 @@ static void lts_aga_fm0_n0_p2_ihires_dlores_spr(void) } } loaded_pixs[0] = loaded_pix; - shiftbpl2(); internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { @@ -5672,7 +5007,11 @@ static void lts_aga_fm0_n0_p2_ihires_dlores_spr(void) denise_cck++; } } -static void lts_aga_fm0_n0_p2_ihires_dlores_spr_filtered(void) +static void lts_aga_fm0_kehb1_p6_ilores_dlores_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_n0_p8_ilores_dlores_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -5697,11 +5036,11 @@ static void lts_aga_fm0_n0_p2_ihires_dlores_spr_filtered(void) } last_bpl_pix = pix0; } - shiftbpl2(); - if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { - copybpl2(); + shiftbpl8(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8(); } - loaded_pix = getbpl2(); + loaded_pix = getbpl8(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -5711,33 +5050,14 @@ static void lts_aga_fm0_n0_p2_ihires_dlores_spr_filtered(void) } } loaded_pixs[0] = loaded_pix; - uae_u8 pix1 = 0; - uae_u32 dpix_val1 = BLANK_COLOR; - if (!denise_blank_active) { - dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix1; - } - shiftbpl2(); - if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { - copybpl2(); - } - loaded_pix = getbpl2(); - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { uae_u32 spix0 = denise_render_sprites2(pix0, sv0); if (spix0) { dpix_val0 = denise_colors.acolors[spix0]; - dpix_val1 = dpix_val0; } } - dpix_val0 = filter_pixel(dpix_val0, dpix_val1); dtbuf[h][0] = dpix_val0; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -5770,7 +5090,11 @@ static void lts_aga_fm0_n0_p2_ihires_dlores_spr_filtered(void) denise_cck++; } } -static void lts_aga_fm0_n1_p2_ihires_dlores_spr(void) +static void lts_aga_fm0_n0_p8_ilores_dlores_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_n1_p8_ilores_dlores_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -5795,14 +5119,14 @@ static void lts_aga_fm0_n1_p2_ihires_dlores_spr(void) } last_bpl_pix = pix0; } - shiftbpl2(); - if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { - copybpl2e(); + shiftbpl8(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8e(); } - if (bpldat_copy[1] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[1]) { - copybpl2o(); + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o(); } - loaded_pix = getbpl2(); + loaded_pix = getbpl8(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -5812,7 +5136,6 @@ static void lts_aga_fm0_n1_p2_ihires_dlores_spr(void) } } loaded_pixs[0] = loaded_pix; - shiftbpl2(); internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { @@ -5853,7 +5176,11 @@ static void lts_aga_fm0_n1_p2_ihires_dlores_spr(void) denise_cck++; } } -static void lts_aga_fm0_n1_p2_ihires_dlores_spr_filtered(void) +static void lts_aga_fm0_n1_p8_ilores_dlores_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_dpf0_p8_ilores_dlores_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -5874,18 +5201,20 @@ static void lts_aga_fm0_n1_p2_ihires_dlores_spr_filtered(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; } last_bpl_pix = pix0; } - shiftbpl2(); - if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { - copybpl2e(); - } - if (bpldat_copy[1] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[1]) { - copybpl2o(); + shiftbpl8(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8(); } - loaded_pix = getbpl2(); + loaded_pix = getbpl8(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -5895,36 +5224,14 @@ static void lts_aga_fm0_n1_p2_ihires_dlores_spr_filtered(void) } } loaded_pixs[0] = loaded_pix; - uae_u8 pix1 = 0; - uae_u32 dpix_val1 = BLANK_COLOR; - if (!denise_blank_active) { - dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix1; - } - shiftbpl2(); - if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { - copybpl2e(); - } - if (bpldat_copy[1] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[1]) { - copybpl2o(); - } - loaded_pix = getbpl2(); - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { uae_u32 spix0 = denise_render_sprites2(pix0, sv0); if (spix0) { dpix_val0 = denise_colors.acolors[spix0]; - dpix_val1 = dpix_val0; } } - dpix_val0 = filter_pixel(dpix_val0, dpix_val1); dtbuf[h][0] = dpix_val0; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -5957,7 +5264,11 @@ static void lts_aga_fm0_n1_p2_ihires_dlores_spr_filtered(void) denise_cck++; } } -static void lts_aga_fm0_dpf0_p2_ihires_dlores_spr(void) +static void lts_aga_fm0_dpf0_p8_ilores_dlores_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_dpf1_p8_ilores_dlores_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -5987,11 +5298,14 @@ static void lts_aga_fm0_dpf0_p2_ihires_dlores_spr(void) } last_bpl_pix = pix0; } - shiftbpl2(); - if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { - copybpl2(); + shiftbpl8(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8e(); } - loaded_pix = getbpl2(); + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o(); + } + loaded_pix = getbpl8(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -6001,7 +5315,6 @@ static void lts_aga_fm0_dpf0_p2_ihires_dlores_spr(void) } } loaded_pixs[0] = loaded_pix; - shiftbpl2(); internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { @@ -6042,7 +5355,11 @@ static void lts_aga_fm0_dpf0_p2_ihires_dlores_spr(void) denise_cck++; } } -static void lts_aga_fm0_dpf0_p2_ihires_dlores_spr_filtered(void) +static void lts_aga_fm0_dpf1_p8_ilores_dlores_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_ehb0_p8_ilores_dlores_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -6053,30 +5370,13 @@ 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; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; - } - shiftbpl2(); - if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { - copybpl2(); } - loaded_pix = getbpl2(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -6085,39 +5385,14 @@ static void lts_aga_fm0_dpf0_p2_ihires_dlores_spr_filtered(void) sv0 = svt; } } - loaded_pixs[0] = loaded_pix; - uae_u8 pix1 = 0; - uae_u32 dpix_val1 = BLANK_COLOR; - if (!denise_blank_active) { - dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - if (dpf_lookup_no[pix1]) { - val1 += dblpfofs[bpldualpf2of]; - } - val1 ^= bplcon4_denise_xor_val; - dpix_val1 = denise_colors.acolors[val1]; - } - last_bpl_pix = pix1; - } - shiftbpl2(); - if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { - copybpl2(); - } - loaded_pix = getbpl2(); - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { uae_u32 spix0 = denise_render_sprites2(pix0, sv0); if (spix0) { dpix_val0 = denise_colors.acolors[spix0]; - dpix_val1 = dpix_val0; } } - dpix_val0 = filter_pixel(dpix_val0, dpix_val1); dtbuf[h][0] = dpix_val0; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -6150,7 +5425,11 @@ static void lts_aga_fm0_dpf0_p2_ihires_dlores_spr_filtered(void) denise_cck++; } } -static void lts_aga_fm0_dpf1_p2_ihires_dlores_spr(void) +static void lts_aga_fm0_ehb0_p8_ilores_dlores_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_ehb1_p8_ilores_dlores_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -6161,33 +5440,13 @@ 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; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; - } - shiftbpl2(); - if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { - copybpl2e(); - } - if (bpldat_copy[1] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[1]) { - copybpl2o(); } - loaded_pix = getbpl2(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -6196,8 +5455,6 @@ static void lts_aga_fm0_dpf1_p2_ihires_dlores_spr(void) sv0 = svt; } } - loaded_pixs[0] = loaded_pix; - shiftbpl2(); internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { @@ -6238,7 +5495,11 @@ static void lts_aga_fm0_dpf1_p2_ihires_dlores_spr(void) denise_cck++; } } -static void lts_aga_fm0_dpf1_p2_ihires_dlores_spr_filtered(void) +static void lts_aga_fm0_ehb1_p8_ilores_dlores_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_ham0_p8_ilores_dlores_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -6259,23 +5520,15 @@ static void lts_aga_fm0_dpf1_p2_ihires_dlores_spr_filtered(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; + dpix_val0 = decode_ham_pixel_aga(pix0); } last_bpl_pix = pix0; } - shiftbpl2(); - if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { - copybpl2e(); - } - if (bpldat_copy[1] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[1]) { - copybpl2o(); + shiftbpl8(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8(); } - loaded_pix = getbpl2(); + loaded_pix = getbpl8(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -6285,41 +5538,14 @@ static void lts_aga_fm0_dpf1_p2_ihires_dlores_spr_filtered(void) } } loaded_pixs[0] = loaded_pix; - uae_u8 pix1 = 0; - uae_u32 dpix_val1 = BLANK_COLOR; - if (!denise_blank_active) { - dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - if (dpf_lookup_no[pix1]) { - val1 += dblpfofs[bpldualpf2of]; - } - val1 ^= bplcon4_denise_xor_val; - dpix_val1 = denise_colors.acolors[val1]; - } - last_bpl_pix = pix1; - } - shiftbpl2(); - if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { - copybpl2e(); - } - if (bpldat_copy[1] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[1]) { - copybpl2o(); - } - loaded_pix = getbpl2(); - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { uae_u32 spix0 = denise_render_sprites2(pix0, sv0); if (spix0) { dpix_val0 = denise_colors.acolors[spix0]; - dpix_val1 = dpix_val0; } } - dpix_val0 = filter_pixel(dpix_val0, dpix_val1); dtbuf[h][0] = dpix_val0; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -6352,55 +5578,11 @@ static void lts_aga_fm0_dpf1_p2_ihires_dlores_spr_filtered(void) denise_cck++; } } -static void lts_aga_fm0_ehb0_p2_ihires_dlores_spr(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb0_p2_ihires_dlores_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb1_p2_ihires_dlores_spr(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb1_p2_ihires_dlores_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham0_p2_ihires_dlores_spr(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham0_p2_ihires_dlores_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham1_p2_ihires_dlores_spr(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham1_p2_ihires_dlores_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb0_p2_ihires_dlores_spr(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb0_p2_ihires_dlores_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb1_p2_ihires_dlores_spr(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb1_p2_ihires_dlores_spr_filtered(void) +static void lts_aga_fm0_ham0_p8_ilores_dlores_spr_filtered(void) { lts_null(); } -static void lts_aga_fm0_n0_p4_ihires_dlores_spr(void) +static void lts_aga_fm0_ham1_p8_ilores_dlores_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -6421,15 +5603,18 @@ static void lts_aga_fm0_n0_p4_ihires_dlores_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + dpix_val0 = decode_ham_pixel_aga(pix0); } last_bpl_pix = pix0; } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4(); + shiftbpl8(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8e(); } - loaded_pix = getbpl4(); + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o(); + } + loaded_pix = getbpl8(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -6439,7 +5624,6 @@ static void lts_aga_fm0_n0_p4_ihires_dlores_spr(void) } } loaded_pixs[0] = loaded_pix; - shiftbpl4(); internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { @@ -6480,7 +5664,11 @@ static void lts_aga_fm0_n0_p4_ihires_dlores_spr(void) denise_cck++; } } -static void lts_aga_fm0_n0_p4_ihires_dlores_spr_filtered(void) +static void lts_aga_fm0_ham1_p8_ilores_dlores_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_kehb0_p8_ilores_dlores_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -6491,25 +5679,13 @@ 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; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix0; - } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4(); } - loaded_pix = getbpl4(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -6518,34 +5694,84 @@ static void lts_aga_fm0_n0_p4_ihires_dlores_spr_filtered(void) sv0 = svt; } } - loaded_pixs[0] = loaded_pix; - uae_u8 pix1 = 0; - uae_u32 dpix_val1 = BLANK_COLOR; - if (!denise_blank_active) { - dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } } - last_bpl_pix = pix1; + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_kehb0_p8_ilores_dlores_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_kehb1_p8_ilores_dlores_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } } - loaded_pix = getbpl4(); - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { uae_u32 spix0 = denise_render_sprites2(pix0, sv0); if (spix0) { dpix_val0 = denise_colors.acolors[spix0]; - dpix_val1 = dpix_val0; } } - dpix_val0 = filter_pixel(dpix_val0, dpix_val1); dtbuf[h][0] = dpix_val0; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -6578,7 +5804,11 @@ static void lts_aga_fm0_n0_p4_ihires_dlores_spr_filtered(void) denise_cck++; } } -static void lts_aga_fm0_n1_p4_ihires_dlores_spr(void) +static void lts_aga_fm0_kehb1_p8_ilores_dlores_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_n0_p2_ihires_dlores(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -6591,7 +5821,6 @@ static void lts_aga_fm0_n1_p4_ihires_dlores_spr(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -6603,32 +5832,15 @@ static void lts_aga_fm0_n1_p4_ihires_dlores_spr(void) } last_bpl_pix = pix0; } - shiftbpl4(); + shiftbpl2(); if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4e(); - } - if (bpldat_copy[1] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[1]) { - copybpl4o(); - } - loaded_pix = getbpl4(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } + copybpl2(); } + loaded_pix = getbpl2(); loaded_pixs[0] = loaded_pix; - shiftbpl4(); + shiftbpl2(); internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - } - } dtbuf[h][0] = dpix_val0; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -6661,7 +5873,7 @@ static void lts_aga_fm0_n1_p4_ihires_dlores_spr(void) denise_cck++; } } -static void lts_aga_fm0_n1_p4_ihires_dlores_spr_filtered(void) +static void lts_aga_fm0_n0_p2_ihires_dlores_filtered(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -6674,7 +5886,6 @@ static void lts_aga_fm0_n1_p4_ihires_dlores_spr_filtered(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -6686,22 +5897,11 @@ static void lts_aga_fm0_n1_p4_ihires_dlores_spr_filtered(void) } last_bpl_pix = pix0; } - shiftbpl4(); + shiftbpl2(); if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4e(); - } - if (bpldat_copy[1] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[1]) { - copybpl4o(); - } - loaded_pix = getbpl4(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } + copybpl2(); } + loaded_pix = getbpl2(); loaded_pixs[0] = loaded_pix; uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; @@ -6714,24 +5914,14 @@ static void lts_aga_fm0_n1_p4_ihires_dlores_spr_filtered(void) } last_bpl_pix = pix1; } - shiftbpl4(); + shiftbpl2(); if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4e(); - } - if (bpldat_copy[1] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[1]) { - copybpl4o(); + copybpl2(); } - loaded_pix = getbpl4(); + loaded_pix = getbpl2(); loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - dpix_val1 = dpix_val0; - } - } dpix_val0 = filter_pixel(dpix_val0, dpix_val1); dtbuf[h][0] = dpix_val0; uae_u32 t0 = dtbuf[h ^ lol][0]; @@ -6765,7 +5955,7 @@ static void lts_aga_fm0_n1_p4_ihires_dlores_spr_filtered(void) denise_cck++; } } -static void lts_aga_fm0_dpf0_p4_ihires_dlores_spr(void) +static void lts_aga_fm0_n1_p2_ihires_dlores(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -6778,7 +5968,6 @@ static void lts_aga_fm0_dpf0_p4_ihires_dlores_spr(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -6786,38 +5975,22 @@ static void lts_aga_fm0_dpf0_p4_ihires_dlores_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix0; } - shiftbpl4(); + shiftbpl2(); if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4(); + copybpl2e(); } - loaded_pix = getbpl4(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } + if (bpldat_copy[1] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[1]) { + copybpl2o(); } + loaded_pix = getbpl2(); loaded_pixs[0] = loaded_pix; - shiftbpl4(); + shiftbpl2(); internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - } - } dtbuf[h][0] = dpix_val0; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -6850,7 +6023,7 @@ static void lts_aga_fm0_dpf0_p4_ihires_dlores_spr(void) denise_cck++; } } -static void lts_aga_fm0_dpf0_p4_ihires_dlores_spr_filtered(void) +static void lts_aga_fm0_n1_p2_ihires_dlores_filtered(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -6863,7 +6036,6 @@ static void lts_aga_fm0_dpf0_p4_ihires_dlores_spr_filtered(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -6871,28 +6043,18 @@ static void lts_aga_fm0_dpf0_p4_ihires_dlores_spr_filtered(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix0; } - shiftbpl4(); + shiftbpl2(); if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4(); + copybpl2e(); } - loaded_pix = getbpl4(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } + if (bpldat_copy[1] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[1]) { + copybpl2o(); } + loaded_pix = getbpl2(); loaded_pixs[0] = loaded_pix; uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; @@ -6901,30 +6063,21 @@ static void lts_aga_fm0_dpf0_p4_ihires_dlores_spr_filtered(void) if (denise_hdiw && bpl1dat_trigger) { pix1 = loaded_pixs[1]; clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - if (dpf_lookup_no[pix1]) { - val1 += dblpfofs[bpldualpf2of]; - } - val1 ^= bplcon4_denise_xor_val; - dpix_val1 = denise_colors.acolors[val1]; + dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix1; } - shiftbpl4(); + shiftbpl2(); if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4(); + copybpl2e(); } - loaded_pix = getbpl4(); + if (bpldat_copy[1] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[1]) { + copybpl2o(); + } + loaded_pix = getbpl2(); loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - dpix_val1 = dpix_val0; - } - } dpix_val0 = filter_pixel(dpix_val0, dpix_val1); dtbuf[h][0] = dpix_val0; uae_u32 t0 = dtbuf[h ^ lol][0]; @@ -6958,7 +6111,7 @@ static void lts_aga_fm0_dpf0_p4_ihires_dlores_spr_filtered(void) denise_cck++; } } -static void lts_aga_fm0_dpf1_p4_ihires_dlores_spr(void) +static void lts_aga_fm0_dpf0_p2_ihires_dlores(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -6971,7 +6124,6 @@ static void lts_aga_fm0_dpf1_p4_ihires_dlores_spr(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -6988,32 +6140,15 @@ static void lts_aga_fm0_dpf1_p4_ihires_dlores_spr(void) } last_bpl_pix = pix0; } - shiftbpl4(); + shiftbpl2(); if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4e(); - } - if (bpldat_copy[1] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[1]) { - copybpl4o(); - } - loaded_pix = getbpl4(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } + copybpl2(); } + loaded_pix = getbpl2(); loaded_pixs[0] = loaded_pix; - shiftbpl4(); + shiftbpl2(); internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - } - } dtbuf[h][0] = dpix_val0; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -7046,7 +6181,7 @@ static void lts_aga_fm0_dpf1_p4_ihires_dlores_spr(void) denise_cck++; } } -static void lts_aga_fm0_dpf1_p4_ihires_dlores_spr_filtered(void) +static void lts_aga_fm0_dpf0_p2_ihires_dlores_filtered(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -7059,7 +6194,6 @@ static void lts_aga_fm0_dpf1_p4_ihires_dlores_spr_filtered(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -7076,22 +6210,11 @@ static void lts_aga_fm0_dpf1_p4_ihires_dlores_spr_filtered(void) } last_bpl_pix = pix0; } - shiftbpl4(); + shiftbpl2(); if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4e(); - } - if (bpldat_copy[1] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[1]) { - copybpl4o(); - } - loaded_pix = getbpl4(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } + copybpl2(); } + loaded_pix = getbpl2(); loaded_pixs[0] = loaded_pix; uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; @@ -7109,24 +6232,14 @@ static void lts_aga_fm0_dpf1_p4_ihires_dlores_spr_filtered(void) } last_bpl_pix = pix1; } - shiftbpl4(); + shiftbpl2(); if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4e(); - } - if (bpldat_copy[1] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[1]) { - copybpl4o(); + copybpl2(); } - loaded_pix = getbpl4(); + loaded_pix = getbpl2(); loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - dpix_val1 = dpix_val0; - } - } dpix_val0 = filter_pixel(dpix_val0, dpix_val1); dtbuf[h][0] = dpix_val0; uae_u32 t0 = dtbuf[h ^ lol][0]; @@ -7160,855 +6273,58348 @@ static void lts_aga_fm0_dpf1_p4_ihires_dlores_spr_filtered(void) denise_cck++; } } -static void lts_aga_fm0_ehb0_p4_ihires_dlores_spr(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb0_p4_ihires_dlores_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb1_p4_ihires_dlores_spr(void) +static void lts_aga_fm0_dpf1_p2_ihires_dlores(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + shiftbpl2(); + if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { + copybpl2e(); + } + if (bpldat_copy[1] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[1]) { + copybpl2o(); + } + loaded_pix = getbpl2(); + loaded_pixs[0] = loaded_pix; + shiftbpl2(); + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm0_ehb1_p4_ihires_dlores_spr_filtered(void) +static void lts_aga_fm0_dpf1_p2_ihires_dlores_filtered(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + shiftbpl2(); + if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { + copybpl2e(); + } + if (bpldat_copy[1] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[1]) { + copybpl2o(); + } + loaded_pix = getbpl2(); + loaded_pixs[0] = loaded_pix; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + uae_u8 val1 = dpf_lookup[pix1]; + if (dpf_lookup_no[pix1]) { + val1 += dblpfofs[bpldualpf2of]; + } + val1 ^= bplcon4_denise_xor_val; + dpix_val1 = denise_colors.acolors[val1]; + } + last_bpl_pix = pix1; + } + shiftbpl2(); + if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { + copybpl2e(); + } + if (bpldat_copy[1] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[1]) { + copybpl2o(); + } + loaded_pix = getbpl2(); + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm0_ham0_p4_ihires_dlores_spr(void) +static void lts_aga_fm0_ehb0_p2_ihires_dlores(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm0_ham0_p4_ihires_dlores_spr_filtered(void) +static void lts_aga_fm0_ehb0_p2_ihires_dlores_filtered(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm0_ham1_p4_ihires_dlores_spr(void) +static void lts_aga_fm0_ehb1_p2_ihires_dlores(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm0_ham1_p4_ihires_dlores_spr_filtered(void) +static void lts_aga_fm0_ehb1_p2_ihires_dlores_filtered(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm0_kehb0_p4_ihires_dlores_spr(void) +static void lts_aga_fm0_ham0_p2_ihires_dlores(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm0_kehb0_p4_ihires_dlores_spr_filtered(void) +static void lts_aga_fm0_ham0_p2_ihires_dlores_filtered(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm0_kehb1_p4_ihires_dlores_spr(void) +static void lts_aga_fm0_ham1_p2_ihires_dlores(void) { - lts_null(); -} -static void lts_aga_fm0_kehb1_p4_ihires_dlores_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_n0_p6_ihires_dlores_spr(void) -{ - lts_null(); -} -static void lts_aga_fm0_n0_p6_ihires_dlores_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_n1_p6_ihires_dlores_spr(void) -{ - lts_null(); -} -static void lts_aga_fm0_n1_p6_ihires_dlores_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_dpf0_p6_ihires_dlores_spr(void) -{ - lts_null(); -} -static void lts_aga_fm0_dpf0_p6_ihires_dlores_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_dpf1_p6_ihires_dlores_spr(void) -{ - lts_null(); -} -static void lts_aga_fm0_dpf1_p6_ihires_dlores_spr_filtered(void) -{ - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm0_ehb0_p6_ihires_dlores_spr(void) +static void lts_aga_fm0_ham1_p2_ihires_dlores_filtered(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm0_ehb0_p6_ihires_dlores_spr_filtered(void) +static void lts_aga_fm0_kehb0_p2_ihires_dlores(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm0_ehb1_p6_ihires_dlores_spr(void) +static void lts_aga_fm0_kehb0_p2_ihires_dlores_filtered(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm0_ehb1_p6_ihires_dlores_spr_filtered(void) +static void lts_aga_fm0_kehb1_p2_ihires_dlores(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm0_ham0_p6_ihires_dlores_spr(void) +static void lts_aga_fm0_kehb1_p2_ihires_dlores_filtered(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm0_ham0_p6_ihires_dlores_spr_filtered(void) +static void lts_aga_fm0_n0_p4_ihires_dlores(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix0; + } + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4(); + } + loaded_pix = getbpl4(); + loaded_pixs[0] = loaded_pix; + shiftbpl4(); + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm0_ham1_p6_ihires_dlores_spr(void) +static void lts_aga_fm0_n0_p4_ihires_dlores_filtered(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix0; + } + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4(); + } + loaded_pix = getbpl4(); + loaded_pixs[0] = loaded_pix; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix1; + } + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4(); + } + loaded_pix = getbpl4(); + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm0_ham1_p6_ihires_dlores_spr_filtered(void) +static void lts_aga_fm0_n1_p4_ihires_dlores(void) { - lts_null(); -} -static void lts_aga_fm0_kehb0_p6_ihires_dlores_spr(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb0_p6_ihires_dlores_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb1_p6_ihires_dlores_spr(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb1_p6_ihires_dlores_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_n0_p8_ihires_dlores_spr(void) -{ - lts_null(); -} -static void lts_aga_fm0_n0_p8_ihires_dlores_spr_filtered(void) -{ - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix0; + } + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4e(); + } + if (bpldat_copy[1] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[1]) { + copybpl4o(); + } + loaded_pix = getbpl4(); + loaded_pixs[0] = loaded_pix; + shiftbpl4(); + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm0_n1_p8_ihires_dlores_spr(void) +static void lts_aga_fm0_n1_p4_ihires_dlores_filtered(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix0; + } + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4e(); + } + if (bpldat_copy[1] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[1]) { + copybpl4o(); + } + loaded_pix = getbpl4(); + loaded_pixs[0] = loaded_pix; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix1; + } + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4e(); + } + if (bpldat_copy[1] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[1]) { + copybpl4o(); + } + loaded_pix = getbpl4(); + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm0_n1_p8_ihires_dlores_spr_filtered(void) +static void lts_aga_fm0_dpf0_p4_ihires_dlores(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4(); + } + loaded_pix = getbpl4(); + loaded_pixs[0] = loaded_pix; + shiftbpl4(); + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm0_dpf0_p8_ihires_dlores_spr(void) +static void lts_aga_fm0_dpf0_p4_ihires_dlores_filtered(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4(); + } + loaded_pix = getbpl4(); + loaded_pixs[0] = loaded_pix; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + uae_u8 val1 = dpf_lookup[pix1]; + if (dpf_lookup_no[pix1]) { + val1 += dblpfofs[bpldualpf2of]; + } + val1 ^= bplcon4_denise_xor_val; + dpix_val1 = denise_colors.acolors[val1]; + } + last_bpl_pix = pix1; + } + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4(); + } + loaded_pix = getbpl4(); + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm0_dpf0_p8_ihires_dlores_spr_filtered(void) +static void lts_aga_fm0_dpf1_p4_ihires_dlores(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4e(); + } + if (bpldat_copy[1] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[1]) { + copybpl4o(); + } + loaded_pix = getbpl4(); + loaded_pixs[0] = loaded_pix; + shiftbpl4(); + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm0_dpf1_p8_ihires_dlores_spr(void) +static void lts_aga_fm0_dpf1_p4_ihires_dlores_filtered(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4e(); + } + if (bpldat_copy[1] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[1]) { + copybpl4o(); + } + loaded_pix = getbpl4(); + loaded_pixs[0] = loaded_pix; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + uae_u8 val1 = dpf_lookup[pix1]; + if (dpf_lookup_no[pix1]) { + val1 += dblpfofs[bpldualpf2of]; + } + val1 ^= bplcon4_denise_xor_val; + dpix_val1 = denise_colors.acolors[val1]; + } + last_bpl_pix = pix1; + } + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4e(); + } + if (bpldat_copy[1] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[1]) { + copybpl4o(); + } + loaded_pix = getbpl4(); + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm0_dpf1_p8_ihires_dlores_spr_filtered(void) +static void lts_aga_fm0_ehb0_p4_ihires_dlores(void) { - lts_null(); -} -static void lts_aga_fm0_ehb0_p8_ihires_dlores_spr(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb0_p8_ihires_dlores_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb1_p8_ihires_dlores_spr(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb1_p8_ihires_dlores_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham0_p8_ihires_dlores_spr(void) -{ - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm0_ham0_p8_ihires_dlores_spr_filtered(void) +static void lts_aga_fm0_ehb0_p4_ihires_dlores_filtered(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm0_ham1_p8_ihires_dlores_spr(void) +static void lts_aga_fm0_ehb1_p4_ihires_dlores(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm0_ham1_p8_ihires_dlores_spr_filtered(void) +static void lts_aga_fm0_ehb1_p4_ihires_dlores_filtered(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm0_kehb0_p8_ihires_dlores_spr(void) +static void lts_aga_fm0_ham0_p4_ihires_dlores(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm0_kehb0_p8_ihires_dlores_spr_filtered(void) +static void lts_aga_fm0_ham0_p4_ihires_dlores_filtered(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm0_kehb1_p8_ihires_dlores_spr(void) +static void lts_aga_fm0_ham1_p4_ihires_dlores(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm0_kehb1_p8_ihires_dlores_spr_filtered(void) +static void lts_aga_fm0_ham1_p4_ihires_dlores_filtered(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm0_n0_p2_ishres_dlores(void) +static void lts_aga_fm0_kehb0_p4_ihires_dlores(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm0_n0_p2_ishres_dlores_filtered(void) +static void lts_aga_fm0_kehb0_p4_ihires_dlores_filtered(void) { - lts_null(); -} -static void lts_aga_fm0_n1_p2_ishres_dlores(void) -{ - lts_null(); -} -static void lts_aga_fm0_n1_p2_ishres_dlores_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_dpf0_p2_ishres_dlores(void) -{ - lts_null(); -} -static void lts_aga_fm0_dpf0_p2_ishres_dlores_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_dpf1_p2_ishres_dlores(void) -{ - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm0_dpf1_p2_ishres_dlores_filtered(void) +static void lts_aga_fm0_kehb1_p4_ihires_dlores(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm0_ehb0_p2_ishres_dlores(void) +static void lts_aga_fm0_kehb1_p4_ihires_dlores_filtered(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm0_ehb0_p2_ishres_dlores_filtered(void) +static void lts_aga_fm0_n0_p6_ihires_dlores(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm0_ehb1_p2_ishres_dlores(void) +static void lts_aga_fm0_n0_p6_ihires_dlores_filtered(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm0_ehb1_p2_ishres_dlores_filtered(void) +static void lts_aga_fm0_n1_p6_ihires_dlores(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm0_ham0_p2_ishres_dlores(void) +static void lts_aga_fm0_n1_p6_ihires_dlores_filtered(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm0_ham0_p2_ishres_dlores_filtered(void) +static void lts_aga_fm0_dpf0_p6_ihires_dlores(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm0_ham1_p2_ishres_dlores(void) +static void lts_aga_fm0_dpf0_p6_ihires_dlores_filtered(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm0_ham1_p2_ishres_dlores_filtered(void) +static void lts_aga_fm0_dpf1_p6_ihires_dlores(void) { - lts_null(); -} -static void lts_aga_fm0_kehb0_p2_ishres_dlores(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb0_p2_ishres_dlores_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb1_p2_ishres_dlores(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb1_p2_ishres_dlores_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_n0_p4_ishres_dlores(void) -{ - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm0_n0_p4_ishres_dlores_filtered(void) +static void lts_aga_fm0_dpf1_p6_ihires_dlores_filtered(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm0_n1_p4_ishres_dlores(void) +static void lts_aga_fm0_ehb0_p6_ihires_dlores(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm0_n1_p4_ishres_dlores_filtered(void) +static void lts_aga_fm0_ehb0_p6_ihires_dlores_filtered(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm0_dpf0_p4_ishres_dlores(void) +static void lts_aga_fm0_ehb1_p6_ihires_dlores(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm0_dpf0_p4_ishres_dlores_filtered(void) +static void lts_aga_fm0_ehb1_p6_ihires_dlores_filtered(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm0_dpf1_p4_ishres_dlores(void) +static void lts_aga_fm0_ham0_p6_ihires_dlores(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm0_dpf1_p4_ishres_dlores_filtered(void) +static void lts_aga_fm0_ham0_p6_ihires_dlores_filtered(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm0_ehb0_p4_ishres_dlores(void) +static void lts_aga_fm0_ham1_p6_ihires_dlores(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm0_ehb0_p4_ishres_dlores_filtered(void) +static void lts_aga_fm0_ham1_p6_ihires_dlores_filtered(void) { - lts_null(); -} -static void lts_aga_fm0_ehb1_p4_ishres_dlores(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb1_p4_ishres_dlores_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham0_p4_ishres_dlores(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham0_p4_ishres_dlores_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham1_p4_ishres_dlores(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham1_p4_ishres_dlores_filtered(void) -{ - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm0_kehb0_p4_ishres_dlores(void) +static void lts_aga_fm0_kehb0_p6_ihires_dlores(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm0_kehb0_p4_ishres_dlores_filtered(void) +static void lts_aga_fm0_kehb0_p6_ihires_dlores_filtered(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm0_kehb1_p4_ishres_dlores(void) +static void lts_aga_fm0_kehb1_p6_ihires_dlores(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm0_kehb1_p4_ishres_dlores_filtered(void) +static void lts_aga_fm0_kehb1_p6_ihires_dlores_filtered(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm0_n0_p6_ishres_dlores(void) +static void lts_aga_fm0_n0_p8_ihires_dlores(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm0_n0_p6_ishres_dlores_filtered(void) +static void lts_aga_fm0_n0_p8_ihires_dlores_filtered(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm0_n1_p6_ishres_dlores(void) +static void lts_aga_fm0_n1_p8_ihires_dlores(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm0_n1_p6_ishres_dlores_filtered(void) +static void lts_aga_fm0_n1_p8_ihires_dlores_filtered(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm0_dpf0_p6_ishres_dlores(void) +static void lts_aga_fm0_dpf0_p8_ihires_dlores(void) { - lts_null(); -} -static void lts_aga_fm0_dpf0_p6_ishres_dlores_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_dpf1_p6_ishres_dlores(void) -{ - lts_null(); -} -static void lts_aga_fm0_dpf1_p6_ishres_dlores_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb0_p6_ishres_dlores(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb0_p6_ishres_dlores_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb1_p6_ishres_dlores(void) -{ - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm0_ehb1_p6_ishres_dlores_filtered(void) +static void lts_aga_fm0_dpf0_p8_ihires_dlores_filtered(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm0_ham0_p6_ishres_dlores(void) +static void lts_aga_fm0_dpf1_p8_ihires_dlores(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm0_ham0_p6_ishres_dlores_filtered(void) +static void lts_aga_fm0_dpf1_p8_ihires_dlores_filtered(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm0_ham1_p6_ishres_dlores(void) +static void lts_aga_fm0_ehb0_p8_ihires_dlores(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm0_ham1_p6_ishres_dlores_filtered(void) +static void lts_aga_fm0_ehb0_p8_ihires_dlores_filtered(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm0_kehb0_p6_ishres_dlores(void) +static void lts_aga_fm0_ehb1_p8_ihires_dlores(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm0_kehb0_p6_ishres_dlores_filtered(void) +static void lts_aga_fm0_ehb1_p8_ihires_dlores_filtered(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm0_kehb1_p6_ishres_dlores(void) +static void lts_aga_fm0_ham0_p8_ihires_dlores(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm0_kehb1_p6_ishres_dlores_filtered(void) +static void lts_aga_fm0_ham0_p8_ihires_dlores_filtered(void) { - lts_null(); -} -static void lts_aga_fm0_n0_p8_ishres_dlores(void) -{ - lts_null(); -} -static void lts_aga_fm0_n0_p8_ishres_dlores_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_n1_p8_ishres_dlores(void) -{ - lts_null(); -} -static void lts_aga_fm0_n1_p8_ishres_dlores_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_dpf0_p8_ishres_dlores(void) -{ - lts_null(); -} -static void lts_aga_fm0_dpf0_p8_ishres_dlores_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_dpf1_p8_ishres_dlores(void) -{ - lts_null(); -} -static void lts_aga_fm0_dpf1_p8_ishres_dlores_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb0_p8_ishres_dlores(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb0_p8_ishres_dlores_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb1_p8_ishres_dlores(void) -{ - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm0_ehb1_p8_ishres_dlores_filtered(void) +static void lts_aga_fm0_ham1_p8_ihires_dlores(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm0_ham0_p8_ishres_dlores(void) +static void lts_aga_fm0_ham1_p8_ihires_dlores_filtered(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm0_ham0_p8_ishres_dlores_filtered(void) +static void lts_aga_fm0_kehb0_p8_ihires_dlores(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm0_ham1_p8_ishres_dlores(void) +static void lts_aga_fm0_kehb0_p8_ihires_dlores_filtered(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm0_ham1_p8_ishres_dlores_filtered(void) +static void lts_aga_fm0_kehb1_p8_ihires_dlores(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm0_kehb0_p8_ishres_dlores(void) +static void lts_aga_fm0_kehb1_p8_ihires_dlores_filtered(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm0_kehb0_p8_ishres_dlores_filtered(void) +static void lts_aga_fm0_n0_p2_ihires_dlores_spr(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix0; + } + shiftbpl2(); + if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { + copybpl2(); + } + loaded_pix = getbpl2(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + shiftbpl2(); + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm0_kehb1_p8_ishres_dlores(void) +static void lts_aga_fm0_n0_p2_ihires_dlores_spr_filtered(void) { - lts_null(); -} -static void lts_aga_fm0_kehb1_p8_ishres_dlores_filtered(void) + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix0; + } + shiftbpl2(); + if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { + copybpl2(); + } + loaded_pix = getbpl2(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix1; + } + shiftbpl2(); + if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { + copybpl2(); + } + loaded_pix = getbpl2(); + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_n1_p2_ihires_dlores_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix0; + } + shiftbpl2(); + if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { + copybpl2e(); + } + if (bpldat_copy[1] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[1]) { + copybpl2o(); + } + loaded_pix = getbpl2(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + shiftbpl2(); + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_n1_p2_ihires_dlores_spr_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix0; + } + shiftbpl2(); + if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { + copybpl2e(); + } + if (bpldat_copy[1] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[1]) { + copybpl2o(); + } + loaded_pix = getbpl2(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix1; + } + shiftbpl2(); + if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { + copybpl2e(); + } + if (bpldat_copy[1] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[1]) { + copybpl2o(); + } + loaded_pix = getbpl2(); + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_dpf0_p2_ihires_dlores_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + shiftbpl2(); + if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { + copybpl2(); + } + loaded_pix = getbpl2(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + shiftbpl2(); + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_dpf0_p2_ihires_dlores_spr_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + shiftbpl2(); + if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { + copybpl2(); + } + loaded_pix = getbpl2(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + uae_u8 val1 = dpf_lookup[pix1]; + if (dpf_lookup_no[pix1]) { + val1 += dblpfofs[bpldualpf2of]; + } + val1 ^= bplcon4_denise_xor_val; + dpix_val1 = denise_colors.acolors[val1]; + } + last_bpl_pix = pix1; + } + shiftbpl2(); + if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { + copybpl2(); + } + loaded_pix = getbpl2(); + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_dpf1_p2_ihires_dlores_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + shiftbpl2(); + if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { + copybpl2e(); + } + if (bpldat_copy[1] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[1]) { + copybpl2o(); + } + loaded_pix = getbpl2(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + shiftbpl2(); + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_dpf1_p2_ihires_dlores_spr_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + shiftbpl2(); + if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { + copybpl2e(); + } + if (bpldat_copy[1] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[1]) { + copybpl2o(); + } + loaded_pix = getbpl2(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + uae_u8 val1 = dpf_lookup[pix1]; + if (dpf_lookup_no[pix1]) { + val1 += dblpfofs[bpldualpf2of]; + } + val1 ^= bplcon4_denise_xor_val; + dpix_val1 = denise_colors.acolors[val1]; + } + last_bpl_pix = pix1; + } + shiftbpl2(); + if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { + copybpl2e(); + } + if (bpldat_copy[1] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[1]) { + copybpl2o(); + } + loaded_pix = getbpl2(); + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ehb0_p2_ihires_dlores_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ehb0_p2_ihires_dlores_spr_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ehb1_p2_ihires_dlores_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ehb1_p2_ihires_dlores_spr_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ham0_p2_ihires_dlores_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ham0_p2_ihires_dlores_spr_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ham1_p2_ihires_dlores_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ham1_p2_ihires_dlores_spr_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_kehb0_p2_ihires_dlores_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_kehb0_p2_ihires_dlores_spr_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_kehb1_p2_ihires_dlores_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_kehb1_p2_ihires_dlores_spr_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_n0_p4_ihires_dlores_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix0; + } + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4(); + } + loaded_pix = getbpl4(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + shiftbpl4(); + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_n0_p4_ihires_dlores_spr_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix0; + } + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4(); + } + loaded_pix = getbpl4(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix1; + } + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4(); + } + loaded_pix = getbpl4(); + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_n1_p4_ihires_dlores_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix0; + } + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4e(); + } + if (bpldat_copy[1] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[1]) { + copybpl4o(); + } + loaded_pix = getbpl4(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + shiftbpl4(); + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_n1_p4_ihires_dlores_spr_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix0; + } + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4e(); + } + if (bpldat_copy[1] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[1]) { + copybpl4o(); + } + loaded_pix = getbpl4(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix1; + } + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4e(); + } + if (bpldat_copy[1] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[1]) { + copybpl4o(); + } + loaded_pix = getbpl4(); + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_dpf0_p4_ihires_dlores_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4(); + } + loaded_pix = getbpl4(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + shiftbpl4(); + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_dpf0_p4_ihires_dlores_spr_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4(); + } + loaded_pix = getbpl4(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + uae_u8 val1 = dpf_lookup[pix1]; + if (dpf_lookup_no[pix1]) { + val1 += dblpfofs[bpldualpf2of]; + } + val1 ^= bplcon4_denise_xor_val; + dpix_val1 = denise_colors.acolors[val1]; + } + last_bpl_pix = pix1; + } + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4(); + } + loaded_pix = getbpl4(); + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_dpf1_p4_ihires_dlores_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4e(); + } + if (bpldat_copy[1] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[1]) { + copybpl4o(); + } + loaded_pix = getbpl4(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + shiftbpl4(); + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_dpf1_p4_ihires_dlores_spr_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4e(); + } + if (bpldat_copy[1] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[1]) { + copybpl4o(); + } + loaded_pix = getbpl4(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + uae_u8 val1 = dpf_lookup[pix1]; + if (dpf_lookup_no[pix1]) { + val1 += dblpfofs[bpldualpf2of]; + } + val1 ^= bplcon4_denise_xor_val; + dpix_val1 = denise_colors.acolors[val1]; + } + last_bpl_pix = pix1; + } + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4e(); + } + if (bpldat_copy[1] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[1]) { + copybpl4o(); + } + loaded_pix = getbpl4(); + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ehb0_p4_ihires_dlores_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ehb0_p4_ihires_dlores_spr_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ehb1_p4_ihires_dlores_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ehb1_p4_ihires_dlores_spr_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ham0_p4_ihires_dlores_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ham0_p4_ihires_dlores_spr_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ham1_p4_ihires_dlores_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ham1_p4_ihires_dlores_spr_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_kehb0_p4_ihires_dlores_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_kehb0_p4_ihires_dlores_spr_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_kehb1_p4_ihires_dlores_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_kehb1_p4_ihires_dlores_spr_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_n0_p6_ihires_dlores_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_n0_p6_ihires_dlores_spr_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_n1_p6_ihires_dlores_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_n1_p6_ihires_dlores_spr_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_dpf0_p6_ihires_dlores_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_dpf0_p6_ihires_dlores_spr_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_dpf1_p6_ihires_dlores_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_dpf1_p6_ihires_dlores_spr_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ehb0_p6_ihires_dlores_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ehb0_p6_ihires_dlores_spr_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ehb1_p6_ihires_dlores_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ehb1_p6_ihires_dlores_spr_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ham0_p6_ihires_dlores_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ham0_p6_ihires_dlores_spr_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ham1_p6_ihires_dlores_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ham1_p6_ihires_dlores_spr_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_kehb0_p6_ihires_dlores_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_kehb0_p6_ihires_dlores_spr_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_kehb1_p6_ihires_dlores_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_kehb1_p6_ihires_dlores_spr_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_n0_p8_ihires_dlores_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_n0_p8_ihires_dlores_spr_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_n1_p8_ihires_dlores_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_n1_p8_ihires_dlores_spr_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_dpf0_p8_ihires_dlores_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_dpf0_p8_ihires_dlores_spr_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_dpf1_p8_ihires_dlores_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_dpf1_p8_ihires_dlores_spr_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ehb0_p8_ihires_dlores_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ehb0_p8_ihires_dlores_spr_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ehb1_p8_ihires_dlores_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ehb1_p8_ihires_dlores_spr_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ham0_p8_ihires_dlores_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ham0_p8_ihires_dlores_spr_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ham1_p8_ihires_dlores_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ham1_p8_ihires_dlores_spr_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_kehb0_p8_ihires_dlores_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_kehb0_p8_ihires_dlores_spr_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_kehb1_p8_ihires_dlores_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_kehb1_p8_ihires_dlores_spr_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_n0_p2_ishres_dlores(void) +{ + lts_null(); +} +static void lts_aga_fm0_n0_p2_ishres_dlores_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_n1_p2_ishres_dlores(void) +{ + lts_null(); +} +static void lts_aga_fm0_n1_p2_ishres_dlores_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_dpf0_p2_ishres_dlores(void) +{ + lts_null(); +} +static void lts_aga_fm0_dpf0_p2_ishres_dlores_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_dpf1_p2_ishres_dlores(void) +{ + lts_null(); +} +static void lts_aga_fm0_dpf1_p2_ishres_dlores_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_ehb0_p2_ishres_dlores(void) +{ + lts_null(); +} +static void lts_aga_fm0_ehb0_p2_ishres_dlores_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_ehb1_p2_ishres_dlores(void) +{ + lts_null(); +} +static void lts_aga_fm0_ehb1_p2_ishres_dlores_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_ham0_p2_ishres_dlores(void) +{ + lts_null(); +} +static void lts_aga_fm0_ham0_p2_ishres_dlores_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_ham1_p2_ishres_dlores(void) +{ + lts_null(); +} +static void lts_aga_fm0_ham1_p2_ishres_dlores_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_kehb0_p2_ishres_dlores(void) +{ + lts_null(); +} +static void lts_aga_fm0_kehb0_p2_ishres_dlores_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_kehb1_p2_ishres_dlores(void) +{ + lts_null(); +} +static void lts_aga_fm0_kehb1_p2_ishres_dlores_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_n0_p4_ishres_dlores(void) +{ + lts_null(); +} +static void lts_aga_fm0_n0_p4_ishres_dlores_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_n1_p4_ishres_dlores(void) +{ + lts_null(); +} +static void lts_aga_fm0_n1_p4_ishres_dlores_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_dpf0_p4_ishres_dlores(void) +{ + lts_null(); +} +static void lts_aga_fm0_dpf0_p4_ishres_dlores_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_dpf1_p4_ishres_dlores(void) +{ + lts_null(); +} +static void lts_aga_fm0_dpf1_p4_ishres_dlores_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_ehb0_p4_ishres_dlores(void) +{ + lts_null(); +} +static void lts_aga_fm0_ehb0_p4_ishres_dlores_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_ehb1_p4_ishres_dlores(void) +{ + lts_null(); +} +static void lts_aga_fm0_ehb1_p4_ishres_dlores_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_ham0_p4_ishres_dlores(void) +{ + lts_null(); +} +static void lts_aga_fm0_ham0_p4_ishres_dlores_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_ham1_p4_ishres_dlores(void) +{ + lts_null(); +} +static void lts_aga_fm0_ham1_p4_ishres_dlores_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_kehb0_p4_ishres_dlores(void) +{ + lts_null(); +} +static void lts_aga_fm0_kehb0_p4_ishres_dlores_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_kehb1_p4_ishres_dlores(void) +{ + lts_null(); +} +static void lts_aga_fm0_kehb1_p4_ishres_dlores_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_n0_p6_ishres_dlores(void) +{ + lts_null(); +} +static void lts_aga_fm0_n0_p6_ishres_dlores_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_n1_p6_ishres_dlores(void) +{ + lts_null(); +} +static void lts_aga_fm0_n1_p6_ishres_dlores_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_dpf0_p6_ishres_dlores(void) +{ + lts_null(); +} +static void lts_aga_fm0_dpf0_p6_ishres_dlores_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_dpf1_p6_ishres_dlores(void) +{ + lts_null(); +} +static void lts_aga_fm0_dpf1_p6_ishres_dlores_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_ehb0_p6_ishres_dlores(void) +{ + lts_null(); +} +static void lts_aga_fm0_ehb0_p6_ishres_dlores_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_ehb1_p6_ishres_dlores(void) +{ + lts_null(); +} +static void lts_aga_fm0_ehb1_p6_ishres_dlores_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_ham0_p6_ishres_dlores(void) +{ + lts_null(); +} +static void lts_aga_fm0_ham0_p6_ishres_dlores_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_ham1_p6_ishres_dlores(void) +{ + lts_null(); +} +static void lts_aga_fm0_ham1_p6_ishres_dlores_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_kehb0_p6_ishres_dlores(void) +{ + lts_null(); +} +static void lts_aga_fm0_kehb0_p6_ishres_dlores_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_kehb1_p6_ishres_dlores(void) +{ + lts_null(); +} +static void lts_aga_fm0_kehb1_p6_ishres_dlores_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_n0_p8_ishres_dlores(void) +{ + lts_null(); +} +static void lts_aga_fm0_n0_p8_ishres_dlores_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_n1_p8_ishres_dlores(void) +{ + lts_null(); +} +static void lts_aga_fm0_n1_p8_ishres_dlores_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_dpf0_p8_ishres_dlores(void) +{ + lts_null(); +} +static void lts_aga_fm0_dpf0_p8_ishres_dlores_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_dpf1_p8_ishres_dlores(void) +{ + lts_null(); +} +static void lts_aga_fm0_dpf1_p8_ishres_dlores_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_ehb0_p8_ishres_dlores(void) +{ + lts_null(); +} +static void lts_aga_fm0_ehb0_p8_ishres_dlores_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_ehb1_p8_ishres_dlores(void) +{ + lts_null(); +} +static void lts_aga_fm0_ehb1_p8_ishres_dlores_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_ham0_p8_ishres_dlores(void) +{ + lts_null(); +} +static void lts_aga_fm0_ham0_p8_ishres_dlores_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_ham1_p8_ishres_dlores(void) +{ + lts_null(); +} +static void lts_aga_fm0_ham1_p8_ishres_dlores_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_kehb0_p8_ishres_dlores(void) +{ + lts_null(); +} +static void lts_aga_fm0_kehb0_p8_ishres_dlores_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_kehb1_p8_ishres_dlores(void) +{ + lts_null(); +} +static void lts_aga_fm0_kehb1_p8_ishres_dlores_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_n0_p2_ishres_dlores_spr(void) +{ + lts_null(); +} +static void lts_aga_fm0_n0_p2_ishres_dlores_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_n1_p2_ishres_dlores_spr(void) +{ + lts_null(); +} +static void lts_aga_fm0_n1_p2_ishres_dlores_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_dpf0_p2_ishres_dlores_spr(void) +{ + lts_null(); +} +static void lts_aga_fm0_dpf0_p2_ishres_dlores_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_dpf1_p2_ishres_dlores_spr(void) +{ + lts_null(); +} +static void lts_aga_fm0_dpf1_p2_ishres_dlores_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_ehb0_p2_ishres_dlores_spr(void) +{ + lts_null(); +} +static void lts_aga_fm0_ehb0_p2_ishres_dlores_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_ehb1_p2_ishres_dlores_spr(void) +{ + lts_null(); +} +static void lts_aga_fm0_ehb1_p2_ishres_dlores_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_ham0_p2_ishres_dlores_spr(void) +{ + lts_null(); +} +static void lts_aga_fm0_ham0_p2_ishres_dlores_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_ham1_p2_ishres_dlores_spr(void) +{ + lts_null(); +} +static void lts_aga_fm0_ham1_p2_ishres_dlores_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_kehb0_p2_ishres_dlores_spr(void) +{ + lts_null(); +} +static void lts_aga_fm0_kehb0_p2_ishres_dlores_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_kehb1_p2_ishres_dlores_spr(void) +{ + lts_null(); +} +static void lts_aga_fm0_kehb1_p2_ishres_dlores_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_n0_p4_ishres_dlores_spr(void) +{ + lts_null(); +} +static void lts_aga_fm0_n0_p4_ishres_dlores_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_n1_p4_ishres_dlores_spr(void) +{ + lts_null(); +} +static void lts_aga_fm0_n1_p4_ishres_dlores_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_dpf0_p4_ishres_dlores_spr(void) +{ + lts_null(); +} +static void lts_aga_fm0_dpf0_p4_ishres_dlores_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_dpf1_p4_ishres_dlores_spr(void) +{ + lts_null(); +} +static void lts_aga_fm0_dpf1_p4_ishres_dlores_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_ehb0_p4_ishres_dlores_spr(void) +{ + lts_null(); +} +static void lts_aga_fm0_ehb0_p4_ishres_dlores_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_ehb1_p4_ishres_dlores_spr(void) +{ + lts_null(); +} +static void lts_aga_fm0_ehb1_p4_ishres_dlores_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_ham0_p4_ishres_dlores_spr(void) +{ + lts_null(); +} +static void lts_aga_fm0_ham0_p4_ishres_dlores_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_ham1_p4_ishres_dlores_spr(void) +{ + lts_null(); +} +static void lts_aga_fm0_ham1_p4_ishres_dlores_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_kehb0_p4_ishres_dlores_spr(void) +{ + lts_null(); +} +static void lts_aga_fm0_kehb0_p4_ishres_dlores_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_kehb1_p4_ishres_dlores_spr(void) +{ + lts_null(); +} +static void lts_aga_fm0_kehb1_p4_ishres_dlores_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_n0_p6_ishres_dlores_spr(void) +{ + lts_null(); +} +static void lts_aga_fm0_n0_p6_ishres_dlores_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_n1_p6_ishres_dlores_spr(void) +{ + lts_null(); +} +static void lts_aga_fm0_n1_p6_ishres_dlores_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_dpf0_p6_ishres_dlores_spr(void) +{ + lts_null(); +} +static void lts_aga_fm0_dpf0_p6_ishres_dlores_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_dpf1_p6_ishres_dlores_spr(void) +{ + lts_null(); +} +static void lts_aga_fm0_dpf1_p6_ishres_dlores_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_ehb0_p6_ishres_dlores_spr(void) +{ + lts_null(); +} +static void lts_aga_fm0_ehb0_p6_ishres_dlores_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_ehb1_p6_ishres_dlores_spr(void) +{ + lts_null(); +} +static void lts_aga_fm0_ehb1_p6_ishres_dlores_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_ham0_p6_ishres_dlores_spr(void) +{ + lts_null(); +} +static void lts_aga_fm0_ham0_p6_ishres_dlores_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_ham1_p6_ishres_dlores_spr(void) +{ + lts_null(); +} +static void lts_aga_fm0_ham1_p6_ishres_dlores_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_kehb0_p6_ishres_dlores_spr(void) +{ + lts_null(); +} +static void lts_aga_fm0_kehb0_p6_ishres_dlores_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_kehb1_p6_ishres_dlores_spr(void) +{ + lts_null(); +} +static void lts_aga_fm0_kehb1_p6_ishres_dlores_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_n0_p8_ishres_dlores_spr(void) +{ + lts_null(); +} +static void lts_aga_fm0_n0_p8_ishres_dlores_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_n1_p8_ishres_dlores_spr(void) +{ + lts_null(); +} +static void lts_aga_fm0_n1_p8_ishres_dlores_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_dpf0_p8_ishres_dlores_spr(void) +{ + lts_null(); +} +static void lts_aga_fm0_dpf0_p8_ishres_dlores_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_dpf1_p8_ishres_dlores_spr(void) +{ + lts_null(); +} +static void lts_aga_fm0_dpf1_p8_ishres_dlores_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_ehb0_p8_ishres_dlores_spr(void) +{ + lts_null(); +} +static void lts_aga_fm0_ehb0_p8_ishres_dlores_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_ehb1_p8_ishres_dlores_spr(void) +{ + lts_null(); +} +static void lts_aga_fm0_ehb1_p8_ishres_dlores_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_ham0_p8_ishres_dlores_spr(void) +{ + lts_null(); +} +static void lts_aga_fm0_ham0_p8_ishres_dlores_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_ham1_p8_ishres_dlores_spr(void) +{ + lts_null(); +} +static void lts_aga_fm0_ham1_p8_ishres_dlores_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_kehb0_p8_ishres_dlores_spr(void) +{ + lts_null(); +} +static void lts_aga_fm0_kehb0_p8_ishres_dlores_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_kehb1_p8_ishres_dlores_spr(void) +{ + lts_null(); +} +static void lts_aga_fm0_kehb1_p8_ishres_dlores_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_n0_p2_ilores_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl2(); + loaded_pix = getbpl2(); + } + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl2(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl2(); + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl2(); + loaded_pix = getbpl2(); + } + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl2(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl2(); + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_n0_p2_ilores_dhires_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_n1_p2_ilores_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl2e(); + loaded_pix = getbpl2(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl2o(); + loaded_pix = getbpl2(); + } + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl2e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl2(); + } + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl2o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl2(); + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl2e(); + loaded_pix = getbpl2(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl2o(); + loaded_pix = getbpl2(); + } + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl2e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl2(); + } + if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { + copybpl2o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl2(); + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_n1_p2_ilores_dhires_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_dpf0_p2_ilores_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl2(); + loaded_pix = getbpl2(); + } + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl2(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl2(); + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl2(); + loaded_pix = getbpl2(); + } + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl2(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl2(); + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_dpf0_p2_ilores_dhires_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_dpf1_p2_ilores_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl2e(); + loaded_pix = getbpl2(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl2o(); + loaded_pix = getbpl2(); + } + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl2e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl2(); + } + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl2o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl2(); + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl2e(); + loaded_pix = getbpl2(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl2o(); + loaded_pix = getbpl2(); + } + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl2e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl2(); + } + if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { + copybpl2o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl2(); + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_dpf1_p2_ilores_dhires_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_ehb0_p2_ilores_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ehb0_p2_ilores_dhires_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_ehb1_p2_ilores_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ehb1_p2_ilores_dhires_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_ham0_p2_ilores_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ham0_p2_ilores_dhires_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_ham1_p2_ilores_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ham1_p2_ilores_dhires_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_kehb0_p2_ilores_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_kehb0_p2_ilores_dhires_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_kehb1_p2_ilores_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_kehb1_p2_ilores_dhires_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_n0_p4_ilores_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4(); + loaded_pix = getbpl4(); + } + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4(); + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4(); + loaded_pix = getbpl4(); + } + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4(); + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_n0_p4_ilores_dhires_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_n1_p4_ilores_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4e(); + loaded_pix = getbpl4(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl4o(); + loaded_pix = getbpl4(); + } + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4(); + } + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl4o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl4(); + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4e(); + loaded_pix = getbpl4(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl4o(); + loaded_pix = getbpl4(); + } + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4(); + } + if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { + copybpl4o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl4(); + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_n1_p4_ilores_dhires_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_dpf0_p4_ilores_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4(); + loaded_pix = getbpl4(); + } + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4(); + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4(); + loaded_pix = getbpl4(); + } + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4(); + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_dpf0_p4_ilores_dhires_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_dpf1_p4_ilores_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4e(); + loaded_pix = getbpl4(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl4o(); + loaded_pix = getbpl4(); + } + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4(); + } + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl4o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl4(); + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4e(); + loaded_pix = getbpl4(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl4o(); + loaded_pix = getbpl4(); + } + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4(); + } + if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { + copybpl4o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl4(); + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_dpf1_p4_ilores_dhires_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_ehb0_p4_ilores_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ehb0_p4_ilores_dhires_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_ehb1_p4_ilores_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ehb1_p4_ilores_dhires_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_ham0_p4_ilores_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ham0_p4_ilores_dhires_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_ham1_p4_ilores_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ham1_p4_ilores_dhires_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_kehb0_p4_ilores_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_kehb0_p4_ilores_dhires_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_kehb1_p4_ilores_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_kehb1_p4_ilores_dhires_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_n0_p6_ilores_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6(); + loaded_pix = getbpl6(); + } + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6(); + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6(); + loaded_pix = getbpl6(); + } + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6(); + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_n0_p6_ilores_dhires_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_n1_p6_ilores_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6e(); + loaded_pix = getbpl6(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl6o(); + loaded_pix = getbpl6(); + } + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6(); + } + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl6o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl6(); + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6e(); + loaded_pix = getbpl6(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl6o(); + loaded_pix = getbpl6(); + } + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6(); + } + if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { + copybpl6o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl6(); + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_n1_p6_ilores_dhires_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_dpf0_p6_ilores_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6(); + loaded_pix = getbpl6(); + } + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6(); + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6(); + loaded_pix = getbpl6(); + } + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6(); + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_dpf0_p6_ilores_dhires_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_dpf1_p6_ilores_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6e(); + loaded_pix = getbpl6(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl6o(); + loaded_pix = getbpl6(); + } + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6(); + } + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl6o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl6(); + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6e(); + loaded_pix = getbpl6(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl6o(); + loaded_pix = getbpl6(); + } + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6(); + } + if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { + copybpl6o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl6(); + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_dpf1_p6_ilores_dhires_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_ehb0_p6_ilores_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + pix0 ^= bplcon4_denise_xor_val; + if (!(pix0 & 0x20)) { + dpix_val0 = denise_colors.acolors[pix0]; + } else { + uae_u32 v = (denise_colors.color_regs_aga[pix0 & 0x1f] >> 1) & 0x7f7f7f; + dpix_val0 = CONVERT_RGB(v); + } + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6(); + loaded_pix = getbpl6(); + } + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6(); + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + pix2 ^= bplcon4_denise_xor_val; + if (!(pix2 & 0x20)) { + dpix_val2 = denise_colors.acolors[pix2]; + } else { + uae_u32 v = (denise_colors.color_regs_aga[pix2 & 0x1f] >> 1) & 0x7f7f7f; + dpix_val2 = CONVERT_RGB(v); + } + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6(); + loaded_pix = getbpl6(); + } + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6(); + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ehb0_p6_ilores_dhires_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_ehb1_p6_ilores_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + pix0 ^= bplcon4_denise_xor_val; + if (!(pix0 & 0x20)) { + dpix_val0 = denise_colors.acolors[pix0]; + } else { + uae_u32 v = (denise_colors.color_regs_aga[pix0 & 0x1f] >> 1) & 0x7f7f7f; + dpix_val0 = CONVERT_RGB(v); + } + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6e(); + loaded_pix = getbpl6(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl6o(); + loaded_pix = getbpl6(); + } + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6(); + } + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl6o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl6(); + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + pix2 ^= bplcon4_denise_xor_val; + if (!(pix2 & 0x20)) { + dpix_val2 = denise_colors.acolors[pix2]; + } else { + uae_u32 v = (denise_colors.color_regs_aga[pix2 & 0x1f] >> 1) & 0x7f7f7f; + dpix_val2 = CONVERT_RGB(v); + } + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6e(); + loaded_pix = getbpl6(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl6o(); + loaded_pix = getbpl6(); + } + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6(); + } + if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { + copybpl6o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl6(); + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ehb1_p6_ilores_dhires_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_ham0_p6_ilores_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = decode_ham_pixel_aga(pix0); + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6(); + loaded_pix = getbpl6(); + } + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6(); + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = decode_ham_pixel_aga(pix2); + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6(); + loaded_pix = getbpl6(); + } + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6(); + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ham0_p6_ilores_dhires_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_ham1_p6_ilores_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = decode_ham_pixel_aga(pix0); + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6e(); + loaded_pix = getbpl6(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl6o(); + loaded_pix = getbpl6(); + } + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6(); + } + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl6o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl6(); + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = decode_ham_pixel_aga(pix2); + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6e(); + loaded_pix = getbpl6(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl6o(); + loaded_pix = getbpl6(); + } + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6(); + } + if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { + copybpl6o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl6(); + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ham1_p6_ilores_dhires_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_kehb0_p6_ilores_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + pix0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[pix0 & 31]; + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6(); + loaded_pix = getbpl6(); + } + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6(); + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + pix2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[pix2 & 31]; + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6(); + loaded_pix = getbpl6(); + } + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6(); + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_kehb0_p6_ilores_dhires_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_kehb1_p6_ilores_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + pix0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[pix0 & 31]; + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6e(); + loaded_pix = getbpl6(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl6o(); + loaded_pix = getbpl6(); + } + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6(); + } + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl6o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl6(); + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + pix2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[pix2 & 31]; + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6e(); + loaded_pix = getbpl6(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl6o(); + loaded_pix = getbpl6(); + } + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6(); + } + if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { + copybpl6o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl6(); + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_kehb1_p6_ilores_dhires_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_n0_p8_ilores_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8(); + loaded_pix = getbpl8(); + } + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8(); + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8(); + loaded_pix = getbpl8(); + } + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8(); + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_n0_p8_ilores_dhires_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_n1_p8_ilores_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8e(); + loaded_pix = getbpl8(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl8o(); + loaded_pix = getbpl8(); + } + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8(); + } + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl8(); + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8e(); + loaded_pix = getbpl8(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl8o(); + loaded_pix = getbpl8(); + } + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8(); + } + if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl8(); + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_n1_p8_ilores_dhires_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_dpf0_p8_ilores_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8(); + loaded_pix = getbpl8(); + } + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8(); + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8(); + loaded_pix = getbpl8(); + } + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8(); + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_dpf0_p8_ilores_dhires_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_dpf1_p8_ilores_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8e(); + loaded_pix = getbpl8(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl8o(); + loaded_pix = getbpl8(); + } + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8(); + } + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl8(); + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8e(); + loaded_pix = getbpl8(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl8o(); + loaded_pix = getbpl8(); + } + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8(); + } + if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl8(); + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_dpf1_p8_ilores_dhires_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_ehb0_p8_ilores_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ehb0_p8_ilores_dhires_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_ehb1_p8_ilores_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ehb1_p8_ilores_dhires_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_ham0_p8_ilores_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = decode_ham_pixel_aga(pix0); + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8(); + loaded_pix = getbpl8(); + } + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8(); + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = decode_ham_pixel_aga(pix2); + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8(); + loaded_pix = getbpl8(); + } + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8(); + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ham0_p8_ilores_dhires_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_ham1_p8_ilores_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = decode_ham_pixel_aga(pix0); + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8e(); + loaded_pix = getbpl8(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl8o(); + loaded_pix = getbpl8(); + } + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8(); + } + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl8(); + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = decode_ham_pixel_aga(pix2); + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8e(); + loaded_pix = getbpl8(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl8o(); + loaded_pix = getbpl8(); + } + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8(); + } + if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl8(); + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ham1_p8_ilores_dhires_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_kehb0_p8_ilores_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_kehb0_p8_ilores_dhires_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_kehb1_p8_ilores_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_kehb1_p8_ilores_dhires_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_n0_p2_ilores_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl2(); + loaded_pix = getbpl2(); + } + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl2(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl2(); + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl2(); + loaded_pix = getbpl2(); + } + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl2(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl2(); + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_n0_p2_ilores_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_n1_p2_ilores_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl2e(); + loaded_pix = getbpl2(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl2o(); + loaded_pix = getbpl2(); + } + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl2e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl2(); + } + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl2o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl2(); + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl2e(); + loaded_pix = getbpl2(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl2o(); + loaded_pix = getbpl2(); + } + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl2e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl2(); + } + if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { + copybpl2o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl2(); + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_n1_p2_ilores_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_dpf0_p2_ilores_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl2(); + loaded_pix = getbpl2(); + } + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl2(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl2(); + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl2(); + loaded_pix = getbpl2(); + } + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl2(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl2(); + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_dpf0_p2_ilores_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_dpf1_p2_ilores_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl2e(); + loaded_pix = getbpl2(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl2o(); + loaded_pix = getbpl2(); + } + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl2e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl2(); + } + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl2o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl2(); + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl2e(); + loaded_pix = getbpl2(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl2o(); + loaded_pix = getbpl2(); + } + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl2e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl2(); + } + if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { + copybpl2o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl2(); + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_dpf1_p2_ilores_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_ehb0_p2_ilores_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ehb0_p2_ilores_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_ehb1_p2_ilores_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ehb1_p2_ilores_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_ham0_p2_ilores_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ham0_p2_ilores_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_ham1_p2_ilores_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ham1_p2_ilores_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_kehb0_p2_ilores_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_kehb0_p2_ilores_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_kehb1_p2_ilores_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_kehb1_p2_ilores_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_n0_p4_ilores_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4(); + loaded_pix = getbpl4(); + } + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4(); + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4(); + loaded_pix = getbpl4(); + } + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4(); + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_n0_p4_ilores_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_n1_p4_ilores_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4e(); + loaded_pix = getbpl4(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl4o(); + loaded_pix = getbpl4(); + } + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4(); + } + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl4o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl4(); + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4e(); + loaded_pix = getbpl4(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl4o(); + loaded_pix = getbpl4(); + } + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4(); + } + if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { + copybpl4o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl4(); + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_n1_p4_ilores_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_dpf0_p4_ilores_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4(); + loaded_pix = getbpl4(); + } + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4(); + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4(); + loaded_pix = getbpl4(); + } + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4(); + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_dpf0_p4_ilores_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_dpf1_p4_ilores_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4e(); + loaded_pix = getbpl4(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl4o(); + loaded_pix = getbpl4(); + } + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4(); + } + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl4o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl4(); + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4e(); + loaded_pix = getbpl4(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl4o(); + loaded_pix = getbpl4(); + } + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4(); + } + if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { + copybpl4o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl4(); + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_dpf1_p4_ilores_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_ehb0_p4_ilores_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ehb0_p4_ilores_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_ehb1_p4_ilores_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ehb1_p4_ilores_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_ham0_p4_ilores_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ham0_p4_ilores_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_ham1_p4_ilores_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ham1_p4_ilores_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_kehb0_p4_ilores_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_kehb0_p4_ilores_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_kehb1_p4_ilores_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_kehb1_p4_ilores_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_n0_p6_ilores_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6(); + loaded_pix = getbpl6(); + } + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6(); + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6(); + loaded_pix = getbpl6(); + } + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6(); + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_n0_p6_ilores_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_n1_p6_ilores_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6e(); + loaded_pix = getbpl6(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl6o(); + loaded_pix = getbpl6(); + } + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6(); + } + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl6o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl6(); + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6e(); + loaded_pix = getbpl6(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl6o(); + loaded_pix = getbpl6(); + } + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6(); + } + if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { + copybpl6o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl6(); + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_n1_p6_ilores_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_dpf0_p6_ilores_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6(); + loaded_pix = getbpl6(); + } + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6(); + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6(); + loaded_pix = getbpl6(); + } + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6(); + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_dpf0_p6_ilores_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_dpf1_p6_ilores_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6e(); + loaded_pix = getbpl6(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl6o(); + loaded_pix = getbpl6(); + } + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6(); + } + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl6o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl6(); + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6e(); + loaded_pix = getbpl6(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl6o(); + loaded_pix = getbpl6(); + } + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6(); + } + if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { + copybpl6o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl6(); + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_dpf1_p6_ilores_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_ehb0_p6_ilores_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + pix0 ^= bplcon4_denise_xor_val; + if (!(pix0 & 0x20)) { + dpix_val0 = denise_colors.acolors[pix0]; + } else { + uae_u32 v = (denise_colors.color_regs_aga[pix0 & 0x1f] >> 1) & 0x7f7f7f; + dpix_val0 = CONVERT_RGB(v); + } + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6(); + loaded_pix = getbpl6(); + } + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6(); + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + pix2 ^= bplcon4_denise_xor_val; + if (!(pix2 & 0x20)) { + dpix_val2 = denise_colors.acolors[pix2]; + } else { + uae_u32 v = (denise_colors.color_regs_aga[pix2 & 0x1f] >> 1) & 0x7f7f7f; + dpix_val2 = CONVERT_RGB(v); + } + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6(); + loaded_pix = getbpl6(); + } + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6(); + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ehb0_p6_ilores_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_ehb1_p6_ilores_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + pix0 ^= bplcon4_denise_xor_val; + if (!(pix0 & 0x20)) { + dpix_val0 = denise_colors.acolors[pix0]; + } else { + uae_u32 v = (denise_colors.color_regs_aga[pix0 & 0x1f] >> 1) & 0x7f7f7f; + dpix_val0 = CONVERT_RGB(v); + } + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6e(); + loaded_pix = getbpl6(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl6o(); + loaded_pix = getbpl6(); + } + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6(); + } + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl6o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl6(); + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + pix2 ^= bplcon4_denise_xor_val; + if (!(pix2 & 0x20)) { + dpix_val2 = denise_colors.acolors[pix2]; + } else { + uae_u32 v = (denise_colors.color_regs_aga[pix2 & 0x1f] >> 1) & 0x7f7f7f; + dpix_val2 = CONVERT_RGB(v); + } + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6e(); + loaded_pix = getbpl6(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl6o(); + loaded_pix = getbpl6(); + } + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6(); + } + if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { + copybpl6o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl6(); + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ehb1_p6_ilores_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_ham0_p6_ilores_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = decode_ham_pixel_aga(pix0); + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6(); + loaded_pix = getbpl6(); + } + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6(); + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = decode_ham_pixel_aga(pix2); + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6(); + loaded_pix = getbpl6(); + } + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6(); + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ham0_p6_ilores_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_ham1_p6_ilores_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = decode_ham_pixel_aga(pix0); + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6e(); + loaded_pix = getbpl6(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl6o(); + loaded_pix = getbpl6(); + } + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6(); + } + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl6o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl6(); + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = decode_ham_pixel_aga(pix2); + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6e(); + loaded_pix = getbpl6(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl6o(); + loaded_pix = getbpl6(); + } + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6(); + } + if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { + copybpl6o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl6(); + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ham1_p6_ilores_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_kehb0_p6_ilores_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + pix0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[pix0 & 31]; + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6(); + loaded_pix = getbpl6(); + } + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6(); + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + pix2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[pix2 & 31]; + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6(); + loaded_pix = getbpl6(); + } + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6(); + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_kehb0_p6_ilores_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_kehb1_p6_ilores_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + pix0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[pix0 & 31]; + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6e(); + loaded_pix = getbpl6(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl6o(); + loaded_pix = getbpl6(); + } + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6(); + } + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl6o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl6(); + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + pix2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[pix2 & 31]; + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6e(); + loaded_pix = getbpl6(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl6o(); + loaded_pix = getbpl6(); + } + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6(); + } + if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { + copybpl6o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl6(); + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_kehb1_p6_ilores_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_n0_p8_ilores_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8(); + loaded_pix = getbpl8(); + } + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8(); + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8(); + loaded_pix = getbpl8(); + } + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8(); + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_n0_p8_ilores_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_n1_p8_ilores_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8e(); + loaded_pix = getbpl8(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl8o(); + loaded_pix = getbpl8(); + } + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8(); + } + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl8(); + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8e(); + loaded_pix = getbpl8(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl8o(); + loaded_pix = getbpl8(); + } + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8(); + } + if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl8(); + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_n1_p8_ilores_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_dpf0_p8_ilores_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8(); + loaded_pix = getbpl8(); + } + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8(); + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8(); + loaded_pix = getbpl8(); + } + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8(); + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_dpf0_p8_ilores_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_dpf1_p8_ilores_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8e(); + loaded_pix = getbpl8(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl8o(); + loaded_pix = getbpl8(); + } + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8(); + } + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl8(); + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8e(); + loaded_pix = getbpl8(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl8o(); + loaded_pix = getbpl8(); + } + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8(); + } + if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl8(); + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_dpf1_p8_ilores_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_ehb0_p8_ilores_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ehb0_p8_ilores_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_ehb1_p8_ilores_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ehb1_p8_ilores_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_ham0_p8_ilores_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = decode_ham_pixel_aga(pix0); + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8(); + loaded_pix = getbpl8(); + } + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8(); + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = decode_ham_pixel_aga(pix2); + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8(); + loaded_pix = getbpl8(); + } + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8(); + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ham0_p8_ilores_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_ham1_p8_ilores_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = decode_ham_pixel_aga(pix0); + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8e(); + loaded_pix = getbpl8(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl8o(); + loaded_pix = getbpl8(); + } + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8(); + } + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl8(); + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = decode_ham_pixel_aga(pix2); + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8e(); + loaded_pix = getbpl8(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl8o(); + loaded_pix = getbpl8(); + } + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8(); + } + if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl8(); + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ham1_p8_ilores_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_kehb0_p8_ilores_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_kehb0_p8_ilores_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_kehb1_p8_ilores_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_kehb1_p8_ilores_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_n0_p2_ihires_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix0; + } + shiftbpl2(); + if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { + copybpl2(); + } + loaded_pix = getbpl2(); + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix2; + } + shiftbpl2(); + if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { + copybpl2(); + } + loaded_pix = getbpl2(); + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_n0_p2_ihires_dhires_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_n1_p2_ihires_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix0; + } + shiftbpl2(); + if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { + copybpl2e(); + } + if (bpldat_copy[1] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[1]) { + copybpl2o(); + } + loaded_pix = getbpl2(); + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix2; + } + shiftbpl2(); + if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { + copybpl2e(); + } + if (bpldat_copy[1] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[1]) { + copybpl2o(); + } + loaded_pix = getbpl2(); + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_n1_p2_ihires_dhires_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_dpf0_p2_ihires_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + shiftbpl2(); + if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { + copybpl2(); + } + loaded_pix = getbpl2(); + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; + } + last_bpl_pix = pix2; + } + shiftbpl2(); + if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { + copybpl2(); + } + loaded_pix = getbpl2(); + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_dpf0_p2_ihires_dhires_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_dpf1_p2_ihires_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + shiftbpl2(); + if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { + copybpl2e(); + } + if (bpldat_copy[1] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[1]) { + copybpl2o(); + } + loaded_pix = getbpl2(); + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; + } + last_bpl_pix = pix2; + } + shiftbpl2(); + if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { + copybpl2e(); + } + if (bpldat_copy[1] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[1]) { + copybpl2o(); + } + loaded_pix = getbpl2(); + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_dpf1_p2_ihires_dhires_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_ehb0_p2_ihires_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ehb0_p2_ihires_dhires_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_ehb1_p2_ihires_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ehb1_p2_ihires_dhires_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_ham0_p2_ihires_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ham0_p2_ihires_dhires_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_ham1_p2_ihires_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ham1_p2_ihires_dhires_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_kehb0_p2_ihires_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_kehb0_p2_ihires_dhires_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_kehb1_p2_ihires_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_kehb1_p2_ihires_dhires_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_n0_p4_ihires_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix0; + } + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4(); + } + loaded_pix = getbpl4(); + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix2; + } + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4(); + } + loaded_pix = getbpl4(); + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_n0_p4_ihires_dhires_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_n1_p4_ihires_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix0; + } + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4e(); + } + if (bpldat_copy[1] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[1]) { + copybpl4o(); + } + loaded_pix = getbpl4(); + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix2; + } + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4e(); + } + if (bpldat_copy[1] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[1]) { + copybpl4o(); + } + loaded_pix = getbpl4(); + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_n1_p4_ihires_dhires_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_dpf0_p4_ihires_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4(); + } + loaded_pix = getbpl4(); + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; + } + last_bpl_pix = pix2; + } + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4(); + } + loaded_pix = getbpl4(); + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_dpf0_p4_ihires_dhires_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_dpf1_p4_ihires_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4e(); + } + if (bpldat_copy[1] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[1]) { + copybpl4o(); + } + loaded_pix = getbpl4(); + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; + } + last_bpl_pix = pix2; + } + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4e(); + } + if (bpldat_copy[1] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[1]) { + copybpl4o(); + } + loaded_pix = getbpl4(); + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_dpf1_p4_ihires_dhires_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_ehb0_p4_ihires_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ehb0_p4_ihires_dhires_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_ehb1_p4_ihires_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ehb1_p4_ihires_dhires_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_ham0_p4_ihires_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ham0_p4_ihires_dhires_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_ham1_p4_ihires_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ham1_p4_ihires_dhires_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_kehb0_p4_ihires_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_kehb0_p4_ihires_dhires_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_kehb1_p4_ihires_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_kehb1_p4_ihires_dhires_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_n0_p6_ihires_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_n0_p6_ihires_dhires_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_n1_p6_ihires_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_n1_p6_ihires_dhires_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_dpf0_p6_ihires_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_dpf0_p6_ihires_dhires_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_dpf1_p6_ihires_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_dpf1_p6_ihires_dhires_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_ehb0_p6_ihires_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ehb0_p6_ihires_dhires_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_ehb1_p6_ihires_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ehb1_p6_ihires_dhires_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_ham0_p6_ihires_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ham0_p6_ihires_dhires_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_ham1_p6_ihires_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ham1_p6_ihires_dhires_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_kehb0_p6_ihires_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_kehb0_p6_ihires_dhires_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_kehb1_p6_ihires_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_kehb1_p6_ihires_dhires_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_n0_p8_ihires_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_n0_p8_ihires_dhires_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_n1_p8_ihires_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_n1_p8_ihires_dhires_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_dpf0_p8_ihires_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_dpf0_p8_ihires_dhires_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_dpf1_p8_ihires_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_dpf1_p8_ihires_dhires_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_ehb0_p8_ihires_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ehb0_p8_ihires_dhires_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_ehb1_p8_ihires_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ehb1_p8_ihires_dhires_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_ham0_p8_ihires_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ham0_p8_ihires_dhires_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_ham1_p8_ihires_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ham1_p8_ihires_dhires_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_kehb0_p8_ihires_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_kehb0_p8_ihires_dhires_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_kehb1_p8_ihires_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_kehb1_p8_ihires_dhires_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_n0_p2_ihires_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix0; + } + shiftbpl2(); + if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { + copybpl2(); + } + loaded_pix = getbpl2(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix2; + } + shiftbpl2(); + if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { + copybpl2(); + } + loaded_pix = getbpl2(); + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_n0_p2_ihires_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_n1_p2_ihires_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix0; + } + shiftbpl2(); + if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { + copybpl2e(); + } + if (bpldat_copy[1] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[1]) { + copybpl2o(); + } + loaded_pix = getbpl2(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix2; + } + shiftbpl2(); + if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { + copybpl2e(); + } + if (bpldat_copy[1] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[1]) { + copybpl2o(); + } + loaded_pix = getbpl2(); + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_n1_p2_ihires_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_dpf0_p2_ihires_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + shiftbpl2(); + if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { + copybpl2(); + } + loaded_pix = getbpl2(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; + } + last_bpl_pix = pix2; + } + shiftbpl2(); + if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { + copybpl2(); + } + loaded_pix = getbpl2(); + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_dpf0_p2_ihires_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_dpf1_p2_ihires_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + shiftbpl2(); + if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { + copybpl2e(); + } + if (bpldat_copy[1] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[1]) { + copybpl2o(); + } + loaded_pix = getbpl2(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; + } + last_bpl_pix = pix2; + } + shiftbpl2(); + if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { + copybpl2e(); + } + if (bpldat_copy[1] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[1]) { + copybpl2o(); + } + loaded_pix = getbpl2(); + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_dpf1_p2_ihires_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_ehb0_p2_ihires_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ehb0_p2_ihires_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_ehb1_p2_ihires_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ehb1_p2_ihires_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_ham0_p2_ihires_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ham0_p2_ihires_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_ham1_p2_ihires_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ham1_p2_ihires_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_kehb0_p2_ihires_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_kehb0_p2_ihires_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_kehb1_p2_ihires_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_kehb1_p2_ihires_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_n0_p4_ihires_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix0; + } + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4(); + } + loaded_pix = getbpl4(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix2; + } + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4(); + } + loaded_pix = getbpl4(); + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_n0_p4_ihires_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_n1_p4_ihires_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix0; + } + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4e(); + } + if (bpldat_copy[1] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[1]) { + copybpl4o(); + } + loaded_pix = getbpl4(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix2; + } + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4e(); + } + if (bpldat_copy[1] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[1]) { + copybpl4o(); + } + loaded_pix = getbpl4(); + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_n1_p4_ihires_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_dpf0_p4_ihires_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4(); + } + loaded_pix = getbpl4(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; + } + last_bpl_pix = pix2; + } + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4(); + } + loaded_pix = getbpl4(); + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_dpf0_p4_ihires_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_dpf1_p4_ihires_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4e(); + } + if (bpldat_copy[1] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[1]) { + copybpl4o(); + } + loaded_pix = getbpl4(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; + } + last_bpl_pix = pix2; + } + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4e(); + } + if (bpldat_copy[1] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[1]) { + copybpl4o(); + } + loaded_pix = getbpl4(); + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_dpf1_p4_ihires_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_ehb0_p4_ihires_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ehb0_p4_ihires_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_ehb1_p4_ihires_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ehb1_p4_ihires_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_ham0_p4_ihires_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ham0_p4_ihires_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_ham1_p4_ihires_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ham1_p4_ihires_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_kehb0_p4_ihires_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_kehb0_p4_ihires_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_kehb1_p4_ihires_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_kehb1_p4_ihires_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_n0_p6_ihires_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_n0_p6_ihires_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_n1_p6_ihires_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_n1_p6_ihires_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_dpf0_p6_ihires_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_dpf0_p6_ihires_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_dpf1_p6_ihires_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_dpf1_p6_ihires_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_ehb0_p6_ihires_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ehb0_p6_ihires_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_ehb1_p6_ihires_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ehb1_p6_ihires_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_ham0_p6_ihires_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ham0_p6_ihires_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_ham1_p6_ihires_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ham1_p6_ihires_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_kehb0_p6_ihires_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_kehb0_p6_ihires_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_kehb1_p6_ihires_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_kehb1_p6_ihires_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_n0_p8_ihires_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_n0_p8_ihires_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_n1_p8_ihires_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_n1_p8_ihires_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_dpf0_p8_ihires_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_dpf0_p8_ihires_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_dpf1_p8_ihires_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_dpf1_p8_ihires_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_ehb0_p8_ihires_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ehb0_p8_ihires_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_ehb1_p8_ihires_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ehb1_p8_ihires_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_ham0_p8_ihires_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ham0_p8_ihires_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_ham1_p8_ihires_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ham1_p8_ihires_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_kehb0_p8_ihires_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_kehb0_p8_ihires_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_kehb1_p8_ihires_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_kehb1_p8_ihires_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_n0_p2_ishres_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix0; + } + shiftbpl2(); + if (bpldat_copy[0] && ((cmp | 0) & 15) == bplcon1_shift_full_masked[0]) { + copybpl2(); + } + loaded_pix = getbpl2(); + loaded_pixs[0] = loaded_pix; + shiftbpl2(); + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix2; + } + shiftbpl2(); + if (bpldat_copy[0] && ((cmp | 2) & 15) == bplcon1_shift_full_masked[0]) { + copybpl2(); + } + loaded_pix = getbpl2(); + loaded_pixs[2] = loaded_pix; + shiftbpl2(); + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_n0_p2_ishres_dhires_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix0; + } + shiftbpl2(); + if (bpldat_copy[0] && ((cmp | 0) & 15) == bplcon1_shift_full_masked[0]) { + copybpl2(); + } + loaded_pix = getbpl2(); + loaded_pixs[0] = loaded_pix; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix1; + } + shiftbpl2(); + if (bpldat_copy[0] && ((cmp | 1) & 15) == bplcon1_shift_full_masked[0]) { + copybpl2(); + } + loaded_pix = getbpl2(); + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix2; + } + shiftbpl2(); + if (bpldat_copy[0] && ((cmp | 2) & 15) == bplcon1_shift_full_masked[0]) { + copybpl2(); + } + loaded_pix = getbpl2(); + loaded_pixs[2] = loaded_pix; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix3; + } + shiftbpl2(); + if (bpldat_copy[0] && ((cmp | 3) & 15) == bplcon1_shift_full_masked[0]) { + copybpl2(); + } + loaded_pix = getbpl2(); + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_n1_p2_ishres_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix0; + } + shiftbpl2(); + if (bpldat_copy[0] && ((cmp | 0) & 15) == bplcon1_shift_full_masked[0]) { + copybpl2e(); + } + if (bpldat_copy[1] && ((cmp | 0) & 15) == bplcon1_shift_full_masked[1]) { + copybpl2o(); + } + loaded_pix = getbpl2(); + loaded_pixs[0] = loaded_pix; + shiftbpl2(); + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix2; + } + shiftbpl2(); + if (bpldat_copy[0] && ((cmp | 2) & 15) == bplcon1_shift_full_masked[0]) { + copybpl2e(); + } + if (bpldat_copy[1] && ((cmp | 2) & 15) == bplcon1_shift_full_masked[1]) { + copybpl2o(); + } + loaded_pix = getbpl2(); + loaded_pixs[2] = loaded_pix; + shiftbpl2(); + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_n1_p2_ishres_dhires_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix0; + } + shiftbpl2(); + if (bpldat_copy[0] && ((cmp | 0) & 15) == bplcon1_shift_full_masked[0]) { + copybpl2e(); + } + if (bpldat_copy[1] && ((cmp | 0) & 15) == bplcon1_shift_full_masked[1]) { + copybpl2o(); + } + loaded_pix = getbpl2(); + loaded_pixs[0] = loaded_pix; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix1; + } + shiftbpl2(); + if (bpldat_copy[0] && ((cmp | 1) & 15) == bplcon1_shift_full_masked[0]) { + copybpl2e(); + } + if (bpldat_copy[1] && ((cmp | 1) & 15) == bplcon1_shift_full_masked[1]) { + copybpl2o(); + } + loaded_pix = getbpl2(); + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix2; + } + shiftbpl2(); + if (bpldat_copy[0] && ((cmp | 2) & 15) == bplcon1_shift_full_masked[0]) { + copybpl2e(); + } + if (bpldat_copy[1] && ((cmp | 2) & 15) == bplcon1_shift_full_masked[1]) { + copybpl2o(); + } + loaded_pix = getbpl2(); + loaded_pixs[2] = loaded_pix; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix3; + } + shiftbpl2(); + if (bpldat_copy[0] && ((cmp | 3) & 15) == bplcon1_shift_full_masked[0]) { + copybpl2e(); + } + if (bpldat_copy[1] && ((cmp | 3) & 15) == bplcon1_shift_full_masked[1]) { + copybpl2o(); + } + loaded_pix = getbpl2(); + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_dpf0_p2_ishres_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + shiftbpl2(); + if (bpldat_copy[0] && ((cmp | 0) & 15) == bplcon1_shift_full_masked[0]) { + copybpl2(); + } + loaded_pix = getbpl2(); + loaded_pixs[0] = loaded_pix; + shiftbpl2(); + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; + } + last_bpl_pix = pix2; + } + shiftbpl2(); + if (bpldat_copy[0] && ((cmp | 2) & 15) == bplcon1_shift_full_masked[0]) { + copybpl2(); + } + loaded_pix = getbpl2(); + loaded_pixs[2] = loaded_pix; + shiftbpl2(); + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_dpf0_p2_ishres_dhires_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + shiftbpl2(); + if (bpldat_copy[0] && ((cmp | 0) & 15) == bplcon1_shift_full_masked[0]) { + copybpl2(); + } + loaded_pix = getbpl2(); + loaded_pixs[0] = loaded_pix; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + uae_u8 val1 = dpf_lookup[pix1]; + if (dpf_lookup_no[pix1]) { + val1 += dblpfofs[bpldualpf2of]; + } + val1 ^= bplcon4_denise_xor_val; + dpix_val1 = denise_colors.acolors[val1]; + } + last_bpl_pix = pix1; + } + shiftbpl2(); + if (bpldat_copy[0] && ((cmp | 1) & 15) == bplcon1_shift_full_masked[0]) { + copybpl2(); + } + loaded_pix = getbpl2(); + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; + } + last_bpl_pix = pix2; + } + shiftbpl2(); + if (bpldat_copy[0] && ((cmp | 2) & 15) == bplcon1_shift_full_masked[0]) { + copybpl2(); + } + loaded_pix = getbpl2(); + loaded_pixs[2] = loaded_pix; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + uae_u8 val3 = dpf_lookup[pix3]; + if (dpf_lookup_no[pix3]) { + val3 += dblpfofs[bpldualpf2of]; + } + val3 ^= bplcon4_denise_xor_val; + dpix_val3 = denise_colors.acolors[val3]; + } + last_bpl_pix = pix3; + } + shiftbpl2(); + if (bpldat_copy[0] && ((cmp | 3) & 15) == bplcon1_shift_full_masked[0]) { + copybpl2(); + } + loaded_pix = getbpl2(); + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_dpf1_p2_ishres_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + shiftbpl2(); + if (bpldat_copy[0] && ((cmp | 0) & 15) == bplcon1_shift_full_masked[0]) { + copybpl2e(); + } + if (bpldat_copy[1] && ((cmp | 0) & 15) == bplcon1_shift_full_masked[1]) { + copybpl2o(); + } + loaded_pix = getbpl2(); + loaded_pixs[0] = loaded_pix; + shiftbpl2(); + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; + } + last_bpl_pix = pix2; + } + shiftbpl2(); + if (bpldat_copy[0] && ((cmp | 2) & 15) == bplcon1_shift_full_masked[0]) { + copybpl2e(); + } + if (bpldat_copy[1] && ((cmp | 2) & 15) == bplcon1_shift_full_masked[1]) { + copybpl2o(); + } + loaded_pix = getbpl2(); + loaded_pixs[2] = loaded_pix; + shiftbpl2(); + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_dpf1_p2_ishres_dhires_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + shiftbpl2(); + if (bpldat_copy[0] && ((cmp | 0) & 15) == bplcon1_shift_full_masked[0]) { + copybpl2e(); + } + if (bpldat_copy[1] && ((cmp | 0) & 15) == bplcon1_shift_full_masked[1]) { + copybpl2o(); + } + loaded_pix = getbpl2(); + loaded_pixs[0] = loaded_pix; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + uae_u8 val1 = dpf_lookup[pix1]; + if (dpf_lookup_no[pix1]) { + val1 += dblpfofs[bpldualpf2of]; + } + val1 ^= bplcon4_denise_xor_val; + dpix_val1 = denise_colors.acolors[val1]; + } + last_bpl_pix = pix1; + } + shiftbpl2(); + if (bpldat_copy[0] && ((cmp | 1) & 15) == bplcon1_shift_full_masked[0]) { + copybpl2e(); + } + if (bpldat_copy[1] && ((cmp | 1) & 15) == bplcon1_shift_full_masked[1]) { + copybpl2o(); + } + loaded_pix = getbpl2(); + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; + } + last_bpl_pix = pix2; + } + shiftbpl2(); + if (bpldat_copy[0] && ((cmp | 2) & 15) == bplcon1_shift_full_masked[0]) { + copybpl2e(); + } + if (bpldat_copy[1] && ((cmp | 2) & 15) == bplcon1_shift_full_masked[1]) { + copybpl2o(); + } + loaded_pix = getbpl2(); + loaded_pixs[2] = loaded_pix; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + uae_u8 val3 = dpf_lookup[pix3]; + if (dpf_lookup_no[pix3]) { + val3 += dblpfofs[bpldualpf2of]; + } + val3 ^= bplcon4_denise_xor_val; + dpix_val3 = denise_colors.acolors[val3]; + } + last_bpl_pix = pix3; + } + shiftbpl2(); + if (bpldat_copy[0] && ((cmp | 3) & 15) == bplcon1_shift_full_masked[0]) { + copybpl2e(); + } + if (bpldat_copy[1] && ((cmp | 3) & 15) == bplcon1_shift_full_masked[1]) { + copybpl2o(); + } + loaded_pix = getbpl2(); + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ehb0_p2_ishres_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ehb0_p2_ishres_dhires_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ehb1_p2_ishres_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ehb1_p2_ishres_dhires_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ham0_p2_ishres_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ham0_p2_ishres_dhires_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ham1_p2_ishres_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ham1_p2_ishres_dhires_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_kehb0_p2_ishres_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_kehb0_p2_ishres_dhires_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_kehb1_p2_ishres_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_kehb1_p2_ishres_dhires_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_n0_p4_ishres_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_n0_p4_ishres_dhires_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_n1_p4_ishres_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_n1_p4_ishres_dhires_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_dpf0_p4_ishres_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_dpf0_p4_ishres_dhires_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_dpf1_p4_ishres_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_dpf1_p4_ishres_dhires_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ehb0_p4_ishres_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ehb0_p4_ishres_dhires_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ehb1_p4_ishres_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ehb1_p4_ishres_dhires_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ham0_p4_ishres_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ham0_p4_ishres_dhires_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ham1_p4_ishres_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ham1_p4_ishres_dhires_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_kehb0_p4_ishres_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_kehb0_p4_ishres_dhires_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_kehb1_p4_ishres_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_kehb1_p4_ishres_dhires_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_n0_p6_ishres_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_n0_p6_ishres_dhires_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_n1_p6_ishres_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_n1_p6_ishres_dhires_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_dpf0_p6_ishres_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_dpf0_p6_ishres_dhires_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_dpf1_p6_ishres_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_dpf1_p6_ishres_dhires_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ehb0_p6_ishres_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ehb0_p6_ishres_dhires_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ehb1_p6_ishres_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ehb1_p6_ishres_dhires_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ham0_p6_ishres_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ham0_p6_ishres_dhires_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ham1_p6_ishres_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ham1_p6_ishres_dhires_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_kehb0_p6_ishres_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_kehb0_p6_ishres_dhires_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_kehb1_p6_ishres_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_kehb1_p6_ishres_dhires_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_n0_p8_ishres_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_n0_p8_ishres_dhires_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_n1_p8_ishres_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_n1_p8_ishres_dhires_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_dpf0_p8_ishres_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_dpf0_p8_ishres_dhires_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_dpf1_p8_ishres_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_dpf1_p8_ishres_dhires_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ehb0_p8_ishres_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ehb0_p8_ishres_dhires_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ehb1_p8_ishres_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ehb1_p8_ishres_dhires_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ham0_p8_ishres_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ham0_p8_ishres_dhires_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ham1_p8_ishres_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ham1_p8_ishres_dhires_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_kehb0_p8_ishres_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_kehb0_p8_ishres_dhires_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_kehb1_p8_ishres_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_kehb1_p8_ishres_dhires_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_n0_p2_ishres_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix0; + } + shiftbpl2(); + if (bpldat_copy[0] && ((cmp | 0) & 15) == bplcon1_shift_full_masked[0]) { + copybpl2(); + } + loaded_pix = getbpl2(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + shiftbpl2(); + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix2; + } + shiftbpl2(); + if (bpldat_copy[0] && ((cmp | 2) & 15) == bplcon1_shift_full_masked[0]) { + copybpl2(); + } + loaded_pix = getbpl2(); + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + shiftbpl2(); + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_n0_p2_ishres_dhires_spr_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix0; + } + shiftbpl2(); + if (bpldat_copy[0] && ((cmp | 0) & 15) == bplcon1_shift_full_masked[0]) { + copybpl2(); + } + loaded_pix = getbpl2(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix1; + } + shiftbpl2(); + if (bpldat_copy[0] && ((cmp | 1) & 15) == bplcon1_shift_full_masked[0]) { + copybpl2(); + } + loaded_pix = getbpl2(); + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix2; + } + shiftbpl2(); + if (bpldat_copy[0] && ((cmp | 2) & 15) == bplcon1_shift_full_masked[0]) { + copybpl2(); + } + loaded_pix = getbpl2(); + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix3; + } + shiftbpl2(); + if (bpldat_copy[0] && ((cmp | 3) & 15) == bplcon1_shift_full_masked[0]) { + copybpl2(); + } + loaded_pix = getbpl2(); + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + dpix_val3 = dpix_val2; + } + } + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_n1_p2_ishres_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix0; + } + shiftbpl2(); + if (bpldat_copy[0] && ((cmp | 0) & 15) == bplcon1_shift_full_masked[0]) { + copybpl2e(); + } + if (bpldat_copy[1] && ((cmp | 0) & 15) == bplcon1_shift_full_masked[1]) { + copybpl2o(); + } + loaded_pix = getbpl2(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + shiftbpl2(); + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix2; + } + shiftbpl2(); + if (bpldat_copy[0] && ((cmp | 2) & 15) == bplcon1_shift_full_masked[0]) { + copybpl2e(); + } + if (bpldat_copy[1] && ((cmp | 2) & 15) == bplcon1_shift_full_masked[1]) { + copybpl2o(); + } + loaded_pix = getbpl2(); + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + shiftbpl2(); + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_n1_p2_ishres_dhires_spr_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix0; + } + shiftbpl2(); + if (bpldat_copy[0] && ((cmp | 0) & 15) == bplcon1_shift_full_masked[0]) { + copybpl2e(); + } + if (bpldat_copy[1] && ((cmp | 0) & 15) == bplcon1_shift_full_masked[1]) { + copybpl2o(); + } + loaded_pix = getbpl2(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix1; + } + shiftbpl2(); + if (bpldat_copy[0] && ((cmp | 1) & 15) == bplcon1_shift_full_masked[0]) { + copybpl2e(); + } + if (bpldat_copy[1] && ((cmp | 1) & 15) == bplcon1_shift_full_masked[1]) { + copybpl2o(); + } + loaded_pix = getbpl2(); + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix2; + } + shiftbpl2(); + if (bpldat_copy[0] && ((cmp | 2) & 15) == bplcon1_shift_full_masked[0]) { + copybpl2e(); + } + if (bpldat_copy[1] && ((cmp | 2) & 15) == bplcon1_shift_full_masked[1]) { + copybpl2o(); + } + loaded_pix = getbpl2(); + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix3; + } + shiftbpl2(); + if (bpldat_copy[0] && ((cmp | 3) & 15) == bplcon1_shift_full_masked[0]) { + copybpl2e(); + } + if (bpldat_copy[1] && ((cmp | 3) & 15) == bplcon1_shift_full_masked[1]) { + copybpl2o(); + } + loaded_pix = getbpl2(); + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + dpix_val3 = dpix_val2; + } + } + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_dpf0_p2_ishres_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + shiftbpl2(); + if (bpldat_copy[0] && ((cmp | 0) & 15) == bplcon1_shift_full_masked[0]) { + copybpl2(); + } + loaded_pix = getbpl2(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + shiftbpl2(); + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; + } + last_bpl_pix = pix2; + } + shiftbpl2(); + if (bpldat_copy[0] && ((cmp | 2) & 15) == bplcon1_shift_full_masked[0]) { + copybpl2(); + } + loaded_pix = getbpl2(); + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + shiftbpl2(); + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_dpf0_p2_ishres_dhires_spr_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + shiftbpl2(); + if (bpldat_copy[0] && ((cmp | 0) & 15) == bplcon1_shift_full_masked[0]) { + copybpl2(); + } + loaded_pix = getbpl2(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + uae_u8 val1 = dpf_lookup[pix1]; + if (dpf_lookup_no[pix1]) { + val1 += dblpfofs[bpldualpf2of]; + } + val1 ^= bplcon4_denise_xor_val; + dpix_val1 = denise_colors.acolors[val1]; + } + last_bpl_pix = pix1; + } + shiftbpl2(); + if (bpldat_copy[0] && ((cmp | 1) & 15) == bplcon1_shift_full_masked[0]) { + copybpl2(); + } + loaded_pix = getbpl2(); + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; + } + last_bpl_pix = pix2; + } + shiftbpl2(); + if (bpldat_copy[0] && ((cmp | 2) & 15) == bplcon1_shift_full_masked[0]) { + copybpl2(); + } + loaded_pix = getbpl2(); + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + uae_u8 val3 = dpf_lookup[pix3]; + if (dpf_lookup_no[pix3]) { + val3 += dblpfofs[bpldualpf2of]; + } + val3 ^= bplcon4_denise_xor_val; + dpix_val3 = denise_colors.acolors[val3]; + } + last_bpl_pix = pix3; + } + shiftbpl2(); + if (bpldat_copy[0] && ((cmp | 3) & 15) == bplcon1_shift_full_masked[0]) { + copybpl2(); + } + loaded_pix = getbpl2(); + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + dpix_val3 = dpix_val2; + } + } + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_dpf1_p2_ishres_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + shiftbpl2(); + if (bpldat_copy[0] && ((cmp | 0) & 15) == bplcon1_shift_full_masked[0]) { + copybpl2e(); + } + if (bpldat_copy[1] && ((cmp | 0) & 15) == bplcon1_shift_full_masked[1]) { + copybpl2o(); + } + loaded_pix = getbpl2(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + shiftbpl2(); + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; + } + last_bpl_pix = pix2; + } + shiftbpl2(); + if (bpldat_copy[0] && ((cmp | 2) & 15) == bplcon1_shift_full_masked[0]) { + copybpl2e(); + } + if (bpldat_copy[1] && ((cmp | 2) & 15) == bplcon1_shift_full_masked[1]) { + copybpl2o(); + } + loaded_pix = getbpl2(); + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + shiftbpl2(); + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_dpf1_p2_ishres_dhires_spr_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + shiftbpl2(); + if (bpldat_copy[0] && ((cmp | 0) & 15) == bplcon1_shift_full_masked[0]) { + copybpl2e(); + } + if (bpldat_copy[1] && ((cmp | 0) & 15) == bplcon1_shift_full_masked[1]) { + copybpl2o(); + } + loaded_pix = getbpl2(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + uae_u8 val1 = dpf_lookup[pix1]; + if (dpf_lookup_no[pix1]) { + val1 += dblpfofs[bpldualpf2of]; + } + val1 ^= bplcon4_denise_xor_val; + dpix_val1 = denise_colors.acolors[val1]; + } + last_bpl_pix = pix1; + } + shiftbpl2(); + if (bpldat_copy[0] && ((cmp | 1) & 15) == bplcon1_shift_full_masked[0]) { + copybpl2e(); + } + if (bpldat_copy[1] && ((cmp | 1) & 15) == bplcon1_shift_full_masked[1]) { + copybpl2o(); + } + loaded_pix = getbpl2(); + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; + } + last_bpl_pix = pix2; + } + shiftbpl2(); + if (bpldat_copy[0] && ((cmp | 2) & 15) == bplcon1_shift_full_masked[0]) { + copybpl2e(); + } + if (bpldat_copy[1] && ((cmp | 2) & 15) == bplcon1_shift_full_masked[1]) { + copybpl2o(); + } + loaded_pix = getbpl2(); + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + uae_u8 val3 = dpf_lookup[pix3]; + if (dpf_lookup_no[pix3]) { + val3 += dblpfofs[bpldualpf2of]; + } + val3 ^= bplcon4_denise_xor_val; + dpix_val3 = denise_colors.acolors[val3]; + } + last_bpl_pix = pix3; + } + shiftbpl2(); + if (bpldat_copy[0] && ((cmp | 3) & 15) == bplcon1_shift_full_masked[0]) { + copybpl2e(); + } + if (bpldat_copy[1] && ((cmp | 3) & 15) == bplcon1_shift_full_masked[1]) { + copybpl2o(); + } + loaded_pix = getbpl2(); + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + dpix_val3 = dpix_val2; + } + } + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ehb0_p2_ishres_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ehb0_p2_ishres_dhires_spr_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + dpix_val3 = dpix_val2; + } + } + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ehb1_p2_ishres_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ehb1_p2_ishres_dhires_spr_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + dpix_val3 = dpix_val2; + } + } + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ham0_p2_ishres_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ham0_p2_ishres_dhires_spr_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + dpix_val3 = dpix_val2; + } + } + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ham1_p2_ishres_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ham1_p2_ishres_dhires_spr_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + dpix_val3 = dpix_val2; + } + } + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_kehb0_p2_ishres_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_kehb0_p2_ishres_dhires_spr_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + dpix_val3 = dpix_val2; + } + } + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_kehb1_p2_ishres_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_kehb1_p2_ishres_dhires_spr_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + dpix_val3 = dpix_val2; + } + } + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_n0_p4_ishres_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_n0_p4_ishres_dhires_spr_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + dpix_val3 = dpix_val2; + } + } + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_n1_p4_ishres_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_n1_p4_ishres_dhires_spr_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + dpix_val3 = dpix_val2; + } + } + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_dpf0_p4_ishres_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_dpf0_p4_ishres_dhires_spr_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + dpix_val3 = dpix_val2; + } + } + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_dpf1_p4_ishres_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_dpf1_p4_ishres_dhires_spr_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + dpix_val3 = dpix_val2; + } + } + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ehb0_p4_ishres_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ehb0_p4_ishres_dhires_spr_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + dpix_val3 = dpix_val2; + } + } + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ehb1_p4_ishres_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ehb1_p4_ishres_dhires_spr_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + dpix_val3 = dpix_val2; + } + } + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ham0_p4_ishres_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ham0_p4_ishres_dhires_spr_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + dpix_val3 = dpix_val2; + } + } + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ham1_p4_ishres_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ham1_p4_ishres_dhires_spr_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + dpix_val3 = dpix_val2; + } + } + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_kehb0_p4_ishres_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_kehb0_p4_ishres_dhires_spr_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + dpix_val3 = dpix_val2; + } + } + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_kehb1_p4_ishres_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_kehb1_p4_ishres_dhires_spr_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + dpix_val3 = dpix_val2; + } + } + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_n0_p6_ishres_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_n0_p6_ishres_dhires_spr_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + dpix_val3 = dpix_val2; + } + } + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_n1_p6_ishres_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_n1_p6_ishres_dhires_spr_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + dpix_val3 = dpix_val2; + } + } + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_dpf0_p6_ishres_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_dpf0_p6_ishres_dhires_spr_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + dpix_val3 = dpix_val2; + } + } + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_dpf1_p6_ishres_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_dpf1_p6_ishres_dhires_spr_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + dpix_val3 = dpix_val2; + } + } + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ehb0_p6_ishres_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ehb0_p6_ishres_dhires_spr_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + dpix_val3 = dpix_val2; + } + } + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ehb1_p6_ishres_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ehb1_p6_ishres_dhires_spr_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + dpix_val3 = dpix_val2; + } + } + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ham0_p6_ishres_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ham0_p6_ishres_dhires_spr_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + dpix_val3 = dpix_val2; + } + } + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ham1_p6_ishres_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ham1_p6_ishres_dhires_spr_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + dpix_val3 = dpix_val2; + } + } + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_kehb0_p6_ishres_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_kehb0_p6_ishres_dhires_spr_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + dpix_val3 = dpix_val2; + } + } + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_kehb1_p6_ishres_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_kehb1_p6_ishres_dhires_spr_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + dpix_val3 = dpix_val2; + } + } + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_n0_p8_ishres_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_n0_p8_ishres_dhires_spr_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + dpix_val3 = dpix_val2; + } + } + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_n1_p8_ishres_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_n1_p8_ishres_dhires_spr_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + dpix_val3 = dpix_val2; + } + } + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_dpf0_p8_ishres_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_dpf0_p8_ishres_dhires_spr_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + dpix_val3 = dpix_val2; + } + } + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_dpf1_p8_ishres_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_dpf1_p8_ishres_dhires_spr_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + dpix_val3 = dpix_val2; + } + } + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ehb0_p8_ishres_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ehb0_p8_ishres_dhires_spr_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + dpix_val3 = dpix_val2; + } + } + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ehb1_p8_ishres_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ehb1_p8_ishres_dhires_spr_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + dpix_val3 = dpix_val2; + } + } + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ham0_p8_ishres_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ham0_p8_ishres_dhires_spr_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + dpix_val3 = dpix_val2; + } + } + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ham1_p8_ishres_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ham1_p8_ishres_dhires_spr_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + dpix_val3 = dpix_val2; + } + } + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_kehb0_p8_ishres_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_kehb0_p8_ishres_dhires_spr_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + dpix_val3 = dpix_val2; + } + } + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_kehb1_p8_ishres_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_kehb1_p8_ishres_dhires_spr_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + dpix_val3 = dpix_val2; + } + } + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_n0_p2_ilores_dshres(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl2(); + loaded_pix = getbpl2(); + } + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl2(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl2(); + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix1; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl2(); + loaded_pix = getbpl2(); + } + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl2(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl2(); + } + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 1; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl2(); + loaded_pix = getbpl2(); + } + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl2(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl2(); + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix3; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl2(); + loaded_pix = getbpl2(); + } + if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { + copybpl2(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl2(); + } + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 1; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; + dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_n0_p2_ilores_dshres_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_n1_p2_ilores_dshres(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl2e(); + loaded_pix = getbpl2(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl2o(); + loaded_pix = getbpl2(); + } + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl2e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl2(); + } + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl2o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl2(); + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix1; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl2e(); + loaded_pix = getbpl2(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl2o(); + loaded_pix = getbpl2(); + } + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl2e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl2(); + } + if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { + copybpl2o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl2(); + } + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 1; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl2e(); + loaded_pix = getbpl2(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl2o(); + loaded_pix = getbpl2(); + } + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl2e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl2(); + } + if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { + copybpl2o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl2(); + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix3; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl2e(); + loaded_pix = getbpl2(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl2o(); + loaded_pix = getbpl2(); + } + if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { + copybpl2e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl2(); + } + if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) { + copybpl2o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl2(); + } + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 1; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; + dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_n1_p2_ilores_dshres_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_dpf0_p2_ilores_dshres(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl2(); + loaded_pix = getbpl2(); + } + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl2(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl2(); + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + uae_u8 val1 = dpf_lookup[pix1]; + if (dpf_lookup_no[pix1]) { + val1 += dblpfofs[bpldualpf2of]; + } + val1 ^= bplcon4_denise_xor_val; + dpix_val1 = denise_colors.acolors[val1]; + } + last_bpl_pix = pix1; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl2(); + loaded_pix = getbpl2(); + } + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl2(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl2(); + } + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 1; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl2(); + loaded_pix = getbpl2(); + } + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl2(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl2(); + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + uae_u8 val3 = dpf_lookup[pix3]; + if (dpf_lookup_no[pix3]) { + val3 += dblpfofs[bpldualpf2of]; + } + val3 ^= bplcon4_denise_xor_val; + dpix_val3 = denise_colors.acolors[val3]; + } + last_bpl_pix = pix3; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl2(); + loaded_pix = getbpl2(); + } + if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { + copybpl2(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl2(); + } + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 1; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; + dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_dpf0_p2_ilores_dshres_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_dpf1_p2_ilores_dshres(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl2e(); + loaded_pix = getbpl2(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl2o(); + loaded_pix = getbpl2(); + } + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl2e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl2(); + } + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl2o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl2(); + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + uae_u8 val1 = dpf_lookup[pix1]; + if (dpf_lookup_no[pix1]) { + val1 += dblpfofs[bpldualpf2of]; + } + val1 ^= bplcon4_denise_xor_val; + dpix_val1 = denise_colors.acolors[val1]; + } + last_bpl_pix = pix1; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl2e(); + loaded_pix = getbpl2(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl2o(); + loaded_pix = getbpl2(); + } + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl2e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl2(); + } + if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { + copybpl2o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl2(); + } + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 1; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl2e(); + loaded_pix = getbpl2(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl2o(); + loaded_pix = getbpl2(); + } + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl2e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl2(); + } + if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { + copybpl2o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl2(); + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + uae_u8 val3 = dpf_lookup[pix3]; + if (dpf_lookup_no[pix3]) { + val3 += dblpfofs[bpldualpf2of]; + } + val3 ^= bplcon4_denise_xor_val; + dpix_val3 = denise_colors.acolors[val3]; + } + last_bpl_pix = pix3; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl2e(); + loaded_pix = getbpl2(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl2o(); + loaded_pix = getbpl2(); + } + if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { + copybpl2e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl2(); + } + if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) { + copybpl2o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl2(); + } + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 1; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; + dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_dpf1_p2_ilores_dshres_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_ehb0_p2_ilores_dshres(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 1; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 1; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; + dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ehb0_p2_ilores_dshres_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_ehb1_p2_ilores_dshres(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 1; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 1; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; + dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ehb1_p2_ilores_dshres_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_ham0_p2_ilores_dshres(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 1; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 1; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; + dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ham0_p2_ilores_dshres_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_ham1_p2_ilores_dshres(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 1; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 1; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; + dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ham1_p2_ilores_dshres_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_kehb0_p2_ilores_dshres(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 1; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 1; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; + dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_kehb0_p2_ilores_dshres_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_kehb1_p2_ilores_dshres(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 1; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 1; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; + dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_kehb1_p2_ilores_dshres_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_n0_p4_ilores_dshres(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4(); + loaded_pix = getbpl4(); + } + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4(); + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix1; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4(); + loaded_pix = getbpl4(); + } + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4(); + } + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 1; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4(); + loaded_pix = getbpl4(); + } + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4(); + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix3; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4(); + loaded_pix = getbpl4(); + } + if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4(); + } + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 1; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; + dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_n0_p4_ilores_dshres_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_n1_p4_ilores_dshres(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4e(); + loaded_pix = getbpl4(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl4o(); + loaded_pix = getbpl4(); + } + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4(); + } + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl4o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl4(); + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix1; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4e(); + loaded_pix = getbpl4(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl4o(); + loaded_pix = getbpl4(); + } + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4(); + } + if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { + copybpl4o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl4(); + } + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 1; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4e(); + loaded_pix = getbpl4(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl4o(); + loaded_pix = getbpl4(); + } + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4(); + } + if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { + copybpl4o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl4(); + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix3; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4e(); + loaded_pix = getbpl4(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl4o(); + loaded_pix = getbpl4(); + } + if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4(); + } + if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) { + copybpl4o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl4(); + } + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 1; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; + dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_n1_p4_ilores_dshres_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_dpf0_p4_ilores_dshres(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4(); + loaded_pix = getbpl4(); + } + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4(); + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + uae_u8 val1 = dpf_lookup[pix1]; + if (dpf_lookup_no[pix1]) { + val1 += dblpfofs[bpldualpf2of]; + } + val1 ^= bplcon4_denise_xor_val; + dpix_val1 = denise_colors.acolors[val1]; + } + last_bpl_pix = pix1; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4(); + loaded_pix = getbpl4(); + } + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4(); + } + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 1; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4(); + loaded_pix = getbpl4(); + } + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4(); + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + uae_u8 val3 = dpf_lookup[pix3]; + if (dpf_lookup_no[pix3]) { + val3 += dblpfofs[bpldualpf2of]; + } + val3 ^= bplcon4_denise_xor_val; + dpix_val3 = denise_colors.acolors[val3]; + } + last_bpl_pix = pix3; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4(); + loaded_pix = getbpl4(); + } + if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4(); + } + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 1; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; + dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_dpf0_p4_ilores_dshres_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_dpf1_p4_ilores_dshres(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4e(); + loaded_pix = getbpl4(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl4o(); + loaded_pix = getbpl4(); + } + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4(); + } + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl4o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl4(); + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + uae_u8 val1 = dpf_lookup[pix1]; + if (dpf_lookup_no[pix1]) { + val1 += dblpfofs[bpldualpf2of]; + } + val1 ^= bplcon4_denise_xor_val; + dpix_val1 = denise_colors.acolors[val1]; + } + last_bpl_pix = pix1; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4e(); + loaded_pix = getbpl4(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl4o(); + loaded_pix = getbpl4(); + } + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4(); + } + if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { + copybpl4o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl4(); + } + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 1; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4e(); + loaded_pix = getbpl4(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl4o(); + loaded_pix = getbpl4(); + } + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4(); + } + if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { + copybpl4o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl4(); + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + uae_u8 val3 = dpf_lookup[pix3]; + if (dpf_lookup_no[pix3]) { + val3 += dblpfofs[bpldualpf2of]; + } + val3 ^= bplcon4_denise_xor_val; + dpix_val3 = denise_colors.acolors[val3]; + } + last_bpl_pix = pix3; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4e(); + loaded_pix = getbpl4(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl4o(); + loaded_pix = getbpl4(); + } + if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4(); + } + if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) { + copybpl4o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl4(); + } + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 1; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; + dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_dpf1_p4_ilores_dshres_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_ehb0_p4_ilores_dshres(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 1; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 1; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; + dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ehb0_p4_ilores_dshres_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_ehb1_p4_ilores_dshres(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 1; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 1; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; + dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ehb1_p4_ilores_dshres_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_ham0_p4_ilores_dshres(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 1; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 1; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; + dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ham0_p4_ilores_dshres_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_ham1_p4_ilores_dshres(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 1; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 1; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; + dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ham1_p4_ilores_dshres_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_kehb0_p4_ilores_dshres(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 1; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 1; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; + dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_kehb0_p4_ilores_dshres_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_kehb1_p4_ilores_dshres(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 1; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 1; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; + dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_kehb1_p4_ilores_dshres_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_n0_p6_ilores_dshres(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6(); + loaded_pix = getbpl6(); + } + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6(); + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix1; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6(); + loaded_pix = getbpl6(); + } + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6(); + } + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 1; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6(); + loaded_pix = getbpl6(); + } + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6(); + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix3; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6(); + loaded_pix = getbpl6(); + } + if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6(); + } + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 1; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; + dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_n0_p6_ilores_dshres_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_n1_p6_ilores_dshres(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6e(); + loaded_pix = getbpl6(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl6o(); + loaded_pix = getbpl6(); + } + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6(); + } + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl6o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl6(); + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix1; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6e(); + loaded_pix = getbpl6(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl6o(); + loaded_pix = getbpl6(); + } + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6(); + } + if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { + copybpl6o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl6(); + } + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 1; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6e(); + loaded_pix = getbpl6(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl6o(); + loaded_pix = getbpl6(); + } + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6(); + } + if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { + copybpl6o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl6(); + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix3; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6e(); + loaded_pix = getbpl6(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl6o(); + loaded_pix = getbpl6(); + } + if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6(); + } + if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) { + copybpl6o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl6(); + } + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 1; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; + dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_n1_p6_ilores_dshres_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_dpf0_p6_ilores_dshres(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6(); + loaded_pix = getbpl6(); + } + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6(); + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + uae_u8 val1 = dpf_lookup[pix1]; + if (dpf_lookup_no[pix1]) { + val1 += dblpfofs[bpldualpf2of]; + } + val1 ^= bplcon4_denise_xor_val; + dpix_val1 = denise_colors.acolors[val1]; + } + last_bpl_pix = pix1; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6(); + loaded_pix = getbpl6(); + } + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6(); + } + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 1; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6(); + loaded_pix = getbpl6(); + } + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6(); + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + uae_u8 val3 = dpf_lookup[pix3]; + if (dpf_lookup_no[pix3]) { + val3 += dblpfofs[bpldualpf2of]; + } + val3 ^= bplcon4_denise_xor_val; + dpix_val3 = denise_colors.acolors[val3]; + } + last_bpl_pix = pix3; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6(); + loaded_pix = getbpl6(); + } + if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6(); + } + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 1; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; + dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_dpf0_p6_ilores_dshres_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_dpf1_p6_ilores_dshres(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6e(); + loaded_pix = getbpl6(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl6o(); + loaded_pix = getbpl6(); + } + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6(); + } + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl6o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl6(); + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + uae_u8 val1 = dpf_lookup[pix1]; + if (dpf_lookup_no[pix1]) { + val1 += dblpfofs[bpldualpf2of]; + } + val1 ^= bplcon4_denise_xor_val; + dpix_val1 = denise_colors.acolors[val1]; + } + last_bpl_pix = pix1; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6e(); + loaded_pix = getbpl6(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl6o(); + loaded_pix = getbpl6(); + } + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6(); + } + if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { + copybpl6o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl6(); + } + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 1; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6e(); + loaded_pix = getbpl6(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl6o(); + loaded_pix = getbpl6(); + } + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6(); + } + if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { + copybpl6o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl6(); + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + uae_u8 val3 = dpf_lookup[pix3]; + if (dpf_lookup_no[pix3]) { + val3 += dblpfofs[bpldualpf2of]; + } + val3 ^= bplcon4_denise_xor_val; + dpix_val3 = denise_colors.acolors[val3]; + } + last_bpl_pix = pix3; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6e(); + loaded_pix = getbpl6(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl6o(); + loaded_pix = getbpl6(); + } + if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6(); + } + if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) { + copybpl6o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl6(); + } + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 1; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; + dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_dpf1_p6_ilores_dshres_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_ehb0_p6_ilores_dshres(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + pix0 ^= bplcon4_denise_xor_val; + if (!(pix0 & 0x20)) { + dpix_val0 = denise_colors.acolors[pix0]; + } else { + uae_u32 v = (denise_colors.color_regs_aga[pix0 & 0x1f] >> 1) & 0x7f7f7f; + dpix_val0 = CONVERT_RGB(v); + } + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6(); + loaded_pix = getbpl6(); + } + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6(); + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + pix1 ^= bplcon4_denise_xor_val; + if (!(pix1 & 0x20)) { + dpix_val1 = denise_colors.acolors[pix1]; + } else { + uae_u32 v = (denise_colors.color_regs_aga[pix1 & 0x1f] >> 1) & 0x7f7f7f; + dpix_val1 = CONVERT_RGB(v); + } + } + last_bpl_pix = pix1; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6(); + loaded_pix = getbpl6(); + } + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6(); + } + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 1; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + pix2 ^= bplcon4_denise_xor_val; + if (!(pix2 & 0x20)) { + dpix_val2 = denise_colors.acolors[pix2]; + } else { + uae_u32 v = (denise_colors.color_regs_aga[pix2 & 0x1f] >> 1) & 0x7f7f7f; + dpix_val2 = CONVERT_RGB(v); + } + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6(); + loaded_pix = getbpl6(); + } + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6(); + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + pix3 ^= bplcon4_denise_xor_val; + if (!(pix3 & 0x20)) { + dpix_val3 = denise_colors.acolors[pix3]; + } else { + uae_u32 v = (denise_colors.color_regs_aga[pix3 & 0x1f] >> 1) & 0x7f7f7f; + dpix_val3 = CONVERT_RGB(v); + } + } + last_bpl_pix = pix3; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6(); + loaded_pix = getbpl6(); + } + if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6(); + } + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 1; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; + dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ehb0_p6_ilores_dshres_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_ehb1_p6_ilores_dshres(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + pix0 ^= bplcon4_denise_xor_val; + if (!(pix0 & 0x20)) { + dpix_val0 = denise_colors.acolors[pix0]; + } else { + uae_u32 v = (denise_colors.color_regs_aga[pix0 & 0x1f] >> 1) & 0x7f7f7f; + dpix_val0 = CONVERT_RGB(v); + } + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6e(); + loaded_pix = getbpl6(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl6o(); + loaded_pix = getbpl6(); + } + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6(); + } + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl6o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl6(); + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + pix1 ^= bplcon4_denise_xor_val; + if (!(pix1 & 0x20)) { + dpix_val1 = denise_colors.acolors[pix1]; + } else { + uae_u32 v = (denise_colors.color_regs_aga[pix1 & 0x1f] >> 1) & 0x7f7f7f; + dpix_val1 = CONVERT_RGB(v); + } + } + last_bpl_pix = pix1; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6e(); + loaded_pix = getbpl6(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl6o(); + loaded_pix = getbpl6(); + } + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6(); + } + if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { + copybpl6o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl6(); + } + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 1; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + pix2 ^= bplcon4_denise_xor_val; + if (!(pix2 & 0x20)) { + dpix_val2 = denise_colors.acolors[pix2]; + } else { + uae_u32 v = (denise_colors.color_regs_aga[pix2 & 0x1f] >> 1) & 0x7f7f7f; + dpix_val2 = CONVERT_RGB(v); + } + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6e(); + loaded_pix = getbpl6(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl6o(); + loaded_pix = getbpl6(); + } + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6(); + } + if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { + copybpl6o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl6(); + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + pix3 ^= bplcon4_denise_xor_val; + if (!(pix3 & 0x20)) { + dpix_val3 = denise_colors.acolors[pix3]; + } else { + uae_u32 v = (denise_colors.color_regs_aga[pix3 & 0x1f] >> 1) & 0x7f7f7f; + dpix_val3 = CONVERT_RGB(v); + } + } + last_bpl_pix = pix3; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6e(); + loaded_pix = getbpl6(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl6o(); + loaded_pix = getbpl6(); + } + if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6(); + } + if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) { + copybpl6o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl6(); + } + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 1; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; + dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ehb1_p6_ilores_dshres_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_ham0_p6_ilores_dshres(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = decode_ham_pixel_aga(pix0); + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6(); + loaded_pix = getbpl6(); + } + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6(); + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + dpix_val1 = decode_ham_pixel_aga(pix1); + } + last_bpl_pix = pix1; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6(); + loaded_pix = getbpl6(); + } + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6(); + } + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 1; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = decode_ham_pixel_aga(pix2); + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6(); + loaded_pix = getbpl6(); + } + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6(); + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + dpix_val3 = decode_ham_pixel_aga(pix3); + } + last_bpl_pix = pix3; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6(); + loaded_pix = getbpl6(); + } + if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6(); + } + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 1; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; + dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ham0_p6_ilores_dshres_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_ham1_p6_ilores_dshres(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = decode_ham_pixel_aga(pix0); + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6e(); + loaded_pix = getbpl6(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl6o(); + loaded_pix = getbpl6(); + } + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6(); + } + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl6o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl6(); + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + dpix_val1 = decode_ham_pixel_aga(pix1); + } + last_bpl_pix = pix1; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6e(); + loaded_pix = getbpl6(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl6o(); + loaded_pix = getbpl6(); + } + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6(); + } + if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { + copybpl6o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl6(); + } + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 1; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = decode_ham_pixel_aga(pix2); + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6e(); + loaded_pix = getbpl6(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl6o(); + loaded_pix = getbpl6(); + } + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6(); + } + if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { + copybpl6o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl6(); + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + dpix_val3 = decode_ham_pixel_aga(pix3); + } + last_bpl_pix = pix3; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6e(); + loaded_pix = getbpl6(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl6o(); + loaded_pix = getbpl6(); + } + if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6(); + } + if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) { + copybpl6o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl6(); + } + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 1; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; + dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ham1_p6_ilores_dshres_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_kehb0_p6_ilores_dshres(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + pix0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[pix0 & 31]; + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6(); + loaded_pix = getbpl6(); + } + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6(); + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + pix1 ^= bplcon4_denise_xor_val; + dpix_val1 = denise_colors.acolors[pix1 & 31]; + } + last_bpl_pix = pix1; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6(); + loaded_pix = getbpl6(); + } + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6(); + } + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 1; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + pix2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[pix2 & 31]; + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6(); + loaded_pix = getbpl6(); + } + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6(); + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + pix3 ^= bplcon4_denise_xor_val; + dpix_val3 = denise_colors.acolors[pix3 & 31]; + } + last_bpl_pix = pix3; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6(); + loaded_pix = getbpl6(); + } + if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6(); + } + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 1; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; + dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_kehb0_p6_ilores_dshres_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_kehb1_p6_ilores_dshres(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + pix0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[pix0 & 31]; + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6e(); + loaded_pix = getbpl6(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl6o(); + loaded_pix = getbpl6(); + } + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6(); + } + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl6o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl6(); + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + pix1 ^= bplcon4_denise_xor_val; + dpix_val1 = denise_colors.acolors[pix1 & 31]; + } + last_bpl_pix = pix1; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6e(); + loaded_pix = getbpl6(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl6o(); + loaded_pix = getbpl6(); + } + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6(); + } + if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { + copybpl6o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl6(); + } + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 1; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + pix2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[pix2 & 31]; + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6e(); + loaded_pix = getbpl6(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl6o(); + loaded_pix = getbpl6(); + } + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6(); + } + if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { + copybpl6o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl6(); + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + pix3 ^= bplcon4_denise_xor_val; + dpix_val3 = denise_colors.acolors[pix3 & 31]; + } + last_bpl_pix = pix3; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6e(); + loaded_pix = getbpl6(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl6o(); + loaded_pix = getbpl6(); + } + if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6(); + } + if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) { + copybpl6o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl6(); + } + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 1; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; + dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_kehb1_p6_ilores_dshres_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_n0_p8_ilores_dshres(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8(); + loaded_pix = getbpl8(); + } + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8(); + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix1; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8(); + loaded_pix = getbpl8(); + } + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8(); + } + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 1; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8(); + loaded_pix = getbpl8(); + } + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8(); + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix3; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8(); + loaded_pix = getbpl8(); + } + if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8(); + } + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 1; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; + dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_n0_p8_ilores_dshres_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_n1_p8_ilores_dshres(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8e(); + loaded_pix = getbpl8(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl8o(); + loaded_pix = getbpl8(); + } + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8(); + } + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl8(); + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix1; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8e(); + loaded_pix = getbpl8(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl8o(); + loaded_pix = getbpl8(); + } + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8(); + } + if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl8(); + } + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 1; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8e(); + loaded_pix = getbpl8(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl8o(); + loaded_pix = getbpl8(); + } + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8(); + } + if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl8(); + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix3; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8e(); + loaded_pix = getbpl8(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl8o(); + loaded_pix = getbpl8(); + } + if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8(); + } + if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl8(); + } + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 1; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; + dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_n1_p8_ilores_dshres_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_dpf0_p8_ilores_dshres(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8(); + loaded_pix = getbpl8(); + } + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8(); + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + uae_u8 val1 = dpf_lookup[pix1]; + if (dpf_lookup_no[pix1]) { + val1 += dblpfofs[bpldualpf2of]; + } + val1 ^= bplcon4_denise_xor_val; + dpix_val1 = denise_colors.acolors[val1]; + } + last_bpl_pix = pix1; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8(); + loaded_pix = getbpl8(); + } + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8(); + } + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 1; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8(); + loaded_pix = getbpl8(); + } + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8(); + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + uae_u8 val3 = dpf_lookup[pix3]; + if (dpf_lookup_no[pix3]) { + val3 += dblpfofs[bpldualpf2of]; + } + val3 ^= bplcon4_denise_xor_val; + dpix_val3 = denise_colors.acolors[val3]; + } + last_bpl_pix = pix3; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8(); + loaded_pix = getbpl8(); + } + if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8(); + } + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 1; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; + dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_dpf0_p8_ilores_dshres_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_dpf1_p8_ilores_dshres(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8e(); + loaded_pix = getbpl8(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl8o(); + loaded_pix = getbpl8(); + } + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8(); + } + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl8(); + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + uae_u8 val1 = dpf_lookup[pix1]; + if (dpf_lookup_no[pix1]) { + val1 += dblpfofs[bpldualpf2of]; + } + val1 ^= bplcon4_denise_xor_val; + dpix_val1 = denise_colors.acolors[val1]; + } + last_bpl_pix = pix1; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8e(); + loaded_pix = getbpl8(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl8o(); + loaded_pix = getbpl8(); + } + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8(); + } + if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl8(); + } + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 1; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8e(); + loaded_pix = getbpl8(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl8o(); + loaded_pix = getbpl8(); + } + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8(); + } + if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl8(); + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + uae_u8 val3 = dpf_lookup[pix3]; + if (dpf_lookup_no[pix3]) { + val3 += dblpfofs[bpldualpf2of]; + } + val3 ^= bplcon4_denise_xor_val; + dpix_val3 = denise_colors.acolors[val3]; + } + last_bpl_pix = pix3; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8e(); + loaded_pix = getbpl8(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl8o(); + loaded_pix = getbpl8(); + } + if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8(); + } + if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl8(); + } + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 1; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; + dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_dpf1_p8_ilores_dshres_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_ehb0_p8_ilores_dshres(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 1; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 1; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; + dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ehb0_p8_ilores_dshres_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_ehb1_p8_ilores_dshres(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 1; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 1; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; + dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ehb1_p8_ilores_dshres_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_ham0_p8_ilores_dshres(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = decode_ham_pixel_aga(pix0); + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8(); + loaded_pix = getbpl8(); + } + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8(); + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + dpix_val1 = decode_ham_pixel_aga(pix1); + } + last_bpl_pix = pix1; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8(); + loaded_pix = getbpl8(); + } + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8(); + } + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 1; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = decode_ham_pixel_aga(pix2); + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8(); + loaded_pix = getbpl8(); + } + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8(); + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + dpix_val3 = decode_ham_pixel_aga(pix3); + } + last_bpl_pix = pix3; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8(); + loaded_pix = getbpl8(); + } + if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8(); + } + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 1; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; + dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ham0_p8_ilores_dshres_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_ham1_p8_ilores_dshres(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = decode_ham_pixel_aga(pix0); + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8e(); + loaded_pix = getbpl8(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl8o(); + loaded_pix = getbpl8(); + } + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8(); + } + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl8(); + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + dpix_val1 = decode_ham_pixel_aga(pix1); + } + last_bpl_pix = pix1; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8e(); + loaded_pix = getbpl8(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl8o(); + loaded_pix = getbpl8(); + } + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8(); + } + if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl8(); + } + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 1; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = decode_ham_pixel_aga(pix2); + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8e(); + loaded_pix = getbpl8(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl8o(); + loaded_pix = getbpl8(); + } + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8(); + } + if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl8(); + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + dpix_val3 = decode_ham_pixel_aga(pix3); + } + last_bpl_pix = pix3; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8e(); + loaded_pix = getbpl8(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl8o(); + loaded_pix = getbpl8(); + } + if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8(); + } + if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl8(); + } + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 1; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; + dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ham1_p8_ilores_dshres_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_kehb0_p8_ilores_dshres(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 1; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 1; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; + dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_kehb0_p8_ilores_dshres_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_kehb1_p8_ilores_dshres(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 1; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 1; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; + dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_kehb1_p8_ilores_dshres_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_n0_p2_ilores_dshres_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl2(); + loaded_pix = getbpl2(); + } + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl2(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl2(); + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix1; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl2(); + loaded_pix = getbpl2(); + } + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl2(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl2(); + } + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } + } + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl2(); + loaded_pix = getbpl2(); + } + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl2(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl2(); + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix3; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl2(); + loaded_pix = getbpl2(); + } + if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { + copybpl2(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl2(); + } + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } + } + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 1; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } + dtbuf[h][1] = dpix_val1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + } + } + dtbuf[h][3] = dpix_val3; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_n0_p2_ilores_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm0_n0_p2_ishres_dlores_spr(void) +static void lts_aga_fm0_n1_p2_ilores_dshres_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl2e(); + loaded_pix = getbpl2(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl2o(); + loaded_pix = getbpl2(); + } + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl2e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl2(); + } + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl2o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl2(); + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix1; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl2e(); + loaded_pix = getbpl2(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl2o(); + loaded_pix = getbpl2(); + } + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl2e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl2(); + } + if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { + copybpl2o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl2(); + } + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } + } + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl2e(); + loaded_pix = getbpl2(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl2o(); + loaded_pix = getbpl2(); + } + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl2e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl2(); + } + if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { + copybpl2o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl2(); + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix3; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl2e(); + loaded_pix = getbpl2(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl2o(); + loaded_pix = getbpl2(); + } + if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { + copybpl2e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl2(); + } + if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) { + copybpl2o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl2(); + } + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } + } + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 1; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } + dtbuf[h][1] = dpix_val1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + } + } + dtbuf[h][3] = dpix_val3; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_n1_p2_ilores_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm0_n0_p2_ishres_dlores_spr_filtered(void) +static void lts_aga_fm0_dpf0_p2_ilores_dshres_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl2(); + loaded_pix = getbpl2(); + } + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl2(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl2(); + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + uae_u8 val1 = dpf_lookup[pix1]; + if (dpf_lookup_no[pix1]) { + val1 += dblpfofs[bpldualpf2of]; + } + val1 ^= bplcon4_denise_xor_val; + dpix_val1 = denise_colors.acolors[val1]; + } + last_bpl_pix = pix1; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl2(); + loaded_pix = getbpl2(); + } + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl2(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl2(); + } + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } + } + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl2(); + loaded_pix = getbpl2(); + } + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl2(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl2(); + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + uae_u8 val3 = dpf_lookup[pix3]; + if (dpf_lookup_no[pix3]) { + val3 += dblpfofs[bpldualpf2of]; + } + val3 ^= bplcon4_denise_xor_val; + dpix_val3 = denise_colors.acolors[val3]; + } + last_bpl_pix = pix3; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl2(); + loaded_pix = getbpl2(); + } + if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { + copybpl2(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl2(); + } + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } + } + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 1; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } + dtbuf[h][1] = dpix_val1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + } + } + dtbuf[h][3] = dpix_val3; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_dpf0_p2_ilores_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm0_n1_p2_ishres_dlores_spr(void) +static void lts_aga_fm0_dpf1_p2_ilores_dshres_spr(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl2e(); + loaded_pix = getbpl2(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl2o(); + loaded_pix = getbpl2(); + } + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl2e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl2(); + } + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl2o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl2(); + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + uae_u8 val1 = dpf_lookup[pix1]; + if (dpf_lookup_no[pix1]) { + val1 += dblpfofs[bpldualpf2of]; + } + val1 ^= bplcon4_denise_xor_val; + dpix_val1 = denise_colors.acolors[val1]; + } + last_bpl_pix = pix1; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl2e(); + loaded_pix = getbpl2(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl2o(); + loaded_pix = getbpl2(); + } + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl2e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl2(); + } + if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { + copybpl2o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl2(); + } + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } + } + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl2e(); + loaded_pix = getbpl2(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl2o(); + loaded_pix = getbpl2(); + } + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl2e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl2(); + } + if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { + copybpl2o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl2(); + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + uae_u8 val3 = dpf_lookup[pix3]; + if (dpf_lookup_no[pix3]) { + val3 += dblpfofs[bpldualpf2of]; + } + val3 ^= bplcon4_denise_xor_val; + dpix_val3 = denise_colors.acolors[val3]; + } + last_bpl_pix = pix3; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl2e(); + loaded_pix = getbpl2(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl2o(); + loaded_pix = getbpl2(); + } + if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { + copybpl2e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl2(); + } + if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) { + copybpl2o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl2(); + } + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } + } + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 1; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } + dtbuf[h][1] = dpix_val1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + } + } + dtbuf[h][3] = dpix_val3; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm0_n1_p2_ishres_dlores_spr_filtered(void) +static void lts_aga_fm0_dpf1_p2_ilores_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm0_dpf0_p2_ishres_dlores_spr(void) +static void lts_aga_fm0_ehb0_p2_ilores_dshres_spr(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } + } + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } + } + internal_pixel_cnt += 1; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } + dtbuf[h][1] = dpix_val1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + } + } + dtbuf[h][3] = dpix_val3; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm0_dpf0_p2_ishres_dlores_spr_filtered(void) +static void lts_aga_fm0_ehb0_p2_ilores_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm0_dpf1_p2_ishres_dlores_spr(void) +static void lts_aga_fm0_ehb1_p2_ilores_dshres_spr(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } + } + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } + } + internal_pixel_cnt += 1; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } + dtbuf[h][1] = dpix_val1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + } + } + dtbuf[h][3] = dpix_val3; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm0_dpf1_p2_ishres_dlores_spr_filtered(void) +static void lts_aga_fm0_ehb1_p2_ilores_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm0_ehb0_p2_ishres_dlores_spr(void) +static void lts_aga_fm0_ham0_p2_ilores_dshres_spr(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } + } + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } + } + internal_pixel_cnt += 1; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } + dtbuf[h][1] = dpix_val1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + } + } + dtbuf[h][3] = dpix_val3; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm0_ehb0_p2_ishres_dlores_spr_filtered(void) +static void lts_aga_fm0_ham0_p2_ilores_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm0_ehb1_p2_ishres_dlores_spr(void) +static void lts_aga_fm0_ham1_p2_ilores_dshres_spr(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } + } + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } + } + internal_pixel_cnt += 1; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } + dtbuf[h][1] = dpix_val1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + } + } + dtbuf[h][3] = dpix_val3; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm0_ehb1_p2_ishres_dlores_spr_filtered(void) +static void lts_aga_fm0_ham1_p2_ilores_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm0_ham0_p2_ishres_dlores_spr(void) +static void lts_aga_fm0_kehb0_p2_ilores_dshres_spr(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } + } + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } + } + internal_pixel_cnt += 1; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } + dtbuf[h][1] = dpix_val1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + } + } + dtbuf[h][3] = dpix_val3; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm0_ham0_p2_ishres_dlores_spr_filtered(void) +static void lts_aga_fm0_kehb0_p2_ilores_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm0_ham1_p2_ishres_dlores_spr(void) +static void lts_aga_fm0_kehb1_p2_ilores_dshres_spr(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } + } + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } + } + internal_pixel_cnt += 1; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } + dtbuf[h][1] = dpix_val1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + } + } + dtbuf[h][3] = dpix_val3; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm0_ham1_p2_ishres_dlores_spr_filtered(void) +static void lts_aga_fm0_kehb1_p2_ilores_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm0_kehb0_p2_ishres_dlores_spr(void) +static void lts_aga_fm0_n0_p4_ilores_dshres_spr(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4(); + loaded_pix = getbpl4(); + } + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4(); + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix1; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4(); + loaded_pix = getbpl4(); + } + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4(); + } + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } + } + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4(); + loaded_pix = getbpl4(); + } + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4(); + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix3; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4(); + loaded_pix = getbpl4(); + } + if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4(); + } + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } + } + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 1; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } + dtbuf[h][1] = dpix_val1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + } + } + dtbuf[h][3] = dpix_val3; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm0_kehb0_p2_ishres_dlores_spr_filtered(void) +static void lts_aga_fm0_n0_p4_ilores_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm0_kehb1_p2_ishres_dlores_spr(void) +static void lts_aga_fm0_n1_p4_ilores_dshres_spr(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4e(); + loaded_pix = getbpl4(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl4o(); + loaded_pix = getbpl4(); + } + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4(); + } + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl4o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl4(); + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix1; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4e(); + loaded_pix = getbpl4(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl4o(); + loaded_pix = getbpl4(); + } + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4(); + } + if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { + copybpl4o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl4(); + } + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } + } + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4e(); + loaded_pix = getbpl4(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl4o(); + loaded_pix = getbpl4(); + } + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4(); + } + if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { + copybpl4o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl4(); + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix3; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4e(); + loaded_pix = getbpl4(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl4o(); + loaded_pix = getbpl4(); + } + if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4(); + } + if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) { + copybpl4o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl4(); + } + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } + } + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 1; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } + dtbuf[h][1] = dpix_val1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + } + } + dtbuf[h][3] = dpix_val3; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm0_kehb1_p2_ishres_dlores_spr_filtered(void) +static void lts_aga_fm0_n1_p4_ilores_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm0_n0_p4_ishres_dlores_spr(void) +static void lts_aga_fm0_dpf0_p4_ilores_dshres_spr(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4(); + loaded_pix = getbpl4(); + } + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4(); + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + uae_u8 val1 = dpf_lookup[pix1]; + if (dpf_lookup_no[pix1]) { + val1 += dblpfofs[bpldualpf2of]; + } + val1 ^= bplcon4_denise_xor_val; + dpix_val1 = denise_colors.acolors[val1]; + } + last_bpl_pix = pix1; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4(); + loaded_pix = getbpl4(); + } + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4(); + } + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } + } + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4(); + loaded_pix = getbpl4(); + } + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4(); + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + uae_u8 val3 = dpf_lookup[pix3]; + if (dpf_lookup_no[pix3]) { + val3 += dblpfofs[bpldualpf2of]; + } + val3 ^= bplcon4_denise_xor_val; + dpix_val3 = denise_colors.acolors[val3]; + } + last_bpl_pix = pix3; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4(); + loaded_pix = getbpl4(); + } + if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4(); + } + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } + } + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 1; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } + dtbuf[h][1] = dpix_val1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + } + } + dtbuf[h][3] = dpix_val3; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm0_n0_p4_ishres_dlores_spr_filtered(void) +static void lts_aga_fm0_dpf0_p4_ilores_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm0_n1_p4_ishres_dlores_spr(void) +static void lts_aga_fm0_dpf1_p4_ilores_dshres_spr(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4e(); + loaded_pix = getbpl4(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl4o(); + loaded_pix = getbpl4(); + } + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4(); + } + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl4o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl4(); + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + uae_u8 val1 = dpf_lookup[pix1]; + if (dpf_lookup_no[pix1]) { + val1 += dblpfofs[bpldualpf2of]; + } + val1 ^= bplcon4_denise_xor_val; + dpix_val1 = denise_colors.acolors[val1]; + } + last_bpl_pix = pix1; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4e(); + loaded_pix = getbpl4(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl4o(); + loaded_pix = getbpl4(); + } + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4(); + } + if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { + copybpl4o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl4(); + } + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } + } + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4e(); + loaded_pix = getbpl4(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl4o(); + loaded_pix = getbpl4(); + } + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4(); + } + if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { + copybpl4o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl4(); + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + uae_u8 val3 = dpf_lookup[pix3]; + if (dpf_lookup_no[pix3]) { + val3 += dblpfofs[bpldualpf2of]; + } + val3 ^= bplcon4_denise_xor_val; + dpix_val3 = denise_colors.acolors[val3]; + } + last_bpl_pix = pix3; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4e(); + loaded_pix = getbpl4(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl4o(); + loaded_pix = getbpl4(); + } + if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4(); + } + if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) { + copybpl4o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl4(); + } + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } + } + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 1; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } + dtbuf[h][1] = dpix_val1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + } + } + dtbuf[h][3] = dpix_val3; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm0_n1_p4_ishres_dlores_spr_filtered(void) +static void lts_aga_fm0_dpf1_p4_ilores_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm0_dpf0_p4_ishres_dlores_spr(void) +static void lts_aga_fm0_ehb0_p4_ilores_dshres_spr(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } + } + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } + } + internal_pixel_cnt += 1; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } + dtbuf[h][1] = dpix_val1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + } + } + dtbuf[h][3] = dpix_val3; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm0_dpf0_p4_ishres_dlores_spr_filtered(void) +static void lts_aga_fm0_ehb0_p4_ilores_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm0_dpf1_p4_ishres_dlores_spr(void) +static void lts_aga_fm0_ehb1_p4_ilores_dshres_spr(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } + } + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } + } + internal_pixel_cnt += 1; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } + dtbuf[h][1] = dpix_val1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + } + } + dtbuf[h][3] = dpix_val3; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm0_dpf1_p4_ishres_dlores_spr_filtered(void) +static void lts_aga_fm0_ehb1_p4_ilores_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm0_ehb0_p4_ishres_dlores_spr(void) +static void lts_aga_fm0_ham0_p4_ilores_dshres_spr(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } + } + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } + } + internal_pixel_cnt += 1; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } + dtbuf[h][1] = dpix_val1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + } + } + dtbuf[h][3] = dpix_val3; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm0_ehb0_p4_ishres_dlores_spr_filtered(void) +static void lts_aga_fm0_ham0_p4_ilores_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm0_ehb1_p4_ishres_dlores_spr(void) +static void lts_aga_fm0_ham1_p4_ilores_dshres_spr(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } + } + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } + } + internal_pixel_cnt += 1; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } + dtbuf[h][1] = dpix_val1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + } + } + dtbuf[h][3] = dpix_val3; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm0_ehb1_p4_ishres_dlores_spr_filtered(void) +static void lts_aga_fm0_ham1_p4_ilores_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm0_ham0_p4_ishres_dlores_spr(void) +static void lts_aga_fm0_kehb0_p4_ilores_dshres_spr(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } + } + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } + } + internal_pixel_cnt += 1; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } + dtbuf[h][1] = dpix_val1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + } + } + dtbuf[h][3] = dpix_val3; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm0_ham0_p4_ishres_dlores_spr_filtered(void) +static void lts_aga_fm0_kehb0_p4_ilores_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm0_ham1_p4_ishres_dlores_spr(void) +static void lts_aga_fm0_kehb1_p4_ilores_dshres_spr(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } + } + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } + } + internal_pixel_cnt += 1; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } + dtbuf[h][1] = dpix_val1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + } + } + dtbuf[h][3] = dpix_val3; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm0_ham1_p4_ishres_dlores_spr_filtered(void) +static void lts_aga_fm0_kehb1_p4_ilores_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm0_kehb0_p4_ishres_dlores_spr(void) +static void lts_aga_fm0_n0_p6_ilores_dshres_spr(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6(); + loaded_pix = getbpl6(); + } + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6(); + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix1; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6(); + loaded_pix = getbpl6(); + } + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6(); + } + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } + } + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6(); + loaded_pix = getbpl6(); + } + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6(); + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix3; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6(); + loaded_pix = getbpl6(); + } + if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6(); + } + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } + } + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 1; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } + dtbuf[h][1] = dpix_val1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + } + } + dtbuf[h][3] = dpix_val3; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm0_kehb0_p4_ishres_dlores_spr_filtered(void) +static void lts_aga_fm0_n0_p6_ilores_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm0_kehb1_p4_ishres_dlores_spr(void) +static void lts_aga_fm0_n1_p6_ilores_dshres_spr(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6e(); + loaded_pix = getbpl6(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl6o(); + loaded_pix = getbpl6(); + } + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6(); + } + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl6o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl6(); + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix1; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6e(); + loaded_pix = getbpl6(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl6o(); + loaded_pix = getbpl6(); + } + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6(); + } + if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { + copybpl6o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl6(); + } + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } + } + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6e(); + loaded_pix = getbpl6(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl6o(); + loaded_pix = getbpl6(); + } + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6(); + } + if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { + copybpl6o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl6(); + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix3; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6e(); + loaded_pix = getbpl6(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl6o(); + loaded_pix = getbpl6(); + } + if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6(); + } + if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) { + copybpl6o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl6(); + } + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } + } + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 1; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } + dtbuf[h][1] = dpix_val1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + } + } + dtbuf[h][3] = dpix_val3; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm0_kehb1_p4_ishres_dlores_spr_filtered(void) +static void lts_aga_fm0_n1_p6_ilores_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm0_n0_p6_ishres_dlores_spr(void) +static void lts_aga_fm0_dpf0_p6_ilores_dshres_spr(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6(); + loaded_pix = getbpl6(); + } + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6(); + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + uae_u8 val1 = dpf_lookup[pix1]; + if (dpf_lookup_no[pix1]) { + val1 += dblpfofs[bpldualpf2of]; + } + val1 ^= bplcon4_denise_xor_val; + dpix_val1 = denise_colors.acolors[val1]; + } + last_bpl_pix = pix1; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6(); + loaded_pix = getbpl6(); + } + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6(); + } + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } + } + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6(); + loaded_pix = getbpl6(); + } + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6(); + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + uae_u8 val3 = dpf_lookup[pix3]; + if (dpf_lookup_no[pix3]) { + val3 += dblpfofs[bpldualpf2of]; + } + val3 ^= bplcon4_denise_xor_val; + dpix_val3 = denise_colors.acolors[val3]; + } + last_bpl_pix = pix3; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6(); + loaded_pix = getbpl6(); + } + if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6(); + } + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } + } + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 1; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } + dtbuf[h][1] = dpix_val1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + } + } + dtbuf[h][3] = dpix_val3; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm0_n0_p6_ishres_dlores_spr_filtered(void) +static void lts_aga_fm0_dpf0_p6_ilores_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm0_n1_p6_ishres_dlores_spr(void) +static void lts_aga_fm0_dpf1_p6_ilores_dshres_spr(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6e(); + loaded_pix = getbpl6(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl6o(); + loaded_pix = getbpl6(); + } + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6(); + } + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl6o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl6(); + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + uae_u8 val1 = dpf_lookup[pix1]; + if (dpf_lookup_no[pix1]) { + val1 += dblpfofs[bpldualpf2of]; + } + val1 ^= bplcon4_denise_xor_val; + dpix_val1 = denise_colors.acolors[val1]; + } + last_bpl_pix = pix1; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6e(); + loaded_pix = getbpl6(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl6o(); + loaded_pix = getbpl6(); + } + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6(); + } + if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { + copybpl6o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl6(); + } + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } + } + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6e(); + loaded_pix = getbpl6(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl6o(); + loaded_pix = getbpl6(); + } + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6(); + } + if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { + copybpl6o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl6(); + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + uae_u8 val3 = dpf_lookup[pix3]; + if (dpf_lookup_no[pix3]) { + val3 += dblpfofs[bpldualpf2of]; + } + val3 ^= bplcon4_denise_xor_val; + dpix_val3 = denise_colors.acolors[val3]; + } + last_bpl_pix = pix3; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6e(); + loaded_pix = getbpl6(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl6o(); + loaded_pix = getbpl6(); + } + if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6(); + } + if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) { + copybpl6o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl6(); + } + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } + } + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 1; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } + dtbuf[h][1] = dpix_val1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + } + } + dtbuf[h][3] = dpix_val3; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm0_n1_p6_ishres_dlores_spr_filtered(void) +static void lts_aga_fm0_dpf1_p6_ilores_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm0_dpf0_p6_ishres_dlores_spr(void) +static void lts_aga_fm0_ehb0_p6_ilores_dshres_spr(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + pix0 ^= bplcon4_denise_xor_val; + if (!(pix0 & 0x20)) { + dpix_val0 = denise_colors.acolors[pix0]; + } else { + uae_u32 v = (denise_colors.color_regs_aga[pix0 & 0x1f] >> 1) & 0x7f7f7f; + dpix_val0 = CONVERT_RGB(v); + } + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6(); + loaded_pix = getbpl6(); + } + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6(); + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + pix1 ^= bplcon4_denise_xor_val; + if (!(pix1 & 0x20)) { + dpix_val1 = denise_colors.acolors[pix1]; + } else { + uae_u32 v = (denise_colors.color_regs_aga[pix1 & 0x1f] >> 1) & 0x7f7f7f; + dpix_val1 = CONVERT_RGB(v); + } + } + last_bpl_pix = pix1; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6(); + loaded_pix = getbpl6(); + } + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6(); + } + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } + } + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + pix2 ^= bplcon4_denise_xor_val; + if (!(pix2 & 0x20)) { + dpix_val2 = denise_colors.acolors[pix2]; + } else { + uae_u32 v = (denise_colors.color_regs_aga[pix2 & 0x1f] >> 1) & 0x7f7f7f; + dpix_val2 = CONVERT_RGB(v); + } + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6(); + loaded_pix = getbpl6(); + } + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6(); + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + pix3 ^= bplcon4_denise_xor_val; + if (!(pix3 & 0x20)) { + dpix_val3 = denise_colors.acolors[pix3]; + } else { + uae_u32 v = (denise_colors.color_regs_aga[pix3 & 0x1f] >> 1) & 0x7f7f7f; + dpix_val3 = CONVERT_RGB(v); + } + } + last_bpl_pix = pix3; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6(); + loaded_pix = getbpl6(); + } + if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6(); + } + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } + } + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 1; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } + dtbuf[h][1] = dpix_val1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + } + } + dtbuf[h][3] = dpix_val3; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm0_dpf0_p6_ishres_dlores_spr_filtered(void) +static void lts_aga_fm0_ehb0_p6_ilores_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm0_dpf1_p6_ishres_dlores_spr(void) +static void lts_aga_fm0_ehb1_p6_ilores_dshres_spr(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + pix0 ^= bplcon4_denise_xor_val; + if (!(pix0 & 0x20)) { + dpix_val0 = denise_colors.acolors[pix0]; + } else { + uae_u32 v = (denise_colors.color_regs_aga[pix0 & 0x1f] >> 1) & 0x7f7f7f; + dpix_val0 = CONVERT_RGB(v); + } + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6e(); + loaded_pix = getbpl6(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl6o(); + loaded_pix = getbpl6(); + } + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6(); + } + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl6o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl6(); + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + pix1 ^= bplcon4_denise_xor_val; + if (!(pix1 & 0x20)) { + dpix_val1 = denise_colors.acolors[pix1]; + } else { + uae_u32 v = (denise_colors.color_regs_aga[pix1 & 0x1f] >> 1) & 0x7f7f7f; + dpix_val1 = CONVERT_RGB(v); + } + } + last_bpl_pix = pix1; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6e(); + loaded_pix = getbpl6(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl6o(); + loaded_pix = getbpl6(); + } + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6(); + } + if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { + copybpl6o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl6(); + } + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } + } + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + pix2 ^= bplcon4_denise_xor_val; + if (!(pix2 & 0x20)) { + dpix_val2 = denise_colors.acolors[pix2]; + } else { + uae_u32 v = (denise_colors.color_regs_aga[pix2 & 0x1f] >> 1) & 0x7f7f7f; + dpix_val2 = CONVERT_RGB(v); + } + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6e(); + loaded_pix = getbpl6(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl6o(); + loaded_pix = getbpl6(); + } + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6(); + } + if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { + copybpl6o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl6(); + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + pix3 ^= bplcon4_denise_xor_val; + if (!(pix3 & 0x20)) { + dpix_val3 = denise_colors.acolors[pix3]; + } else { + uae_u32 v = (denise_colors.color_regs_aga[pix3 & 0x1f] >> 1) & 0x7f7f7f; + dpix_val3 = CONVERT_RGB(v); + } + } + last_bpl_pix = pix3; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6e(); + loaded_pix = getbpl6(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl6o(); + loaded_pix = getbpl6(); + } + if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6(); + } + if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) { + copybpl6o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl6(); + } + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } + } + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 1; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } + dtbuf[h][1] = dpix_val1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + } + } + dtbuf[h][3] = dpix_val3; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm0_dpf1_p6_ishres_dlores_spr_filtered(void) +static void lts_aga_fm0_ehb1_p6_ilores_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm0_ehb0_p6_ishres_dlores_spr(void) +static void lts_aga_fm0_ham0_p6_ilores_dshres_spr(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = decode_ham_pixel_aga(pix0); + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6(); + loaded_pix = getbpl6(); + } + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6(); + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + dpix_val1 = decode_ham_pixel_aga(pix1); + } + last_bpl_pix = pix1; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6(); + loaded_pix = getbpl6(); + } + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6(); + } + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } + } + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = decode_ham_pixel_aga(pix2); + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6(); + loaded_pix = getbpl6(); + } + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6(); + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + dpix_val3 = decode_ham_pixel_aga(pix3); + } + last_bpl_pix = pix3; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6(); + loaded_pix = getbpl6(); + } + if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6(); + } + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } + } + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 1; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } + dtbuf[h][1] = dpix_val1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + } + } + dtbuf[h][3] = dpix_val3; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm0_ehb0_p6_ishres_dlores_spr_filtered(void) +static void lts_aga_fm0_ham0_p6_ilores_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm0_ehb1_p6_ishres_dlores_spr(void) +static void lts_aga_fm0_ham1_p6_ilores_dshres_spr(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = decode_ham_pixel_aga(pix0); + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6e(); + loaded_pix = getbpl6(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl6o(); + loaded_pix = getbpl6(); + } + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6(); + } + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl6o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl6(); + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + dpix_val1 = decode_ham_pixel_aga(pix1); + } + last_bpl_pix = pix1; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6e(); + loaded_pix = getbpl6(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl6o(); + loaded_pix = getbpl6(); + } + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6(); + } + if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { + copybpl6o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl6(); + } + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } + } + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = decode_ham_pixel_aga(pix2); + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6e(); + loaded_pix = getbpl6(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl6o(); + loaded_pix = getbpl6(); + } + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6(); + } + if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { + copybpl6o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl6(); + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + dpix_val3 = decode_ham_pixel_aga(pix3); + } + last_bpl_pix = pix3; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6e(); + loaded_pix = getbpl6(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl6o(); + loaded_pix = getbpl6(); + } + if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6(); + } + if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) { + copybpl6o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl6(); + } + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } + } + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 1; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } + dtbuf[h][1] = dpix_val1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + } + } + dtbuf[h][3] = dpix_val3; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm0_ehb1_p6_ishres_dlores_spr_filtered(void) +static void lts_aga_fm0_ham1_p6_ilores_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm0_ham0_p6_ishres_dlores_spr(void) +static void lts_aga_fm0_kehb0_p6_ilores_dshres_spr(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + pix0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[pix0 & 31]; + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6(); + loaded_pix = getbpl6(); + } + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6(); + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + pix1 ^= bplcon4_denise_xor_val; + dpix_val1 = denise_colors.acolors[pix1 & 31]; + } + last_bpl_pix = pix1; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6(); + loaded_pix = getbpl6(); + } + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6(); + } + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } + } + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + pix2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[pix2 & 31]; + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6(); + loaded_pix = getbpl6(); + } + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6(); + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + pix3 ^= bplcon4_denise_xor_val; + dpix_val3 = denise_colors.acolors[pix3 & 31]; + } + last_bpl_pix = pix3; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6(); + loaded_pix = getbpl6(); + } + if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6(); + } + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } + } + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 1; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } + dtbuf[h][1] = dpix_val1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + } + } + dtbuf[h][3] = dpix_val3; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm0_ham0_p6_ishres_dlores_spr_filtered(void) +static void lts_aga_fm0_kehb0_p6_ilores_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm0_ham1_p6_ishres_dlores_spr(void) +static void lts_aga_fm0_kehb1_p6_ilores_dshres_spr(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + pix0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[pix0 & 31]; + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6e(); + loaded_pix = getbpl6(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl6o(); + loaded_pix = getbpl6(); + } + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6(); + } + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl6o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl6(); + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + pix1 ^= bplcon4_denise_xor_val; + dpix_val1 = denise_colors.acolors[pix1 & 31]; + } + last_bpl_pix = pix1; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6e(); + loaded_pix = getbpl6(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl6o(); + loaded_pix = getbpl6(); + } + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6(); + } + if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { + copybpl6o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl6(); + } + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } + } + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + pix2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[pix2 & 31]; + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6e(); + loaded_pix = getbpl6(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl6o(); + loaded_pix = getbpl6(); + } + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6(); + } + if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { + copybpl6o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl6(); + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + pix3 ^= bplcon4_denise_xor_val; + dpix_val3 = denise_colors.acolors[pix3 & 31]; + } + last_bpl_pix = pix3; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6e(); + loaded_pix = getbpl6(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl6o(); + loaded_pix = getbpl6(); + } + if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6(); + } + if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) { + copybpl6o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl6(); + } + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } + } + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 1; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } + dtbuf[h][1] = dpix_val1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + } + } + dtbuf[h][3] = dpix_val3; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm0_ham1_p6_ishres_dlores_spr_filtered(void) +static void lts_aga_fm0_kehb1_p6_ilores_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm0_kehb0_p6_ishres_dlores_spr(void) +static void lts_aga_fm0_n0_p8_ilores_dshres_spr(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8(); + loaded_pix = getbpl8(); + } + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8(); + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix1; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8(); + loaded_pix = getbpl8(); + } + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8(); + } + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } + } + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8(); + loaded_pix = getbpl8(); + } + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8(); + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix3; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8(); + loaded_pix = getbpl8(); + } + if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8(); + } + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } + } + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 1; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } + dtbuf[h][1] = dpix_val1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + } + } + dtbuf[h][3] = dpix_val3; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm0_kehb0_p6_ishres_dlores_spr_filtered(void) +static void lts_aga_fm0_n0_p8_ilores_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm0_kehb1_p6_ishres_dlores_spr(void) +static void lts_aga_fm0_n1_p8_ilores_dshres_spr(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8e(); + loaded_pix = getbpl8(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl8o(); + loaded_pix = getbpl8(); + } + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8(); + } + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl8(); + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix1; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8e(); + loaded_pix = getbpl8(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl8o(); + loaded_pix = getbpl8(); + } + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8(); + } + if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl8(); + } + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } + } + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8e(); + loaded_pix = getbpl8(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl8o(); + loaded_pix = getbpl8(); + } + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8(); + } + if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl8(); + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix3; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8e(); + loaded_pix = getbpl8(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl8o(); + loaded_pix = getbpl8(); + } + if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8(); + } + if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl8(); + } + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } + } + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 1; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } + dtbuf[h][1] = dpix_val1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + } + } + dtbuf[h][3] = dpix_val3; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm0_kehb1_p6_ishres_dlores_spr_filtered(void) +static void lts_aga_fm0_n1_p8_ilores_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm0_n0_p8_ishres_dlores_spr(void) +static void lts_aga_fm0_dpf0_p8_ilores_dshres_spr(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8(); + loaded_pix = getbpl8(); + } + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8(); + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + uae_u8 val1 = dpf_lookup[pix1]; + if (dpf_lookup_no[pix1]) { + val1 += dblpfofs[bpldualpf2of]; + } + val1 ^= bplcon4_denise_xor_val; + dpix_val1 = denise_colors.acolors[val1]; + } + last_bpl_pix = pix1; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8(); + loaded_pix = getbpl8(); + } + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8(); + } + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } + } + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8(); + loaded_pix = getbpl8(); + } + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8(); + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + uae_u8 val3 = dpf_lookup[pix3]; + if (dpf_lookup_no[pix3]) { + val3 += dblpfofs[bpldualpf2of]; + } + val3 ^= bplcon4_denise_xor_val; + dpix_val3 = denise_colors.acolors[val3]; + } + last_bpl_pix = pix3; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8(); + loaded_pix = getbpl8(); + } + if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8(); + } + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } + } + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 1; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } + dtbuf[h][1] = dpix_val1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + } + } + dtbuf[h][3] = dpix_val3; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm0_n0_p8_ishres_dlores_spr_filtered(void) +static void lts_aga_fm0_dpf0_p8_ilores_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm0_n1_p8_ishres_dlores_spr(void) +static void lts_aga_fm0_dpf1_p8_ilores_dshres_spr(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8e(); + loaded_pix = getbpl8(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl8o(); + loaded_pix = getbpl8(); + } + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8(); + } + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl8(); + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + uae_u8 val1 = dpf_lookup[pix1]; + if (dpf_lookup_no[pix1]) { + val1 += dblpfofs[bpldualpf2of]; + } + val1 ^= bplcon4_denise_xor_val; + dpix_val1 = denise_colors.acolors[val1]; + } + last_bpl_pix = pix1; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8e(); + loaded_pix = getbpl8(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl8o(); + loaded_pix = getbpl8(); + } + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8(); + } + if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl8(); + } + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } + } + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8e(); + loaded_pix = getbpl8(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl8o(); + loaded_pix = getbpl8(); + } + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8(); + } + if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl8(); + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + uae_u8 val3 = dpf_lookup[pix3]; + if (dpf_lookup_no[pix3]) { + val3 += dblpfofs[bpldualpf2of]; + } + val3 ^= bplcon4_denise_xor_val; + dpix_val3 = denise_colors.acolors[val3]; + } + last_bpl_pix = pix3; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8e(); + loaded_pix = getbpl8(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl8o(); + loaded_pix = getbpl8(); + } + if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8(); + } + if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl8(); + } + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } + } + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 1; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } + dtbuf[h][1] = dpix_val1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + } + } + dtbuf[h][3] = dpix_val3; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm0_n1_p8_ishres_dlores_spr_filtered(void) +static void lts_aga_fm0_dpf1_p8_ilores_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm0_dpf0_p8_ishres_dlores_spr(void) +static void lts_aga_fm0_ehb0_p8_ilores_dshres_spr(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } + } + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } + } + internal_pixel_cnt += 1; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } + dtbuf[h][1] = dpix_val1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + } + } + dtbuf[h][3] = dpix_val3; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm0_dpf0_p8_ishres_dlores_spr_filtered(void) +static void lts_aga_fm0_ehb0_p8_ilores_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm0_dpf1_p8_ishres_dlores_spr(void) +static void lts_aga_fm0_ehb1_p8_ilores_dshres_spr(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } + } + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } + } + internal_pixel_cnt += 1; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } + dtbuf[h][1] = dpix_val1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + } + } + dtbuf[h][3] = dpix_val3; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm0_dpf1_p8_ishres_dlores_spr_filtered(void) +static void lts_aga_fm0_ehb1_p8_ilores_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm0_ehb0_p8_ishres_dlores_spr(void) +static void lts_aga_fm0_ham0_p8_ilores_dshres_spr(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = decode_ham_pixel_aga(pix0); + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8(); + loaded_pix = getbpl8(); + } + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8(); + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + dpix_val1 = decode_ham_pixel_aga(pix1); + } + last_bpl_pix = pix1; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8(); + loaded_pix = getbpl8(); + } + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8(); + } + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } + } + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = decode_ham_pixel_aga(pix2); + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8(); + loaded_pix = getbpl8(); + } + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8(); + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + dpix_val3 = decode_ham_pixel_aga(pix3); + } + last_bpl_pix = pix3; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8(); + loaded_pix = getbpl8(); + } + if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8(); + } + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } + } + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 1; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } + dtbuf[h][1] = dpix_val1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + } + } + dtbuf[h][3] = dpix_val3; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm0_ehb0_p8_ishres_dlores_spr_filtered(void) +static void lts_aga_fm0_ham0_p8_ilores_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm0_ehb1_p8_ishres_dlores_spr(void) +static void lts_aga_fm0_ham1_p8_ilores_dshres_spr(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = decode_ham_pixel_aga(pix0); + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8e(); + loaded_pix = getbpl8(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl8o(); + loaded_pix = getbpl8(); + } + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8(); + } + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl8(); + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + dpix_val1 = decode_ham_pixel_aga(pix1); + } + last_bpl_pix = pix1; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8e(); + loaded_pix = getbpl8(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl8o(); + loaded_pix = getbpl8(); + } + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8(); + } + if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl8(); + } + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } + } + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = decode_ham_pixel_aga(pix2); + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8e(); + loaded_pix = getbpl8(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl8o(); + loaded_pix = getbpl8(); + } + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8(); + } + if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl8(); + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + dpix_val3 = decode_ham_pixel_aga(pix3); + } + last_bpl_pix = pix3; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8e(); + loaded_pix = getbpl8(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl8o(); + loaded_pix = getbpl8(); + } + if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8(); + } + if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl8(); + } + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } + } + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 1; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } + dtbuf[h][1] = dpix_val1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + } + } + dtbuf[h][3] = dpix_val3; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm0_ehb1_p8_ishres_dlores_spr_filtered(void) +static void lts_aga_fm0_ham1_p8_ilores_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm0_ham0_p8_ishres_dlores_spr(void) +static void lts_aga_fm0_kehb0_p8_ilores_dshres_spr(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } + } + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } + } + internal_pixel_cnt += 1; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } + dtbuf[h][1] = dpix_val1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + } + } + dtbuf[h][3] = dpix_val3; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm0_ham0_p8_ishres_dlores_spr_filtered(void) +static void lts_aga_fm0_kehb0_p8_ilores_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm0_ham1_p8_ishres_dlores_spr(void) +static void lts_aga_fm0_kehb1_p8_ilores_dshres_spr(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } + } + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } + } + internal_pixel_cnt += 1; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } + dtbuf[h][1] = dpix_val1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + } + } + dtbuf[h][3] = dpix_val3; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm0_ham1_p8_ishres_dlores_spr_filtered(void) +static void lts_aga_fm0_kehb1_p8_ilores_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm0_kehb0_p8_ishres_dlores_spr(void) +static void lts_aga_fm0_n0_p2_ihires_dshres(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl2(); + loaded_pix = getbpl2(); + } + if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { + copybpl2(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl2(); + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix1; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl2(); + loaded_pix = getbpl2(); + } + if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { + copybpl2(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl2(); + } + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 1; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl2(); + loaded_pix = getbpl2(); + } + if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { + copybpl2(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl2(); + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix3; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl2(); + loaded_pix = getbpl2(); + } + if (bpldat_copy[0] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[0]) { + copybpl2(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl2(); + } + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 1; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; + dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm0_kehb0_p8_ishres_dlores_spr_filtered(void) +static void lts_aga_fm0_n0_p2_ihires_dshres_filtered(void) { lts_null(); } -static void lts_aga_fm0_kehb1_p8_ishres_dlores_spr(void) +static void lts_aga_fm0_n1_p2_ihires_dshres(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl2e(); + loaded_pix = getbpl2(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl2o(); + loaded_pix = getbpl2(); + } + if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { + copybpl2e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl2(); + } + if (bpldat_copy[1] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[1]) { + copybpl2o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl2(); + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix1; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl2e(); + loaded_pix = getbpl2(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl2o(); + loaded_pix = getbpl2(); + } + if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { + copybpl2e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl2(); + } + if (bpldat_copy[1] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[1]) { + copybpl2o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl2(); + } + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 1; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl2e(); + loaded_pix = getbpl2(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl2o(); + loaded_pix = getbpl2(); + } + if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { + copybpl2e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl2(); + } + if (bpldat_copy[1] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[1]) { + copybpl2o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl2(); + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix3; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl2e(); + loaded_pix = getbpl2(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl2o(); + loaded_pix = getbpl2(); + } + if (bpldat_copy[0] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[0]) { + copybpl2e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl2(); + } + if (bpldat_copy[1] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[1]) { + copybpl2o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl2(); + } + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 1; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; + dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm0_kehb1_p8_ishres_dlores_spr_filtered(void) +static void lts_aga_fm0_n1_p2_ihires_dshres_filtered(void) { lts_null(); } -static void lts_aga_fm0_n0_p2_ilores_dhires(void) +static void lts_aga_fm0_dpf0_p2_ihires_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -8028,7 +64634,12 @@ static void lts_aga_fm0_n0_p2_ilores_dhires(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; } last_bpl_pix = pix0; } @@ -8038,13 +64649,42 @@ static void lts_aga_fm0_n0_p2_ilores_dhires(void) shiftbpl2(); loaded_pix = getbpl2(); } - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { copybpl2(); bplshiftcnt[0] = 0; loaded_pix = getbpl2(); } loaded_pixs[0] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + uae_u8 val1 = dpf_lookup[pix1]; + if (dpf_lookup_no[pix1]) { + val1 += dblpfofs[bpldualpf2of]; + } + val1 ^= bplcon4_denise_xor_val; + dpix_val1 = denise_colors.acolors[val1]; + } + last_bpl_pix = pix1; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl2(); + loaded_pix = getbpl2(); + } + if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { + copybpl2(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl2(); + } + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { @@ -8052,9 +64692,43 @@ static void lts_aga_fm0_n0_p2_ilores_dhires(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl2(); + loaded_pix = getbpl2(); + } + if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { + copybpl2(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl2(); + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + uae_u8 val3 = dpf_lookup[pix3]; + if (dpf_lookup_no[pix3]) { + val3 += dblpfofs[bpldualpf2of]; + } + val3 ^= bplcon4_denise_xor_val; + dpix_val3 = denise_colors.acolors[val3]; } - last_bpl_pix = pix2; + last_bpl_pix = pix3; } bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { @@ -8062,16 +64736,18 @@ static void lts_aga_fm0_n0_p2_ilores_dhires(void) shiftbpl2(); loaded_pix = getbpl2(); } - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + if (bpldat_copy[0] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[0]) { copybpl2(); bplshiftcnt[0] = 0; loaded_pix = getbpl2(); } - loaded_pixs[2] = loaded_pix; - internal_pixel_cnt += 2; + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -8080,6 +64756,14 @@ static void lts_aga_fm0_n0_p2_ilores_dhires(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -8088,6 +64772,14 @@ static void lts_aga_fm0_n0_p2_ilores_dhires(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -8111,11 +64803,11 @@ static void lts_aga_fm0_n0_p2_ilores_dhires(void) denise_cck++; } } -static void lts_aga_fm0_n0_p2_ilores_dhires_filtered(void) +static void lts_aga_fm0_dpf0_p2_ihires_dshres_filtered(void) { lts_null(); } -static void lts_aga_fm0_n1_p2_ilores_dhires(void) +static void lts_aga_fm0_dpf1_p2_ihires_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -8135,7 +64827,12 @@ static void lts_aga_fm0_n1_p2_ilores_dhires(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; } last_bpl_pix = pix0; } @@ -8151,18 +64848,58 @@ static void lts_aga_fm0_n1_p2_ilores_dhires(void) shiftbpl2o(); loaded_pix = getbpl2(); } - if (bpldat_copy[0] && ((cmp | 0) & 63) == 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] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + if (bpldat_copy[1] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[1]) { copybpl2o(); bplshiftcnt[1] = 0; loaded_pix = getbpl2(); } loaded_pixs[0] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + uae_u8 val1 = dpf_lookup[pix1]; + if (dpf_lookup_no[pix1]) { + val1 += dblpfofs[bpldualpf2of]; + } + val1 ^= bplcon4_denise_xor_val; + dpix_val1 = denise_colors.acolors[val1]; + } + last_bpl_pix = pix1; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl2e(); + loaded_pix = getbpl2(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl2o(); + loaded_pix = getbpl2(); + } + if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { + copybpl2e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl2(); + } + if (bpldat_copy[1] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[1]) { + copybpl2o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl2(); + } + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { @@ -8170,7 +64907,12 @@ static void lts_aga_fm0_n1_p2_ilores_dhires(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; } last_bpl_pix = pix2; } @@ -8186,21 +64928,63 @@ static void lts_aga_fm0_n1_p2_ilores_dhires(void) shiftbpl2o(); loaded_pix = getbpl2(); } - if (bpldat_copy[0] && ((cmp | 2) & 63) == 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] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { + if (bpldat_copy[1] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[1]) { copybpl2o(); bplshiftcnt[1] = 0; loaded_pix = getbpl2(); } loaded_pixs[2] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + uae_u8 val3 = dpf_lookup[pix3]; + if (dpf_lookup_no[pix3]) { + val3 += dblpfofs[bpldualpf2of]; + } + val3 ^= bplcon4_denise_xor_val; + dpix_val3 = denise_colors.acolors[val3]; + } + last_bpl_pix = pix3; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl2e(); + loaded_pix = getbpl2(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl2o(); + loaded_pix = getbpl2(); + } + if (bpldat_copy[0] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[0]) { + copybpl2e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl2(); + } + if (bpldat_copy[1] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[1]) { + copybpl2o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl2(); + } + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -8209,6 +64993,14 @@ static void lts_aga_fm0_n1_p2_ilores_dhires(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -8217,6 +65009,14 @@ static void lts_aga_fm0_n1_p2_ilores_dhires(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -8240,11 +65040,11 @@ static void lts_aga_fm0_n1_p2_ilores_dhires(void) denise_cck++; } } -static void lts_aga_fm0_n1_p2_ilores_dhires_filtered(void) +static void lts_aga_fm0_dpf1_p2_ihires_dshres_filtered(void) { lts_null(); } -static void lts_aga_fm0_dpf0_p2_ilores_dhires(void) +static void lts_aga_fm0_ehb0_p2_ihires_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -8255,69 +65055,36 @@ 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; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl2(); - loaded_pix = getbpl2(); } - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl2(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl2(); + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; } - loaded_pixs[0] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl2(); - loaded_pix = getbpl2(); } - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl2(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl2(); + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; } - loaded_pixs[2] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -8326,6 +65093,14 @@ static void lts_aga_fm0_dpf0_p2_ilores_dhires(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -8334,6 +65109,14 @@ static void lts_aga_fm0_dpf0_p2_ilores_dhires(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -8357,11 +65140,11 @@ static void lts_aga_fm0_dpf0_p2_ilores_dhires(void) denise_cck++; } } -static void lts_aga_fm0_dpf0_p2_ilores_dhires_filtered(void) +static void lts_aga_fm0_ehb0_p2_ihires_dshres_filtered(void) { lts_null(); } -static void lts_aga_fm0_dpf1_p2_ilores_dhires(void) +static void lts_aga_fm0_ehb1_p2_ihires_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -8372,91 +65155,36 @@ 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; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl2e(); - loaded_pix = getbpl2(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl2o(); - loaded_pix = getbpl2(); - } - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl2e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl2(); } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl2o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl2(); + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; } - loaded_pixs[0] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl2e(); - loaded_pix = getbpl2(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl2o(); - loaded_pix = getbpl2(); - } - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl2e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl2(); } - if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { - copybpl2o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl2(); + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; } - loaded_pixs[2] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -8465,6 +65193,14 @@ static void lts_aga_fm0_dpf1_p2_ilores_dhires(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -8473,6 +65209,14 @@ static void lts_aga_fm0_dpf1_p2_ilores_dhires(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -8496,59 +65240,11 @@ static void lts_aga_fm0_dpf1_p2_ilores_dhires(void) denise_cck++; } } -static void lts_aga_fm0_dpf1_p2_ilores_dhires_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb0_p2_ilores_dhires(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb0_p2_ilores_dhires_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb1_p2_ilores_dhires(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb1_p2_ilores_dhires_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham0_p2_ilores_dhires(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham0_p2_ilores_dhires_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham1_p2_ilores_dhires(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham1_p2_ilores_dhires_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb0_p2_ilores_dhires(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb0_p2_ilores_dhires_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb1_p2_ilores_dhires(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb1_p2_ilores_dhires_filtered(void) +static void lts_aga_fm0_ehb1_p2_ihires_dshres_filtered(void) { lts_null(); } -static void lts_aga_fm0_n0_p4_ilores_dhires(void) +static void lts_aga_fm0_ham0_p2_ihires_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -8559,59 +65255,36 @@ 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; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4(); - loaded_pix = getbpl4(); } - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4(); + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; } - loaded_pixs[0] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4(); - loaded_pix = getbpl4(); } - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4(); + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; } - loaded_pixs[2] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -8620,6 +65293,14 @@ static void lts_aga_fm0_n0_p4_ilores_dhires(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -8628,6 +65309,14 @@ static void lts_aga_fm0_n0_p4_ilores_dhires(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -8651,11 +65340,11 @@ static void lts_aga_fm0_n0_p4_ilores_dhires(void) denise_cck++; } } -static void lts_aga_fm0_n0_p4_ilores_dhires_filtered(void) +static void lts_aga_fm0_ham0_p2_ihires_dshres_filtered(void) { lts_null(); } -static void lts_aga_fm0_n1_p4_ilores_dhires(void) +static void lts_aga_fm0_ham1_p2_ihires_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -8666,81 +65355,36 @@ 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; - if (!denise_blank_active) { - dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4e(); - loaded_pix = getbpl4(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl4o(); - loaded_pix = getbpl4(); - } - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4(); - } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl4o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl4(); - } - loaded_pixs[0] = loaded_pix; - internal_pixel_cnt += 2; - uae_u8 pix2 = 0; - uae_u32 dpix_val2 = BLANK_COLOR; - if (!denise_blank_active) { - dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4e(); - loaded_pix = getbpl4(); + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl4o(); - loaded_pix = getbpl4(); + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; } - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4(); + internal_pixel_cnt += 1; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; } - if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { - copybpl4o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl4(); + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; } - loaded_pixs[2] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -8749,6 +65393,14 @@ static void lts_aga_fm0_n1_p4_ilores_dhires(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -8757,6 +65409,14 @@ static void lts_aga_fm0_n1_p4_ilores_dhires(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -8780,11 +65440,11 @@ static void lts_aga_fm0_n1_p4_ilores_dhires(void) denise_cck++; } } -static void lts_aga_fm0_n1_p4_ilores_dhires_filtered(void) +static void lts_aga_fm0_ham1_p2_ihires_dshres_filtered(void) { lts_null(); } -static void lts_aga_fm0_dpf0_p4_ilores_dhires(void) +static void lts_aga_fm0_kehb0_p2_ihires_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -8795,69 +65455,36 @@ 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; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4(); - loaded_pix = getbpl4(); } - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4(); + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; } - loaded_pixs[0] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4(); - loaded_pix = getbpl4(); } - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4(); + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; } - loaded_pixs[2] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -8866,6 +65493,14 @@ static void lts_aga_fm0_dpf0_p4_ilores_dhires(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -8874,6 +65509,14 @@ static void lts_aga_fm0_dpf0_p4_ilores_dhires(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -8897,11 +65540,11 @@ static void lts_aga_fm0_dpf0_p4_ilores_dhires(void) denise_cck++; } } -static void lts_aga_fm0_dpf0_p4_ilores_dhires_filtered(void) +static void lts_aga_fm0_kehb0_p2_ihires_dshres_filtered(void) { lts_null(); } -static void lts_aga_fm0_dpf1_p4_ilores_dhires(void) +static void lts_aga_fm0_kehb1_p2_ihires_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -8912,91 +65555,36 @@ 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; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4e(); - loaded_pix = getbpl4(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl4o(); - loaded_pix = getbpl4(); - } - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4(); } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl4o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl4(); + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; } - loaded_pixs[0] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4e(); - loaded_pix = getbpl4(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl4o(); - loaded_pix = getbpl4(); - } - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4(); } - if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { - copybpl4o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl4(); + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; } - loaded_pixs[2] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -9005,6 +65593,14 @@ static void lts_aga_fm0_dpf1_p4_ilores_dhires(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -9013,6 +65609,14 @@ static void lts_aga_fm0_dpf1_p4_ilores_dhires(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -9036,59 +65640,11 @@ static void lts_aga_fm0_dpf1_p4_ilores_dhires(void) denise_cck++; } } -static void lts_aga_fm0_dpf1_p4_ilores_dhires_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb0_p4_ilores_dhires(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb0_p4_ilores_dhires_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb1_p4_ilores_dhires(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb1_p4_ilores_dhires_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham0_p4_ilores_dhires(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham0_p4_ilores_dhires_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham1_p4_ilores_dhires(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham1_p4_ilores_dhires_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb0_p4_ilores_dhires(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb0_p4_ilores_dhires_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb1_p4_ilores_dhires(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb1_p4_ilores_dhires_filtered(void) +static void lts_aga_fm0_kehb1_p2_ihires_dshres_filtered(void) { lts_null(); } -static void lts_aga_fm0_n0_p6_ilores_dhires(void) +static void lts_aga_fm0_n0_p4_ihires_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -9115,16 +65671,40 @@ static void lts_aga_fm0_n0_p6_ilores_dhires(void) bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl6(); - loaded_pix = getbpl6(); + shiftbpl4(); + loaded_pix = getbpl4(); } - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6(); + if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4(); bplshiftcnt[0] = 0; - loaded_pix = getbpl6(); + loaded_pix = getbpl4(); } loaded_pixs[0] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix1; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4(); + loaded_pix = getbpl4(); + } + if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4(); + } + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { @@ -9139,19 +65719,45 @@ static void lts_aga_fm0_n0_p6_ilores_dhires(void) bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl6(); - loaded_pix = getbpl6(); + shiftbpl4(); + loaded_pix = getbpl4(); } - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6(); + if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4(); bplshiftcnt[0] = 0; - loaded_pix = getbpl6(); + loaded_pix = getbpl4(); } loaded_pixs[2] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix3; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4(); + loaded_pix = getbpl4(); + } + if (bpldat_copy[0] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4(); + } + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -9160,6 +65766,14 @@ static void lts_aga_fm0_n0_p6_ilores_dhires(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -9168,6 +65782,14 @@ static void lts_aga_fm0_n0_p6_ilores_dhires(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -9191,11 +65813,11 @@ static void lts_aga_fm0_n0_p6_ilores_dhires(void) denise_cck++; } } -static void lts_aga_fm0_n0_p6_ilores_dhires_filtered(void) +static void lts_aga_fm0_n0_p4_ihires_dshres_filtered(void) { lts_null(); } -static void lts_aga_fm0_n1_p6_ilores_dhires(void) +static void lts_aga_fm0_n1_p4_ihires_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -9222,27 +65844,62 @@ static void lts_aga_fm0_n1_p6_ilores_dhires(void) bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl6e(); - loaded_pix = getbpl6(); + shiftbpl4e(); + loaded_pix = getbpl4(); } bplshiftcnt[1] += 2; if (bplshiftcnt[1] >= 4) { bplshiftcnt[1] = 0; - shiftbpl6o(); - loaded_pix = getbpl6(); + shiftbpl4o(); + loaded_pix = getbpl4(); } - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6e(); + if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4e(); bplshiftcnt[0] = 0; - loaded_pix = getbpl6(); + loaded_pix = getbpl4(); } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl6o(); + if (bpldat_copy[1] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[1]) { + copybpl4o(); bplshiftcnt[1] = 0; - loaded_pix = getbpl6(); + loaded_pix = getbpl4(); } loaded_pixs[0] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix1; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4e(); + loaded_pix = getbpl4(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl4o(); + loaded_pix = getbpl4(); + } + if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4(); + } + if (bpldat_copy[1] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[1]) { + copybpl4o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl4(); + } + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { @@ -9257,30 +65914,67 @@ static void lts_aga_fm0_n1_p6_ilores_dhires(void) bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl6e(); - loaded_pix = getbpl6(); + shiftbpl4e(); + loaded_pix = getbpl4(); } bplshiftcnt[1] += 2; if (bplshiftcnt[1] >= 4) { bplshiftcnt[1] = 0; - shiftbpl6o(); - loaded_pix = getbpl6(); + shiftbpl4o(); + loaded_pix = getbpl4(); } - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6e(); + if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4e(); bplshiftcnt[0] = 0; - loaded_pix = getbpl6(); + loaded_pix = getbpl4(); } - if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { - copybpl6o(); + if (bpldat_copy[1] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[1]) { + copybpl4o(); bplshiftcnt[1] = 0; - loaded_pix = getbpl6(); + loaded_pix = getbpl4(); } loaded_pixs[2] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix3; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4e(); + loaded_pix = getbpl4(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl4o(); + loaded_pix = getbpl4(); + } + if (bpldat_copy[0] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4(); + } + if (bpldat_copy[1] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[1]) { + copybpl4o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl4(); + } + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -9289,6 +65983,14 @@ static void lts_aga_fm0_n1_p6_ilores_dhires(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -9297,6 +65999,14 @@ static void lts_aga_fm0_n1_p6_ilores_dhires(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -9320,11 +66030,11 @@ static void lts_aga_fm0_n1_p6_ilores_dhires(void) denise_cck++; } } -static void lts_aga_fm0_n1_p6_ilores_dhires_filtered(void) +static void lts_aga_fm0_n1_p4_ihires_dshres_filtered(void) { lts_null(); } -static void lts_aga_fm0_dpf0_p6_ilores_dhires(void) +static void lts_aga_fm0_dpf0_p4_ihires_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -9356,16 +66066,45 @@ static void lts_aga_fm0_dpf0_p6_ilores_dhires(void) bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl6(); - loaded_pix = getbpl6(); + shiftbpl4(); + loaded_pix = getbpl4(); } - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6(); + if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4(); bplshiftcnt[0] = 0; - loaded_pix = getbpl6(); + loaded_pix = getbpl4(); } loaded_pixs[0] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + uae_u8 val1 = dpf_lookup[pix1]; + if (dpf_lookup_no[pix1]) { + val1 += dblpfofs[bpldualpf2of]; + } + val1 ^= bplcon4_denise_xor_val; + dpix_val1 = denise_colors.acolors[val1]; + } + last_bpl_pix = pix1; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4(); + loaded_pix = getbpl4(); + } + if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4(); + } + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { @@ -9385,19 +66124,50 @@ static void lts_aga_fm0_dpf0_p6_ilores_dhires(void) bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl6(); - loaded_pix = getbpl6(); + shiftbpl4(); + loaded_pix = getbpl4(); } - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6(); + if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4(); bplshiftcnt[0] = 0; - loaded_pix = getbpl6(); + loaded_pix = getbpl4(); } loaded_pixs[2] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + uae_u8 val3 = dpf_lookup[pix3]; + if (dpf_lookup_no[pix3]) { + val3 += dblpfofs[bpldualpf2of]; + } + val3 ^= bplcon4_denise_xor_val; + dpix_val3 = denise_colors.acolors[val3]; + } + last_bpl_pix = pix3; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4(); + loaded_pix = getbpl4(); + } + if (bpldat_copy[0] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4(); + } + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -9406,6 +66176,14 @@ static void lts_aga_fm0_dpf0_p6_ilores_dhires(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -9414,6 +66192,14 @@ static void lts_aga_fm0_dpf0_p6_ilores_dhires(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -9437,11 +66223,11 @@ static void lts_aga_fm0_dpf0_p6_ilores_dhires(void) denise_cck++; } } -static void lts_aga_fm0_dpf0_p6_ilores_dhires_filtered(void) +static void lts_aga_fm0_dpf0_p4_ihires_dshres_filtered(void) { lts_null(); } -static void lts_aga_fm0_dpf1_p6_ilores_dhires(void) +static void lts_aga_fm0_dpf1_p4_ihires_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -9473,27 +66259,67 @@ static void lts_aga_fm0_dpf1_p6_ilores_dhires(void) bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl6e(); - loaded_pix = getbpl6(); + shiftbpl4e(); + loaded_pix = getbpl4(); } bplshiftcnt[1] += 2; if (bplshiftcnt[1] >= 4) { bplshiftcnt[1] = 0; - shiftbpl6o(); - loaded_pix = getbpl6(); + shiftbpl4o(); + loaded_pix = getbpl4(); } - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6e(); + if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4e(); bplshiftcnt[0] = 0; - loaded_pix = getbpl6(); + loaded_pix = getbpl4(); } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl6o(); + if (bpldat_copy[1] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[1]) { + copybpl4o(); bplshiftcnt[1] = 0; - loaded_pix = getbpl6(); + loaded_pix = getbpl4(); } loaded_pixs[0] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + uae_u8 val1 = dpf_lookup[pix1]; + if (dpf_lookup_no[pix1]) { + val1 += dblpfofs[bpldualpf2of]; + } + val1 ^= bplcon4_denise_xor_val; + dpix_val1 = denise_colors.acolors[val1]; + } + last_bpl_pix = pix1; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4e(); + loaded_pix = getbpl4(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl4o(); + loaded_pix = getbpl4(); + } + if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4(); + } + if (bpldat_copy[1] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[1]) { + copybpl4o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl4(); + } + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { @@ -9513,149 +66339,72 @@ static void lts_aga_fm0_dpf1_p6_ilores_dhires(void) bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl6e(); - loaded_pix = getbpl6(); + shiftbpl4e(); + loaded_pix = getbpl4(); } bplshiftcnt[1] += 2; if (bplshiftcnt[1] >= 4) { bplshiftcnt[1] = 0; - shiftbpl6o(); - loaded_pix = getbpl6(); + shiftbpl4o(); + loaded_pix = getbpl4(); } - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6e(); + if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4e(); bplshiftcnt[0] = 0; - loaded_pix = getbpl6(); + loaded_pix = getbpl4(); } - if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { - copybpl6o(); + if (bpldat_copy[1] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[1]) { + copybpl4o(); bplshiftcnt[1] = 0; - loaded_pix = getbpl6(); + loaded_pix = getbpl4(); } loaded_pixs[2] = loaded_pix; - internal_pixel_cnt += 2; - if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - dtbuf[h][0] = dpix_val0; - dtbuf[h][2] = dpix_val2; - uae_u32 t0 = dtbuf[h ^ lol][0]; - #ifdef DEBUGGER - if (decode_specials_debug) { - t0 = decode_denise_specials_debug(t0, cnt + 0); - } - #endif - *buf1++ = t0; - *buf2++ = t0; - uae_u32 t2 = dtbuf[h ^ lol][2]; - #ifdef DEBUGGER - if (decode_specials_debug) { - t2 = decode_denise_specials_debug(t2, cnt + 2); - } - #endif - *buf1++ = t2; - *buf2++ = t2; - } - sprites_hidden = sprites_hidden2; - #ifdef DEBUGGER - *debug_dma_dhpos_odd = denise_hcounter; - #endif - denise_hcounter_cmp++; - denise_hcounter_cmp &= 511; - denise_hcounter++; - denise_hcounter &= 511; - denise_hcounter_next++; - denise_hcounter_next &= 511; - } - denise_pixtotal++; - if (denise_pixtotal == 0) { - internal_pixel_start_cnt = internal_pixel_cnt; - } - denise_hcounter = denise_hcounter_new; - if (denise_accurate_mode) { - denise_hcounter_cmp = denise_hcounter_new; - } - denise_cck++; - } -} -static void lts_aga_fm0_dpf1_p6_ilores_dhires_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb0_p6_ilores_dhires(void) -{ - while (denise_cck < denise_endcycle) { - do_denise_cck(denise_linecnt, denise_startpos, denise_cck); - if (lts_changed) return; - for (int h = 0; h < 2; h++) { - if (h) { - denise_hcounter_next = denise_hcounter_new; - } - int cnt = denise_hcounter << 2; - int cnt_next = denise_hcounter_next << 2; - int cmp = denise_hcounter_cmp << 2; - if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; - uae_u8 pix0 = 0; - uae_u32 dpix_val0 = BLANK_COLOR; + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { - dpix_val0 = bordercolor; + dpix_val3 = bordercolor; if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - pix0 ^= bplcon4_denise_xor_val; - if (!(pix0 & 0x20)) { - dpix_val0 = denise_colors.acolors[pix0]; - } else { - uae_u32 v = (denise_colors.color_regs_aga[pix0 & 0x1f] >> 1) & 0x7f7f7f; - dpix_val0 = CONVERT_RGB(v); + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + uae_u8 val3 = dpf_lookup[pix3]; + if (dpf_lookup_no[pix3]) { + val3 += dblpfofs[bpldualpf2of]; } + val3 ^= bplcon4_denise_xor_val; + dpix_val3 = denise_colors.acolors[val3]; } - last_bpl_pix = pix0; + last_bpl_pix = pix3; } bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl6(); - loaded_pix = getbpl6(); - } - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6(); + shiftbpl4e(); + loaded_pix = getbpl4(); } - loaded_pixs[0] = loaded_pix; - internal_pixel_cnt += 2; - uae_u8 pix2 = 0; - uae_u32 dpix_val2 = BLANK_COLOR; - if (!denise_blank_active) { - dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - pix2 ^= bplcon4_denise_xor_val; - if (!(pix2 & 0x20)) { - dpix_val2 = denise_colors.acolors[pix2]; - } else { - uae_u32 v = (denise_colors.color_regs_aga[pix2 & 0x1f] >> 1) & 0x7f7f7f; - dpix_val2 = CONVERT_RGB(v); - } - } - last_bpl_pix = pix2; + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl4o(); + loaded_pix = getbpl4(); } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { + if (bpldat_copy[0] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4e(); bplshiftcnt[0] = 0; - shiftbpl6(); - loaded_pix = getbpl6(); + loaded_pix = getbpl4(); } - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6(); + if (bpldat_copy[1] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[1]) { + copybpl4o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl4(); } - loaded_pixs[2] = loaded_pix; - internal_pixel_cnt += 2; + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -9664,6 +66413,14 @@ static void lts_aga_fm0_ehb0_p6_ilores_dhires(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -9672,6 +66429,14 @@ static void lts_aga_fm0_ehb0_p6_ilores_dhires(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -9695,11 +66460,11 @@ static void lts_aga_fm0_ehb0_p6_ilores_dhires(void) denise_cck++; } } -static void lts_aga_fm0_ehb0_p6_ilores_dhires_filtered(void) +static void lts_aga_fm0_dpf1_p4_ihires_dshres_filtered(void) { lts_null(); } -static void lts_aga_fm0_ehb1_p6_ilores_dhires(void) +static void lts_aga_fm0_ehb0_p4_ihires_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -9710,93 +66475,36 @@ 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; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - pix0 ^= bplcon4_denise_xor_val; - if (!(pix0 & 0x20)) { - dpix_val0 = denise_colors.acolors[pix0]; - } else { - uae_u32 v = (denise_colors.color_regs_aga[pix0 & 0x1f] >> 1) & 0x7f7f7f; - dpix_val0 = CONVERT_RGB(v); - } - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6e(); - loaded_pix = getbpl6(); } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl6o(); - loaded_pix = getbpl6(); - } - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6(); - } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl6o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl6(); + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; } - loaded_pixs[0] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - pix2 ^= bplcon4_denise_xor_val; - if (!(pix2 & 0x20)) { - dpix_val2 = denise_colors.acolors[pix2]; - } else { - uae_u32 v = (denise_colors.color_regs_aga[pix2 & 0x1f] >> 1) & 0x7f7f7f; - dpix_val2 = CONVERT_RGB(v); - } - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6e(); - loaded_pix = getbpl6(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl6o(); - loaded_pix = getbpl6(); - } - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6(); } - if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { - copybpl6o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl6(); + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; } - loaded_pixs[2] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -9805,6 +66513,14 @@ static void lts_aga_fm0_ehb1_p6_ilores_dhires(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -9813,6 +66529,14 @@ static void lts_aga_fm0_ehb1_p6_ilores_dhires(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -9836,11 +66560,11 @@ static void lts_aga_fm0_ehb1_p6_ilores_dhires(void) denise_cck++; } } -static void lts_aga_fm0_ehb1_p6_ilores_dhires_filtered(void) +static void lts_aga_fm0_ehb0_p4_ihires_dshres_filtered(void) { lts_null(); } -static void lts_aga_fm0_ham0_p6_ilores_dhires(void) +static void lts_aga_fm0_ehb1_p4_ihires_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -9851,67 +66575,52 @@ 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; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = decode_ham_pixel_aga(pix0); - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6(); - loaded_pix = getbpl6(); } - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6(); + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; } - loaded_pixs[0] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = decode_ham_pixel_aga(pix2); - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6(); - loaded_pix = getbpl6(); } - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6(); + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; } - loaded_pixs[2] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { - t0 = decode_denise_specials_debug(t0, cnt + 0); + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); } #endif - *buf1++ = t0; - *buf2++ = t0; + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -9920,6 +66629,14 @@ static void lts_aga_fm0_ham0_p6_ilores_dhires(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -9943,11 +66660,11 @@ static void lts_aga_fm0_ham0_p6_ilores_dhires(void) denise_cck++; } } -static void lts_aga_fm0_ham0_p6_ilores_dhires_filtered(void) +static void lts_aga_fm0_ehb1_p4_ihires_dshres_filtered(void) { lts_null(); } -static void lts_aga_fm0_ham1_p6_ilores_dhires(void) +static void lts_aga_fm0_ham0_p4_ihires_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -9958,81 +66675,36 @@ 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; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = decode_ham_pixel_aga(pix0); - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6e(); - loaded_pix = getbpl6(); } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl6o(); - loaded_pix = getbpl6(); - } - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6(); - } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl6o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl6(); + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; } - loaded_pixs[0] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = decode_ham_pixel_aga(pix2); - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6e(); - loaded_pix = getbpl6(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl6o(); - loaded_pix = getbpl6(); - } - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6(); } - if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { - copybpl6o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl6(); + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; } - loaded_pixs[2] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -10041,6 +66713,14 @@ static void lts_aga_fm0_ham1_p6_ilores_dhires(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -10049,6 +66729,14 @@ static void lts_aga_fm0_ham1_p6_ilores_dhires(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -10072,11 +66760,11 @@ static void lts_aga_fm0_ham1_p6_ilores_dhires(void) denise_cck++; } } -static void lts_aga_fm0_ham1_p6_ilores_dhires_filtered(void) +static void lts_aga_fm0_ham0_p4_ihires_dshres_filtered(void) { lts_null(); } -static void lts_aga_fm0_kehb0_p6_ilores_dhires(void) +static void lts_aga_fm0_ham1_p4_ihires_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -10087,61 +66775,36 @@ 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; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - pix0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[pix0 & 31]; - } - last_bpl_pix = pix0; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6(); - loaded_pix = getbpl6(); - } - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6(); + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; } - loaded_pixs[0] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - pix2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[pix2 & 31]; - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6(); - loaded_pix = getbpl6(); } - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6(); + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; } - loaded_pixs[2] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -10150,6 +66813,14 @@ static void lts_aga_fm0_kehb0_p6_ilores_dhires(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -10158,6 +66829,14 @@ static void lts_aga_fm0_kehb0_p6_ilores_dhires(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -10181,11 +66860,11 @@ static void lts_aga_fm0_kehb0_p6_ilores_dhires(void) denise_cck++; } } -static void lts_aga_fm0_kehb0_p6_ilores_dhires_filtered(void) +static void lts_aga_fm0_ham1_p4_ihires_dshres_filtered(void) { lts_null(); } -static void lts_aga_fm0_kehb1_p6_ilores_dhires(void) +static void lts_aga_fm0_kehb0_p4_ihires_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -10196,83 +66875,36 @@ 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; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - pix0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[pix0 & 31]; - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6e(); - loaded_pix = getbpl6(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl6o(); - loaded_pix = getbpl6(); - } - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6(); } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl6o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl6(); + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; } - loaded_pixs[0] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - pix2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[pix2 & 31]; - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6e(); - loaded_pix = getbpl6(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl6o(); - loaded_pix = getbpl6(); - } - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6(); } - if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { - copybpl6o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl6(); + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; } - loaded_pixs[2] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -10281,6 +66913,14 @@ static void lts_aga_fm0_kehb1_p6_ilores_dhires(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -10289,6 +66929,14 @@ static void lts_aga_fm0_kehb1_p6_ilores_dhires(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -10312,11 +66960,11 @@ static void lts_aga_fm0_kehb1_p6_ilores_dhires(void) denise_cck++; } } -static void lts_aga_fm0_kehb1_p6_ilores_dhires_filtered(void) +static void lts_aga_fm0_kehb0_p4_ihires_dshres_filtered(void) { lts_null(); } -static void lts_aga_fm0_n0_p8_ilores_dhires(void) +static void lts_aga_fm0_kehb1_p4_ihires_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -10327,59 +66975,36 @@ 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; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8(); - loaded_pix = getbpl8(); } - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8(); + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; } - loaded_pixs[0] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8(); - loaded_pix = getbpl8(); } - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8(); + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; } - loaded_pixs[2] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -10388,6 +67013,14 @@ static void lts_aga_fm0_n0_p8_ilores_dhires(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -10396,6 +67029,14 @@ static void lts_aga_fm0_n0_p8_ilores_dhires(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -10419,11 +67060,11 @@ static void lts_aga_fm0_n0_p8_ilores_dhires(void) denise_cck++; } } -static void lts_aga_fm0_n0_p8_ilores_dhires_filtered(void) +static void lts_aga_fm0_kehb1_p4_ihires_dshres_filtered(void) { lts_null(); } -static void lts_aga_fm0_n1_p8_ilores_dhires(void) +static void lts_aga_fm0_n0_p6_ihires_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -10434,81 +67075,36 @@ 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; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8e(); - loaded_pix = getbpl8(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl8o(); - loaded_pix = getbpl8(); - } - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8(); } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl8(); + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; } - loaded_pixs[0] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8e(); - loaded_pix = getbpl8(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl8o(); - loaded_pix = getbpl8(); - } - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8(); } - if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl8(); + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; } - loaded_pixs[2] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -10517,6 +67113,14 @@ static void lts_aga_fm0_n1_p8_ilores_dhires(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -10525,6 +67129,14 @@ static void lts_aga_fm0_n1_p8_ilores_dhires(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -10548,11 +67160,11 @@ static void lts_aga_fm0_n1_p8_ilores_dhires(void) denise_cck++; } } -static void lts_aga_fm0_n1_p8_ilores_dhires_filtered(void) +static void lts_aga_fm0_n0_p6_ihires_dshres_filtered(void) { lts_null(); } -static void lts_aga_fm0_dpf0_p8_ilores_dhires(void) +static void lts_aga_fm0_n1_p6_ihires_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -10563,77 +67175,52 @@ 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; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8(); - loaded_pix = getbpl8(); - } - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8(); + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; } - loaded_pixs[0] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8(); - loaded_pix = getbpl8(); } - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8(); + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; } - loaded_pixs[2] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { t0 = decode_denise_specials_debug(t0, cnt + 0); } #endif - *buf1++ = t0; - *buf2++ = t0; + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -10642,6 +67229,14 @@ static void lts_aga_fm0_dpf0_p8_ilores_dhires(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -10665,11 +67260,11 @@ static void lts_aga_fm0_dpf0_p8_ilores_dhires(void) denise_cck++; } } -static void lts_aga_fm0_dpf0_p8_ilores_dhires_filtered(void) +static void lts_aga_fm0_n1_p6_ihires_dshres_filtered(void) { lts_null(); } -static void lts_aga_fm0_dpf1_p8_ilores_dhires(void) +static void lts_aga_fm0_dpf0_p6_ihires_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -10680,91 +67275,36 @@ 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; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8e(); - loaded_pix = getbpl8(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl8o(); - loaded_pix = getbpl8(); - } - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8(); } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl8(); + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; } - loaded_pixs[0] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8e(); - loaded_pix = getbpl8(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl8o(); - loaded_pix = getbpl8(); - } - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8(); } - if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl8(); + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; } - loaded_pixs[2] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -10773,6 +67313,14 @@ static void lts_aga_fm0_dpf1_p8_ilores_dhires(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -10781,6 +67329,14 @@ static void lts_aga_fm0_dpf1_p8_ilores_dhires(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -10804,27 +67360,11 @@ static void lts_aga_fm0_dpf1_p8_ilores_dhires(void) denise_cck++; } } -static void lts_aga_fm0_dpf1_p8_ilores_dhires_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb0_p8_ilores_dhires(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb0_p8_ilores_dhires_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb1_p8_ilores_dhires(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb1_p8_ilores_dhires_filtered(void) +static void lts_aga_fm0_dpf0_p6_ihires_dshres_filtered(void) { lts_null(); } -static void lts_aga_fm0_ham0_p8_ilores_dhires(void) +static void lts_aga_fm0_dpf1_p6_ihires_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -10835,59 +67375,36 @@ 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; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = decode_ham_pixel_aga(pix0); - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8(); - loaded_pix = getbpl8(); } - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8(); + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; } - loaded_pixs[0] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = decode_ham_pixel_aga(pix2); - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8(); - loaded_pix = getbpl8(); } - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8(); + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; } - loaded_pixs[2] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -10896,6 +67413,14 @@ static void lts_aga_fm0_ham0_p8_ilores_dhires(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -10904,6 +67429,14 @@ static void lts_aga_fm0_ham0_p8_ilores_dhires(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -10927,11 +67460,11 @@ static void lts_aga_fm0_ham0_p8_ilores_dhires(void) denise_cck++; } } -static void lts_aga_fm0_ham0_p8_ilores_dhires_filtered(void) +static void lts_aga_fm0_dpf1_p6_ihires_dshres_filtered(void) { lts_null(); } -static void lts_aga_fm0_ham1_p8_ilores_dhires(void) +static void lts_aga_fm0_ehb0_p6_ihires_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -10942,81 +67475,36 @@ 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; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = decode_ham_pixel_aga(pix0); - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8e(); - loaded_pix = getbpl8(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl8o(); - loaded_pix = getbpl8(); - } - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8(); } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl8(); + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; } - loaded_pixs[0] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = decode_ham_pixel_aga(pix2); - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8e(); - loaded_pix = getbpl8(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl8o(); - loaded_pix = getbpl8(); - } - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8(); } - if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl8(); + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; } - loaded_pixs[2] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -11025,6 +67513,14 @@ static void lts_aga_fm0_ham1_p8_ilores_dhires(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -11033,6 +67529,14 @@ static void lts_aga_fm0_ham1_p8_ilores_dhires(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -11056,27 +67560,11 @@ static void lts_aga_fm0_ham1_p8_ilores_dhires(void) denise_cck++; } } -static void lts_aga_fm0_ham1_p8_ilores_dhires_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb0_p8_ilores_dhires(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb0_p8_ilores_dhires_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb1_p8_ilores_dhires(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb1_p8_ilores_dhires_filtered(void) +static void lts_aga_fm0_ehb0_p6_ihires_dshres_filtered(void) { lts_null(); } -static void lts_aga_fm0_n0_p2_ilores_dhires_spr(void) +static void lts_aga_fm0_ehb1_p6_ihires_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -11087,89 +67575,36 @@ 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; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl2(); - loaded_pix = getbpl2(); - } - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl2(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl2(); } - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; } - loaded_pixs[0] = loaded_pix; - internal_pixel_cnt += 2; - matchsprites_aga(cnt + 2); + internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl2(); - loaded_pix = getbpl2(); - } - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl2(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl2(); } - uae_u32 sv2 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv2 = svt; - } + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; } - loaded_pixs[2] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - } - } dtbuf[h][0] = dpix_val0; - if (sv2) { - uae_u32 spix2 = denise_render_sprites2(pix2, sv2); - if (spix2) { - dpix_val2 = denise_colors.acolors[spix2]; - } - } + dtbuf[h][1] = dpix_val1; dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -11178,6 +67613,14 @@ static void lts_aga_fm0_n0_p2_ilores_dhires_spr(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -11186,6 +67629,14 @@ static void lts_aga_fm0_n0_p2_ilores_dhires_spr(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -11209,11 +67660,11 @@ static void lts_aga_fm0_n0_p2_ilores_dhires_spr(void) denise_cck++; } } -static void lts_aga_fm0_n0_p2_ilores_dhires_spr_filtered(void) +static void lts_aga_fm0_ehb1_p6_ihires_dshres_filtered(void) { lts_null(); } -static void lts_aga_fm0_n1_p2_ilores_dhires_spr(void) +static void lts_aga_fm0_ham0_p6_ihires_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -11224,111 +67675,36 @@ 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; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl2e(); - loaded_pix = getbpl2(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl2o(); - loaded_pix = getbpl2(); - } - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl2e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl2(); - } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl2o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl2(); } - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; } - loaded_pixs[0] = loaded_pix; - internal_pixel_cnt += 2; - matchsprites_aga(cnt + 2); + internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl2e(); - loaded_pix = getbpl2(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl2o(); - loaded_pix = getbpl2(); - } - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl2e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl2(); - } - if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { - copybpl2o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl2(); } - uae_u32 sv2 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv2 = svt; - } + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; } - loaded_pixs[2] = loaded_pix; - internal_pixel_cnt += 2; - if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - } - } + internal_pixel_cnt += 1; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; - if (sv2) { - uae_u32 spix2 = denise_render_sprites2(pix2, sv2); - if (spix2) { - dpix_val2 = denise_colors.acolors[spix2]; - } - } + dtbuf[h][1] = dpix_val1; dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -11337,6 +67713,14 @@ static void lts_aga_fm0_n1_p2_ilores_dhires_spr(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -11345,6 +67729,14 @@ static void lts_aga_fm0_n1_p2_ilores_dhires_spr(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -11368,11 +67760,11 @@ static void lts_aga_fm0_n1_p2_ilores_dhires_spr(void) denise_cck++; } } -static void lts_aga_fm0_n1_p2_ilores_dhires_spr_filtered(void) +static void lts_aga_fm0_ham0_p6_ihires_dshres_filtered(void) { lts_null(); } -static void lts_aga_fm0_dpf0_p2_ilores_dhires_spr(void) +static void lts_aga_fm0_ham1_p6_ihires_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -11383,99 +67775,36 @@ 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; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl2(); - loaded_pix = getbpl2(); - } - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl2(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl2(); } - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; } - loaded_pixs[0] = loaded_pix; - internal_pixel_cnt += 2; - matchsprites_aga(cnt + 2); + internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl2(); - loaded_pix = getbpl2(); - } - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl2(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl2(); } - uae_u32 sv2 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv2 = svt; - } + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; } - loaded_pixs[2] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - } - } dtbuf[h][0] = dpix_val0; - if (sv2) { - uae_u32 spix2 = denise_render_sprites2(pix2, sv2); - if (spix2) { - dpix_val2 = denise_colors.acolors[spix2]; - } - } + dtbuf[h][1] = dpix_val1; dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -11484,6 +67813,14 @@ static void lts_aga_fm0_dpf0_p2_ilores_dhires_spr(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -11492,6 +67829,14 @@ static void lts_aga_fm0_dpf0_p2_ilores_dhires_spr(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -11515,11 +67860,11 @@ static void lts_aga_fm0_dpf0_p2_ilores_dhires_spr(void) denise_cck++; } } -static void lts_aga_fm0_dpf0_p2_ilores_dhires_spr_filtered(void) +static void lts_aga_fm0_ham1_p6_ihires_dshres_filtered(void) { lts_null(); } -static void lts_aga_fm0_dpf1_p2_ilores_dhires_spr(void) +static void lts_aga_fm0_kehb0_p6_ihires_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -11530,121 +67875,36 @@ 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; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl2e(); - loaded_pix = getbpl2(); } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl2o(); - loaded_pix = getbpl2(); - } - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl2e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl2(); - } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl2o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl2(); - } - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; } - loaded_pixs[0] = loaded_pix; - internal_pixel_cnt += 2; - matchsprites_aga(cnt + 2); + internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl2e(); - loaded_pix = getbpl2(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl2o(); - loaded_pix = getbpl2(); - } - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl2e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl2(); - } - if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { - copybpl2o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl2(); } - uae_u32 sv2 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv2 = svt; - } + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; } - loaded_pixs[2] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - } - } dtbuf[h][0] = dpix_val0; - if (sv2) { - uae_u32 spix2 = denise_render_sprites2(pix2, sv2); - if (spix2) { - dpix_val2 = denise_colors.acolors[spix2]; - } - } + dtbuf[h][1] = dpix_val1; dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -11653,6 +67913,14 @@ static void lts_aga_fm0_dpf1_p2_ilores_dhires_spr(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -11661,6 +67929,14 @@ static void lts_aga_fm0_dpf1_p2_ilores_dhires_spr(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -11684,59 +67960,11 @@ static void lts_aga_fm0_dpf1_p2_ilores_dhires_spr(void) denise_cck++; } } -static void lts_aga_fm0_dpf1_p2_ilores_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb0_p2_ilores_dhires_spr(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb0_p2_ilores_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb1_p2_ilores_dhires_spr(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb1_p2_ilores_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham0_p2_ilores_dhires_spr(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham0_p2_ilores_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham1_p2_ilores_dhires_spr(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham1_p2_ilores_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb0_p2_ilores_dhires_spr(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb0_p2_ilores_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb1_p2_ilores_dhires_spr(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb1_p2_ilores_dhires_spr_filtered(void) +static void lts_aga_fm0_kehb0_p6_ihires_dshres_filtered(void) { lts_null(); } -static void lts_aga_fm0_n0_p4_ilores_dhires_spr(void) +static void lts_aga_fm0_kehb1_p6_ihires_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -11747,89 +67975,36 @@ 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; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4(); - loaded_pix = getbpl4(); } - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4(); - } - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; } - loaded_pixs[0] = loaded_pix; - internal_pixel_cnt += 2; - matchsprites_aga(cnt + 2); + internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4(); - loaded_pix = getbpl4(); - } - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4(); } - uae_u32 sv2 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv2 = svt; - } + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; } - loaded_pixs[2] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - } - } dtbuf[h][0] = dpix_val0; - if (sv2) { - uae_u32 spix2 = denise_render_sprites2(pix2, sv2); - if (spix2) { - dpix_val2 = denise_colors.acolors[spix2]; - } - } + dtbuf[h][1] = dpix_val1; dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -11838,6 +68013,14 @@ static void lts_aga_fm0_n0_p4_ilores_dhires_spr(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -11846,6 +68029,14 @@ static void lts_aga_fm0_n0_p4_ilores_dhires_spr(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -11869,11 +68060,11 @@ static void lts_aga_fm0_n0_p4_ilores_dhires_spr(void) denise_cck++; } } -static void lts_aga_fm0_n0_p4_ilores_dhires_spr_filtered(void) +static void lts_aga_fm0_kehb1_p6_ihires_dshres_filtered(void) { lts_null(); } -static void lts_aga_fm0_n1_p4_ilores_dhires_spr(void) +static void lts_aga_fm0_n0_p8_ihires_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -11884,111 +68075,36 @@ 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; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4e(); - loaded_pix = getbpl4(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl4o(); - loaded_pix = getbpl4(); - } - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4(); } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl4o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl4(); - } - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; } - loaded_pixs[0] = loaded_pix; - internal_pixel_cnt += 2; - matchsprites_aga(cnt + 2); + internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4e(); - loaded_pix = getbpl4(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl4o(); - loaded_pix = getbpl4(); - } - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4(); - } - if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { - copybpl4o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl4(); } - uae_u32 sv2 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv2 = svt; - } + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; } - loaded_pixs[2] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - } - } dtbuf[h][0] = dpix_val0; - if (sv2) { - uae_u32 spix2 = denise_render_sprites2(pix2, sv2); - if (spix2) { - dpix_val2 = denise_colors.acolors[spix2]; - } - } + dtbuf[h][1] = dpix_val1; dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -11997,6 +68113,14 @@ static void lts_aga_fm0_n1_p4_ilores_dhires_spr(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -12005,6 +68129,14 @@ static void lts_aga_fm0_n1_p4_ilores_dhires_spr(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -12028,11 +68160,11 @@ static void lts_aga_fm0_n1_p4_ilores_dhires_spr(void) denise_cck++; } } -static void lts_aga_fm0_n1_p4_ilores_dhires_spr_filtered(void) +static void lts_aga_fm0_n0_p8_ihires_dshres_filtered(void) { lts_null(); } -static void lts_aga_fm0_dpf0_p4_ilores_dhires_spr(void) +static void lts_aga_fm0_n1_p8_ihires_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -12043,99 +68175,36 @@ 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; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4(); - loaded_pix = getbpl4(); - } - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4(); } - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; } - loaded_pixs[0] = loaded_pix; - internal_pixel_cnt += 2; - matchsprites_aga(cnt + 2); + internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4(); - loaded_pix = getbpl4(); - } - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4(); } - uae_u32 sv2 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv2 = svt; - } + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; } - loaded_pixs[2] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - } - } dtbuf[h][0] = dpix_val0; - if (sv2) { - uae_u32 spix2 = denise_render_sprites2(pix2, sv2); - if (spix2) { - dpix_val2 = denise_colors.acolors[spix2]; - } - } + dtbuf[h][1] = dpix_val1; dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -12144,6 +68213,14 @@ static void lts_aga_fm0_dpf0_p4_ilores_dhires_spr(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -12152,6 +68229,14 @@ static void lts_aga_fm0_dpf0_p4_ilores_dhires_spr(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -12175,11 +68260,11 @@ static void lts_aga_fm0_dpf0_p4_ilores_dhires_spr(void) denise_cck++; } } -static void lts_aga_fm0_dpf0_p4_ilores_dhires_spr_filtered(void) +static void lts_aga_fm0_n1_p8_ihires_dshres_filtered(void) { lts_null(); } -static void lts_aga_fm0_dpf1_p4_ilores_dhires_spr(void) +static void lts_aga_fm0_dpf0_p8_ihires_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -12190,121 +68275,36 @@ 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; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4e(); - loaded_pix = getbpl4(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl4o(); - loaded_pix = getbpl4(); - } - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4(); - } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl4o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl4(); } - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; } - loaded_pixs[0] = loaded_pix; - internal_pixel_cnt += 2; - matchsprites_aga(cnt + 2); + internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4e(); - loaded_pix = getbpl4(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl4o(); - loaded_pix = getbpl4(); - } - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4(); } - if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { - copybpl4o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl4(); - } - uae_u32 sv2 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv2 = svt; - } + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; } - loaded_pixs[2] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - } - } dtbuf[h][0] = dpix_val0; - if (sv2) { - uae_u32 spix2 = denise_render_sprites2(pix2, sv2); - if (spix2) { - dpix_val2 = denise_colors.acolors[spix2]; - } - } + dtbuf[h][1] = dpix_val1; dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -12313,6 +68313,14 @@ static void lts_aga_fm0_dpf1_p4_ilores_dhires_spr(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -12321,6 +68329,14 @@ static void lts_aga_fm0_dpf1_p4_ilores_dhires_spr(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -12344,59 +68360,11 @@ static void lts_aga_fm0_dpf1_p4_ilores_dhires_spr(void) denise_cck++; } } -static void lts_aga_fm0_dpf1_p4_ilores_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb0_p4_ilores_dhires_spr(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb0_p4_ilores_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb1_p4_ilores_dhires_spr(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb1_p4_ilores_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham0_p4_ilores_dhires_spr(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham0_p4_ilores_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham1_p4_ilores_dhires_spr(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham1_p4_ilores_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb0_p4_ilores_dhires_spr(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb0_p4_ilores_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb1_p4_ilores_dhires_spr(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb1_p4_ilores_dhires_spr_filtered(void) +static void lts_aga_fm0_dpf0_p8_ihires_dshres_filtered(void) { lts_null(); } -static void lts_aga_fm0_n0_p6_ilores_dhires_spr(void) +static void lts_aga_fm0_dpf1_p8_ihires_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -12407,89 +68375,36 @@ 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; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6(); - loaded_pix = getbpl6(); - } - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6(); } - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; } - loaded_pixs[0] = loaded_pix; - internal_pixel_cnt += 2; - matchsprites_aga(cnt + 2); + internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6(); - loaded_pix = getbpl6(); - } - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6(); } - uae_u32 sv2 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv2 = svt; - } + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; } - loaded_pixs[2] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - } - } dtbuf[h][0] = dpix_val0; - if (sv2) { - uae_u32 spix2 = denise_render_sprites2(pix2, sv2); - if (spix2) { - dpix_val2 = denise_colors.acolors[spix2]; - } - } + dtbuf[h][1] = dpix_val1; dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -12498,6 +68413,14 @@ static void lts_aga_fm0_n0_p6_ilores_dhires_spr(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -12506,6 +68429,14 @@ static void lts_aga_fm0_n0_p6_ilores_dhires_spr(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -12529,11 +68460,11 @@ static void lts_aga_fm0_n0_p6_ilores_dhires_spr(void) denise_cck++; } } -static void lts_aga_fm0_n0_p6_ilores_dhires_spr_filtered(void) +static void lts_aga_fm0_dpf1_p8_ihires_dshres_filtered(void) { lts_null(); } -static void lts_aga_fm0_n1_p6_ilores_dhires_spr(void) +static void lts_aga_fm0_ehb0_p8_ihires_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -12544,111 +68475,36 @@ 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; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6e(); - loaded_pix = getbpl6(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl6o(); - loaded_pix = getbpl6(); - } - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6(); - } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl6o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl6(); } - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; } - loaded_pixs[0] = loaded_pix; - internal_pixel_cnt += 2; - matchsprites_aga(cnt + 2); + internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6e(); - loaded_pix = getbpl6(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl6o(); - loaded_pix = getbpl6(); - } - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6(); } - if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { - copybpl6o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl6(); - } - uae_u32 sv2 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv2 = svt; - } + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; } - loaded_pixs[2] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - } - } dtbuf[h][0] = dpix_val0; - if (sv2) { - uae_u32 spix2 = denise_render_sprites2(pix2, sv2); - if (spix2) { - dpix_val2 = denise_colors.acolors[spix2]; - } - } + dtbuf[h][1] = dpix_val1; dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -12657,6 +68513,14 @@ static void lts_aga_fm0_n1_p6_ilores_dhires_spr(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -12665,6 +68529,14 @@ static void lts_aga_fm0_n1_p6_ilores_dhires_spr(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -12688,11 +68560,11 @@ static void lts_aga_fm0_n1_p6_ilores_dhires_spr(void) denise_cck++; } } -static void lts_aga_fm0_n1_p6_ilores_dhires_spr_filtered(void) +static void lts_aga_fm0_ehb0_p8_ihires_dshres_filtered(void) { lts_null(); } -static void lts_aga_fm0_dpf0_p6_ilores_dhires_spr(void) +static void lts_aga_fm0_ehb1_p8_ihires_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -12703,99 +68575,36 @@ 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; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6(); - loaded_pix = getbpl6(); - } - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6(); } - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; } - loaded_pixs[0] = loaded_pix; - internal_pixel_cnt += 2; - matchsprites_aga(cnt + 2); + internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6(); - loaded_pix = getbpl6(); - } - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6(); } - uae_u32 sv2 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv2 = svt; - } + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; } - loaded_pixs[2] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - } - } dtbuf[h][0] = dpix_val0; - if (sv2) { - uae_u32 spix2 = denise_render_sprites2(pix2, sv2); - if (spix2) { - dpix_val2 = denise_colors.acolors[spix2]; - } - } + dtbuf[h][1] = dpix_val1; dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -12804,6 +68613,14 @@ static void lts_aga_fm0_dpf0_p6_ilores_dhires_spr(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -12812,6 +68629,14 @@ static void lts_aga_fm0_dpf0_p6_ilores_dhires_spr(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -12835,11 +68660,11 @@ static void lts_aga_fm0_dpf0_p6_ilores_dhires_spr(void) denise_cck++; } } -static void lts_aga_fm0_dpf0_p6_ilores_dhires_spr_filtered(void) +static void lts_aga_fm0_ehb1_p8_ihires_dshres_filtered(void) { lts_null(); } -static void lts_aga_fm0_dpf1_p6_ilores_dhires_spr(void) +static void lts_aga_fm0_ham0_p8_ihires_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -12850,121 +68675,36 @@ 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; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6e(); - loaded_pix = getbpl6(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl6o(); - loaded_pix = getbpl6(); - } - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6(); - } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl6o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl6(); } - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; } - loaded_pixs[0] = loaded_pix; - internal_pixel_cnt += 2; - matchsprites_aga(cnt + 2); + internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6e(); - loaded_pix = getbpl6(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl6o(); - loaded_pix = getbpl6(); - } - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6(); - } - if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { - copybpl6o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl6(); } - uae_u32 sv2 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv2 = svt; - } + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; } - loaded_pixs[2] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - } - } dtbuf[h][0] = dpix_val0; - if (sv2) { - uae_u32 spix2 = denise_render_sprites2(pix2, sv2); - if (spix2) { - dpix_val2 = denise_colors.acolors[spix2]; - } - } + dtbuf[h][1] = dpix_val1; dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -12973,6 +68713,14 @@ static void lts_aga_fm0_dpf1_p6_ilores_dhires_spr(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -12981,6 +68729,14 @@ static void lts_aga_fm0_dpf1_p6_ilores_dhires_spr(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -13004,11 +68760,11 @@ static void lts_aga_fm0_dpf1_p6_ilores_dhires_spr(void) denise_cck++; } } -static void lts_aga_fm0_dpf1_p6_ilores_dhires_spr_filtered(void) +static void lts_aga_fm0_ham0_p8_ihires_dshres_filtered(void) { lts_null(); } -static void lts_aga_fm0_ehb0_p6_ilores_dhires_spr(void) +static void lts_aga_fm0_ham1_p8_ihires_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -13019,101 +68775,36 @@ 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; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - pix0 ^= bplcon4_denise_xor_val; - if (!(pix0 & 0x20)) { - dpix_val0 = denise_colors.acolors[pix0]; - } else { - uae_u32 v = (denise_colors.color_regs_aga[pix0 & 0x1f] >> 1) & 0x7f7f7f; - dpix_val0 = CONVERT_RGB(v); - } - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6(); - loaded_pix = getbpl6(); - } - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6(); } - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; } - loaded_pixs[0] = loaded_pix; - internal_pixel_cnt += 2; - matchsprites_aga(cnt + 2); + internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - pix2 ^= bplcon4_denise_xor_val; - if (!(pix2 & 0x20)) { - dpix_val2 = denise_colors.acolors[pix2]; - } else { - uae_u32 v = (denise_colors.color_regs_aga[pix2 & 0x1f] >> 1) & 0x7f7f7f; - dpix_val2 = CONVERT_RGB(v); - } - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6(); - loaded_pix = getbpl6(); - } - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6(); } - uae_u32 sv2 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv2 = svt; - } + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; } - loaded_pixs[2] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - } - } dtbuf[h][0] = dpix_val0; - if (sv2) { - uae_u32 spix2 = denise_render_sprites2(pix2, sv2); - if (spix2) { - dpix_val2 = denise_colors.acolors[spix2]; - } - } + dtbuf[h][1] = dpix_val1; dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -13122,6 +68813,14 @@ static void lts_aga_fm0_ehb0_p6_ilores_dhires_spr(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -13130,6 +68829,14 @@ static void lts_aga_fm0_ehb0_p6_ilores_dhires_spr(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -13153,11 +68860,11 @@ static void lts_aga_fm0_ehb0_p6_ilores_dhires_spr(void) denise_cck++; } } -static void lts_aga_fm0_ehb0_p6_ilores_dhires_spr_filtered(void) +static void lts_aga_fm0_ham1_p8_ihires_dshres_filtered(void) { lts_null(); } -static void lts_aga_fm0_ehb1_p6_ilores_dhires_spr(void) +static void lts_aga_fm0_kehb0_p8_ihires_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -13168,123 +68875,136 @@ 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; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - pix0 ^= bplcon4_denise_xor_val; - if (!(pix0 & 0x20)) { - dpix_val0 = denise_colors.acolors[pix0]; - } else { - uae_u32 v = (denise_colors.color_regs_aga[pix0 & 0x1f] >> 1) & 0x7f7f7f; - dpix_val0 = CONVERT_RGB(v); - } - } - last_bpl_pix = pix0; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6e(); - loaded_pix = getbpl6(); + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl6o(); - loaded_pix = getbpl6(); + internal_pixel_cnt += 1; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; } - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6(); + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 1; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; + dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_kehb0_p8_ihires_dshres_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_kehb1_p8_ihires_dshres(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl6o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl6(); + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; } - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; } - loaded_pixs[0] = loaded_pix; - internal_pixel_cnt += 2; - matchsprites_aga(cnt + 2); + internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - pix2 ^= bplcon4_denise_xor_val; - if (!(pix2 & 0x20)) { - dpix_val2 = denise_colors.acolors[pix2]; - } else { - uae_u32 v = (denise_colors.color_regs_aga[pix2 & 0x1f] >> 1) & 0x7f7f7f; - dpix_val2 = CONVERT_RGB(v); - } - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6e(); - loaded_pix = getbpl6(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl6o(); - loaded_pix = getbpl6(); - } - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6(); } - if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { - copybpl6o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl6(); - } - uae_u32 sv2 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv2 = svt; - } + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; } - loaded_pixs[2] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - } - } dtbuf[h][0] = dpix_val0; - if (sv2) { - uae_u32 spix2 = denise_render_sprites2(pix2, sv2); - if (spix2) { - dpix_val2 = denise_colors.acolors[spix2]; - } - } + dtbuf[h][1] = dpix_val1; dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -13293,6 +69013,14 @@ static void lts_aga_fm0_ehb1_p6_ilores_dhires_spr(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -13301,6 +69029,14 @@ static void lts_aga_fm0_ehb1_p6_ilores_dhires_spr(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -13324,11 +69060,11 @@ static void lts_aga_fm0_ehb1_p6_ilores_dhires_spr(void) denise_cck++; } } -static void lts_aga_fm0_ehb1_p6_ilores_dhires_spr_filtered(void) +static void lts_aga_fm0_kehb1_p8_ihires_dshres_filtered(void) { lts_null(); } -static void lts_aga_fm0_ham0_p6_ilores_dhires_spr(void) +static void lts_aga_fm0_n0_p2_ihires_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -13349,20 +69085,20 @@ static void lts_aga_fm0_ham0_p6_ilores_dhires_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - dpix_val0 = decode_ham_pixel_aga(pix0); + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix0; } bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl6(); - loaded_pix = getbpl6(); + shiftbpl2(); + loaded_pix = getbpl2(); } - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6(); + if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { + copybpl2(); bplshiftcnt[0] = 0; - loaded_pix = getbpl6(); + loaded_pix = getbpl2(); } uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { @@ -13373,7 +69109,40 @@ static void lts_aga_fm0_ham0_p6_ilores_dhires_spr(void) } } loaded_pixs[0] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix1; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl2(); + loaded_pix = getbpl2(); + } + if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { + copybpl2(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl2(); + } + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } + } + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 1; matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; @@ -13382,20 +69151,20 @@ static void lts_aga_fm0_ham0_p6_ilores_dhires_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - dpix_val2 = decode_ham_pixel_aga(pix2); + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix2; } bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl6(); - loaded_pix = getbpl6(); + shiftbpl2(); + loaded_pix = getbpl2(); } - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6(); + if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { + copybpl2(); bplshiftcnt[0] = 0; - loaded_pix = getbpl6(); + loaded_pix = getbpl2(); } uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { @@ -13406,7 +69175,40 @@ static void lts_aga_fm0_ham0_p6_ilores_dhires_spr(void) } } loaded_pixs[2] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix3; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl2(); + loaded_pix = getbpl2(); + } + if (bpldat_copy[0] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[0]) { + copybpl2(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl2(); + } + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } + } + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { uae_u32 spix0 = denise_render_sprites2(pix0, sv0); @@ -13415,6 +69217,13 @@ static void lts_aga_fm0_ham0_p6_ilores_dhires_spr(void) } } dtbuf[h][0] = dpix_val0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } + dtbuf[h][1] = dpix_val1; if (sv2) { uae_u32 spix2 = denise_render_sprites2(pix2, sv2); if (spix2) { @@ -13422,6 +69231,13 @@ static void lts_aga_fm0_ham0_p6_ilores_dhires_spr(void) } } dtbuf[h][2] = dpix_val2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + } + } + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -13430,6 +69246,14 @@ static void lts_aga_fm0_ham0_p6_ilores_dhires_spr(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -13438,6 +69262,14 @@ static void lts_aga_fm0_ham0_p6_ilores_dhires_spr(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -13461,11 +69293,11 @@ static void lts_aga_fm0_ham0_p6_ilores_dhires_spr(void) denise_cck++; } } -static void lts_aga_fm0_ham0_p6_ilores_dhires_spr_filtered(void) +static void lts_aga_fm0_n0_p2_ihires_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm0_ham1_p6_ilores_dhires_spr(void) +static void lts_aga_fm0_n1_p2_ihires_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -13486,31 +69318,31 @@ static void lts_aga_fm0_ham1_p6_ilores_dhires_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - dpix_val0 = decode_ham_pixel_aga(pix0); + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix0; } bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl6e(); - loaded_pix = getbpl6(); + shiftbpl2e(); + loaded_pix = getbpl2(); } bplshiftcnt[1] += 2; if (bplshiftcnt[1] >= 4) { bplshiftcnt[1] = 0; - shiftbpl6o(); - loaded_pix = getbpl6(); + shiftbpl2o(); + loaded_pix = getbpl2(); } - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6e(); + if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { + copybpl2e(); bplshiftcnt[0] = 0; - loaded_pix = getbpl6(); + loaded_pix = getbpl2(); } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl6o(); + if (bpldat_copy[1] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[1]) { + copybpl2o(); bplshiftcnt[1] = 0; - loaded_pix = getbpl6(); + loaded_pix = getbpl2(); } uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { @@ -13521,7 +69353,51 @@ static void lts_aga_fm0_ham1_p6_ilores_dhires_spr(void) } } loaded_pixs[0] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix1; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl2e(); + loaded_pix = getbpl2(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl2o(); + loaded_pix = getbpl2(); + } + if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { + copybpl2e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl2(); + } + if (bpldat_copy[1] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[1]) { + copybpl2o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl2(); + } + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } + } + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 1; matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; @@ -13530,31 +69406,31 @@ static void lts_aga_fm0_ham1_p6_ilores_dhires_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - dpix_val2 = decode_ham_pixel_aga(pix2); + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix2; } bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl6e(); - loaded_pix = getbpl6(); + shiftbpl2e(); + loaded_pix = getbpl2(); } bplshiftcnt[1] += 2; if (bplshiftcnt[1] >= 4) { bplshiftcnt[1] = 0; - shiftbpl6o(); - loaded_pix = getbpl6(); + shiftbpl2o(); + loaded_pix = getbpl2(); } - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6e(); + if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { + copybpl2e(); bplshiftcnt[0] = 0; - loaded_pix = getbpl6(); + loaded_pix = getbpl2(); } - if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { - copybpl6o(); + if (bpldat_copy[1] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[1]) { + copybpl2o(); bplshiftcnt[1] = 0; - loaded_pix = getbpl6(); + loaded_pix = getbpl2(); } uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { @@ -13565,7 +69441,51 @@ static void lts_aga_fm0_ham1_p6_ilores_dhires_spr(void) } } loaded_pixs[2] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix3; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl2e(); + loaded_pix = getbpl2(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl2o(); + loaded_pix = getbpl2(); + } + if (bpldat_copy[0] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[0]) { + copybpl2e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl2(); + } + if (bpldat_copy[1] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[1]) { + copybpl2o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl2(); + } + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } + } + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { uae_u32 spix0 = denise_render_sprites2(pix0, sv0); @@ -13574,6 +69494,13 @@ static void lts_aga_fm0_ham1_p6_ilores_dhires_spr(void) } } dtbuf[h][0] = dpix_val0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } + dtbuf[h][1] = dpix_val1; if (sv2) { uae_u32 spix2 = denise_render_sprites2(pix2, sv2); if (spix2) { @@ -13581,6 +69508,13 @@ static void lts_aga_fm0_ham1_p6_ilores_dhires_spr(void) } } dtbuf[h][2] = dpix_val2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + } + } + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -13589,6 +69523,14 @@ static void lts_aga_fm0_ham1_p6_ilores_dhires_spr(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -13597,6 +69539,14 @@ static void lts_aga_fm0_ham1_p6_ilores_dhires_spr(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -13620,11 +69570,11 @@ static void lts_aga_fm0_ham1_p6_ilores_dhires_spr(void) denise_cck++; } } -static void lts_aga_fm0_ham1_p6_ilores_dhires_spr_filtered(void) +static void lts_aga_fm0_n1_p2_ihires_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm0_kehb0_p6_ilores_dhires_spr(void) +static void lts_aga_fm0_dpf0_p2_ihires_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -13645,21 +69595,25 @@ static void lts_aga_fm0_kehb0_p6_ilores_dhires_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - pix0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[pix0 & 31]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; } last_bpl_pix = pix0; } bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl6(); - loaded_pix = getbpl6(); + shiftbpl2(); + loaded_pix = getbpl2(); } - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6(); + if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { + copybpl2(); bplshiftcnt[0] = 0; - loaded_pix = getbpl6(); + loaded_pix = getbpl2(); } uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { @@ -13670,7 +69624,45 @@ static void lts_aga_fm0_kehb0_p6_ilores_dhires_spr(void) } } loaded_pixs[0] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + uae_u8 val1 = dpf_lookup[pix1]; + if (dpf_lookup_no[pix1]) { + val1 += dblpfofs[bpldualpf2of]; + } + val1 ^= bplcon4_denise_xor_val; + dpix_val1 = denise_colors.acolors[val1]; + } + last_bpl_pix = pix1; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl2(); + loaded_pix = getbpl2(); + } + if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { + copybpl2(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl2(); + } + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } + } + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 1; matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; @@ -13679,32 +69671,74 @@ static void lts_aga_fm0_kehb0_p6_ilores_dhires_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - pix2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[pix2 & 31]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl2(); + loaded_pix = getbpl2(); + } + if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { + copybpl2(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl2(); + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + uae_u8 val3 = dpf_lookup[pix3]; + if (dpf_lookup_no[pix3]) { + val3 += dblpfofs[bpldualpf2of]; + } + val3 ^= bplcon4_denise_xor_val; + dpix_val3 = denise_colors.acolors[val3]; } - last_bpl_pix = pix2; + last_bpl_pix = pix3; } bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl6(); - loaded_pix = getbpl6(); + shiftbpl2(); + loaded_pix = getbpl2(); } - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6(); + if (bpldat_copy[0] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[0]) { + copybpl2(); bplshiftcnt[0] = 0; - loaded_pix = getbpl6(); + loaded_pix = getbpl2(); } - uae_u32 sv2 = 0; + uae_u32 sv3 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; svt = denise_render_sprites_aga(denise_spr_add); if (!denise_sprite_blank_active && !sprites_hidden) { - sv2 = svt; + sv3 = svt; } } - loaded_pixs[2] = loaded_pix; - internal_pixel_cnt += 2; + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { uae_u32 spix0 = denise_render_sprites2(pix0, sv0); @@ -13713,6 +69747,13 @@ static void lts_aga_fm0_kehb0_p6_ilores_dhires_spr(void) } } dtbuf[h][0] = dpix_val0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } + dtbuf[h][1] = dpix_val1; if (sv2) { uae_u32 spix2 = denise_render_sprites2(pix2, sv2); if (spix2) { @@ -13720,6 +69761,13 @@ static void lts_aga_fm0_kehb0_p6_ilores_dhires_spr(void) } } dtbuf[h][2] = dpix_val2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + } + } + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -13728,6 +69776,14 @@ static void lts_aga_fm0_kehb0_p6_ilores_dhires_spr(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -13736,6 +69792,14 @@ static void lts_aga_fm0_kehb0_p6_ilores_dhires_spr(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -13759,11 +69823,11 @@ static void lts_aga_fm0_kehb0_p6_ilores_dhires_spr(void) denise_cck++; } } -static void lts_aga_fm0_kehb0_p6_ilores_dhires_spr_filtered(void) +static void lts_aga_fm0_dpf0_p2_ihires_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm0_kehb1_p6_ilores_dhires_spr(void) +static void lts_aga_fm0_dpf1_p2_ihires_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -13784,32 +69848,36 @@ static void lts_aga_fm0_kehb1_p6_ilores_dhires_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - pix0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[pix0 & 31]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; } last_bpl_pix = pix0; } bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl6e(); - loaded_pix = getbpl6(); + shiftbpl2e(); + loaded_pix = getbpl2(); } bplshiftcnt[1] += 2; if (bplshiftcnt[1] >= 4) { bplshiftcnt[1] = 0; - shiftbpl6o(); - loaded_pix = getbpl6(); + shiftbpl2o(); + loaded_pix = getbpl2(); } - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6e(); + if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { + copybpl2e(); bplshiftcnt[0] = 0; - loaded_pix = getbpl6(); + loaded_pix = getbpl2(); } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl6o(); + if (bpldat_copy[1] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[1]) { + copybpl2o(); bplshiftcnt[1] = 0; - loaded_pix = getbpl6(); + loaded_pix = getbpl2(); } uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { @@ -13820,7 +69888,56 @@ static void lts_aga_fm0_kehb1_p6_ilores_dhires_spr(void) } } loaded_pixs[0] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + uae_u8 val1 = dpf_lookup[pix1]; + if (dpf_lookup_no[pix1]) { + val1 += dblpfofs[bpldualpf2of]; + } + val1 ^= bplcon4_denise_xor_val; + dpix_val1 = denise_colors.acolors[val1]; + } + last_bpl_pix = pix1; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl2e(); + loaded_pix = getbpl2(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl2o(); + loaded_pix = getbpl2(); + } + if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { + copybpl2e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl2(); + } + if (bpldat_copy[1] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[1]) { + copybpl2o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl2(); + } + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } + } + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 1; matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; @@ -13829,32 +69946,36 @@ static void lts_aga_fm0_kehb1_p6_ilores_dhires_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - pix2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[pix2 & 31]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; } last_bpl_pix = pix2; } bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl6e(); - loaded_pix = getbpl6(); + shiftbpl2e(); + loaded_pix = getbpl2(); } bplshiftcnt[1] += 2; if (bplshiftcnt[1] >= 4) { bplshiftcnt[1] = 0; - shiftbpl6o(); - loaded_pix = getbpl6(); + shiftbpl2o(); + loaded_pix = getbpl2(); } - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6e(); + if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { + copybpl2e(); bplshiftcnt[0] = 0; - loaded_pix = getbpl6(); + loaded_pix = getbpl2(); } - if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { - copybpl6o(); + if (bpldat_copy[1] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[1]) { + copybpl2o(); bplshiftcnt[1] = 0; - loaded_pix = getbpl6(); + loaded_pix = getbpl2(); } uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { @@ -13865,7 +69986,56 @@ static void lts_aga_fm0_kehb1_p6_ilores_dhires_spr(void) } } loaded_pixs[2] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + uae_u8 val3 = dpf_lookup[pix3]; + if (dpf_lookup_no[pix3]) { + val3 += dblpfofs[bpldualpf2of]; + } + val3 ^= bplcon4_denise_xor_val; + dpix_val3 = denise_colors.acolors[val3]; + } + last_bpl_pix = pix3; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl2e(); + loaded_pix = getbpl2(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl2o(); + loaded_pix = getbpl2(); + } + if (bpldat_copy[0] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[0]) { + copybpl2e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl2(); + } + if (bpldat_copy[1] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[1]) { + copybpl2o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl2(); + } + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } + } + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { uae_u32 spix0 = denise_render_sprites2(pix0, sv0); @@ -13874,6 +70044,13 @@ static void lts_aga_fm0_kehb1_p6_ilores_dhires_spr(void) } } dtbuf[h][0] = dpix_val0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } + dtbuf[h][1] = dpix_val1; if (sv2) { uae_u32 spix2 = denise_render_sprites2(pix2, sv2); if (spix2) { @@ -13881,6 +70058,13 @@ static void lts_aga_fm0_kehb1_p6_ilores_dhires_spr(void) } } dtbuf[h][2] = dpix_val2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + } + } + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -13889,6 +70073,14 @@ static void lts_aga_fm0_kehb1_p6_ilores_dhires_spr(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -13897,6 +70089,14 @@ static void lts_aga_fm0_kehb1_p6_ilores_dhires_spr(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -13920,11 +70120,11 @@ static void lts_aga_fm0_kehb1_p6_ilores_dhires_spr(void) denise_cck++; } } -static void lts_aga_fm0_kehb1_p6_ilores_dhires_spr_filtered(void) +static void lts_aga_fm0_dpf1_p2_ihires_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm0_n0_p8_ilores_dhires_spr(void) +static void lts_aga_fm0_ehb0_p2_ihires_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -13935,30 +70135,12 @@ 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; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8(); - loaded_pix = getbpl8(); - } - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8(); } uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { @@ -13968,30 +70150,27 @@ static void lts_aga_fm0_n0_p8_ilores_dhires_spr(void) sv0 = svt; } } - loaded_pixs[0] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } + } + internal_pixel_cnt += 1; matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8(); - loaded_pix = getbpl8(); - } - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8(); } uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { @@ -14001,8 +70180,22 @@ static void lts_aga_fm0_n0_p8_ilores_dhires_spr(void) sv2 = svt; } } - loaded_pixs[2] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } + } + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { uae_u32 spix0 = denise_render_sprites2(pix0, sv0); @@ -14011,6 +70204,13 @@ static void lts_aga_fm0_n0_p8_ilores_dhires_spr(void) } } dtbuf[h][0] = dpix_val0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } + dtbuf[h][1] = dpix_val1; if (sv2) { uae_u32 spix2 = denise_render_sprites2(pix2, sv2); if (spix2) { @@ -14018,6 +70218,13 @@ static void lts_aga_fm0_n0_p8_ilores_dhires_spr(void) } } dtbuf[h][2] = dpix_val2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + } + } + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -14026,6 +70233,14 @@ static void lts_aga_fm0_n0_p8_ilores_dhires_spr(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -14034,6 +70249,14 @@ static void lts_aga_fm0_n0_p8_ilores_dhires_spr(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -14057,11 +70280,11 @@ static void lts_aga_fm0_n0_p8_ilores_dhires_spr(void) denise_cck++; } } -static void lts_aga_fm0_n0_p8_ilores_dhires_spr_filtered(void) +static void lts_aga_fm0_ehb0_p2_ihires_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm0_n1_p8_ilores_dhires_spr(void) +static void lts_aga_fm0_ehb1_p2_ihires_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -14072,41 +70295,12 @@ 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; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8e(); - loaded_pix = getbpl8(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl8o(); - loaded_pix = getbpl8(); - } - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8(); - } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl8(); } uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { @@ -14116,41 +70310,27 @@ static void lts_aga_fm0_n1_p8_ilores_dhires_spr(void) sv0 = svt; } } - loaded_pixs[0] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } + } + internal_pixel_cnt += 1; matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8e(); - loaded_pix = getbpl8(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl8o(); - loaded_pix = getbpl8(); - } - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8(); - } - if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl8(); } uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { @@ -14160,8 +70340,22 @@ static void lts_aga_fm0_n1_p8_ilores_dhires_spr(void) sv2 = svt; } } - loaded_pixs[2] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } + } + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { uae_u32 spix0 = denise_render_sprites2(pix0, sv0); @@ -14170,6 +70364,13 @@ static void lts_aga_fm0_n1_p8_ilores_dhires_spr(void) } } dtbuf[h][0] = dpix_val0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } + dtbuf[h][1] = dpix_val1; if (sv2) { uae_u32 spix2 = denise_render_sprites2(pix2, sv2); if (spix2) { @@ -14177,6 +70378,13 @@ static void lts_aga_fm0_n1_p8_ilores_dhires_spr(void) } } dtbuf[h][2] = dpix_val2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + } + } + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -14185,6 +70393,14 @@ static void lts_aga_fm0_n1_p8_ilores_dhires_spr(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -14193,6 +70409,14 @@ static void lts_aga_fm0_n1_p8_ilores_dhires_spr(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -14216,50 +70440,27 @@ static void lts_aga_fm0_n1_p8_ilores_dhires_spr(void) denise_cck++; } } -static void lts_aga_fm0_n1_p8_ilores_dhires_spr_filtered(void) +static void lts_aga_fm0_ehb1_p2_ihires_dshres_spr_filtered(void) { lts_null(); -} -static void lts_aga_fm0_dpf0_p8_ilores_dhires_spr(void) -{ - while (denise_cck < denise_endcycle) { - do_denise_cck(denise_linecnt, denise_startpos, denise_cck); - if (lts_changed) return; - for (int h = 0; h < 2; h++) { - if (h) { - denise_hcounter_next = denise_hcounter_new; - } - int cnt = denise_hcounter << 2; - int cnt_next = denise_hcounter_next << 2; - int cmp = denise_hcounter_cmp << 2; - if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites_aga(cnt + 0); - uae_u8 pix0 = 0; - uae_u32 dpix_val0 = BLANK_COLOR; - if (!denise_blank_active) { - dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8(); - loaded_pix = getbpl8(); +} +static void lts_aga_fm0_ham0_p2_ihires_dshres_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; } - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8(); + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; } uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { @@ -14269,35 +70470,27 @@ static void lts_aga_fm0_dpf0_p8_ilores_dhires_spr(void) sv0 = svt; } } - loaded_pixs[0] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } + } + internal_pixel_cnt += 1; matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8(); - loaded_pix = getbpl8(); - } - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8(); } uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { @@ -14307,8 +70500,22 @@ static void lts_aga_fm0_dpf0_p8_ilores_dhires_spr(void) sv2 = svt; } } - loaded_pixs[2] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } + } + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { uae_u32 spix0 = denise_render_sprites2(pix0, sv0); @@ -14317,6 +70524,13 @@ static void lts_aga_fm0_dpf0_p8_ilores_dhires_spr(void) } } dtbuf[h][0] = dpix_val0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } + dtbuf[h][1] = dpix_val1; if (sv2) { uae_u32 spix2 = denise_render_sprites2(pix2, sv2); if (spix2) { @@ -14324,6 +70538,13 @@ static void lts_aga_fm0_dpf0_p8_ilores_dhires_spr(void) } } dtbuf[h][2] = dpix_val2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + } + } + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -14332,6 +70553,14 @@ static void lts_aga_fm0_dpf0_p8_ilores_dhires_spr(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -14340,6 +70569,14 @@ static void lts_aga_fm0_dpf0_p8_ilores_dhires_spr(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -14363,11 +70600,11 @@ static void lts_aga_fm0_dpf0_p8_ilores_dhires_spr(void) denise_cck++; } } -static void lts_aga_fm0_dpf0_p8_ilores_dhires_spr_filtered(void) +static void lts_aga_fm0_ham0_p2_ihires_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm0_dpf1_p8_ilores_dhires_spr(void) +static void lts_aga_fm0_ham1_p2_ihires_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -14378,46 +70615,12 @@ 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; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8e(); - loaded_pix = getbpl8(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl8o(); - loaded_pix = getbpl8(); - } - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8(); - } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl8(); } uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { @@ -14427,46 +70630,27 @@ static void lts_aga_fm0_dpf1_p8_ilores_dhires_spr(void) sv0 = svt; } } - loaded_pixs[0] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } + } + internal_pixel_cnt += 1; matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8e(); - loaded_pix = getbpl8(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl8o(); - loaded_pix = getbpl8(); - } - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8(); - } - if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl8(); } uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { @@ -14476,8 +70660,22 @@ static void lts_aga_fm0_dpf1_p8_ilores_dhires_spr(void) sv2 = svt; } } - loaded_pixs[2] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } + } + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { uae_u32 spix0 = denise_render_sprites2(pix0, sv0); @@ -14486,6 +70684,13 @@ static void lts_aga_fm0_dpf1_p8_ilores_dhires_spr(void) } } dtbuf[h][0] = dpix_val0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } + dtbuf[h][1] = dpix_val1; if (sv2) { uae_u32 spix2 = denise_render_sprites2(pix2, sv2); if (spix2) { @@ -14493,6 +70698,13 @@ static void lts_aga_fm0_dpf1_p8_ilores_dhires_spr(void) } } dtbuf[h][2] = dpix_val2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + } + } + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -14501,6 +70713,14 @@ static void lts_aga_fm0_dpf1_p8_ilores_dhires_spr(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -14509,6 +70729,14 @@ static void lts_aga_fm0_dpf1_p8_ilores_dhires_spr(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -14532,27 +70760,11 @@ static void lts_aga_fm0_dpf1_p8_ilores_dhires_spr(void) denise_cck++; } } -static void lts_aga_fm0_dpf1_p8_ilores_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb0_p8_ilores_dhires_spr(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb0_p8_ilores_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb1_p8_ilores_dhires_spr(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb1_p8_ilores_dhires_spr_filtered(void) +static void lts_aga_fm0_ham1_p2_ihires_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm0_ham0_p8_ilores_dhires_spr(void) +static void lts_aga_fm0_kehb0_p2_ihires_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -14563,30 +70775,12 @@ 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; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = decode_ham_pixel_aga(pix0); - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8(); - loaded_pix = getbpl8(); - } - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8(); } uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { @@ -14596,30 +70790,27 @@ static void lts_aga_fm0_ham0_p8_ilores_dhires_spr(void) sv0 = svt; } } - loaded_pixs[0] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } + } + internal_pixel_cnt += 1; matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = decode_ham_pixel_aga(pix2); - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8(); - loaded_pix = getbpl8(); - } - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8(); } uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { @@ -14629,8 +70820,22 @@ static void lts_aga_fm0_ham0_p8_ilores_dhires_spr(void) sv2 = svt; } } - loaded_pixs[2] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } + } + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { uae_u32 spix0 = denise_render_sprites2(pix0, sv0); @@ -14639,6 +70844,13 @@ static void lts_aga_fm0_ham0_p8_ilores_dhires_spr(void) } } dtbuf[h][0] = dpix_val0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } + dtbuf[h][1] = dpix_val1; if (sv2) { uae_u32 spix2 = denise_render_sprites2(pix2, sv2); if (spix2) { @@ -14646,6 +70858,13 @@ static void lts_aga_fm0_ham0_p8_ilores_dhires_spr(void) } } dtbuf[h][2] = dpix_val2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + } + } + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -14654,6 +70873,14 @@ static void lts_aga_fm0_ham0_p8_ilores_dhires_spr(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -14662,6 +70889,14 @@ static void lts_aga_fm0_ham0_p8_ilores_dhires_spr(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -14685,11 +70920,11 @@ static void lts_aga_fm0_ham0_p8_ilores_dhires_spr(void) denise_cck++; } } -static void lts_aga_fm0_ham0_p8_ilores_dhires_spr_filtered(void) +static void lts_aga_fm0_kehb0_p2_ihires_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm0_ham1_p8_ilores_dhires_spr(void) +static void lts_aga_fm0_kehb1_p2_ihires_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -14700,41 +70935,12 @@ 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; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = decode_ham_pixel_aga(pix0); - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8e(); - loaded_pix = getbpl8(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl8o(); - loaded_pix = getbpl8(); - } - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8(); - } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl8(); } uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { @@ -14744,41 +70950,27 @@ static void lts_aga_fm0_ham1_p8_ilores_dhires_spr(void) sv0 = svt; } } - loaded_pixs[0] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } + } + internal_pixel_cnt += 1; matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = decode_ham_pixel_aga(pix2); - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8e(); - loaded_pix = getbpl8(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl8o(); - loaded_pix = getbpl8(); - } - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8(); - } - if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl8(); } uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { @@ -14788,8 +70980,22 @@ static void lts_aga_fm0_ham1_p8_ilores_dhires_spr(void) sv2 = svt; } } - loaded_pixs[2] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } + } + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { uae_u32 spix0 = denise_render_sprites2(pix0, sv0); @@ -14798,6 +71004,13 @@ static void lts_aga_fm0_ham1_p8_ilores_dhires_spr(void) } } dtbuf[h][0] = dpix_val0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } + dtbuf[h][1] = dpix_val1; if (sv2) { uae_u32 spix2 = denise_render_sprites2(pix2, sv2); if (spix2) { @@ -14805,6 +71018,13 @@ static void lts_aga_fm0_ham1_p8_ilores_dhires_spr(void) } } dtbuf[h][2] = dpix_val2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + } + } + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -14813,6 +71033,14 @@ static void lts_aga_fm0_ham1_p8_ilores_dhires_spr(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -14821,6 +71049,14 @@ static void lts_aga_fm0_ham1_p8_ilores_dhires_spr(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -14841,30 +71077,14 @@ static void lts_aga_fm0_ham1_p8_ilores_dhires_spr(void) if (denise_accurate_mode) { denise_hcounter_cmp = denise_hcounter_new; } - denise_cck++; - } -} -static void lts_aga_fm0_ham1_p8_ilores_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb0_p8_ilores_dhires_spr(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb0_p8_ilores_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb1_p8_ilores_dhires_spr(void) -{ - lts_null(); + denise_cck++; + } } -static void lts_aga_fm0_kehb1_p8_ilores_dhires_spr_filtered(void) +static void lts_aga_fm0_kehb1_p2_ihires_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm0_n0_p2_ihires_dhires(void) +static void lts_aga_fm0_n0_p4_ihires_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -14877,6 +71097,7 @@ static void lts_aga_fm0_n0_p2_ihires_dhires(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -14888,13 +71109,61 @@ static void lts_aga_fm0_n0_p2_ihires_dhires(void) } last_bpl_pix = pix0; } - shiftbpl2(); + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4(); + loaded_pix = getbpl4(); + } if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { - copybpl2(); + copybpl4(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4(); + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } } - loaded_pix = getbpl2(); loaded_pixs[0] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix1; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4(); + loaded_pix = getbpl4(); + } + if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4(); + } + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } + } + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { @@ -14906,16 +71175,89 @@ static void lts_aga_fm0_n0_p2_ihires_dhires(void) } last_bpl_pix = pix2; } - shiftbpl2(); + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4(); + loaded_pix = getbpl4(); + } if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { - copybpl2(); + copybpl4(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4(); + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } } - loaded_pix = getbpl2(); loaded_pixs[2] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix3; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4(); + loaded_pix = getbpl4(); + } + if (bpldat_copy[0] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4(); + } + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } + } + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } dtbuf[h][0] = dpix_val0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } + dtbuf[h][1] = dpix_val1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } dtbuf[h][2] = dpix_val2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + } + } + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -14924,6 +71266,14 @@ static void lts_aga_fm0_n0_p2_ihires_dhires(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -14932,6 +71282,14 @@ static void lts_aga_fm0_n0_p2_ihires_dhires(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -14955,11 +71313,11 @@ static void lts_aga_fm0_n0_p2_ihires_dhires(void) denise_cck++; } } -static void lts_aga_fm0_n0_p2_ihires_dhires_filtered(void) +static void lts_aga_fm0_n0_p4_ihires_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm0_n1_p2_ihires_dhires(void) +static void lts_aga_fm0_n1_p4_ihires_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -14972,6 +71330,7 @@ static void lts_aga_fm0_n1_p2_ihires_dhires(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -14983,16 +71342,83 @@ static void lts_aga_fm0_n1_p2_ihires_dhires(void) } last_bpl_pix = pix0; } - shiftbpl2(); + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4e(); + loaded_pix = getbpl4(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl4o(); + loaded_pix = getbpl4(); + } if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { - copybpl2e(); + copybpl4e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4(); } if (bpldat_copy[1] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[1]) { - copybpl2o(); + copybpl4o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl4(); + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } } - loaded_pix = getbpl2(); loaded_pixs[0] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix1; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4e(); + loaded_pix = getbpl4(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl4o(); + loaded_pix = getbpl4(); + } + if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4(); + } + if (bpldat_copy[1] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[1]) { + copybpl4o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl4(); + } + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } + } + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { @@ -15004,19 +71430,111 @@ static void lts_aga_fm0_n1_p2_ihires_dhires(void) } last_bpl_pix = pix2; } - shiftbpl2(); + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4e(); + loaded_pix = getbpl4(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl4o(); + loaded_pix = getbpl4(); + } if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { - copybpl2e(); + copybpl4e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4(); } if (bpldat_copy[1] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[1]) { - copybpl2o(); + copybpl4o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl4(); + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } } - loaded_pix = getbpl2(); loaded_pixs[2] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix3; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4e(); + loaded_pix = getbpl4(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl4o(); + loaded_pix = getbpl4(); + } + if (bpldat_copy[0] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4(); + } + if (bpldat_copy[1] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[1]) { + copybpl4o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl4(); + } + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } + } + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } dtbuf[h][0] = dpix_val0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } + dtbuf[h][1] = dpix_val1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } dtbuf[h][2] = dpix_val2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + } + } + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -15025,6 +71543,14 @@ static void lts_aga_fm0_n1_p2_ihires_dhires(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -15033,6 +71559,14 @@ static void lts_aga_fm0_n1_p2_ihires_dhires(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -15056,11 +71590,11 @@ static void lts_aga_fm0_n1_p2_ihires_dhires(void) denise_cck++; } } -static void lts_aga_fm0_n1_p2_ihires_dhires_filtered(void) +static void lts_aga_fm0_n1_p4_ihires_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm0_dpf0_p2_ihires_dhires(void) +static void lts_aga_fm0_dpf0_p4_ihires_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -15073,6 +71607,7 @@ static void lts_aga_fm0_dpf0_p2_ihires_dhires(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -15089,13 +71624,66 @@ static void lts_aga_fm0_dpf0_p2_ihires_dhires(void) } last_bpl_pix = pix0; } - shiftbpl2(); + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4(); + loaded_pix = getbpl4(); + } if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { - copybpl2(); + copybpl4(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4(); + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } } - loaded_pix = getbpl2(); loaded_pixs[0] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + uae_u8 val1 = dpf_lookup[pix1]; + if (dpf_lookup_no[pix1]) { + val1 += dblpfofs[bpldualpf2of]; + } + val1 ^= bplcon4_denise_xor_val; + dpix_val1 = denise_colors.acolors[val1]; + } + last_bpl_pix = pix1; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4(); + loaded_pix = getbpl4(); + } + if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4(); + } + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } + } + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { @@ -15112,16 +71700,94 @@ static void lts_aga_fm0_dpf0_p2_ihires_dhires(void) } last_bpl_pix = pix2; } - shiftbpl2(); + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4(); + loaded_pix = getbpl4(); + } if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { - copybpl2(); + copybpl4(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4(); + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } } - loaded_pix = getbpl2(); loaded_pixs[2] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + uae_u8 val3 = dpf_lookup[pix3]; + if (dpf_lookup_no[pix3]) { + val3 += dblpfofs[bpldualpf2of]; + } + val3 ^= bplcon4_denise_xor_val; + dpix_val3 = denise_colors.acolors[val3]; + } + last_bpl_pix = pix3; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4(); + loaded_pix = getbpl4(); + } + if (bpldat_copy[0] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4(); + } + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } + } + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } dtbuf[h][0] = dpix_val0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } + dtbuf[h][1] = dpix_val1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } dtbuf[h][2] = dpix_val2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + } + } + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -15130,6 +71796,14 @@ static void lts_aga_fm0_dpf0_p2_ihires_dhires(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -15138,6 +71812,14 @@ static void lts_aga_fm0_dpf0_p2_ihires_dhires(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -15161,11 +71843,11 @@ static void lts_aga_fm0_dpf0_p2_ihires_dhires(void) denise_cck++; } } -static void lts_aga_fm0_dpf0_p2_ihires_dhires_filtered(void) +static void lts_aga_fm0_dpf0_p4_ihires_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm0_dpf1_p2_ihires_dhires(void) +static void lts_aga_fm0_dpf1_p4_ihires_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -15178,6 +71860,7 @@ static void lts_aga_fm0_dpf1_p2_ihires_dhires(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -15194,16 +71877,88 @@ static void lts_aga_fm0_dpf1_p2_ihires_dhires(void) } last_bpl_pix = pix0; } - shiftbpl2(); + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4e(); + loaded_pix = getbpl4(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl4o(); + loaded_pix = getbpl4(); + } if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { - copybpl2e(); + copybpl4e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4(); } if (bpldat_copy[1] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[1]) { - copybpl2o(); + copybpl4o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl4(); + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } } - loaded_pix = getbpl2(); loaded_pixs[0] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + uae_u8 val1 = dpf_lookup[pix1]; + if (dpf_lookup_no[pix1]) { + val1 += dblpfofs[bpldualpf2of]; + } + val1 ^= bplcon4_denise_xor_val; + dpix_val1 = denise_colors.acolors[val1]; + } + last_bpl_pix = pix1; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4e(); + loaded_pix = getbpl4(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl4o(); + loaded_pix = getbpl4(); + } + if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4(); + } + if (bpldat_copy[1] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[1]) { + copybpl4o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl4(); + } + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } + } + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { @@ -15220,19 +71975,116 @@ static void lts_aga_fm0_dpf1_p2_ihires_dhires(void) } last_bpl_pix = pix2; } - shiftbpl2(); + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4e(); + loaded_pix = getbpl4(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl4o(); + loaded_pix = getbpl4(); + } if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { - copybpl2e(); + copybpl4e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4(); } if (bpldat_copy[1] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[1]) { - copybpl2o(); + copybpl4o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl4(); + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } } - loaded_pix = getbpl2(); loaded_pixs[2] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + uae_u8 val3 = dpf_lookup[pix3]; + if (dpf_lookup_no[pix3]) { + val3 += dblpfofs[bpldualpf2of]; + } + val3 ^= bplcon4_denise_xor_val; + dpix_val3 = denise_colors.acolors[val3]; + } + last_bpl_pix = pix3; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4e(); + loaded_pix = getbpl4(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl4o(); + loaded_pix = getbpl4(); + } + if (bpldat_copy[0] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4(); + } + if (bpldat_copy[1] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[1]) { + copybpl4o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl4(); + } + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } + } + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } dtbuf[h][0] = dpix_val0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } + dtbuf[h][1] = dpix_val1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } dtbuf[h][2] = dpix_val2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + } + } + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -15241,6 +72093,14 @@ static void lts_aga_fm0_dpf1_p2_ihires_dhires(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -15249,6 +72109,14 @@ static void lts_aga_fm0_dpf1_p2_ihires_dhires(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -15272,59 +72140,11 @@ static void lts_aga_fm0_dpf1_p2_ihires_dhires(void) denise_cck++; } } -static void lts_aga_fm0_dpf1_p2_ihires_dhires_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb0_p2_ihires_dhires(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb0_p2_ihires_dhires_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb1_p2_ihires_dhires(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb1_p2_ihires_dhires_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham0_p2_ihires_dhires(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham0_p2_ihires_dhires_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham1_p2_ihires_dhires(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham1_p2_ihires_dhires_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb0_p2_ihires_dhires(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb0_p2_ihires_dhires_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb1_p2_ihires_dhires(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb1_p2_ihires_dhires_filtered(void) +static void lts_aga_fm0_dpf1_p4_ihires_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm0_n0_p4_ihires_dhires(void) +static void lts_aga_fm0_ehb0_p4_ihires_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -15335,47 +72155,96 @@ 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; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; } - last_bpl_pix = pix0; } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4(); + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; } - loaded_pix = getbpl4(); - loaded_pixs[0] = loaded_pix; - internal_pixel_cnt += 2; + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } + } + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; } - last_bpl_pix = pix2; } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4(); + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; } - loaded_pix = getbpl4(); - loaded_pixs[2] = loaded_pix; - internal_pixel_cnt += 2; + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } + } + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } dtbuf[h][0] = dpix_val0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } + dtbuf[h][1] = dpix_val1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } dtbuf[h][2] = dpix_val2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + } + } + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -15384,6 +72253,14 @@ static void lts_aga_fm0_n0_p4_ihires_dhires(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -15392,6 +72269,14 @@ static void lts_aga_fm0_n0_p4_ihires_dhires(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -15415,11 +72300,11 @@ static void lts_aga_fm0_n0_p4_ihires_dhires(void) denise_cck++; } } -static void lts_aga_fm0_n0_p4_ihires_dhires_filtered(void) +static void lts_aga_fm0_ehb0_p4_ihires_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm0_n1_p4_ihires_dhires(void) +static void lts_aga_fm0_ehb1_p4_ihires_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -15430,53 +72315,96 @@ 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; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; } - last_bpl_pix = pix0; } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4e(); + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; } - if (bpldat_copy[1] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[1]) { - copybpl4o(); + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } } - loaded_pix = getbpl4(); - loaded_pixs[0] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; } - last_bpl_pix = pix2; } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4e(); + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; } - if (bpldat_copy[1] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[1]) { - copybpl4o(); + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } } - loaded_pix = getbpl4(); - loaded_pixs[2] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } dtbuf[h][0] = dpix_val0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } + dtbuf[h][1] = dpix_val1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } dtbuf[h][2] = dpix_val2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + } + } + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -15485,6 +72413,14 @@ static void lts_aga_fm0_n1_p4_ihires_dhires(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -15493,6 +72429,14 @@ static void lts_aga_fm0_n1_p4_ihires_dhires(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -15516,11 +72460,11 @@ static void lts_aga_fm0_n1_p4_ihires_dhires(void) denise_cck++; } } -static void lts_aga_fm0_n1_p4_ihires_dhires_filtered(void) +static void lts_aga_fm0_ehb1_p4_ihires_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm0_dpf0_p4_ihires_dhires(void) +static void lts_aga_fm0_ham0_p4_ihires_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -15531,57 +72475,96 @@ 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; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; } - last_bpl_pix = pix0; } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4(); + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; } - loaded_pix = getbpl4(); - loaded_pixs[0] = loaded_pix; - internal_pixel_cnt += 2; + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } + } + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; } - last_bpl_pix = pix2; } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4(); + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; } - loaded_pix = getbpl4(); - loaded_pixs[2] = loaded_pix; - internal_pixel_cnt += 2; + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } + } + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } dtbuf[h][0] = dpix_val0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } + dtbuf[h][1] = dpix_val1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } dtbuf[h][2] = dpix_val2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + } + } + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -15590,6 +72573,14 @@ static void lts_aga_fm0_dpf0_p4_ihires_dhires(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -15598,6 +72589,14 @@ static void lts_aga_fm0_dpf0_p4_ihires_dhires(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -15621,11 +72620,11 @@ static void lts_aga_fm0_dpf0_p4_ihires_dhires(void) denise_cck++; } } -static void lts_aga_fm0_dpf0_p4_ihires_dhires_filtered(void) +static void lts_aga_fm0_ham0_p4_ihires_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm0_dpf1_p4_ihires_dhires(void) +static void lts_aga_fm0_ham1_p4_ihires_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -15636,63 +72635,96 @@ 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; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; } - last_bpl_pix = pix0; } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4e(); + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; } - if (bpldat_copy[1] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[1]) { - copybpl4o(); + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } } - loaded_pix = getbpl4(); - loaded_pixs[0] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; } - last_bpl_pix = pix2; } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4e(); + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; } - if (bpldat_copy[1] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[1]) { - copybpl4o(); + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } } - loaded_pix = getbpl4(); - loaded_pixs[2] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } dtbuf[h][0] = dpix_val0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } + dtbuf[h][1] = dpix_val1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } dtbuf[h][2] = dpix_val2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + } + } + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -15701,6 +72733,14 @@ static void lts_aga_fm0_dpf1_p4_ihires_dhires(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -15709,6 +72749,14 @@ static void lts_aga_fm0_dpf1_p4_ihires_dhires(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -15732,219 +72780,11 @@ static void lts_aga_fm0_dpf1_p4_ihires_dhires(void) denise_cck++; } } -static void lts_aga_fm0_dpf1_p4_ihires_dhires_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb0_p4_ihires_dhires(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb0_p4_ihires_dhires_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb1_p4_ihires_dhires(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb1_p4_ihires_dhires_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham0_p4_ihires_dhires(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham0_p4_ihires_dhires_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham1_p4_ihires_dhires(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham1_p4_ihires_dhires_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb0_p4_ihires_dhires(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb0_p4_ihires_dhires_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb1_p4_ihires_dhires(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb1_p4_ihires_dhires_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_n0_p6_ihires_dhires(void) -{ - lts_null(); -} -static void lts_aga_fm0_n0_p6_ihires_dhires_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_n1_p6_ihires_dhires(void) -{ - lts_null(); -} -static void lts_aga_fm0_n1_p6_ihires_dhires_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_dpf0_p6_ihires_dhires(void) -{ - lts_null(); -} -static void lts_aga_fm0_dpf0_p6_ihires_dhires_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_dpf1_p6_ihires_dhires(void) -{ - lts_null(); -} -static void lts_aga_fm0_dpf1_p6_ihires_dhires_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb0_p6_ihires_dhires(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb0_p6_ihires_dhires_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb1_p6_ihires_dhires(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb1_p6_ihires_dhires_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham0_p6_ihires_dhires(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham0_p6_ihires_dhires_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham1_p6_ihires_dhires(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham1_p6_ihires_dhires_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb0_p6_ihires_dhires(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb0_p6_ihires_dhires_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb1_p6_ihires_dhires(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb1_p6_ihires_dhires_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_n0_p8_ihires_dhires(void) -{ - lts_null(); -} -static void lts_aga_fm0_n0_p8_ihires_dhires_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_n1_p8_ihires_dhires(void) -{ - lts_null(); -} -static void lts_aga_fm0_n1_p8_ihires_dhires_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_dpf0_p8_ihires_dhires(void) -{ - lts_null(); -} -static void lts_aga_fm0_dpf0_p8_ihires_dhires_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_dpf1_p8_ihires_dhires(void) -{ - lts_null(); -} -static void lts_aga_fm0_dpf1_p8_ihires_dhires_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb0_p8_ihires_dhires(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb0_p8_ihires_dhires_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb1_p8_ihires_dhires(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb1_p8_ihires_dhires_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham0_p8_ihires_dhires(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham0_p8_ihires_dhires_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham1_p8_ihires_dhires(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham1_p8_ihires_dhires_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb0_p8_ihires_dhires(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb0_p8_ihires_dhires_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb1_p8_ihires_dhires(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb1_p8_ihires_dhires_filtered(void) +static void lts_aga_fm0_ham1_p4_ihires_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm0_n0_p2_ihires_dhires_spr(void) +static void lts_aga_fm0_kehb0_p4_ihires_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -15955,25 +72795,13 @@ 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; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix0; - } - shiftbpl2(); - if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { - copybpl2(); } - loaded_pix = getbpl2(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -15982,35 +72810,52 @@ static void lts_aga_fm0_n0_p2_ihires_dhires_spr(void) sv0 = svt; } } - loaded_pixs[0] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } + } + internal_pixel_cnt += 1; matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; } - last_bpl_pix = pix2; } - shiftbpl2(); - if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { - copybpl2(); + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; } - loaded_pix = getbpl2(); - uae_u32 sv2 = 0; + uae_u32 sv3 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; svt = denise_render_sprites_aga(denise_spr_add); if (!denise_sprite_blank_active && !sprites_hidden) { - sv2 = svt; + sv3 = svt; } } - loaded_pixs[2] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { uae_u32 spix0 = denise_render_sprites2(pix0, sv0); @@ -16019,6 +72864,13 @@ static void lts_aga_fm0_n0_p2_ihires_dhires_spr(void) } } dtbuf[h][0] = dpix_val0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } + dtbuf[h][1] = dpix_val1; if (sv2) { uae_u32 spix2 = denise_render_sprites2(pix2, sv2); if (spix2) { @@ -16026,6 +72878,13 @@ static void lts_aga_fm0_n0_p2_ihires_dhires_spr(void) } } dtbuf[h][2] = dpix_val2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + } + } + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -16034,6 +72893,14 @@ static void lts_aga_fm0_n0_p2_ihires_dhires_spr(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -16042,6 +72909,14 @@ static void lts_aga_fm0_n0_p2_ihires_dhires_spr(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -16065,11 +72940,11 @@ static void lts_aga_fm0_n0_p2_ihires_dhires_spr(void) denise_cck++; } } -static void lts_aga_fm0_n0_p2_ihires_dhires_spr_filtered(void) +static void lts_aga_fm0_kehb0_p4_ihires_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm0_n1_p2_ihires_dhires_spr(void) +static void lts_aga_fm0_kehb1_p4_ihires_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -16080,28 +72955,13 @@ 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; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix0; - } - shiftbpl2(); - if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { - copybpl2e(); - } - if (bpldat_copy[1] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[1]) { - copybpl2o(); } - loaded_pix = getbpl2(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -16110,28 +72970,28 @@ static void lts_aga_fm0_n1_p2_ihires_dhires_spr(void) sv0 = svt; } } - loaded_pixs[0] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } + } + internal_pixel_cnt += 1; matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix2; - } - shiftbpl2(); - if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { - copybpl2e(); - } - if (bpldat_copy[1] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[1]) { - copybpl2o(); } - loaded_pix = getbpl2(); uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -16140,8 +73000,22 @@ static void lts_aga_fm0_n1_p2_ihires_dhires_spr(void) sv2 = svt; } } - loaded_pixs[2] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } + } + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { uae_u32 spix0 = denise_render_sprites2(pix0, sv0); @@ -16150,6 +73024,13 @@ static void lts_aga_fm0_n1_p2_ihires_dhires_spr(void) } } dtbuf[h][0] = dpix_val0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } + dtbuf[h][1] = dpix_val1; if (sv2) { uae_u32 spix2 = denise_render_sprites2(pix2, sv2); if (spix2) { @@ -16157,6 +73038,13 @@ static void lts_aga_fm0_n1_p2_ihires_dhires_spr(void) } } dtbuf[h][2] = dpix_val2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + } + } + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -16165,6 +73053,14 @@ static void lts_aga_fm0_n1_p2_ihires_dhires_spr(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -16173,6 +73069,14 @@ static void lts_aga_fm0_n1_p2_ihires_dhires_spr(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -16196,11 +73100,11 @@ static void lts_aga_fm0_n1_p2_ihires_dhires_spr(void) denise_cck++; } } -static void lts_aga_fm0_n1_p2_ihires_dhires_spr_filtered(void) +static void lts_aga_fm0_kehb1_p4_ihires_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm0_dpf0_p2_ihires_dhires_spr(void) +static void lts_aga_fm0_n0_p6_ihires_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -16211,30 +73115,13 @@ 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; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; - } - shiftbpl2(); - if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { - copybpl2(); } - loaded_pix = getbpl2(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -16243,30 +73130,28 @@ static void lts_aga_fm0_dpf0_p2_ihires_dhires_spr(void) sv0 = svt; } } - loaded_pixs[0] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } + } + internal_pixel_cnt += 1; matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; - } - last_bpl_pix = pix2; } - shiftbpl2(); - if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { - copybpl2(); - } - loaded_pix = getbpl2(); uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -16275,8 +73160,22 @@ static void lts_aga_fm0_dpf0_p2_ihires_dhires_spr(void) sv2 = svt; } } - loaded_pixs[2] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } + } + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { uae_u32 spix0 = denise_render_sprites2(pix0, sv0); @@ -16285,6 +73184,13 @@ static void lts_aga_fm0_dpf0_p2_ihires_dhires_spr(void) } } dtbuf[h][0] = dpix_val0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } + dtbuf[h][1] = dpix_val1; if (sv2) { uae_u32 spix2 = denise_render_sprites2(pix2, sv2); if (spix2) { @@ -16292,6 +73198,13 @@ static void lts_aga_fm0_dpf0_p2_ihires_dhires_spr(void) } } dtbuf[h][2] = dpix_val2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + } + } + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -16300,6 +73213,14 @@ static void lts_aga_fm0_dpf0_p2_ihires_dhires_spr(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -16308,6 +73229,14 @@ static void lts_aga_fm0_dpf0_p2_ihires_dhires_spr(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -16331,11 +73260,11 @@ static void lts_aga_fm0_dpf0_p2_ihires_dhires_spr(void) denise_cck++; } } -static void lts_aga_fm0_dpf0_p2_ihires_dhires_spr_filtered(void) +static void lts_aga_fm0_n0_p6_ihires_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm0_dpf1_p2_ihires_dhires_spr(void) +static void lts_aga_fm0_n1_p6_ihires_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -16346,33 +73275,13 @@ 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; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; - } - shiftbpl2(); - if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { - copybpl2e(); - } - if (bpldat_copy[1] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[1]) { - copybpl2o(); } - loaded_pix = getbpl2(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -16381,33 +73290,28 @@ static void lts_aga_fm0_dpf1_p2_ihires_dhires_spr(void) sv0 = svt; } } - loaded_pixs[0] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } + } + internal_pixel_cnt += 1; matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; - } - last_bpl_pix = pix2; - } - shiftbpl2(); - if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { - copybpl2e(); - } - if (bpldat_copy[1] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[1]) { - copybpl2o(); } - loaded_pix = getbpl2(); uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -16416,8 +73320,22 @@ static void lts_aga_fm0_dpf1_p2_ihires_dhires_spr(void) sv2 = svt; } } - loaded_pixs[2] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } + } + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { uae_u32 spix0 = denise_render_sprites2(pix0, sv0); @@ -16426,6 +73344,13 @@ static void lts_aga_fm0_dpf1_p2_ihires_dhires_spr(void) } } dtbuf[h][0] = dpix_val0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } + dtbuf[h][1] = dpix_val1; if (sv2) { uae_u32 spix2 = denise_render_sprites2(pix2, sv2); if (spix2) { @@ -16433,6 +73358,13 @@ static void lts_aga_fm0_dpf1_p2_ihires_dhires_spr(void) } } dtbuf[h][2] = dpix_val2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + } + } + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -16441,6 +73373,14 @@ static void lts_aga_fm0_dpf1_p2_ihires_dhires_spr(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -16449,6 +73389,14 @@ static void lts_aga_fm0_dpf1_p2_ihires_dhires_spr(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -16472,59 +73420,11 @@ static void lts_aga_fm0_dpf1_p2_ihires_dhires_spr(void) denise_cck++; } } -static void lts_aga_fm0_dpf1_p2_ihires_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb0_p2_ihires_dhires_spr(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb0_p2_ihires_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb1_p2_ihires_dhires_spr(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb1_p2_ihires_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham0_p2_ihires_dhires_spr(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham0_p2_ihires_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham1_p2_ihires_dhires_spr(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham1_p2_ihires_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb0_p2_ihires_dhires_spr(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb0_p2_ihires_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb1_p2_ihires_dhires_spr(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb1_p2_ihires_dhires_spr_filtered(void) +static void lts_aga_fm0_n1_p6_ihires_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm0_n0_p4_ihires_dhires_spr(void) +static void lts_aga_fm0_dpf0_p6_ihires_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -16535,25 +73435,13 @@ 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; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix0; - } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4(); } - loaded_pix = getbpl4(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -16562,25 +73450,28 @@ static void lts_aga_fm0_n0_p4_ihires_dhires_spr(void) sv0 = svt; } } - loaded_pixs[0] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } + } + internal_pixel_cnt += 1; matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix2; - } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4(); } - loaded_pix = getbpl4(); uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -16589,8 +73480,22 @@ static void lts_aga_fm0_n0_p4_ihires_dhires_spr(void) sv2 = svt; } } - loaded_pixs[2] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } + } + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { uae_u32 spix0 = denise_render_sprites2(pix0, sv0); @@ -16599,6 +73504,13 @@ static void lts_aga_fm0_n0_p4_ihires_dhires_spr(void) } } dtbuf[h][0] = dpix_val0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } + dtbuf[h][1] = dpix_val1; if (sv2) { uae_u32 spix2 = denise_render_sprites2(pix2, sv2); if (spix2) { @@ -16606,6 +73518,13 @@ static void lts_aga_fm0_n0_p4_ihires_dhires_spr(void) } } dtbuf[h][2] = dpix_val2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + } + } + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -16614,6 +73533,14 @@ static void lts_aga_fm0_n0_p4_ihires_dhires_spr(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -16622,6 +73549,14 @@ static void lts_aga_fm0_n0_p4_ihires_dhires_spr(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -16645,11 +73580,11 @@ static void lts_aga_fm0_n0_p4_ihires_dhires_spr(void) denise_cck++; } } -static void lts_aga_fm0_n0_p4_ihires_dhires_spr_filtered(void) +static void lts_aga_fm0_dpf0_p6_ihires_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm0_n1_p4_ihires_dhires_spr(void) +static void lts_aga_fm0_dpf1_p6_ihires_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -16659,29 +73594,14 @@ static void lts_aga_fm0_n1_p4_ihires_dhires_spr(void) denise_hcounter_next = denise_hcounter_new; } int cnt = denise_hcounter << 2; - int cnt_next = denise_hcounter_next << 2; - int cmp = denise_hcounter_cmp << 2; - if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites_aga(cnt + 0); - uae_u8 pix0 = 0; - uae_u32 dpix_val0 = BLANK_COLOR; - if (!denise_blank_active) { - dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix0; - } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4e(); - } - if (bpldat_copy[1] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[1]) { - copybpl4o(); + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; } - loaded_pix = getbpl4(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -16690,28 +73610,28 @@ static void lts_aga_fm0_n1_p4_ihires_dhires_spr(void) sv0 = svt; } } - loaded_pixs[0] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } + } + internal_pixel_cnt += 1; matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix2; } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4e(); - } - if (bpldat_copy[1] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[1]) { - copybpl4o(); - } - loaded_pix = getbpl4(); uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -16720,8 +73640,22 @@ static void lts_aga_fm0_n1_p4_ihires_dhires_spr(void) sv2 = svt; } } - loaded_pixs[2] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } + } + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { uae_u32 spix0 = denise_render_sprites2(pix0, sv0); @@ -16730,6 +73664,13 @@ static void lts_aga_fm0_n1_p4_ihires_dhires_spr(void) } } dtbuf[h][0] = dpix_val0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } + dtbuf[h][1] = dpix_val1; if (sv2) { uae_u32 spix2 = denise_render_sprites2(pix2, sv2); if (spix2) { @@ -16737,6 +73678,13 @@ static void lts_aga_fm0_n1_p4_ihires_dhires_spr(void) } } dtbuf[h][2] = dpix_val2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + } + } + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -16745,6 +73693,14 @@ static void lts_aga_fm0_n1_p4_ihires_dhires_spr(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -16753,6 +73709,14 @@ static void lts_aga_fm0_n1_p4_ihires_dhires_spr(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -16776,11 +73740,11 @@ static void lts_aga_fm0_n1_p4_ihires_dhires_spr(void) denise_cck++; } } -static void lts_aga_fm0_n1_p4_ihires_dhires_spr_filtered(void) +static void lts_aga_fm0_dpf1_p6_ihires_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm0_dpf0_p4_ihires_dhires_spr(void) +static void lts_aga_fm0_ehb0_p6_ihires_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -16791,30 +73755,13 @@ 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; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4(); - } - loaded_pix = getbpl4(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -16823,30 +73770,28 @@ static void lts_aga_fm0_dpf0_p4_ihires_dhires_spr(void) sv0 = svt; } } - loaded_pixs[0] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } + } + internal_pixel_cnt += 1; matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; - } - last_bpl_pix = pix2; - } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4(); } - loaded_pix = getbpl4(); uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -16855,8 +73800,22 @@ static void lts_aga_fm0_dpf0_p4_ihires_dhires_spr(void) sv2 = svt; } } - loaded_pixs[2] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } + } + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { uae_u32 spix0 = denise_render_sprites2(pix0, sv0); @@ -16865,6 +73824,13 @@ static void lts_aga_fm0_dpf0_p4_ihires_dhires_spr(void) } } dtbuf[h][0] = dpix_val0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } + dtbuf[h][1] = dpix_val1; if (sv2) { uae_u32 spix2 = denise_render_sprites2(pix2, sv2); if (spix2) { @@ -16872,6 +73838,13 @@ static void lts_aga_fm0_dpf0_p4_ihires_dhires_spr(void) } } dtbuf[h][2] = dpix_val2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + } + } + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -16880,6 +73853,14 @@ static void lts_aga_fm0_dpf0_p4_ihires_dhires_spr(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -16888,6 +73869,14 @@ static void lts_aga_fm0_dpf0_p4_ihires_dhires_spr(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -16911,11 +73900,11 @@ static void lts_aga_fm0_dpf0_p4_ihires_dhires_spr(void) denise_cck++; } } -static void lts_aga_fm0_dpf0_p4_ihires_dhires_spr_filtered(void) +static void lts_aga_fm0_ehb0_p6_ihires_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm0_dpf1_p4_ihires_dhires_spr(void) +static void lts_aga_fm0_ehb1_p6_ihires_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -16926,33 +73915,13 @@ 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; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; - } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4e(); - } - if (bpldat_copy[1] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[1]) { - copybpl4o(); } - loaded_pix = getbpl4(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -16961,33 +73930,28 @@ static void lts_aga_fm0_dpf1_p4_ihires_dhires_spr(void) sv0 = svt; } } - loaded_pixs[0] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } + } + internal_pixel_cnt += 1; matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; - } - last_bpl_pix = pix2; - } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4e(); } - if (bpldat_copy[1] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[1]) { - copybpl4o(); - } - loaded_pix = getbpl4(); uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -16996,8 +73960,22 @@ static void lts_aga_fm0_dpf1_p4_ihires_dhires_spr(void) sv2 = svt; } } - loaded_pixs[2] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } + } + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { uae_u32 spix0 = denise_render_sprites2(pix0, sv0); @@ -17006,6 +73984,13 @@ static void lts_aga_fm0_dpf1_p4_ihires_dhires_spr(void) } } dtbuf[h][0] = dpix_val0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } + dtbuf[h][1] = dpix_val1; if (sv2) { uae_u32 spix2 = denise_render_sprites2(pix2, sv2); if (spix2) { @@ -17013,6 +73998,13 @@ static void lts_aga_fm0_dpf1_p4_ihires_dhires_spr(void) } } dtbuf[h][2] = dpix_val2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + } + } + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -17021,6 +74013,14 @@ static void lts_aga_fm0_dpf1_p4_ihires_dhires_spr(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -17029,6 +74029,14 @@ static void lts_aga_fm0_dpf1_p4_ihires_dhires_spr(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -17047,224 +74055,16 @@ static void lts_aga_fm0_dpf1_p4_ihires_dhires_spr(void) } denise_hcounter = denise_hcounter_new; if (denise_accurate_mode) { - denise_hcounter_cmp = denise_hcounter_new; - } - denise_cck++; - } -} -static void lts_aga_fm0_dpf1_p4_ihires_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb0_p4_ihires_dhires_spr(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb0_p4_ihires_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb1_p4_ihires_dhires_spr(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb1_p4_ihires_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham0_p4_ihires_dhires_spr(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham0_p4_ihires_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham1_p4_ihires_dhires_spr(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham1_p4_ihires_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb0_p4_ihires_dhires_spr(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb0_p4_ihires_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb1_p4_ihires_dhires_spr(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb1_p4_ihires_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_n0_p6_ihires_dhires_spr(void) -{ - lts_null(); -} -static void lts_aga_fm0_n0_p6_ihires_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_n1_p6_ihires_dhires_spr(void) -{ - lts_null(); -} -static void lts_aga_fm0_n1_p6_ihires_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_dpf0_p6_ihires_dhires_spr(void) -{ - lts_null(); -} -static void lts_aga_fm0_dpf0_p6_ihires_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_dpf1_p6_ihires_dhires_spr(void) -{ - lts_null(); -} -static void lts_aga_fm0_dpf1_p6_ihires_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb0_p6_ihires_dhires_spr(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb0_p6_ihires_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb1_p6_ihires_dhires_spr(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb1_p6_ihires_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham0_p6_ihires_dhires_spr(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham0_p6_ihires_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham1_p6_ihires_dhires_spr(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham1_p6_ihires_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb0_p6_ihires_dhires_spr(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb0_p6_ihires_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb1_p6_ihires_dhires_spr(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb1_p6_ihires_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_n0_p8_ihires_dhires_spr(void) -{ - lts_null(); -} -static void lts_aga_fm0_n0_p8_ihires_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_n1_p8_ihires_dhires_spr(void) -{ - lts_null(); -} -static void lts_aga_fm0_n1_p8_ihires_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_dpf0_p8_ihires_dhires_spr(void) -{ - lts_null(); -} -static void lts_aga_fm0_dpf0_p8_ihires_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_dpf1_p8_ihires_dhires_spr(void) -{ - lts_null(); -} -static void lts_aga_fm0_dpf1_p8_ihires_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb0_p8_ihires_dhires_spr(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb0_p8_ihires_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb1_p8_ihires_dhires_spr(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb1_p8_ihires_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham0_p8_ihires_dhires_spr(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham0_p8_ihires_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham1_p8_ihires_dhires_spr(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham1_p8_ihires_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb0_p8_ihires_dhires_spr(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb0_p8_ihires_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb1_p8_ihires_dhires_spr(void) -{ - lts_null(); + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm0_kehb1_p8_ihires_dhires_spr_filtered(void) +static void lts_aga_fm0_ehb1_p6_ihires_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm0_n0_p2_ishres_dhires(void) +static void lts_aga_fm0_ham0_p6_ihires_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -17275,49 +74075,96 @@ 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; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; } - last_bpl_pix = pix0; } - shiftbpl2(); - if (bpldat_copy[0] && ((cmp | 0) & 15) == bplcon1_shift_full_masked[0]) { - copybpl2(); + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; } - loaded_pix = getbpl2(); - loaded_pixs[0] = loaded_pix; - shiftbpl2(); - internal_pixel_cnt += 2; + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } + } + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; } - last_bpl_pix = pix2; } - shiftbpl2(); - if (bpldat_copy[0] && ((cmp | 2) & 15) == bplcon1_shift_full_masked[0]) { - copybpl2(); + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; } - loaded_pix = getbpl2(); - loaded_pixs[2] = loaded_pix; - shiftbpl2(); - internal_pixel_cnt += 2; + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } + } + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } dtbuf[h][0] = dpix_val0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } + dtbuf[h][1] = dpix_val1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } dtbuf[h][2] = dpix_val2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + } + } + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -17326,6 +74173,14 @@ static void lts_aga_fm0_n0_p2_ishres_dhires(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -17334,6 +74189,14 @@ static void lts_aga_fm0_n0_p2_ishres_dhires(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -17357,7 +74220,11 @@ static void lts_aga_fm0_n0_p2_ishres_dhires(void) denise_cck++; } } -static void lts_aga_fm0_n0_p2_ishres_dhires_filtered(void) +static void lts_aga_fm0_ham0_p6_ihires_dshres_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_ham1_p6_ihires_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -17368,83 +74235,96 @@ 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; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix0; } - shiftbpl2(); - if (bpldat_copy[0] && ((cmp | 0) & 15) == bplcon1_shift_full_masked[0]) { - copybpl2(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } } - loaded_pix = getbpl2(); - loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix1; } - shiftbpl2(); - if (bpldat_copy[0] && ((cmp | 1) & 15) == bplcon1_shift_full_masked[0]) { - copybpl2(); + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } } - loaded_pix = getbpl2(); - loaded_pixs[1] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix2; } - shiftbpl2(); - if (bpldat_copy[0] && ((cmp | 2) & 15) == bplcon1_shift_full_masked[0]) { - copybpl2(); + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } } - loaded_pix = getbpl2(); - loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix3; } - shiftbpl2(); - if (bpldat_copy[0] && ((cmp | 3) & 15) == bplcon1_shift_full_masked[0]) { - copybpl2(); + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } } - loaded_pix = getbpl2(); - loaded_pixs[3] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } dtbuf[h][0] = dpix_val0; - dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } + dtbuf[h][1] = dpix_val1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } dtbuf[h][2] = dpix_val2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + } + } + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -17453,6 +74333,14 @@ static void lts_aga_fm0_n0_p2_ishres_dhires_filtered(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -17461,6 +74349,14 @@ static void lts_aga_fm0_n0_p2_ishres_dhires_filtered(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -17484,7 +74380,11 @@ static void lts_aga_fm0_n0_p2_ishres_dhires_filtered(void) denise_cck++; } } -static void lts_aga_fm0_n1_p2_ishres_dhires(void) +static void lts_aga_fm0_ham1_p6_ihires_dshres_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_kehb0_p6_ihires_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -17495,55 +74395,96 @@ 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; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; } - last_bpl_pix = pix0; } - shiftbpl2(); - if (bpldat_copy[0] && ((cmp | 0) & 15) == bplcon1_shift_full_masked[0]) { - copybpl2e(); + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; } - if (bpldat_copy[1] && ((cmp | 0) & 15) == bplcon1_shift_full_masked[1]) { - copybpl2o(); + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } } - loaded_pix = getbpl2(); - loaded_pixs[0] = loaded_pix; - shiftbpl2(); - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; } - last_bpl_pix = pix2; } - shiftbpl2(); - if (bpldat_copy[0] && ((cmp | 2) & 15) == bplcon1_shift_full_masked[0]) { - copybpl2e(); + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; } - if (bpldat_copy[1] && ((cmp | 2) & 15) == bplcon1_shift_full_masked[1]) { - copybpl2o(); + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } } - loaded_pix = getbpl2(); - loaded_pixs[2] = loaded_pix; - shiftbpl2(); - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } dtbuf[h][0] = dpix_val0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } + dtbuf[h][1] = dpix_val1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } dtbuf[h][2] = dpix_val2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + } + } + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -17552,6 +74493,14 @@ static void lts_aga_fm0_n1_p2_ishres_dhires(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -17560,6 +74509,14 @@ static void lts_aga_fm0_n1_p2_ishres_dhires(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -17583,7 +74540,11 @@ static void lts_aga_fm0_n1_p2_ishres_dhires(void) denise_cck++; } } -static void lts_aga_fm0_n1_p2_ishres_dhires_filtered(void) +static void lts_aga_fm0_kehb0_p6_ihires_dshres_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_kehb1_p6_ihires_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -17594,103 +74555,112 @@ 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; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix0; - } - shiftbpl2(); - if (bpldat_copy[0] && ((cmp | 0) & 15) == bplcon1_shift_full_masked[0]) { - copybpl2e(); } - if (bpldat_copy[1] && ((cmp | 0) & 15) == bplcon1_shift_full_masked[1]) { - copybpl2o(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } } - loaded_pix = getbpl2(); - loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix1; - } - shiftbpl2(); - if (bpldat_copy[0] && ((cmp | 1) & 15) == bplcon1_shift_full_masked[0]) { - copybpl2e(); } - if (bpldat_copy[1] && ((cmp | 1) & 15) == bplcon1_shift_full_masked[1]) { - copybpl2o(); + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } } - loaded_pix = getbpl2(); - loaded_pixs[1] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix2; - } - shiftbpl2(); - if (bpldat_copy[0] && ((cmp | 2) & 15) == bplcon1_shift_full_masked[0]) { - copybpl2e(); } - if (bpldat_copy[1] && ((cmp | 2) & 15) == bplcon1_shift_full_masked[1]) { - copybpl2o(); + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } } - loaded_pix = getbpl2(); - loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix3; - } - shiftbpl2(); - if (bpldat_copy[0] && ((cmp | 3) & 15) == bplcon1_shift_full_masked[0]) { - copybpl2e(); } - if (bpldat_copy[1] && ((cmp | 3) & 15) == bplcon1_shift_full_masked[1]) { - copybpl2o(); + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } } - loaded_pix = getbpl2(); - loaded_pixs[3] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } dtbuf[h][0] = dpix_val0; - dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } + dtbuf[h][1] = dpix_val1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } dtbuf[h][2] = dpix_val2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + } + } + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { - t0 = decode_denise_specials_debug(t0, cnt + 0); + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); } #endif - *buf1++ = t0; - *buf2++ = t0; + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -17699,6 +74669,14 @@ static void lts_aga_fm0_n1_p2_ishres_dhires_filtered(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -17722,7 +74700,11 @@ static void lts_aga_fm0_n1_p2_ishres_dhires_filtered(void) denise_cck++; } } -static void lts_aga_fm0_dpf0_p2_ishres_dhires(void) +static void lts_aga_fm0_kehb1_p6_ihires_dshres_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_n0_p8_ihires_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -17733,59 +74715,96 @@ 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; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; } - last_bpl_pix = pix0; } - shiftbpl2(); - if (bpldat_copy[0] && ((cmp | 0) & 15) == bplcon1_shift_full_masked[0]) { - copybpl2(); + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; } - loaded_pix = getbpl2(); - loaded_pixs[0] = loaded_pix; - shiftbpl2(); - internal_pixel_cnt += 2; + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } + } + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; } - last_bpl_pix = pix2; } - shiftbpl2(); - if (bpldat_copy[0] && ((cmp | 2) & 15) == bplcon1_shift_full_masked[0]) { - copybpl2(); + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; } - loaded_pix = getbpl2(); - loaded_pixs[2] = loaded_pix; - shiftbpl2(); - internal_pixel_cnt += 2; + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } + } + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } dtbuf[h][0] = dpix_val0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } + dtbuf[h][1] = dpix_val1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } dtbuf[h][2] = dpix_val2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + } + } + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -17794,6 +74813,14 @@ static void lts_aga_fm0_dpf0_p2_ishres_dhires(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -17802,6 +74829,14 @@ static void lts_aga_fm0_dpf0_p2_ishres_dhires(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -17825,7 +74860,11 @@ static void lts_aga_fm0_dpf0_p2_ishres_dhires(void) denise_cck++; } } -static void lts_aga_fm0_dpf0_p2_ishres_dhires_filtered(void) +static void lts_aga_fm0_n0_p8_ihires_dshres_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_n1_p8_ihires_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -17836,103 +74875,96 @@ 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; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; } - shiftbpl2(); - if (bpldat_copy[0] && ((cmp | 0) & 15) == bplcon1_shift_full_masked[0]) { - copybpl2(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } } - loaded_pix = getbpl2(); - loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - if (dpf_lookup_no[pix1]) { - val1 += dblpfofs[bpldualpf2of]; - } - val1 ^= bplcon4_denise_xor_val; - dpix_val1 = denise_colors.acolors[val1]; - } - last_bpl_pix = pix1; } - shiftbpl2(); - if (bpldat_copy[0] && ((cmp | 1) & 15) == bplcon1_shift_full_masked[0]) { - copybpl2(); + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } } - loaded_pix = getbpl2(); - loaded_pixs[1] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; - } - last_bpl_pix = pix2; } - shiftbpl2(); - if (bpldat_copy[0] && ((cmp | 2) & 15) == bplcon1_shift_full_masked[0]) { - copybpl2(); + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } } - loaded_pix = getbpl2(); - loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - uae_u8 val3 = dpf_lookup[pix3]; - if (dpf_lookup_no[pix3]) { - val3 += dblpfofs[bpldualpf2of]; - } - val3 ^= bplcon4_denise_xor_val; - dpix_val3 = denise_colors.acolors[val3]; - } - last_bpl_pix = pix3; } - shiftbpl2(); - if (bpldat_copy[0] && ((cmp | 3) & 15) == bplcon1_shift_full_masked[0]) { - copybpl2(); + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } } - loaded_pix = getbpl2(); - loaded_pixs[3] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } dtbuf[h][0] = dpix_val0; - dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } + dtbuf[h][1] = dpix_val1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } dtbuf[h][2] = dpix_val2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + } + } + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -17941,6 +74973,14 @@ static void lts_aga_fm0_dpf0_p2_ishres_dhires_filtered(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -17949,6 +74989,14 @@ static void lts_aga_fm0_dpf0_p2_ishres_dhires_filtered(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -17972,7 +75020,11 @@ static void lts_aga_fm0_dpf0_p2_ishres_dhires_filtered(void) denise_cck++; } } -static void lts_aga_fm0_dpf1_p2_ishres_dhires(void) +static void lts_aga_fm0_n1_p8_ihires_dshres_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_dpf0_p8_ihires_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -17983,65 +75035,96 @@ 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; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; } - last_bpl_pix = pix0; } - shiftbpl2(); - if (bpldat_copy[0] && ((cmp | 0) & 15) == bplcon1_shift_full_masked[0]) { - copybpl2e(); + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; } - if (bpldat_copy[1] && ((cmp | 0) & 15) == bplcon1_shift_full_masked[1]) { - copybpl2o(); + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } } - loaded_pix = getbpl2(); - loaded_pixs[0] = loaded_pix; - shiftbpl2(); - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; } - last_bpl_pix = pix2; } - shiftbpl2(); - if (bpldat_copy[0] && ((cmp | 2) & 15) == bplcon1_shift_full_masked[0]) { - copybpl2e(); + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; } - if (bpldat_copy[1] && ((cmp | 2) & 15) == bplcon1_shift_full_masked[1]) { - copybpl2o(); + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } } - loaded_pix = getbpl2(); - loaded_pixs[2] = loaded_pix; - shiftbpl2(); - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } dtbuf[h][0] = dpix_val0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } + dtbuf[h][1] = dpix_val1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } dtbuf[h][2] = dpix_val2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + } + } + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -18050,6 +75133,14 @@ static void lts_aga_fm0_dpf1_p2_ishres_dhires(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -18058,6 +75149,14 @@ static void lts_aga_fm0_dpf1_p2_ishres_dhires(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -18081,7 +75180,11 @@ static void lts_aga_fm0_dpf1_p2_ishres_dhires(void) denise_cck++; } } -static void lts_aga_fm0_dpf1_p2_ishres_dhires_filtered(void) +static void lts_aga_fm0_dpf0_p8_ihires_dshres_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_dpf1_p8_ihires_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -18092,115 +75195,96 @@ 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; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; - } - shiftbpl2(); - if (bpldat_copy[0] && ((cmp | 0) & 15) == bplcon1_shift_full_masked[0]) { - copybpl2e(); } - if (bpldat_copy[1] && ((cmp | 0) & 15) == bplcon1_shift_full_masked[1]) { - copybpl2o(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } } - loaded_pix = getbpl2(); - loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - if (dpf_lookup_no[pix1]) { - val1 += dblpfofs[bpldualpf2of]; - } - val1 ^= bplcon4_denise_xor_val; - dpix_val1 = denise_colors.acolors[val1]; - } - last_bpl_pix = pix1; - } - shiftbpl2(); - if (bpldat_copy[0] && ((cmp | 1) & 15) == bplcon1_shift_full_masked[0]) { - copybpl2e(); } - if (bpldat_copy[1] && ((cmp | 1) & 15) == bplcon1_shift_full_masked[1]) { - copybpl2o(); + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } } - loaded_pix = getbpl2(); - loaded_pixs[1] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; - } - last_bpl_pix = pix2; - } - shiftbpl2(); - if (bpldat_copy[0] && ((cmp | 2) & 15) == bplcon1_shift_full_masked[0]) { - copybpl2e(); } - if (bpldat_copy[1] && ((cmp | 2) & 15) == bplcon1_shift_full_masked[1]) { - copybpl2o(); + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } } - loaded_pix = getbpl2(); - loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - uae_u8 val3 = dpf_lookup[pix3]; - if (dpf_lookup_no[pix3]) { - val3 += dblpfofs[bpldualpf2of]; - } - val3 ^= bplcon4_denise_xor_val; - dpix_val3 = denise_colors.acolors[val3]; - } - last_bpl_pix = pix3; - } - shiftbpl2(); - if (bpldat_copy[0] && ((cmp | 3) & 15) == bplcon1_shift_full_masked[0]) { - copybpl2e(); } - if (bpldat_copy[1] && ((cmp | 3) & 15) == bplcon1_shift_full_masked[1]) { - copybpl2o(); + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } } - loaded_pix = getbpl2(); - loaded_pixs[3] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } dtbuf[h][0] = dpix_val0; - dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } + dtbuf[h][1] = dpix_val1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } dtbuf[h][2] = dpix_val2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + } + } + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -18209,6 +75293,14 @@ static void lts_aga_fm0_dpf1_p2_ishres_dhires_filtered(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -18217,6 +75309,14 @@ static void lts_aga_fm0_dpf1_p2_ishres_dhires_filtered(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -18240,295 +75340,11 @@ static void lts_aga_fm0_dpf1_p2_ishres_dhires_filtered(void) denise_cck++; } } -static void lts_aga_fm0_ehb0_p2_ishres_dhires(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb0_p2_ishres_dhires_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb1_p2_ishres_dhires(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb1_p2_ishres_dhires_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham0_p2_ishres_dhires(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham0_p2_ishres_dhires_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham1_p2_ishres_dhires(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham1_p2_ishres_dhires_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb0_p2_ishres_dhires(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb0_p2_ishres_dhires_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb1_p2_ishres_dhires(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb1_p2_ishres_dhires_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_n0_p4_ishres_dhires(void) -{ - lts_null(); -} -static void lts_aga_fm0_n0_p4_ishres_dhires_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_n1_p4_ishres_dhires(void) -{ - lts_null(); -} -static void lts_aga_fm0_n1_p4_ishres_dhires_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_dpf0_p4_ishres_dhires(void) -{ - lts_null(); -} -static void lts_aga_fm0_dpf0_p4_ishres_dhires_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_dpf1_p4_ishres_dhires(void) -{ - lts_null(); -} -static void lts_aga_fm0_dpf1_p4_ishres_dhires_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb0_p4_ishres_dhires(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb0_p4_ishres_dhires_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb1_p4_ishres_dhires(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb1_p4_ishres_dhires_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham0_p4_ishres_dhires(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham0_p4_ishres_dhires_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham1_p4_ishres_dhires(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham1_p4_ishres_dhires_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb0_p4_ishres_dhires(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb0_p4_ishres_dhires_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb1_p4_ishres_dhires(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb1_p4_ishres_dhires_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_n0_p6_ishres_dhires(void) -{ - lts_null(); -} -static void lts_aga_fm0_n0_p6_ishres_dhires_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_n1_p6_ishres_dhires(void) -{ - lts_null(); -} -static void lts_aga_fm0_n1_p6_ishres_dhires_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_dpf0_p6_ishres_dhires(void) -{ - lts_null(); -} -static void lts_aga_fm0_dpf0_p6_ishres_dhires_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_dpf1_p6_ishres_dhires(void) -{ - lts_null(); -} -static void lts_aga_fm0_dpf1_p6_ishres_dhires_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb0_p6_ishres_dhires(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb0_p6_ishres_dhires_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb1_p6_ishres_dhires(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb1_p6_ishres_dhires_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham0_p6_ishres_dhires(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham0_p6_ishres_dhires_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham1_p6_ishres_dhires(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham1_p6_ishres_dhires_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb0_p6_ishres_dhires(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb0_p6_ishres_dhires_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb1_p6_ishres_dhires(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb1_p6_ishres_dhires_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_n0_p8_ishres_dhires(void) -{ - lts_null(); -} -static void lts_aga_fm0_n0_p8_ishres_dhires_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_n1_p8_ishres_dhires(void) -{ - lts_null(); -} -static void lts_aga_fm0_n1_p8_ishres_dhires_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_dpf0_p8_ishres_dhires(void) -{ - lts_null(); -} -static void lts_aga_fm0_dpf0_p8_ishres_dhires_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_dpf1_p8_ishres_dhires(void) -{ - lts_null(); -} -static void lts_aga_fm0_dpf1_p8_ishres_dhires_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb0_p8_ishres_dhires(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb0_p8_ishres_dhires_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb1_p8_ishres_dhires(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb1_p8_ishres_dhires_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham0_p8_ishres_dhires(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham0_p8_ishres_dhires_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham1_p8_ishres_dhires(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham1_p8_ishres_dhires_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb0_p8_ishres_dhires(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb0_p8_ishres_dhires_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb1_p8_ishres_dhires(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb1_p8_ishres_dhires_filtered(void) +static void lts_aga_fm0_dpf1_p8_ihires_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm0_n0_p2_ishres_dhires_spr(void) +static void lts_aga_fm0_ehb0_p8_ihires_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -18539,25 +75355,13 @@ 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; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix0; - } - shiftbpl2(); - if (bpldat_copy[0] && ((cmp | 0) & 15) == bplcon1_shift_full_masked[0]) { - copybpl2(); } - loaded_pix = getbpl2(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -18566,26 +75370,28 @@ static void lts_aga_fm0_n0_p2_ishres_dhires_spr(void) sv0 = svt; } } - loaded_pixs[0] = loaded_pix; - shiftbpl2(); - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } + } + internal_pixel_cnt += 1; matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix2; - } - shiftbpl2(); - if (bpldat_copy[0] && ((cmp | 2) & 15) == bplcon1_shift_full_masked[0]) { - copybpl2(); } - loaded_pix = getbpl2(); uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -18594,9 +75400,22 @@ static void lts_aga_fm0_n0_p2_ishres_dhires_spr(void) sv2 = svt; } } - loaded_pixs[2] = loaded_pix; - shiftbpl2(); - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } + } + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { uae_u32 spix0 = denise_render_sprites2(pix0, sv0); @@ -18605,6 +75424,13 @@ static void lts_aga_fm0_n0_p2_ishres_dhires_spr(void) } } dtbuf[h][0] = dpix_val0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } + dtbuf[h][1] = dpix_val1; if (sv2) { uae_u32 spix2 = denise_render_sprites2(pix2, sv2); if (spix2) { @@ -18612,6 +75438,13 @@ static void lts_aga_fm0_n0_p2_ishres_dhires_spr(void) } } dtbuf[h][2] = dpix_val2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + } + } + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -18620,6 +75453,14 @@ static void lts_aga_fm0_n0_p2_ishres_dhires_spr(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -18628,6 +75469,14 @@ static void lts_aga_fm0_n0_p2_ishres_dhires_spr(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -18651,7 +75500,11 @@ static void lts_aga_fm0_n0_p2_ishres_dhires_spr(void) denise_cck++; } } -static void lts_aga_fm0_n0_p2_ishres_dhires_spr_filtered(void) +static void lts_aga_fm0_ehb0_p8_ihires_dshres_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_ehb1_p8_ihires_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -18662,25 +75515,13 @@ 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; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix0; } - shiftbpl2(); - if (bpldat_copy[0] && ((cmp | 0) & 15) == bplcon1_shift_full_masked[0]) { - copybpl2(); - } - loaded_pix = getbpl2(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -18689,42 +75530,28 @@ static void lts_aga_fm0_n0_p2_ishres_dhires_spr_filtered(void) sv0 = svt; } } - loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix1; } - shiftbpl2(); - if (bpldat_copy[0] && ((cmp | 1) & 15) == bplcon1_shift_full_masked[0]) { - copybpl2(); + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } } - loaded_pix = getbpl2(); - loaded_pixs[1] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; - if (!denise_blank_active) { - dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix2; - } - shiftbpl2(); - if (bpldat_copy[0] && ((cmp | 2) & 15) == bplcon1_shift_full_masked[0]) { - copybpl2(); + if (!denise_blank_active) { + dpix_val2 = bordercolor; } - loaded_pix = getbpl2(); uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -18733,44 +75560,51 @@ static void lts_aga_fm0_n0_p2_ishres_dhires_spr_filtered(void) sv2 = svt; } } - loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix3; } - shiftbpl2(); - if (bpldat_copy[0] && ((cmp | 3) & 15) == bplcon1_shift_full_masked[0]) { - copybpl2(); + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } } - loaded_pix = getbpl2(); - loaded_pixs[3] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { uae_u32 spix0 = denise_render_sprites2(pix0, sv0); if (spix0) { dpix_val0 = denise_colors.acolors[spix0]; - dpix_val1 = dpix_val0; } } - dpix_val0 = filter_pixel(dpix_val0, dpix_val1); dtbuf[h][0] = dpix_val0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } + dtbuf[h][1] = dpix_val1; if (sv2) { uae_u32 spix2 = denise_render_sprites2(pix2, sv2); if (spix2) { dpix_val2 = denise_colors.acolors[spix2]; - dpix_val3 = dpix_val2; } } - dpix_val2 = filter_pixel(dpix_val2, dpix_val3); dtbuf[h][2] = dpix_val2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + } + } + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -18779,6 +75613,14 @@ static void lts_aga_fm0_n0_p2_ishres_dhires_spr_filtered(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -18787,6 +75629,14 @@ static void lts_aga_fm0_n0_p2_ishres_dhires_spr_filtered(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -18810,7 +75660,11 @@ static void lts_aga_fm0_n0_p2_ishres_dhires_spr_filtered(void) denise_cck++; } } -static void lts_aga_fm0_n1_p2_ishres_dhires_spr(void) +static void lts_aga_fm0_ehb1_p8_ihires_dshres_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_ham0_p8_ihires_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -18821,28 +75675,13 @@ 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; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix0; - } - shiftbpl2(); - if (bpldat_copy[0] && ((cmp | 0) & 15) == bplcon1_shift_full_masked[0]) { - copybpl2e(); - } - if (bpldat_copy[1] && ((cmp | 0) & 15) == bplcon1_shift_full_masked[1]) { - copybpl2o(); } - loaded_pix = getbpl2(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -18851,29 +75690,28 @@ static void lts_aga_fm0_n1_p2_ishres_dhires_spr(void) sv0 = svt; } } - loaded_pixs[0] = loaded_pix; - shiftbpl2(); - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } + } + internal_pixel_cnt += 1; matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix2; - } - shiftbpl2(); - if (bpldat_copy[0] && ((cmp | 2) & 15) == bplcon1_shift_full_masked[0]) { - copybpl2e(); - } - if (bpldat_copy[1] && ((cmp | 2) & 15) == bplcon1_shift_full_masked[1]) { - copybpl2o(); } - loaded_pix = getbpl2(); uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -18882,9 +75720,22 @@ static void lts_aga_fm0_n1_p2_ishres_dhires_spr(void) sv2 = svt; } } - loaded_pixs[2] = loaded_pix; - shiftbpl2(); - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } + } + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { uae_u32 spix0 = denise_render_sprites2(pix0, sv0); @@ -18893,6 +75744,13 @@ static void lts_aga_fm0_n1_p2_ishres_dhires_spr(void) } } dtbuf[h][0] = dpix_val0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } + dtbuf[h][1] = dpix_val1; if (sv2) { uae_u32 spix2 = denise_render_sprites2(pix2, sv2); if (spix2) { @@ -18900,6 +75758,13 @@ static void lts_aga_fm0_n1_p2_ishres_dhires_spr(void) } } dtbuf[h][2] = dpix_val2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + } + } + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -18908,6 +75773,14 @@ static void lts_aga_fm0_n1_p2_ishres_dhires_spr(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -18916,6 +75789,14 @@ static void lts_aga_fm0_n1_p2_ishres_dhires_spr(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -18939,7 +75820,11 @@ static void lts_aga_fm0_n1_p2_ishres_dhires_spr(void) denise_cck++; } } -static void lts_aga_fm0_n1_p2_ishres_dhires_spr_filtered(void) +static void lts_aga_fm0_ham0_p8_ihires_dshres_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_ham1_p8_ihires_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -18950,28 +75835,13 @@ 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; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix0; } - shiftbpl2(); - if (bpldat_copy[0] && ((cmp | 0) & 15) == bplcon1_shift_full_masked[0]) { - copybpl2e(); - } - if (bpldat_copy[1] && ((cmp | 0) & 15) == bplcon1_shift_full_masked[1]) { - copybpl2o(); - } - loaded_pix = getbpl2(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -18980,48 +75850,28 @@ static void lts_aga_fm0_n1_p2_ishres_dhires_spr_filtered(void) sv0 = svt; } } - loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix1; - } - shiftbpl2(); - if (bpldat_copy[0] && ((cmp | 1) & 15) == bplcon1_shift_full_masked[0]) { - copybpl2e(); } - if (bpldat_copy[1] && ((cmp | 1) & 15) == bplcon1_shift_full_masked[1]) { - copybpl2o(); + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } } - loaded_pix = getbpl2(); - loaded_pixs[1] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix2; } - shiftbpl2(); - if (bpldat_copy[0] && ((cmp | 2) & 15) == bplcon1_shift_full_masked[0]) { - copybpl2e(); - } - if (bpldat_copy[1] && ((cmp | 2) & 15) == bplcon1_shift_full_masked[1]) { - copybpl2o(); - } - loaded_pix = getbpl2(); uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -19030,47 +75880,51 @@ static void lts_aga_fm0_n1_p2_ishres_dhires_spr_filtered(void) sv2 = svt; } } - loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix3; - } - shiftbpl2(); - if (bpldat_copy[0] && ((cmp | 3) & 15) == bplcon1_shift_full_masked[0]) { - copybpl2e(); } - if (bpldat_copy[1] && ((cmp | 3) & 15) == bplcon1_shift_full_masked[1]) { - copybpl2o(); + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } } - loaded_pix = getbpl2(); - loaded_pixs[3] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { uae_u32 spix0 = denise_render_sprites2(pix0, sv0); if (spix0) { dpix_val0 = denise_colors.acolors[spix0]; - dpix_val1 = dpix_val0; } } - dpix_val0 = filter_pixel(dpix_val0, dpix_val1); dtbuf[h][0] = dpix_val0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } + dtbuf[h][1] = dpix_val1; if (sv2) { uae_u32 spix2 = denise_render_sprites2(pix2, sv2); if (spix2) { dpix_val2 = denise_colors.acolors[spix2]; - dpix_val3 = dpix_val2; } } - dpix_val2 = filter_pixel(dpix_val2, dpix_val3); dtbuf[h][2] = dpix_val2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + } + } + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -19079,6 +75933,14 @@ static void lts_aga_fm0_n1_p2_ishres_dhires_spr_filtered(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -19087,6 +75949,14 @@ static void lts_aga_fm0_n1_p2_ishres_dhires_spr_filtered(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -19110,7 +75980,11 @@ static void lts_aga_fm0_n1_p2_ishres_dhires_spr_filtered(void) denise_cck++; } } -static void lts_aga_fm0_dpf0_p2_ishres_dhires_spr(void) +static void lts_aga_fm0_ham1_p8_ihires_dshres_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_kehb0_p8_ihires_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -19121,30 +75995,13 @@ 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; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; - } - shiftbpl2(); - if (bpldat_copy[0] && ((cmp | 0) & 15) == bplcon1_shift_full_masked[0]) { - copybpl2(); } - loaded_pix = getbpl2(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -19153,31 +76010,28 @@ static void lts_aga_fm0_dpf0_p2_ishres_dhires_spr(void) sv0 = svt; } } - loaded_pixs[0] = loaded_pix; - shiftbpl2(); - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } + } + internal_pixel_cnt += 1; matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; - } - last_bpl_pix = pix2; - } - shiftbpl2(); - if (bpldat_copy[0] && ((cmp | 2) & 15) == bplcon1_shift_full_masked[0]) { - copybpl2(); } - loaded_pix = getbpl2(); uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -19186,9 +76040,22 @@ static void lts_aga_fm0_dpf0_p2_ishres_dhires_spr(void) sv2 = svt; } } - loaded_pixs[2] = loaded_pix; - shiftbpl2(); - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } + } + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { uae_u32 spix0 = denise_render_sprites2(pix0, sv0); @@ -19197,6 +76064,13 @@ static void lts_aga_fm0_dpf0_p2_ishres_dhires_spr(void) } } dtbuf[h][0] = dpix_val0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } + dtbuf[h][1] = dpix_val1; if (sv2) { uae_u32 spix2 = denise_render_sprites2(pix2, sv2); if (spix2) { @@ -19204,6 +76078,13 @@ static void lts_aga_fm0_dpf0_p2_ishres_dhires_spr(void) } } dtbuf[h][2] = dpix_val2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + } + } + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -19212,6 +76093,14 @@ static void lts_aga_fm0_dpf0_p2_ishres_dhires_spr(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -19220,6 +76109,14 @@ static void lts_aga_fm0_dpf0_p2_ishres_dhires_spr(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -19243,7 +76140,11 @@ static void lts_aga_fm0_dpf0_p2_ishres_dhires_spr(void) denise_cck++; } } -static void lts_aga_fm0_dpf0_p2_ishres_dhires_spr_filtered(void) +static void lts_aga_fm0_kehb0_p8_ihires_dshres_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_kehb1_p8_ihires_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -19254,30 +76155,13 @@ 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; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; - } - shiftbpl2(); - if (bpldat_copy[0] && ((cmp | 0) & 15) == bplcon1_shift_full_masked[0]) { - copybpl2(); } - loaded_pix = getbpl2(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -19286,52 +76170,28 @@ static void lts_aga_fm0_dpf0_p2_ishres_dhires_spr_filtered(void) sv0 = svt; } } - loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - if (dpf_lookup_no[pix1]) { - val1 += dblpfofs[bpldualpf2of]; - } - val1 ^= bplcon4_denise_xor_val; - dpix_val1 = denise_colors.acolors[val1]; - } - last_bpl_pix = pix1; } - shiftbpl2(); - if (bpldat_copy[0] && ((cmp | 1) & 15) == bplcon1_shift_full_masked[0]) { - copybpl2(); + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } } - loaded_pix = getbpl2(); - loaded_pixs[1] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; - } - last_bpl_pix = pix2; - } - shiftbpl2(); - if (bpldat_copy[0] && ((cmp | 2) & 15) == bplcon1_shift_full_masked[0]) { - copybpl2(); } - loaded_pix = getbpl2(); uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -19340,49 +76200,51 @@ static void lts_aga_fm0_dpf0_p2_ishres_dhires_spr_filtered(void) sv2 = svt; } } - loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - uae_u8 val3 = dpf_lookup[pix3]; - if (dpf_lookup_no[pix3]) { - val3 += dblpfofs[bpldualpf2of]; - } - val3 ^= bplcon4_denise_xor_val; - dpix_val3 = denise_colors.acolors[val3]; - } - last_bpl_pix = pix3; } - shiftbpl2(); - if (bpldat_copy[0] && ((cmp | 3) & 15) == bplcon1_shift_full_masked[0]) { - copybpl2(); + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } } - loaded_pix = getbpl2(); - loaded_pixs[3] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { uae_u32 spix0 = denise_render_sprites2(pix0, sv0); if (spix0) { dpix_val0 = denise_colors.acolors[spix0]; - dpix_val1 = dpix_val0; } } - dpix_val0 = filter_pixel(dpix_val0, dpix_val1); dtbuf[h][0] = dpix_val0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } + dtbuf[h][1] = dpix_val1; if (sv2) { uae_u32 spix2 = denise_render_sprites2(pix2, sv2); if (spix2) { dpix_val2 = denise_colors.acolors[spix2]; - dpix_val3 = dpix_val2; } } - dpix_val2 = filter_pixel(dpix_val2, dpix_val3); dtbuf[h][2] = dpix_val2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + } + } + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -19391,6 +76253,14 @@ static void lts_aga_fm0_dpf0_p2_ishres_dhires_spr_filtered(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -19399,6 +76269,14 @@ static void lts_aga_fm0_dpf0_p2_ishres_dhires_spr_filtered(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -19422,7 +76300,11 @@ static void lts_aga_fm0_dpf0_p2_ishres_dhires_spr_filtered(void) denise_cck++; } } -static void lts_aga_fm0_dpf1_p2_ishres_dhires_spr(void) +static void lts_aga_fm0_kehb1_p8_ihires_dshres_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_n0_p2_ishres_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -19435,7 +76317,6 @@ static void lts_aga_fm0_dpf1_p2_ishres_dhires_spr(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -19443,35 +76324,35 @@ static void lts_aga_fm0_dpf1_p2_ishres_dhires_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix0; } shiftbpl2(); if (bpldat_copy[0] && ((cmp | 0) & 15) == bplcon1_shift_full_masked[0]) { - copybpl2e(); - } - if (bpldat_copy[1] && ((cmp | 0) & 15) == bplcon1_shift_full_masked[1]) { - copybpl2o(); + copybpl2(); } loaded_pix = getbpl2(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; } + last_bpl_pix = pix1; } - loaded_pixs[0] = loaded_pix; shiftbpl2(); - internal_pixel_cnt += 2; - matchsprites_aga(cnt + 2); + if (bpldat_copy[0] && ((cmp | 1) & 15) == bplcon1_shift_full_masked[0]) { + copybpl2(); + } + loaded_pix = getbpl2(); + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { @@ -19479,49 +76360,40 @@ static void lts_aga_fm0_dpf1_p2_ishres_dhires_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix2; } shiftbpl2(); if (bpldat_copy[0] && ((cmp | 2) & 15) == bplcon1_shift_full_masked[0]) { - copybpl2e(); - } - if (bpldat_copy[1] && ((cmp | 2) & 15) == bplcon1_shift_full_masked[1]) { - copybpl2o(); + copybpl2(); } loaded_pix = getbpl2(); - uae_u32 sv2 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv2 = svt; + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; } + last_bpl_pix = pix3; } - loaded_pixs[2] = loaded_pix; shiftbpl2(); - internal_pixel_cnt += 2; + if (bpldat_copy[0] && ((cmp | 3) & 15) == bplcon1_shift_full_masked[0]) { + copybpl2(); + } + loaded_pix = getbpl2(); + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - } - } dtbuf[h][0] = dpix_val0; - if (sv2) { - uae_u32 spix2 = denise_render_sprites2(pix2, sv2); - if (spix2) { - dpix_val2 = denise_colors.acolors[spix2]; - } - } + dtbuf[h][1] = dpix_val1; dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -19530,6 +76402,14 @@ static void lts_aga_fm0_dpf1_p2_ishres_dhires_spr(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -19538,6 +76418,14 @@ static void lts_aga_fm0_dpf1_p2_ishres_dhires_spr(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -19561,7 +76449,11 @@ static void lts_aga_fm0_dpf1_p2_ishres_dhires_spr(void) denise_cck++; } } -static void lts_aga_fm0_dpf1_p2_ishres_dhires_spr_filtered(void) +static void lts_aga_fm0_n0_p2_ishres_dshres_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_n1_p2_ishres_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -19574,7 +76466,6 @@ static void lts_aga_fm0_dpf1_p2_ishres_dhires_spr_filtered(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -19582,12 +76473,7 @@ static void lts_aga_fm0_dpf1_p2_ishres_dhires_spr_filtered(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix0; } @@ -19599,15 +76485,8 @@ static void lts_aga_fm0_dpf1_p2_ishres_dhires_spr_filtered(void) copybpl2o(); } loaded_pix = getbpl2(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } - } loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 1; uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { @@ -19615,12 +76494,7 @@ static void lts_aga_fm0_dpf1_p2_ishres_dhires_spr_filtered(void) if (denise_hdiw && bpl1dat_trigger) { pix1 = loaded_pixs[1]; clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - if (dpf_lookup_no[pix1]) { - val1 += dblpfofs[bpldualpf2of]; - } - val1 ^= bplcon4_denise_xor_val; - dpix_val1 = denise_colors.acolors[val1]; + dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix1; } @@ -19633,8 +76507,7 @@ static void lts_aga_fm0_dpf1_p2_ishres_dhires_spr_filtered(void) } loaded_pix = getbpl2(); loaded_pixs[1] = loaded_pix; - internal_pixel_cnt += 2; - matchsprites_aga(cnt + 2); + internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { @@ -19642,12 +76515,7 @@ static void lts_aga_fm0_dpf1_p2_ishres_dhires_spr_filtered(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix2; } @@ -19659,15 +76527,8 @@ static void lts_aga_fm0_dpf1_p2_ishres_dhires_spr_filtered(void) copybpl2o(); } loaded_pix = getbpl2(); - uae_u32 sv2 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv2 = svt; - } - } loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 1; uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { @@ -19675,12 +76536,7 @@ static void lts_aga_fm0_dpf1_p2_ishres_dhires_spr_filtered(void) if (denise_hdiw && bpl1dat_trigger) { pix3 = loaded_pixs[3]; clxdat |= bplcoltable[pix3]; - uae_u8 val3 = dpf_lookup[pix3]; - if (dpf_lookup_no[pix3]) { - val3 += dblpfofs[bpldualpf2of]; - } - val3 ^= bplcon4_denise_xor_val; - dpix_val3 = denise_colors.acolors[val3]; + dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix3; } @@ -19693,26 +76549,12 @@ static void lts_aga_fm0_dpf1_p2_ishres_dhires_spr_filtered(void) } loaded_pix = getbpl2(); loaded_pixs[3] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - dpix_val1 = dpix_val0; - } - } - dpix_val0 = filter_pixel(dpix_val0, dpix_val1); dtbuf[h][0] = dpix_val0; - if (sv2) { - uae_u32 spix2 = denise_render_sprites2(pix2, sv2); - if (spix2) { - dpix_val2 = denise_colors.acolors[spix2]; - dpix_val3 = dpix_val2; - } - } - dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + dtbuf[h][1] = dpix_val1; dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -19721,326 +76563,58 @@ static void lts_aga_fm0_dpf1_p2_ishres_dhires_spr_filtered(void) #endif *buf1++ = t0; *buf2++ = t0; - uae_u32 t2 = dtbuf[h ^ lol][2]; + uae_u32 t1 = dtbuf[h ^ lol][1]; #ifdef DEBUGGER if (decode_specials_debug) { - t2 = decode_denise_specials_debug(t2, cnt + 2); + t1 = decode_denise_specials_debug(t1, cnt + 1); } #endif - *buf1++ = t2; - *buf2++ = t2; - } - sprites_hidden = sprites_hidden2; - #ifdef DEBUGGER - *debug_dma_dhpos_odd = denise_hcounter; - #endif - denise_hcounter_cmp++; - denise_hcounter_cmp &= 511; - denise_hcounter++; - denise_hcounter &= 511; - denise_hcounter_next++; - denise_hcounter_next &= 511; - } - denise_pixtotal++; - if (denise_pixtotal == 0) { - internal_pixel_start_cnt = internal_pixel_cnt; - } - denise_hcounter = denise_hcounter_new; - if (denise_accurate_mode) { - denise_hcounter_cmp = denise_hcounter_new; - } - denise_cck++; - } -} -static void lts_aga_fm0_ehb0_p2_ishres_dhires_spr(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb0_p2_ishres_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb1_p2_ishres_dhires_spr(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb1_p2_ishres_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham0_p2_ishres_dhires_spr(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham0_p2_ishres_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham1_p2_ishres_dhires_spr(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham1_p2_ishres_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb0_p2_ishres_dhires_spr(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb0_p2_ishres_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb1_p2_ishres_dhires_spr(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb1_p2_ishres_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_n0_p4_ishres_dhires_spr(void) -{ - lts_null(); -} -static void lts_aga_fm0_n0_p4_ishres_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_n1_p4_ishres_dhires_spr(void) -{ - lts_null(); -} -static void lts_aga_fm0_n1_p4_ishres_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_dpf0_p4_ishres_dhires_spr(void) -{ - lts_null(); -} -static void lts_aga_fm0_dpf0_p4_ishres_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_dpf1_p4_ishres_dhires_spr(void) -{ - lts_null(); -} -static void lts_aga_fm0_dpf1_p4_ishres_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb0_p4_ishres_dhires_spr(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb0_p4_ishres_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb1_p4_ishres_dhires_spr(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb1_p4_ishres_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham0_p4_ishres_dhires_spr(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham0_p4_ishres_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham1_p4_ishres_dhires_spr(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham1_p4_ishres_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb0_p4_ishres_dhires_spr(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb0_p4_ishres_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb1_p4_ishres_dhires_spr(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb1_p4_ishres_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_n0_p6_ishres_dhires_spr(void) -{ - lts_null(); -} -static void lts_aga_fm0_n0_p6_ishres_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_n1_p6_ishres_dhires_spr(void) -{ - lts_null(); -} -static void lts_aga_fm0_n1_p6_ishres_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_dpf0_p6_ishres_dhires_spr(void) -{ - lts_null(); -} -static void lts_aga_fm0_dpf0_p6_ishres_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_dpf1_p6_ishres_dhires_spr(void) -{ - lts_null(); -} -static void lts_aga_fm0_dpf1_p6_ishres_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb0_p6_ishres_dhires_spr(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb0_p6_ishres_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb1_p6_ishres_dhires_spr(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb1_p6_ishres_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham0_p6_ishres_dhires_spr(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham0_p6_ishres_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham1_p6_ishres_dhires_spr(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham1_p6_ishres_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb0_p6_ishres_dhires_spr(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb0_p6_ishres_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb1_p6_ishres_dhires_spr(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb1_p6_ishres_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_n0_p8_ishres_dhires_spr(void) -{ - lts_null(); -} -static void lts_aga_fm0_n0_p8_ishres_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_n1_p8_ishres_dhires_spr(void) -{ - lts_null(); -} -static void lts_aga_fm0_n1_p8_ishres_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_dpf0_p8_ishres_dhires_spr(void) -{ - lts_null(); -} -static void lts_aga_fm0_dpf0_p8_ishres_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_dpf1_p8_ishres_dhires_spr(void) -{ - lts_null(); -} -static void lts_aga_fm0_dpf1_p8_ishres_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb0_p8_ishres_dhires_spr(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb0_p8_ishres_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb1_p8_ishres_dhires_spr(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb1_p8_ishres_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham0_p8_ishres_dhires_spr(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham0_p8_ishres_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham1_p8_ishres_dhires_spr(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham1_p8_ishres_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb0_p8_ishres_dhires_spr(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb0_p8_ishres_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb1_p8_ishres_dhires_spr(void) -{ - lts_null(); + *buf1++ = t1; + *buf2++ = t1; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm0_kehb1_p8_ishres_dhires_spr_filtered(void) +static void lts_aga_fm0_n1_p2_ishres_dshres_filtered(void) { lts_null(); } -static void lts_aga_fm0_n0_p2_ilores_dshres(void) +static void lts_aga_fm0_dpf0_p2_ishres_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -20060,21 +76634,20 @@ static void lts_aga_fm0_n0_p2_ilores_dshres(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; } last_bpl_pix = pix0; } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl2(); - loaded_pix = getbpl2(); - } - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + shiftbpl2(); + if (bpldat_copy[0] && ((cmp | 0) & 15) == bplcon1_shift_full_masked[0]) { copybpl2(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl2(); } + loaded_pix = getbpl2(); loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; uae_u8 pix1 = 0; @@ -20084,21 +76657,20 @@ static void lts_aga_fm0_n0_p2_ilores_dshres(void) if (denise_hdiw && bpl1dat_trigger) { pix1 = loaded_pixs[1]; clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; + uae_u8 val1 = dpf_lookup[pix1]; + if (dpf_lookup_no[pix1]) { + val1 += dblpfofs[bpldualpf2of]; + } + val1 ^= bplcon4_denise_xor_val; + dpix_val1 = denise_colors.acolors[val1]; } last_bpl_pix = pix1; } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl2(); - loaded_pix = getbpl2(); - } - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + shiftbpl2(); + if (bpldat_copy[0] && ((cmp | 1) & 15) == bplcon1_shift_full_masked[0]) { copybpl2(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl2(); } + loaded_pix = getbpl2(); loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; uae_u8 pix2 = 0; @@ -20108,21 +76680,20 @@ static void lts_aga_fm0_n0_p2_ilores_dshres(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; } last_bpl_pix = pix2; } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl2(); - loaded_pix = getbpl2(); - } - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + shiftbpl2(); + if (bpldat_copy[0] && ((cmp | 2) & 15) == bplcon1_shift_full_masked[0]) { copybpl2(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl2(); } + loaded_pix = getbpl2(); loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; uae_u8 pix3 = 0; @@ -20132,21 +76703,20 @@ static void lts_aga_fm0_n0_p2_ilores_dshres(void) if (denise_hdiw && bpl1dat_trigger) { pix3 = loaded_pixs[3]; clxdat |= bplcoltable[pix3]; - dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; + uae_u8 val3 = dpf_lookup[pix3]; + if (dpf_lookup_no[pix3]) { + val3 += dblpfofs[bpldualpf2of]; + } + val3 ^= bplcon4_denise_xor_val; + dpix_val3 = denise_colors.acolors[val3]; } last_bpl_pix = pix3; } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl2(); - loaded_pix = getbpl2(); - } - if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { + shiftbpl2(); + if (bpldat_copy[0] && ((cmp | 3) & 15) == bplcon1_shift_full_masked[0]) { copybpl2(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl2(); } + loaded_pix = getbpl2(); loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { @@ -20209,11 +76779,11 @@ static void lts_aga_fm0_n0_p2_ilores_dshres(void) denise_cck++; } } -static void lts_aga_fm0_n0_p2_ilores_dshres_filtered(void) +static void lts_aga_fm0_dpf0_p2_ishres_dshres_filtered(void) { lts_null(); } -static void lts_aga_fm0_n1_p2_ilores_dshres(void) +static void lts_aga_fm0_dpf1_p2_ishres_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -20233,32 +76803,23 @@ static void lts_aga_fm0_n1_p2_ilores_dshres(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; } last_bpl_pix = pix0; } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl2e(); - loaded_pix = getbpl2(); - } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl2o(); - loaded_pix = getbpl2(); - } - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + shiftbpl2(); + if (bpldat_copy[0] && ((cmp | 0) & 15) == bplcon1_shift_full_masked[0]) { copybpl2e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl2(); } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + if (bpldat_copy[1] && ((cmp | 0) & 15) == bplcon1_shift_full_masked[1]) { copybpl2o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl2(); } + loaded_pix = getbpl2(); loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; uae_u8 pix1 = 0; @@ -20268,32 +76829,23 @@ static void lts_aga_fm0_n1_p2_ilores_dshres(void) if (denise_hdiw && bpl1dat_trigger) { pix1 = loaded_pixs[1]; clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; + uae_u8 val1 = dpf_lookup[pix1]; + if (dpf_lookup_no[pix1]) { + val1 += dblpfofs[bpldualpf2of]; + } + val1 ^= bplcon4_denise_xor_val; + dpix_val1 = denise_colors.acolors[val1]; } last_bpl_pix = pix1; } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl2e(); - loaded_pix = getbpl2(); - } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl2o(); - loaded_pix = getbpl2(); - } - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + shiftbpl2(); + if (bpldat_copy[0] && ((cmp | 1) & 15) == bplcon1_shift_full_masked[0]) { copybpl2e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl2(); } - if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { + if (bpldat_copy[1] && ((cmp | 1) & 15) == bplcon1_shift_full_masked[1]) { copybpl2o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl2(); } + loaded_pix = getbpl2(); loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; uae_u8 pix2 = 0; @@ -20303,32 +76855,23 @@ static void lts_aga_fm0_n1_p2_ilores_dshres(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; } last_bpl_pix = pix2; } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl2e(); - loaded_pix = getbpl2(); - } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl2o(); - loaded_pix = getbpl2(); - } - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + shiftbpl2(); + if (bpldat_copy[0] && ((cmp | 2) & 15) == bplcon1_shift_full_masked[0]) { copybpl2e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl2(); } - if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { + if (bpldat_copy[1] && ((cmp | 2) & 15) == bplcon1_shift_full_masked[1]) { copybpl2o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl2(); } + loaded_pix = getbpl2(); loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; uae_u8 pix3 = 0; @@ -20338,33 +76881,324 @@ static void lts_aga_fm0_n1_p2_ilores_dshres(void) if (denise_hdiw && bpl1dat_trigger) { pix3 = loaded_pixs[3]; clxdat |= bplcoltable[pix3]; - dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; + uae_u8 val3 = dpf_lookup[pix3]; + if (dpf_lookup_no[pix3]) { + val3 += dblpfofs[bpldualpf2of]; + } + val3 ^= bplcon4_denise_xor_val; + dpix_val3 = denise_colors.acolors[val3]; } last_bpl_pix = pix3; } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl2e(); - loaded_pix = getbpl2(); + shiftbpl2(); + if (bpldat_copy[0] && ((cmp | 3) & 15) == bplcon1_shift_full_masked[0]) { + copybpl2e(); } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl2o(); - loaded_pix = getbpl2(); + if (bpldat_copy[1] && ((cmp | 3) & 15) == bplcon1_shift_full_masked[1]) { + copybpl2o(); + } + loaded_pix = getbpl2(); + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 1; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; + dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_dpf1_p2_ishres_dshres_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_ehb0_p2_ishres_dshres(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 1; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 1; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; + dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ehb0_p2_ishres_dshres_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_ehb1_p2_ishres_dshres(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 1; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 1; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; + dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ehb1_p2_ishres_dshres_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_ham0_p2_ishres_dshres(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; } - if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { - copybpl2e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl2(); + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; } - if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) { - copybpl2o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl2(); + internal_pixel_cnt += 1; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; } - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; @@ -20426,11 +77260,11 @@ static void lts_aga_fm0_n1_p2_ilores_dshres(void) denise_cck++; } } -static void lts_aga_fm0_n1_p2_ilores_dshres_filtered(void) +static void lts_aga_fm0_ham0_p2_ishres_dshres_filtered(void) { lts_null(); } -static void lts_aga_fm0_dpf0_p2_ilores_dshres(void) +static void lts_aga_fm0_ham1_p2_ishres_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -20441,123 +77275,30 @@ 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; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl2(); - loaded_pix = getbpl2(); } - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl2(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl2(); - } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - if (dpf_lookup_no[pix1]) { - val1 += dblpfofs[bpldualpf2of]; - } - val1 ^= bplcon4_denise_xor_val; - dpix_val1 = denise_colors.acolors[val1]; - } - last_bpl_pix = pix1; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl2(); - loaded_pix = getbpl2(); - } - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl2(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl2(); } - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl2(); - loaded_pix = getbpl2(); - } - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl2(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl2(); } - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - uae_u8 val3 = dpf_lookup[pix3]; - if (dpf_lookup_no[pix3]) { - val3 += dblpfofs[bpldualpf2of]; - } - val3 ^= bplcon4_denise_xor_val; - dpix_val3 = denise_colors.acolors[val3]; - } - last_bpl_pix = pix3; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl2(); - loaded_pix = getbpl2(); - } - if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { - copybpl2(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl2(); } - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; @@ -20619,11 +77360,11 @@ static void lts_aga_fm0_dpf0_p2_ilores_dshres(void) denise_cck++; } } -static void lts_aga_fm0_dpf0_p2_ilores_dshres_filtered(void) +static void lts_aga_fm0_ham1_p2_ishres_dshres_filtered(void) { lts_null(); } -static void lts_aga_fm0_dpf1_p2_ilores_dshres(void) +static void lts_aga_fm0_kehb0_p2_ishres_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -20634,167 +77375,30 @@ 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; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl2e(); - loaded_pix = getbpl2(); - } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl2o(); - loaded_pix = getbpl2(); - } - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl2e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl2(); - } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl2o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl2(); } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - if (dpf_lookup_no[pix1]) { - val1 += dblpfofs[bpldualpf2of]; - } - val1 ^= bplcon4_denise_xor_val; - dpix_val1 = denise_colors.acolors[val1]; - } - last_bpl_pix = pix1; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl2e(); - loaded_pix = getbpl2(); - } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl2o(); - loaded_pix = getbpl2(); - } - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl2e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl2(); - } - if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { - copybpl2o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl2(); } - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl2e(); - loaded_pix = getbpl2(); - } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl2o(); - loaded_pix = getbpl2(); - } - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl2e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl2(); } - if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { - copybpl2o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl2(); - } - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - uae_u8 val3 = dpf_lookup[pix3]; - if (dpf_lookup_no[pix3]) { - val3 += dblpfofs[bpldualpf2of]; - } - val3 ^= bplcon4_denise_xor_val; - dpix_val3 = denise_colors.acolors[val3]; - } - last_bpl_pix = pix3; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl2e(); - loaded_pix = getbpl2(); - } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl2o(); - loaded_pix = getbpl2(); - } - if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { - copybpl2e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl2(); - } - if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) { - copybpl2o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl2(); } - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; @@ -20856,59 +77460,11 @@ static void lts_aga_fm0_dpf1_p2_ilores_dshres(void) denise_cck++; } } -static void lts_aga_fm0_dpf1_p2_ilores_dshres_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb0_p2_ilores_dshres(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb0_p2_ilores_dshres_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb1_p2_ilores_dshres(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb1_p2_ilores_dshres_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham0_p2_ilores_dshres(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham0_p2_ilores_dshres_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham1_p2_ilores_dshres(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham1_p2_ilores_dshres_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb0_p2_ilores_dshres(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb0_p2_ilores_dshres_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb1_p2_ilores_dshres(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb1_p2_ilores_dshres_filtered(void) +static void lts_aga_fm0_kehb0_p2_ishres_dshres_filtered(void) { lts_null(); } -static void lts_aga_fm0_n0_p4_ilores_dshres(void) +static void lts_aga_fm0_kehb1_p2_ishres_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -20919,103 +77475,30 @@ 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; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4(); - loaded_pix = getbpl4(); - } - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4(); } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix1; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4(); - loaded_pix = getbpl4(); - } - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4(); } - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4(); - loaded_pix = getbpl4(); - } - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4(); } - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix3; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4(); - loaded_pix = getbpl4(); - } - if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4(); } - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; @@ -21077,11 +77560,11 @@ static void lts_aga_fm0_n0_p4_ilores_dshres(void) denise_cck++; } } -static void lts_aga_fm0_n0_p4_ilores_dshres_filtered(void) +static void lts_aga_fm0_kehb1_p2_ishres_dshres_filtered(void) { lts_null(); } -static void lts_aga_fm0_n1_p4_ilores_dshres(void) +static void lts_aga_fm0_n0_p4_ishres_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -21092,147 +77575,30 @@ 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; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4e(); - loaded_pix = getbpl4(); - } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl4o(); - loaded_pix = getbpl4(); - } - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4(); - } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl4o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl4(); } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { - dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix1; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4e(); - loaded_pix = getbpl4(); - } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl4o(); - loaded_pix = getbpl4(); - } - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4(); - } - if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { - copybpl4o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl4(); - } - loaded_pixs[1] = loaded_pix; - internal_pixel_cnt += 1; - uae_u8 pix2 = 0; - uae_u32 dpix_val2 = BLANK_COLOR; - if (!denise_blank_active) { - dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4e(); - loaded_pix = getbpl4(); - } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl4o(); - loaded_pix = getbpl4(); - } - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4(); - } - if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { - copybpl4o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl4(); - } - loaded_pixs[2] = loaded_pix; - internal_pixel_cnt += 1; - uae_u8 pix3 = 0; - uae_u32 dpix_val3 = BLANK_COLOR; - if (!denise_blank_active) { - dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix3; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4e(); - loaded_pix = getbpl4(); - } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl4o(); - loaded_pix = getbpl4(); + dpix_val1 = bordercolor; } - if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4(); + internal_pixel_cnt += 1; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; } - if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) { - copybpl4o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl4(); + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; } - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; @@ -21294,11 +77660,11 @@ static void lts_aga_fm0_n1_p4_ilores_dshres(void) denise_cck++; } } -static void lts_aga_fm0_n1_p4_ilores_dshres_filtered(void) +static void lts_aga_fm0_n0_p4_ishres_dshres_filtered(void) { lts_null(); } -static void lts_aga_fm0_dpf0_p4_ilores_dshres(void) +static void lts_aga_fm0_n1_p4_ishres_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -21309,123 +77675,30 @@ 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; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4(); - loaded_pix = getbpl4(); - } - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4(); } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - if (dpf_lookup_no[pix1]) { - val1 += dblpfofs[bpldualpf2of]; - } - val1 ^= bplcon4_denise_xor_val; - dpix_val1 = denise_colors.acolors[val1]; - } - last_bpl_pix = pix1; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4(); - loaded_pix = getbpl4(); - } - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4(); } - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4(); - loaded_pix = getbpl4(); } - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4(); - } - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - uae_u8 val3 = dpf_lookup[pix3]; - if (dpf_lookup_no[pix3]) { - val3 += dblpfofs[bpldualpf2of]; - } - val3 ^= bplcon4_denise_xor_val; - dpix_val3 = denise_colors.acolors[val3]; - } - last_bpl_pix = pix3; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4(); - loaded_pix = getbpl4(); - } - if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4(); } - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; @@ -21487,11 +77760,11 @@ static void lts_aga_fm0_dpf0_p4_ilores_dshres(void) denise_cck++; } } -static void lts_aga_fm0_dpf0_p4_ilores_dshres_filtered(void) +static void lts_aga_fm0_n1_p4_ishres_dshres_filtered(void) { lts_null(); } -static void lts_aga_fm0_dpf1_p4_ilores_dshres(void) +static void lts_aga_fm0_dpf0_p4_ishres_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -21502,167 +77775,30 @@ 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; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4e(); - loaded_pix = getbpl4(); - } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl4o(); - loaded_pix = getbpl4(); - } - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4(); - } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl4o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl4(); } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - if (dpf_lookup_no[pix1]) { - val1 += dblpfofs[bpldualpf2of]; - } - val1 ^= bplcon4_denise_xor_val; - dpix_val1 = denise_colors.acolors[val1]; - } - last_bpl_pix = pix1; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4e(); - loaded_pix = getbpl4(); - } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl4o(); - loaded_pix = getbpl4(); - } - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4(); } - if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { - copybpl4o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl4(); - } - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4e(); - loaded_pix = getbpl4(); - } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl4o(); - loaded_pix = getbpl4(); - } - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4(); - } - if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { - copybpl4o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl4(); } - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - uae_u8 val3 = dpf_lookup[pix3]; - if (dpf_lookup_no[pix3]) { - val3 += dblpfofs[bpldualpf2of]; - } - val3 ^= bplcon4_denise_xor_val; - dpix_val3 = denise_colors.acolors[val3]; - } - last_bpl_pix = pix3; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4e(); - loaded_pix = getbpl4(); - } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl4o(); - loaded_pix = getbpl4(); - } - if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4(); - } - if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) { - copybpl4o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl4(); } - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; @@ -21724,59 +77860,11 @@ static void lts_aga_fm0_dpf1_p4_ilores_dshres(void) denise_cck++; } } -static void lts_aga_fm0_dpf1_p4_ilores_dshres_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb0_p4_ilores_dshres(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb0_p4_ilores_dshres_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb1_p4_ilores_dshres(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb1_p4_ilores_dshres_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham0_p4_ilores_dshres(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham0_p4_ilores_dshres_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham1_p4_ilores_dshres(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham1_p4_ilores_dshres_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb0_p4_ilores_dshres(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb0_p4_ilores_dshres_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb1_p4_ilores_dshres(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb1_p4_ilores_dshres_filtered(void) +static void lts_aga_fm0_dpf0_p4_ishres_dshres_filtered(void) { lts_null(); } -static void lts_aga_fm0_n0_p6_ilores_dshres(void) +static void lts_aga_fm0_dpf1_p4_ishres_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -21787,103 +77875,30 @@ 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; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6(); - loaded_pix = getbpl6(); - } - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6(); } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix1; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6(); - loaded_pix = getbpl6(); - } - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6(); } - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6(); - loaded_pix = getbpl6(); - } - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6(); } - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix3; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6(); - loaded_pix = getbpl6(); - } - if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6(); } - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; @@ -21945,11 +77960,11 @@ static void lts_aga_fm0_n0_p6_ilores_dshres(void) denise_cck++; } } -static void lts_aga_fm0_n0_p6_ilores_dshres_filtered(void) +static void lts_aga_fm0_dpf1_p4_ishres_dshres_filtered(void) { lts_null(); } -static void lts_aga_fm0_n1_p6_ilores_dshres(void) +static void lts_aga_fm0_ehb0_p4_ishres_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -21960,147 +77975,30 @@ 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; if (!denise_blank_active) { - dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6e(); - loaded_pix = getbpl6(); - } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl6o(); - loaded_pix = getbpl6(); - } - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6(); - } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl6o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl6(); - } - loaded_pixs[0] = loaded_pix; - internal_pixel_cnt += 1; - uae_u8 pix1 = 0; - uae_u32 dpix_val1 = BLANK_COLOR; - if (!denise_blank_active) { - dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix1; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6e(); - loaded_pix = getbpl6(); - } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl6o(); - loaded_pix = getbpl6(); - } - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6(); - } - if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { - copybpl6o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl6(); - } - loaded_pixs[1] = loaded_pix; - internal_pixel_cnt += 1; - uae_u8 pix2 = 0; - uae_u32 dpix_val2 = BLANK_COLOR; - if (!denise_blank_active) { - dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6e(); - loaded_pix = getbpl6(); - } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl6o(); - loaded_pix = getbpl6(); - } - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6(); - } - if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { - copybpl6o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl6(); - } - loaded_pixs[2] = loaded_pix; - internal_pixel_cnt += 1; - uae_u8 pix3 = 0; - uae_u32 dpix_val3 = BLANK_COLOR; - if (!denise_blank_active) { - dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix3; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6e(); - loaded_pix = getbpl6(); - } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl6o(); - loaded_pix = getbpl6(); + dpix_val0 = bordercolor; } - if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6(); + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; } - if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) { - copybpl6o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl6(); + internal_pixel_cnt += 1; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; } - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; @@ -22162,11 +78060,11 @@ static void lts_aga_fm0_n1_p6_ilores_dshres(void) denise_cck++; } } -static void lts_aga_fm0_n1_p6_ilores_dshres_filtered(void) +static void lts_aga_fm0_ehb0_p4_ishres_dshres_filtered(void) { lts_null(); } -static void lts_aga_fm0_dpf0_p6_ilores_dshres(void) +static void lts_aga_fm0_ehb1_p4_ishres_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -22177,123 +78075,30 @@ 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; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6(); - loaded_pix = getbpl6(); } - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6(); - } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - if (dpf_lookup_no[pix1]) { - val1 += dblpfofs[bpldualpf2of]; - } - val1 ^= bplcon4_denise_xor_val; - dpix_val1 = denise_colors.acolors[val1]; - } - last_bpl_pix = pix1; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6(); - loaded_pix = getbpl6(); - } - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6(); } - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6(); - loaded_pix = getbpl6(); - } - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6(); } - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - uae_u8 val3 = dpf_lookup[pix3]; - if (dpf_lookup_no[pix3]) { - val3 += dblpfofs[bpldualpf2of]; - } - val3 ^= bplcon4_denise_xor_val; - dpix_val3 = denise_colors.acolors[val3]; - } - last_bpl_pix = pix3; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6(); - loaded_pix = getbpl6(); - } - if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6(); } - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; @@ -22355,11 +78160,11 @@ static void lts_aga_fm0_dpf0_p6_ilores_dshres(void) denise_cck++; } } -static void lts_aga_fm0_dpf0_p6_ilores_dshres_filtered(void) +static void lts_aga_fm0_ehb1_p4_ishres_dshres_filtered(void) { lts_null(); } -static void lts_aga_fm0_dpf1_p6_ilores_dshres(void) +static void lts_aga_fm0_ham0_p4_ishres_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -22370,167 +78175,30 @@ 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; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6e(); - loaded_pix = getbpl6(); - } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl6o(); - loaded_pix = getbpl6(); - } - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6(); - } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl6o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl6(); } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - if (dpf_lookup_no[pix1]) { - val1 += dblpfofs[bpldualpf2of]; - } - val1 ^= bplcon4_denise_xor_val; - dpix_val1 = denise_colors.acolors[val1]; - } - last_bpl_pix = pix1; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6e(); - loaded_pix = getbpl6(); - } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl6o(); - loaded_pix = getbpl6(); - } - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6(); - } - if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { - copybpl6o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl6(); } - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6e(); - loaded_pix = getbpl6(); - } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl6o(); - loaded_pix = getbpl6(); - } - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6(); } - if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { - copybpl6o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl6(); - } - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - uae_u8 val3 = dpf_lookup[pix3]; - if (dpf_lookup_no[pix3]) { - val3 += dblpfofs[bpldualpf2of]; - } - val3 ^= bplcon4_denise_xor_val; - dpix_val3 = denise_colors.acolors[val3]; - } - last_bpl_pix = pix3; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6e(); - loaded_pix = getbpl6(); - } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl6o(); - loaded_pix = getbpl6(); - } - if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6(); - } - if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) { - copybpl6o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl6(); } - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; @@ -22592,11 +78260,11 @@ static void lts_aga_fm0_dpf1_p6_ilores_dshres(void) denise_cck++; } } -static void lts_aga_fm0_dpf1_p6_ilores_dshres_filtered(void) +static void lts_aga_fm0_ham0_p4_ishres_dshres_filtered(void) { lts_null(); } -static void lts_aga_fm0_ehb0_p6_ilores_dshres(void) +static void lts_aga_fm0_ham1_p4_ishres_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -22607,127 +78275,30 @@ 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; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - pix0 ^= bplcon4_denise_xor_val; - if (!(pix0 & 0x20)) { - dpix_val0 = denise_colors.acolors[pix0]; - } else { - uae_u32 v = (denise_colors.color_regs_aga[pix0 & 0x1f] >> 1) & 0x7f7f7f; - dpix_val0 = CONVERT_RGB(v); - } - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6(); - loaded_pix = getbpl6(); - } - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6(); } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - pix1 ^= bplcon4_denise_xor_val; - if (!(pix1 & 0x20)) { - dpix_val1 = denise_colors.acolors[pix1]; - } else { - uae_u32 v = (denise_colors.color_regs_aga[pix1 & 0x1f] >> 1) & 0x7f7f7f; - dpix_val1 = CONVERT_RGB(v); - } - } - last_bpl_pix = pix1; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6(); - loaded_pix = getbpl6(); - } - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6(); } - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - pix2 ^= bplcon4_denise_xor_val; - if (!(pix2 & 0x20)) { - dpix_val2 = denise_colors.acolors[pix2]; - } else { - uae_u32 v = (denise_colors.color_regs_aga[pix2 & 0x1f] >> 1) & 0x7f7f7f; - dpix_val2 = CONVERT_RGB(v); - } - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6(); - loaded_pix = getbpl6(); - } - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6(); } - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - pix3 ^= bplcon4_denise_xor_val; - if (!(pix3 & 0x20)) { - dpix_val3 = denise_colors.acolors[pix3]; - } else { - uae_u32 v = (denise_colors.color_regs_aga[pix3 & 0x1f] >> 1) & 0x7f7f7f; - dpix_val3 = CONVERT_RGB(v); - } - } - last_bpl_pix = pix3; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6(); - loaded_pix = getbpl6(); - } - if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6(); } - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; @@ -22789,11 +78360,11 @@ static void lts_aga_fm0_ehb0_p6_ilores_dshres(void) denise_cck++; } } -static void lts_aga_fm0_ehb0_p6_ilores_dshres_filtered(void) +static void lts_aga_fm0_ham1_p4_ishres_dshres_filtered(void) { lts_null(); } -static void lts_aga_fm0_ehb1_p6_ilores_dshres(void) +static void lts_aga_fm0_kehb0_p4_ishres_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -22804,171 +78375,30 @@ 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; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - pix0 ^= bplcon4_denise_xor_val; - if (!(pix0 & 0x20)) { - dpix_val0 = denise_colors.acolors[pix0]; - } else { - uae_u32 v = (denise_colors.color_regs_aga[pix0 & 0x1f] >> 1) & 0x7f7f7f; - dpix_val0 = CONVERT_RGB(v); - } - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6e(); - loaded_pix = getbpl6(); - } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl6o(); - loaded_pix = getbpl6(); - } - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6(); - } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl6o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl6(); } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - pix1 ^= bplcon4_denise_xor_val; - if (!(pix1 & 0x20)) { - dpix_val1 = denise_colors.acolors[pix1]; - } else { - uae_u32 v = (denise_colors.color_regs_aga[pix1 & 0x1f] >> 1) & 0x7f7f7f; - dpix_val1 = CONVERT_RGB(v); - } - } - last_bpl_pix = pix1; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6e(); - loaded_pix = getbpl6(); - } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl6o(); - loaded_pix = getbpl6(); - } - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6(); - } - if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { - copybpl6o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl6(); } - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - pix2 ^= bplcon4_denise_xor_val; - if (!(pix2 & 0x20)) { - dpix_val2 = denise_colors.acolors[pix2]; - } else { - uae_u32 v = (denise_colors.color_regs_aga[pix2 & 0x1f] >> 1) & 0x7f7f7f; - dpix_val2 = CONVERT_RGB(v); - } - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6e(); - loaded_pix = getbpl6(); - } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl6o(); - loaded_pix = getbpl6(); } - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6(); - } - if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { - copybpl6o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl6(); - } - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - pix3 ^= bplcon4_denise_xor_val; - if (!(pix3 & 0x20)) { - dpix_val3 = denise_colors.acolors[pix3]; - } else { - uae_u32 v = (denise_colors.color_regs_aga[pix3 & 0x1f] >> 1) & 0x7f7f7f; - dpix_val3 = CONVERT_RGB(v); - } - } - last_bpl_pix = pix3; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6e(); - loaded_pix = getbpl6(); - } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl6o(); - loaded_pix = getbpl6(); - } - if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6(); } - if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) { - copybpl6o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl6(); - } - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; @@ -23030,11 +78460,11 @@ static void lts_aga_fm0_ehb1_p6_ilores_dshres(void) denise_cck++; } } -static void lts_aga_fm0_ehb1_p6_ilores_dshres_filtered(void) +static void lts_aga_fm0_kehb0_p4_ishres_dshres_filtered(void) { lts_null(); } -static void lts_aga_fm0_ham0_p6_ilores_dshres(void) +static void lts_aga_fm0_kehb1_p4_ishres_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -23045,103 +78475,30 @@ 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; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = decode_ham_pixel_aga(pix0); - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6(); - loaded_pix = getbpl6(); - } - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6(); } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - dpix_val1 = decode_ham_pixel_aga(pix1); - } - last_bpl_pix = pix1; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6(); - loaded_pix = getbpl6(); - } - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6(); } - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = decode_ham_pixel_aga(pix2); - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6(); - loaded_pix = getbpl6(); - } - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6(); } - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - dpix_val3 = decode_ham_pixel_aga(pix3); - } - last_bpl_pix = pix3; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6(); - loaded_pix = getbpl6(); - } - if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6(); } - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; @@ -23203,11 +78560,11 @@ static void lts_aga_fm0_ham0_p6_ilores_dshres(void) denise_cck++; } } -static void lts_aga_fm0_ham0_p6_ilores_dshres_filtered(void) +static void lts_aga_fm0_kehb1_p4_ishres_dshres_filtered(void) { lts_null(); } -static void lts_aga_fm0_ham1_p6_ilores_dshres(void) +static void lts_aga_fm0_n0_p6_ishres_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -23218,147 +78575,30 @@ 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; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = decode_ham_pixel_aga(pix0); - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6e(); - loaded_pix = getbpl6(); - } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl6o(); - loaded_pix = getbpl6(); - } - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6(); - } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl6o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl6(); } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - dpix_val1 = decode_ham_pixel_aga(pix1); - } - last_bpl_pix = pix1; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6e(); - loaded_pix = getbpl6(); - } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl6o(); - loaded_pix = getbpl6(); - } - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6(); - } - if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { - copybpl6o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl6(); } - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = decode_ham_pixel_aga(pix2); - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6e(); - loaded_pix = getbpl6(); - } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl6o(); - loaded_pix = getbpl6(); - } - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6(); - } - if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { - copybpl6o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl6(); } - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - dpix_val3 = decode_ham_pixel_aga(pix3); - } - last_bpl_pix = pix3; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6e(); - loaded_pix = getbpl6(); - } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl6o(); - loaded_pix = getbpl6(); - } - if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6(); - } - if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) { - copybpl6o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl6(); } - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; @@ -23420,11 +78660,11 @@ static void lts_aga_fm0_ham1_p6_ilores_dshres(void) denise_cck++; } } -static void lts_aga_fm0_ham1_p6_ilores_dshres_filtered(void) +static void lts_aga_fm0_n0_p6_ishres_dshres_filtered(void) { lts_null(); } -static void lts_aga_fm0_kehb0_p6_ilores_dshres(void) +static void lts_aga_fm0_n1_p6_ishres_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -23435,107 +78675,30 @@ 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; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - pix0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[pix0 & 31]; - } - last_bpl_pix = pix0; } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6(); - loaded_pix = getbpl6(); - } - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6(); - } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - pix1 ^= bplcon4_denise_xor_val; - dpix_val1 = denise_colors.acolors[pix1 & 31]; - } - last_bpl_pix = pix1; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6(); - loaded_pix = getbpl6(); - } - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6(); } - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - pix2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[pix2 & 31]; - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6(); - loaded_pix = getbpl6(); - } - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6(); } - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - pix3 ^= bplcon4_denise_xor_val; - dpix_val3 = denise_colors.acolors[pix3 & 31]; - } - last_bpl_pix = pix3; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6(); - loaded_pix = getbpl6(); - } - if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6(); } - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; @@ -23597,11 +78760,11 @@ static void lts_aga_fm0_kehb0_p6_ilores_dshres(void) denise_cck++; } } -static void lts_aga_fm0_kehb0_p6_ilores_dshres_filtered(void) +static void lts_aga_fm0_n1_p6_ishres_dshres_filtered(void) { lts_null(); } -static void lts_aga_fm0_kehb1_p6_ilores_dshres(void) +static void lts_aga_fm0_dpf0_p6_ishres_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -23612,151 +78775,30 @@ 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; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - pix0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[pix0 & 31]; - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6e(); - loaded_pix = getbpl6(); - } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl6o(); - loaded_pix = getbpl6(); - } - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6(); - } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl6o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl6(); } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - pix1 ^= bplcon4_denise_xor_val; - dpix_val1 = denise_colors.acolors[pix1 & 31]; - } - last_bpl_pix = pix1; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6e(); - loaded_pix = getbpl6(); - } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl6o(); - loaded_pix = getbpl6(); - } - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6(); } - if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { - copybpl6o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl6(); - } - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - pix2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[pix2 & 31]; - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6e(); - loaded_pix = getbpl6(); - } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl6o(); - loaded_pix = getbpl6(); - } - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6(); - } - if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { - copybpl6o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl6(); } - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - pix3 ^= bplcon4_denise_xor_val; - dpix_val3 = denise_colors.acolors[pix3 & 31]; - } - last_bpl_pix = pix3; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6e(); - loaded_pix = getbpl6(); - } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl6o(); - loaded_pix = getbpl6(); - } - if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6(); - } - if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) { - copybpl6o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl6(); } - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; @@ -23818,11 +78860,11 @@ static void lts_aga_fm0_kehb1_p6_ilores_dshres(void) denise_cck++; } } -static void lts_aga_fm0_kehb1_p6_ilores_dshres_filtered(void) +static void lts_aga_fm0_dpf0_p6_ishres_dshres_filtered(void) { lts_null(); } -static void lts_aga_fm0_n0_p8_ilores_dshres(void) +static void lts_aga_fm0_dpf1_p6_ishres_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -23833,103 +78875,30 @@ 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; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8(); - loaded_pix = getbpl8(); - } - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8(); } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix1; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8(); - loaded_pix = getbpl8(); - } - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8(); } - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8(); - loaded_pix = getbpl8(); - } - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8(); } - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix3; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8(); - loaded_pix = getbpl8(); - } - if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8(); } - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; @@ -23991,11 +78960,11 @@ static void lts_aga_fm0_n0_p8_ilores_dshres(void) denise_cck++; } } -static void lts_aga_fm0_n0_p8_ilores_dshres_filtered(void) +static void lts_aga_fm0_dpf1_p6_ishres_dshres_filtered(void) { lts_null(); } -static void lts_aga_fm0_n1_p8_ilores_dshres(void) +static void lts_aga_fm0_ehb0_p6_ishres_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -24006,147 +78975,30 @@ 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; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8e(); - loaded_pix = getbpl8(); - } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl8o(); - loaded_pix = getbpl8(); - } - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8(); - } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl8(); } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix1; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8e(); - loaded_pix = getbpl8(); - } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl8o(); - loaded_pix = getbpl8(); - } - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8(); } - if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl8(); - } - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8e(); - loaded_pix = getbpl8(); - } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl8o(); - loaded_pix = getbpl8(); } - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8(); - } - if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl8(); - } - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix3; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8e(); - loaded_pix = getbpl8(); - } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl8o(); - loaded_pix = getbpl8(); - } - if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8(); - } - if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl8(); } - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; @@ -24208,11 +79060,11 @@ static void lts_aga_fm0_n1_p8_ilores_dshres(void) denise_cck++; } } -static void lts_aga_fm0_n1_p8_ilores_dshres_filtered(void) +static void lts_aga_fm0_ehb0_p6_ishres_dshres_filtered(void) { lts_null(); } -static void lts_aga_fm0_dpf0_p8_ilores_dshres(void) +static void lts_aga_fm0_ehb1_p6_ishres_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -24223,123 +79075,30 @@ 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; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8(); - loaded_pix = getbpl8(); - } - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8(); } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - if (dpf_lookup_no[pix1]) { - val1 += dblpfofs[bpldualpf2of]; - } - val1 ^= bplcon4_denise_xor_val; - dpix_val1 = denise_colors.acolors[val1]; - } - last_bpl_pix = pix1; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8(); - loaded_pix = getbpl8(); - } - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8(); } - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8(); - loaded_pix = getbpl8(); - } - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8(); } - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - uae_u8 val3 = dpf_lookup[pix3]; - if (dpf_lookup_no[pix3]) { - val3 += dblpfofs[bpldualpf2of]; - } - val3 ^= bplcon4_denise_xor_val; - dpix_val3 = denise_colors.acolors[val3]; - } - last_bpl_pix = pix3; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8(); - loaded_pix = getbpl8(); - } - if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8(); } - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; @@ -24401,11 +79160,11 @@ static void lts_aga_fm0_dpf0_p8_ilores_dshres(void) denise_cck++; } } -static void lts_aga_fm0_dpf0_p8_ilores_dshres_filtered(void) +static void lts_aga_fm0_ehb1_p6_ishres_dshres_filtered(void) { lts_null(); } -static void lts_aga_fm0_dpf1_p8_ilores_dshres(void) +static void lts_aga_fm0_ham0_p6_ishres_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -24416,167 +79175,30 @@ 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; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8e(); - loaded_pix = getbpl8(); - } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl8o(); - loaded_pix = getbpl8(); - } - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8(); - } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl8(); } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - if (dpf_lookup_no[pix1]) { - val1 += dblpfofs[bpldualpf2of]; - } - val1 ^= bplcon4_denise_xor_val; - dpix_val1 = denise_colors.acolors[val1]; - } - last_bpl_pix = pix1; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8e(); - loaded_pix = getbpl8(); - } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl8o(); - loaded_pix = getbpl8(); - } - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8(); - } - if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl8(); } - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8e(); - loaded_pix = getbpl8(); - } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl8o(); - loaded_pix = getbpl8(); - } - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8(); - } - if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl8(); } - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - uae_u8 val3 = dpf_lookup[pix3]; - if (dpf_lookup_no[pix3]) { - val3 += dblpfofs[bpldualpf2of]; - } - val3 ^= bplcon4_denise_xor_val; - dpix_val3 = denise_colors.acolors[val3]; - } - last_bpl_pix = pix3; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8e(); - loaded_pix = getbpl8(); - } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl8o(); - loaded_pix = getbpl8(); - } - if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8(); } - if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl8(); - } - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; @@ -24638,27 +79260,11 @@ static void lts_aga_fm0_dpf1_p8_ilores_dshres(void) denise_cck++; } } -static void lts_aga_fm0_dpf1_p8_ilores_dshres_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb0_p8_ilores_dshres(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb0_p8_ilores_dshres_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb1_p8_ilores_dshres(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb1_p8_ilores_dshres_filtered(void) +static void lts_aga_fm0_ham0_p6_ishres_dshres_filtered(void) { lts_null(); } -static void lts_aga_fm0_ham0_p8_ilores_dshres(void) +static void lts_aga_fm0_ham1_p6_ishres_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -24669,103 +79275,30 @@ 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; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = decode_ham_pixel_aga(pix0); - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8(); - loaded_pix = getbpl8(); - } - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8(); } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - dpix_val1 = decode_ham_pixel_aga(pix1); - } - last_bpl_pix = pix1; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8(); - loaded_pix = getbpl8(); - } - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8(); } - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = decode_ham_pixel_aga(pix2); - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8(); - loaded_pix = getbpl8(); - } - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8(); } - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - dpix_val3 = decode_ham_pixel_aga(pix3); - } - last_bpl_pix = pix3; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8(); - loaded_pix = getbpl8(); - } - if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8(); } - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; @@ -24827,11 +79360,11 @@ static void lts_aga_fm0_ham0_p8_ilores_dshres(void) denise_cck++; } } -static void lts_aga_fm0_ham0_p8_ilores_dshres_filtered(void) +static void lts_aga_fm0_ham1_p6_ishres_dshres_filtered(void) { lts_null(); } -static void lts_aga_fm0_ham1_p8_ilores_dshres(void) +static void lts_aga_fm0_kehb0_p6_ishres_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -24842,147 +79375,30 @@ 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; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = decode_ham_pixel_aga(pix0); - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8e(); - loaded_pix = getbpl8(); - } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl8o(); - loaded_pix = getbpl8(); - } - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8(); - } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl8(); } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { - dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - dpix_val1 = decode_ham_pixel_aga(pix1); - } - last_bpl_pix = pix1; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8e(); - loaded_pix = getbpl8(); - } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl8o(); - loaded_pix = getbpl8(); - } - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8(); - } - if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl8(); - } - loaded_pixs[1] = loaded_pix; - internal_pixel_cnt += 1; - uae_u8 pix2 = 0; - uae_u32 dpix_val2 = BLANK_COLOR; - if (!denise_blank_active) { - dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = decode_ham_pixel_aga(pix2); - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8e(); - loaded_pix = getbpl8(); - } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl8o(); - loaded_pix = getbpl8(); - } - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8(); + dpix_val1 = bordercolor; } - if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl8(); + internal_pixel_cnt += 1; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; } - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - dpix_val3 = decode_ham_pixel_aga(pix3); - } - last_bpl_pix = pix3; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8e(); - loaded_pix = getbpl8(); - } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl8o(); - loaded_pix = getbpl8(); - } - if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8(); - } - if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl8(); } - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; @@ -25044,27 +79460,11 @@ static void lts_aga_fm0_ham1_p8_ilores_dshres(void) denise_cck++; } } -static void lts_aga_fm0_ham1_p8_ilores_dshres_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb0_p8_ilores_dshres(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb0_p8_ilores_dshres_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb1_p8_ilores_dshres(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb1_p8_ilores_dshres_filtered(void) +static void lts_aga_fm0_kehb0_p6_ishres_dshres_filtered(void) { lts_null(); } -static void lts_aga_fm0_n0_p2_ilores_dshres_spr(void) +static void lts_aga_fm0_kehb1_p6_ishres_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -25075,168 +79475,35 @@ 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; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl2(); - loaded_pix = getbpl2(); - } - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl2(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl2(); - } - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; - matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix1; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl2(); - loaded_pix = getbpl2(); - } - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl2(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl2(); - } - uae_u32 sv1 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv1 = svt; - } } - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; - matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl2(); - loaded_pix = getbpl2(); } - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl2(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl2(); - } - uae_u32 sv2 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv2 = svt; - } - } - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; - matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix3; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl2(); - loaded_pix = getbpl2(); - } - if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { - copybpl2(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl2(); } - uae_u32 sv3 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv3 = svt; - } - } - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - } - } dtbuf[h][0] = dpix_val0; - if (sv1) { - uae_u32 spix1 = denise_render_sprites2(pix1, sv1); - if (spix1) { - dpix_val1 = denise_colors.acolors[spix1]; - } - } dtbuf[h][1] = dpix_val1; - if (sv2) { - uae_u32 spix2 = denise_render_sprites2(pix2, sv2); - if (spix2) { - dpix_val2 = denise_colors.acolors[spix2]; - } - } dtbuf[h][2] = dpix_val2; - if (sv3) { - uae_u32 spix3 = denise_render_sprites2(pix3, sv3); - if (spix3) { - dpix_val3 = denise_colors.acolors[spix3]; - } - } dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -25293,11 +79560,11 @@ static void lts_aga_fm0_n0_p2_ilores_dshres_spr(void) denise_cck++; } } -static void lts_aga_fm0_n0_p2_ilores_dshres_spr_filtered(void) +static void lts_aga_fm0_kehb1_p6_ishres_dshres_filtered(void) { lts_null(); } -static void lts_aga_fm0_n1_p2_ilores_dshres_spr(void) +static void lts_aga_fm0_n0_p8_ishres_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -25308,212 +79575,35 @@ 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; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl2e(); - loaded_pix = getbpl2(); - } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl2o(); - loaded_pix = getbpl2(); - } - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl2e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl2(); - } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl2o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl2(); - } - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; - matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix1; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl2e(); - loaded_pix = getbpl2(); - } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl2o(); - loaded_pix = getbpl2(); - } - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl2e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl2(); - } - if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { - copybpl2o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl2(); - } - uae_u32 sv1 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv1 = svt; - } } - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; - matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl2e(); - loaded_pix = getbpl2(); - } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl2o(); - loaded_pix = getbpl2(); - } - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl2e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl2(); - } - if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { - copybpl2o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl2(); - } - uae_u32 sv2 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv2 = svt; - } } - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; - matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix3; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl2e(); - loaded_pix = getbpl2(); - } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl2o(); - loaded_pix = getbpl2(); - } - if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { - copybpl2e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl2(); } - if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) { - copybpl2o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl2(); - } - uae_u32 sv3 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv3 = svt; - } - } - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - } - } dtbuf[h][0] = dpix_val0; - if (sv1) { - uae_u32 spix1 = denise_render_sprites2(pix1, sv1); - if (spix1) { - dpix_val1 = denise_colors.acolors[spix1]; - } - } dtbuf[h][1] = dpix_val1; - if (sv2) { - uae_u32 spix2 = denise_render_sprites2(pix2, sv2); - if (spix2) { - dpix_val2 = denise_colors.acolors[spix2]; - } - } dtbuf[h][2] = dpix_val2; - if (sv3) { - uae_u32 spix3 = denise_render_sprites2(pix3, sv3); - if (spix3) { - dpix_val3 = denise_colors.acolors[spix3]; - } - } dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -25570,11 +79660,11 @@ static void lts_aga_fm0_n1_p2_ilores_dshres_spr(void) denise_cck++; } } -static void lts_aga_fm0_n1_p2_ilores_dshres_spr_filtered(void) +static void lts_aga_fm0_n0_p8_ishres_dshres_filtered(void) { lts_null(); } -static void lts_aga_fm0_dpf0_p2_ilores_dshres_spr(void) +static void lts_aga_fm0_n1_p8_ishres_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -25585,188 +79675,35 @@ 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; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl2(); - loaded_pix = getbpl2(); - } - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl2(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl2(); - } - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; - matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; - if (!denise_blank_active) { - dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - if (dpf_lookup_no[pix1]) { - val1 += dblpfofs[bpldualpf2of]; - } - val1 ^= bplcon4_denise_xor_val; - dpix_val1 = denise_colors.acolors[val1]; - } - last_bpl_pix = pix1; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl2(); - loaded_pix = getbpl2(); - } - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl2(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl2(); - } - uae_u32 sv1 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv1 = svt; - } - } - loaded_pixs[1] = loaded_pix; - internal_pixel_cnt += 1; - matchsprites_aga(cnt + 2); - uae_u8 pix2 = 0; - uae_u32 dpix_val2 = BLANK_COLOR; - if (!denise_blank_active) { - dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl2(); - loaded_pix = getbpl2(); - } - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl2(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl2(); - } - uae_u32 sv2 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv2 = svt; - } - } - loaded_pixs[2] = loaded_pix; - internal_pixel_cnt += 1; - matchsprites_aga(cnt + 3); - uae_u8 pix3 = 0; - uae_u32 dpix_val3 = BLANK_COLOR; - if (!denise_blank_active) { - dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - uae_u8 val3 = dpf_lookup[pix3]; - if (dpf_lookup_no[pix3]) { - val3 += dblpfofs[bpldualpf2of]; - } - val3 ^= bplcon4_denise_xor_val; - dpix_val3 = denise_colors.acolors[val3]; - } - last_bpl_pix = pix3; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl2(); - loaded_pix = getbpl2(); - } - if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { - copybpl2(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl2(); + if (!denise_blank_active) { + dpix_val1 = bordercolor; } - uae_u32 sv3 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv3 = svt; - } + internal_pixel_cnt += 1; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; } - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - } - } dtbuf[h][0] = dpix_val0; - if (sv1) { - uae_u32 spix1 = denise_render_sprites2(pix1, sv1); - if (spix1) { - dpix_val1 = denise_colors.acolors[spix1]; - } - } dtbuf[h][1] = dpix_val1; - if (sv2) { - uae_u32 spix2 = denise_render_sprites2(pix2, sv2); - if (spix2) { - dpix_val2 = denise_colors.acolors[spix2]; - } - } dtbuf[h][2] = dpix_val2; - if (sv3) { - uae_u32 spix3 = denise_render_sprites2(pix3, sv3); - if (spix3) { - dpix_val3 = denise_colors.acolors[spix3]; - } - } dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -25823,11 +79760,11 @@ static void lts_aga_fm0_dpf0_p2_ilores_dshres_spr(void) denise_cck++; } } -static void lts_aga_fm0_dpf0_p2_ilores_dshres_spr_filtered(void) +static void lts_aga_fm0_n1_p8_ishres_dshres_filtered(void) { lts_null(); } -static void lts_aga_fm0_dpf1_p2_ilores_dshres_spr(void) +static void lts_aga_fm0_dpf0_p8_ishres_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -25838,232 +79775,35 @@ 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; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl2e(); - loaded_pix = getbpl2(); - } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl2o(); - loaded_pix = getbpl2(); - } - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl2e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl2(); - } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl2o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl2(); - } - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; - matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - if (dpf_lookup_no[pix1]) { - val1 += dblpfofs[bpldualpf2of]; - } - val1 ^= bplcon4_denise_xor_val; - dpix_val1 = denise_colors.acolors[val1]; - } - last_bpl_pix = pix1; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl2e(); - loaded_pix = getbpl2(); - } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl2o(); - loaded_pix = getbpl2(); - } - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl2e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl2(); - } - if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { - copybpl2o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl2(); - } - uae_u32 sv1 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv1 = svt; - } } - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; - matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl2e(); - loaded_pix = getbpl2(); - } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl2o(); - loaded_pix = getbpl2(); } - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl2e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl2(); - } - if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { - copybpl2o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl2(); - } - uae_u32 sv2 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv2 = svt; - } - } - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; - matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - uae_u8 val3 = dpf_lookup[pix3]; - if (dpf_lookup_no[pix3]) { - val3 += dblpfofs[bpldualpf2of]; - } - val3 ^= bplcon4_denise_xor_val; - dpix_val3 = denise_colors.acolors[val3]; - } - last_bpl_pix = pix3; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl2e(); - loaded_pix = getbpl2(); - } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl2o(); - loaded_pix = getbpl2(); - } - if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { - copybpl2e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl2(); } - if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) { - copybpl2o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl2(); - } - uae_u32 sv3 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv3 = svt; - } - } - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - } - } dtbuf[h][0] = dpix_val0; - if (sv1) { - uae_u32 spix1 = denise_render_sprites2(pix1, sv1); - if (spix1) { - dpix_val1 = denise_colors.acolors[spix1]; - } - } dtbuf[h][1] = dpix_val1; - if (sv2) { - uae_u32 spix2 = denise_render_sprites2(pix2, sv2); - if (spix2) { - dpix_val2 = denise_colors.acolors[spix2]; - } - } dtbuf[h][2] = dpix_val2; - if (sv3) { - uae_u32 spix3 = denise_render_sprites2(pix3, sv3); - if (spix3) { - dpix_val3 = denise_colors.acolors[spix3]; - } - } dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -26120,59 +79860,11 @@ static void lts_aga_fm0_dpf1_p2_ilores_dshres_spr(void) denise_cck++; } } -static void lts_aga_fm0_dpf1_p2_ilores_dshres_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb0_p2_ilores_dshres_spr(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb0_p2_ilores_dshres_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb1_p2_ilores_dshres_spr(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb1_p2_ilores_dshres_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham0_p2_ilores_dshres_spr(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham0_p2_ilores_dshres_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham1_p2_ilores_dshres_spr(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham1_p2_ilores_dshres_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb0_p2_ilores_dshres_spr(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb0_p2_ilores_dshres_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb1_p2_ilores_dshres_spr(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb1_p2_ilores_dshres_spr_filtered(void) +static void lts_aga_fm0_dpf0_p8_ishres_dshres_filtered(void) { lts_null(); } -static void lts_aga_fm0_n0_p4_ilores_dshres_spr(void) +static void lts_aga_fm0_dpf1_p8_ishres_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -26183,168 +79875,35 @@ 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; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4(); - loaded_pix = getbpl4(); - } - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4(); - } - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; - matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix1; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4(); - loaded_pix = getbpl4(); - } - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4(); - } - uae_u32 sv1 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv1 = svt; - } } - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; - matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4(); - loaded_pix = getbpl4(); - } - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4(); - } - uae_u32 sv2 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv2 = svt; - } } - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; - matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix3; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4(); - loaded_pix = getbpl4(); - } - if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4(); - } - uae_u32 sv3 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv3 = svt; - } } - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - } - } dtbuf[h][0] = dpix_val0; - if (sv1) { - uae_u32 spix1 = denise_render_sprites2(pix1, sv1); - if (spix1) { - dpix_val1 = denise_colors.acolors[spix1]; - } - } dtbuf[h][1] = dpix_val1; - if (sv2) { - uae_u32 spix2 = denise_render_sprites2(pix2, sv2); - if (spix2) { - dpix_val2 = denise_colors.acolors[spix2]; - } - } dtbuf[h][2] = dpix_val2; - if (sv3) { - uae_u32 spix3 = denise_render_sprites2(pix3, sv3); - if (spix3) { - dpix_val3 = denise_colors.acolors[spix3]; - } - } dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -26401,11 +79960,11 @@ static void lts_aga_fm0_n0_p4_ilores_dshres_spr(void) denise_cck++; } } -static void lts_aga_fm0_n0_p4_ilores_dshres_spr_filtered(void) +static void lts_aga_fm0_dpf1_p8_ishres_dshres_filtered(void) { lts_null(); } -static void lts_aga_fm0_n1_p4_ilores_dshres_spr(void) +static void lts_aga_fm0_ehb0_p8_ishres_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -26414,214 +79973,37 @@ static void lts_aga_fm0_n1_p4_ilores_dshres_spr(void) if (h) { denise_hcounter_next = denise_hcounter_new; } - int cnt = denise_hcounter << 2; - int cnt_next = denise_hcounter_next << 2; - int cmp = denise_hcounter_cmp << 2; - if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites_aga(cnt + 0); - uae_u8 pix0 = 0; - uae_u32 dpix_val0 = BLANK_COLOR; - if (!denise_blank_active) { - dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4e(); - loaded_pix = getbpl4(); - } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl4o(); - loaded_pix = getbpl4(); - } - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4(); - } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl4o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl4(); - } - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } - } - loaded_pixs[0] = loaded_pix; - internal_pixel_cnt += 1; - matchsprites_aga(cnt + 1); - uae_u8 pix1 = 0; - uae_u32 dpix_val1 = BLANK_COLOR; - if (!denise_blank_active) { - dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix1; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4e(); - loaded_pix = getbpl4(); - } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl4o(); - loaded_pix = getbpl4(); - } - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4(); - } - if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { - copybpl4o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl4(); + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; } - uae_u32 sv1 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv1 = svt; - } + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; } - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; - matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4e(); - loaded_pix = getbpl4(); - } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl4o(); - loaded_pix = getbpl4(); - } - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4(); } - if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { - copybpl4o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl4(); - } - uae_u32 sv2 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv2 = svt; - } - } - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; - matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix3; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4e(); - loaded_pix = getbpl4(); - } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl4o(); - loaded_pix = getbpl4(); - } - if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4(); - } - if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) { - copybpl4o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl4(); - } - uae_u32 sv3 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv3 = svt; - } } - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - } - } dtbuf[h][0] = dpix_val0; - if (sv1) { - uae_u32 spix1 = denise_render_sprites2(pix1, sv1); - if (spix1) { - dpix_val1 = denise_colors.acolors[spix1]; - } - } dtbuf[h][1] = dpix_val1; - if (sv2) { - uae_u32 spix2 = denise_render_sprites2(pix2, sv2); - if (spix2) { - dpix_val2 = denise_colors.acolors[spix2]; - } - } dtbuf[h][2] = dpix_val2; - if (sv3) { - uae_u32 spix3 = denise_render_sprites2(pix3, sv3); - if (spix3) { - dpix_val3 = denise_colors.acolors[spix3]; - } - } dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -26678,11 +80060,11 @@ static void lts_aga_fm0_n1_p4_ilores_dshres_spr(void) denise_cck++; } } -static void lts_aga_fm0_n1_p4_ilores_dshres_spr_filtered(void) +static void lts_aga_fm0_ehb0_p8_ishres_dshres_filtered(void) { lts_null(); } -static void lts_aga_fm0_dpf0_p4_ilores_dshres_spr(void) +static void lts_aga_fm0_ehb1_p8_ishres_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -26693,188 +80075,35 @@ 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; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4(); - loaded_pix = getbpl4(); - } - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4(); - } - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; - matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - if (dpf_lookup_no[pix1]) { - val1 += dblpfofs[bpldualpf2of]; - } - val1 ^= bplcon4_denise_xor_val; - dpix_val1 = denise_colors.acolors[val1]; - } - last_bpl_pix = pix1; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4(); - loaded_pix = getbpl4(); - } - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4(); - } - uae_u32 sv1 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv1 = svt; - } } - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; - matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4(); - loaded_pix = getbpl4(); - } - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4(); - } - uae_u32 sv2 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv2 = svt; - } } - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; - matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - uae_u8 val3 = dpf_lookup[pix3]; - if (dpf_lookup_no[pix3]) { - val3 += dblpfofs[bpldualpf2of]; - } - val3 ^= bplcon4_denise_xor_val; - dpix_val3 = denise_colors.acolors[val3]; - } - last_bpl_pix = pix3; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4(); - loaded_pix = getbpl4(); - } - if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4(); - } - uae_u32 sv3 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv3 = svt; - } } - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - } - } dtbuf[h][0] = dpix_val0; - if (sv1) { - uae_u32 spix1 = denise_render_sprites2(pix1, sv1); - if (spix1) { - dpix_val1 = denise_colors.acolors[spix1]; - } - } dtbuf[h][1] = dpix_val1; - if (sv2) { - uae_u32 spix2 = denise_render_sprites2(pix2, sv2); - if (spix2) { - dpix_val2 = denise_colors.acolors[spix2]; - } - } dtbuf[h][2] = dpix_val2; - if (sv3) { - uae_u32 spix3 = denise_render_sprites2(pix3, sv3); - if (spix3) { - dpix_val3 = denise_colors.acolors[spix3]; - } - } dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -26931,11 +80160,11 @@ static void lts_aga_fm0_dpf0_p4_ilores_dshres_spr(void) denise_cck++; } } -static void lts_aga_fm0_dpf0_p4_ilores_dshres_spr_filtered(void) +static void lts_aga_fm0_ehb1_p8_ishres_dshres_filtered(void) { lts_null(); } -static void lts_aga_fm0_dpf1_p4_ilores_dshres_spr(void) +static void lts_aga_fm0_ham0_p8_ishres_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -26946,232 +80175,135 @@ 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; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4e(); - loaded_pix = getbpl4(); - } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl4o(); - loaded_pix = getbpl4(); - } - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4(); - } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl4o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl4(); } - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } - } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; - matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - if (dpf_lookup_no[pix1]) { - val1 += dblpfofs[bpldualpf2of]; - } - val1 ^= bplcon4_denise_xor_val; - dpix_val1 = denise_colors.acolors[val1]; - } - last_bpl_pix = pix1; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4e(); - loaded_pix = getbpl4(); - } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl4o(); - loaded_pix = getbpl4(); - } - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4(); - } - if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { - copybpl4o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl4(); - } - uae_u32 sv1 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv1 = svt; - } } - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; - matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; - } - last_bpl_pix = pix2; } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4e(); - loaded_pix = getbpl4(); - } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl4o(); - loaded_pix = getbpl4(); - } - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4(); - } - if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { - copybpl4o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl4(); - } - uae_u32 sv2 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv2 = svt; - } - } - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; - matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - uae_u8 val3 = dpf_lookup[pix3]; - if (dpf_lookup_no[pix3]) { - val3 += dblpfofs[bpldualpf2of]; - } - val3 ^= bplcon4_denise_xor_val; - dpix_val3 = denise_colors.acolors[val3]; + } + internal_pixel_cnt += 1; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; + dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); } - last_bpl_pix = pix3; + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4e(); - loaded_pix = getbpl4(); + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ham0_p8_ishres_dshres_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_ham1_p8_ishres_dshres(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl4o(); - loaded_pix = getbpl4(); + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; } - if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4(); + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; } - if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) { - copybpl4o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl4(); + internal_pixel_cnt += 1; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; } - uae_u32 sv3 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv3 = svt; - } + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; } - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - } - } dtbuf[h][0] = dpix_val0; - if (sv1) { - uae_u32 spix1 = denise_render_sprites2(pix1, sv1); - if (spix1) { - dpix_val1 = denise_colors.acolors[spix1]; - } - } dtbuf[h][1] = dpix_val1; - if (sv2) { - uae_u32 spix2 = denise_render_sprites2(pix2, sv2); - if (spix2) { - dpix_val2 = denise_colors.acolors[spix2]; - } - } dtbuf[h][2] = dpix_val2; - if (sv3) { - uae_u32 spix3 = denise_render_sprites2(pix3, sv3); - if (spix3) { - dpix_val3 = denise_colors.acolors[spix3]; - } - } dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -27228,59 +80360,11 @@ static void lts_aga_fm0_dpf1_p4_ilores_dshres_spr(void) denise_cck++; } } -static void lts_aga_fm0_dpf1_p4_ilores_dshres_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb0_p4_ilores_dshres_spr(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb0_p4_ilores_dshres_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb1_p4_ilores_dshres_spr(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb1_p4_ilores_dshres_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham0_p4_ilores_dshres_spr(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham0_p4_ilores_dshres_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham1_p4_ilores_dshres_spr(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham1_p4_ilores_dshres_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb0_p4_ilores_dshres_spr(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb0_p4_ilores_dshres_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb1_p4_ilores_dshres_spr(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb1_p4_ilores_dshres_spr_filtered(void) +static void lts_aga_fm0_ham1_p8_ishres_dshres_filtered(void) { lts_null(); } -static void lts_aga_fm0_n0_p6_ilores_dshres_spr(void) +static void lts_aga_fm0_kehb0_p8_ishres_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -27291,168 +80375,35 @@ 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; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6(); - loaded_pix = getbpl6(); - } - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6(); - } - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; - matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix1; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6(); - loaded_pix = getbpl6(); - } - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6(); - } - uae_u32 sv1 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv1 = svt; - } } - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; - matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6(); - loaded_pix = getbpl6(); - } - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6(); - } - uae_u32 sv2 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv2 = svt; - } } - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; - matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix3; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6(); - loaded_pix = getbpl6(); - } - if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6(); - } - uae_u32 sv3 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv3 = svt; - } } - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - } - } dtbuf[h][0] = dpix_val0; - if (sv1) { - uae_u32 spix1 = denise_render_sprites2(pix1, sv1); - if (spix1) { - dpix_val1 = denise_colors.acolors[spix1]; - } - } dtbuf[h][1] = dpix_val1; - if (sv2) { - uae_u32 spix2 = denise_render_sprites2(pix2, sv2); - if (spix2) { - dpix_val2 = denise_colors.acolors[spix2]; - } - } dtbuf[h][2] = dpix_val2; - if (sv3) { - uae_u32 spix3 = denise_render_sprites2(pix3, sv3); - if (spix3) { - dpix_val3 = denise_colors.acolors[spix3]; - } - } dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -27509,11 +80460,11 @@ static void lts_aga_fm0_n0_p6_ilores_dshres_spr(void) denise_cck++; } } -static void lts_aga_fm0_n0_p6_ilores_dshres_spr_filtered(void) +static void lts_aga_fm0_kehb0_p8_ishres_dshres_filtered(void) { lts_null(); } -static void lts_aga_fm0_n1_p6_ilores_dshres_spr(void) +static void lts_aga_fm0_kehb1_p8_ishres_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -27524,212 +80475,35 @@ 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; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6e(); - loaded_pix = getbpl6(); - } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl6o(); - loaded_pix = getbpl6(); - } - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6(); } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl6o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl6(); - } - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } - } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; - matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix1; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6e(); - loaded_pix = getbpl6(); - } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl6o(); - loaded_pix = getbpl6(); - } - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6(); - } - if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { - copybpl6o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl6(); - } - uae_u32 sv1 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv1 = svt; - } } - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; - matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6e(); - loaded_pix = getbpl6(); - } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl6o(); - loaded_pix = getbpl6(); - } - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6(); - } - if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { - copybpl6o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl6(); - } - uae_u32 sv2 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv2 = svt; - } } - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; - matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix3; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6e(); - loaded_pix = getbpl6(); - } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl6o(); - loaded_pix = getbpl6(); - } - if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6(); - } - if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) { - copybpl6o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl6(); - } - uae_u32 sv3 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv3 = svt; - } } - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - } - } dtbuf[h][0] = dpix_val0; - if (sv1) { - uae_u32 spix1 = denise_render_sprites2(pix1, sv1); - if (spix1) { - dpix_val1 = denise_colors.acolors[spix1]; - } - } dtbuf[h][1] = dpix_val1; - if (sv2) { - uae_u32 spix2 = denise_render_sprites2(pix2, sv2); - if (spix2) { - dpix_val2 = denise_colors.acolors[spix2]; - } - } dtbuf[h][2] = dpix_val2; - if (sv3) { - uae_u32 spix3 = denise_render_sprites2(pix3, sv3); - if (spix3) { - dpix_val3 = denise_colors.acolors[spix3]; - } - } dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -27786,11 +80560,11 @@ static void lts_aga_fm0_n1_p6_ilores_dshres_spr(void) denise_cck++; } } -static void lts_aga_fm0_n1_p6_ilores_dshres_spr_filtered(void) +static void lts_aga_fm0_kehb1_p8_ishres_dshres_filtered(void) { lts_null(); } -static void lts_aga_fm0_dpf0_p6_ilores_dshres_spr(void) +static void lts_aga_fm0_n0_p2_ishres_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -27811,26 +80585,15 @@ static void lts_aga_fm0_dpf0_p6_ilores_dshres_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix0; } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6(); - loaded_pix = getbpl6(); - } - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6(); + shiftbpl2(); + if (bpldat_copy[0] && ((cmp | 0) & 15) == bplcon1_shift_full_masked[0]) { + copybpl2(); } + loaded_pix = getbpl2(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -27849,26 +80612,15 @@ static void lts_aga_fm0_dpf0_p6_ilores_dshres_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix1 = loaded_pixs[1]; clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - if (dpf_lookup_no[pix1]) { - val1 += dblpfofs[bpldualpf2of]; - } - val1 ^= bplcon4_denise_xor_val; - dpix_val1 = denise_colors.acolors[val1]; + dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix1; } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6(); - loaded_pix = getbpl6(); - } - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6(); + shiftbpl2(); + if (bpldat_copy[0] && ((cmp | 1) & 15) == bplcon1_shift_full_masked[0]) { + copybpl2(); } + loaded_pix = getbpl2(); uae_u32 sv1 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -27887,26 +80639,15 @@ static void lts_aga_fm0_dpf0_p6_ilores_dshres_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix2; } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6(); - loaded_pix = getbpl6(); - } - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6(); + shiftbpl2(); + if (bpldat_copy[0] && ((cmp | 2) & 15) == bplcon1_shift_full_masked[0]) { + copybpl2(); } + loaded_pix = getbpl2(); uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -27925,26 +80666,15 @@ static void lts_aga_fm0_dpf0_p6_ilores_dshres_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix3 = loaded_pixs[3]; clxdat |= bplcoltable[pix3]; - uae_u8 val3 = dpf_lookup[pix3]; - if (dpf_lookup_no[pix3]) { - val3 += dblpfofs[bpldualpf2of]; - } - val3 ^= bplcon4_denise_xor_val; - dpix_val3 = denise_colors.acolors[val3]; + dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix3; } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6(); - loaded_pix = getbpl6(); - } - if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6(); + shiftbpl2(); + if (bpldat_copy[0] && ((cmp | 3) & 15) == bplcon1_shift_full_masked[0]) { + copybpl2(); } + loaded_pix = getbpl2(); uae_u32 sv3 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -28039,11 +80769,11 @@ static void lts_aga_fm0_dpf0_p6_ilores_dshres_spr(void) denise_cck++; } } -static void lts_aga_fm0_dpf0_p6_ilores_dshres_spr_filtered(void) +static void lts_aga_fm0_n0_p2_ishres_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm0_dpf1_p6_ilores_dshres_spr(void) +static void lts_aga_fm0_n1_p2_ishres_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -28064,37 +80794,18 @@ static void lts_aga_fm0_dpf1_p6_ilores_dshres_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix0; } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6e(); - loaded_pix = getbpl6(); - } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl6o(); - loaded_pix = getbpl6(); - } - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6(); + shiftbpl2(); + if (bpldat_copy[0] && ((cmp | 0) & 15) == bplcon1_shift_full_masked[0]) { + copybpl2e(); } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl6o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl6(); + if (bpldat_copy[1] && ((cmp | 0) & 15) == bplcon1_shift_full_masked[1]) { + copybpl2o(); } + loaded_pix = getbpl2(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -28113,37 +80824,18 @@ static void lts_aga_fm0_dpf1_p6_ilores_dshres_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix1 = loaded_pixs[1]; clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - if (dpf_lookup_no[pix1]) { - val1 += dblpfofs[bpldualpf2of]; - } - val1 ^= bplcon4_denise_xor_val; - dpix_val1 = denise_colors.acolors[val1]; + dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix1; } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6e(); - loaded_pix = getbpl6(); - } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl6o(); - loaded_pix = getbpl6(); - } - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6(); + shiftbpl2(); + if (bpldat_copy[0] && ((cmp | 1) & 15) == bplcon1_shift_full_masked[0]) { + copybpl2e(); } - if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { - copybpl6o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl6(); + if (bpldat_copy[1] && ((cmp | 1) & 15) == bplcon1_shift_full_masked[1]) { + copybpl2o(); } + loaded_pix = getbpl2(); uae_u32 sv1 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -28162,37 +80854,18 @@ static void lts_aga_fm0_dpf1_p6_ilores_dshres_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix2; } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6e(); - loaded_pix = getbpl6(); - } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl6o(); - loaded_pix = getbpl6(); - } - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6(); + shiftbpl2(); + if (bpldat_copy[0] && ((cmp | 2) & 15) == bplcon1_shift_full_masked[0]) { + copybpl2e(); } - if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { - copybpl6o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl6(); + if (bpldat_copy[1] && ((cmp | 2) & 15) == bplcon1_shift_full_masked[1]) { + copybpl2o(); } + loaded_pix = getbpl2(); uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -28211,37 +80884,18 @@ static void lts_aga_fm0_dpf1_p6_ilores_dshres_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix3 = loaded_pixs[3]; clxdat |= bplcoltable[pix3]; - uae_u8 val3 = dpf_lookup[pix3]; - if (dpf_lookup_no[pix3]) { - val3 += dblpfofs[bpldualpf2of]; - } - val3 ^= bplcon4_denise_xor_val; - dpix_val3 = denise_colors.acolors[val3]; + dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix3; } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6e(); - loaded_pix = getbpl6(); - } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl6o(); - loaded_pix = getbpl6(); - } - if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6(); + shiftbpl2(); + if (bpldat_copy[0] && ((cmp | 3) & 15) == bplcon1_shift_full_masked[0]) { + copybpl2e(); } - if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) { - copybpl6o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl6(); + if (bpldat_copy[1] && ((cmp | 3) & 15) == bplcon1_shift_full_masked[1]) { + copybpl2o(); } + loaded_pix = getbpl2(); uae_u32 sv3 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -28336,11 +80990,11 @@ static void lts_aga_fm0_dpf1_p6_ilores_dshres_spr(void) denise_cck++; } } -static void lts_aga_fm0_dpf1_p6_ilores_dshres_spr_filtered(void) +static void lts_aga_fm0_n1_p2_ishres_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm0_ehb0_p6_ilores_dshres_spr(void) +static void lts_aga_fm0_dpf0_p2_ishres_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -28361,27 +81015,20 @@ static void lts_aga_fm0_ehb0_p6_ilores_dshres_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - pix0 ^= bplcon4_denise_xor_val; - if (!(pix0 & 0x20)) { - dpix_val0 = denise_colors.acolors[pix0]; - } else { - uae_u32 v = (denise_colors.color_regs_aga[pix0 & 0x1f] >> 1) & 0x7f7f7f; - dpix_val0 = CONVERT_RGB(v); + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; } last_bpl_pix = pix0; } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6(); - loaded_pix = getbpl6(); - } - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6(); + shiftbpl2(); + if (bpldat_copy[0] && ((cmp | 0) & 15) == bplcon1_shift_full_masked[0]) { + copybpl2(); } + loaded_pix = getbpl2(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -28400,27 +81047,20 @@ static void lts_aga_fm0_ehb0_p6_ilores_dshres_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix1 = loaded_pixs[1]; clxdat |= bplcoltable[pix1]; - pix1 ^= bplcon4_denise_xor_val; - if (!(pix1 & 0x20)) { - dpix_val1 = denise_colors.acolors[pix1]; - } else { - uae_u32 v = (denise_colors.color_regs_aga[pix1 & 0x1f] >> 1) & 0x7f7f7f; - dpix_val1 = CONVERT_RGB(v); + uae_u8 val1 = dpf_lookup[pix1]; + if (dpf_lookup_no[pix1]) { + val1 += dblpfofs[bpldualpf2of]; } + val1 ^= bplcon4_denise_xor_val; + dpix_val1 = denise_colors.acolors[val1]; } last_bpl_pix = pix1; } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6(); - loaded_pix = getbpl6(); - } - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6(); + shiftbpl2(); + if (bpldat_copy[0] && ((cmp | 1) & 15) == bplcon1_shift_full_masked[0]) { + copybpl2(); } + loaded_pix = getbpl2(); uae_u32 sv1 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -28439,27 +81079,20 @@ static void lts_aga_fm0_ehb0_p6_ilores_dshres_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - pix2 ^= bplcon4_denise_xor_val; - if (!(pix2 & 0x20)) { - dpix_val2 = denise_colors.acolors[pix2]; - } else { - uae_u32 v = (denise_colors.color_regs_aga[pix2 & 0x1f] >> 1) & 0x7f7f7f; - dpix_val2 = CONVERT_RGB(v); + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; } last_bpl_pix = pix2; } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6(); - loaded_pix = getbpl6(); - } - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6(); + shiftbpl2(); + if (bpldat_copy[0] && ((cmp | 2) & 15) == bplcon1_shift_full_masked[0]) { + copybpl2(); } + loaded_pix = getbpl2(); uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -28478,27 +81111,20 @@ static void lts_aga_fm0_ehb0_p6_ilores_dshres_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix3 = loaded_pixs[3]; clxdat |= bplcoltable[pix3]; - pix3 ^= bplcon4_denise_xor_val; - if (!(pix3 & 0x20)) { - dpix_val3 = denise_colors.acolors[pix3]; - } else { - uae_u32 v = (denise_colors.color_regs_aga[pix3 & 0x1f] >> 1) & 0x7f7f7f; - dpix_val3 = CONVERT_RGB(v); + uae_u8 val3 = dpf_lookup[pix3]; + if (dpf_lookup_no[pix3]) { + val3 += dblpfofs[bpldualpf2of]; } + val3 ^= bplcon4_denise_xor_val; + dpix_val3 = denise_colors.acolors[val3]; } last_bpl_pix = pix3; } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6(); - loaded_pix = getbpl6(); - } - if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6(); + shiftbpl2(); + if (bpldat_copy[0] && ((cmp | 3) & 15) == bplcon1_shift_full_masked[0]) { + copybpl2(); } + loaded_pix = getbpl2(); uae_u32 sv3 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -28593,11 +81219,11 @@ static void lts_aga_fm0_ehb0_p6_ilores_dshres_spr(void) denise_cck++; } } -static void lts_aga_fm0_ehb0_p6_ilores_dshres_spr_filtered(void) +static void lts_aga_fm0_dpf0_p2_ishres_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm0_ehb1_p6_ilores_dshres_spr(void) +static void lts_aga_fm0_dpf1_p2_ishres_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -28618,38 +81244,23 @@ static void lts_aga_fm0_ehb1_p6_ilores_dshres_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - pix0 ^= bplcon4_denise_xor_val; - if (!(pix0 & 0x20)) { - dpix_val0 = denise_colors.acolors[pix0]; - } else { - uae_u32 v = (denise_colors.color_regs_aga[pix0 & 0x1f] >> 1) & 0x7f7f7f; - dpix_val0 = CONVERT_RGB(v); + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; } - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6e(); - loaded_pix = getbpl6(); - } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl6o(); - loaded_pix = getbpl6(); + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; } - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6(); + shiftbpl2(); + if (bpldat_copy[0] && ((cmp | 0) & 15) == bplcon1_shift_full_masked[0]) { + copybpl2e(); } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl6o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl6(); + if (bpldat_copy[1] && ((cmp | 0) & 15) == bplcon1_shift_full_masked[1]) { + copybpl2o(); } + loaded_pix = getbpl2(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -28668,38 +81279,23 @@ static void lts_aga_fm0_ehb1_p6_ilores_dshres_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix1 = loaded_pixs[1]; clxdat |= bplcoltable[pix1]; - pix1 ^= bplcon4_denise_xor_val; - if (!(pix1 & 0x20)) { - dpix_val1 = denise_colors.acolors[pix1]; - } else { - uae_u32 v = (denise_colors.color_regs_aga[pix1 & 0x1f] >> 1) & 0x7f7f7f; - dpix_val1 = CONVERT_RGB(v); + uae_u8 val1 = dpf_lookup[pix1]; + if (dpf_lookup_no[pix1]) { + val1 += dblpfofs[bpldualpf2of]; } + val1 ^= bplcon4_denise_xor_val; + dpix_val1 = denise_colors.acolors[val1]; } last_bpl_pix = pix1; } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6e(); - loaded_pix = getbpl6(); - } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl6o(); - loaded_pix = getbpl6(); - } - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6(); + shiftbpl2(); + if (bpldat_copy[0] && ((cmp | 1) & 15) == bplcon1_shift_full_masked[0]) { + copybpl2e(); } - if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { - copybpl6o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl6(); + if (bpldat_copy[1] && ((cmp | 1) & 15) == bplcon1_shift_full_masked[1]) { + copybpl2o(); } + loaded_pix = getbpl2(); uae_u32 sv1 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -28718,38 +81314,23 @@ static void lts_aga_fm0_ehb1_p6_ilores_dshres_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - pix2 ^= bplcon4_denise_xor_val; - if (!(pix2 & 0x20)) { - dpix_val2 = denise_colors.acolors[pix2]; - } else { - uae_u32 v = (denise_colors.color_regs_aga[pix2 & 0x1f] >> 1) & 0x7f7f7f; - dpix_val2 = CONVERT_RGB(v); + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; } last_bpl_pix = pix2; } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6e(); - loaded_pix = getbpl6(); - } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl6o(); - loaded_pix = getbpl6(); - } - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6(); + shiftbpl2(); + if (bpldat_copy[0] && ((cmp | 2) & 15) == bplcon1_shift_full_masked[0]) { + copybpl2e(); } - if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { - copybpl6o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl6(); + if (bpldat_copy[1] && ((cmp | 2) & 15) == bplcon1_shift_full_masked[1]) { + copybpl2o(); } + loaded_pix = getbpl2(); uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -28768,38 +81349,23 @@ static void lts_aga_fm0_ehb1_p6_ilores_dshres_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix3 = loaded_pixs[3]; clxdat |= bplcoltable[pix3]; - pix3 ^= bplcon4_denise_xor_val; - if (!(pix3 & 0x20)) { - dpix_val3 = denise_colors.acolors[pix3]; - } else { - uae_u32 v = (denise_colors.color_regs_aga[pix3 & 0x1f] >> 1) & 0x7f7f7f; - dpix_val3 = CONVERT_RGB(v); + uae_u8 val3 = dpf_lookup[pix3]; + if (dpf_lookup_no[pix3]) { + val3 += dblpfofs[bpldualpf2of]; } + val3 ^= bplcon4_denise_xor_val; + dpix_val3 = denise_colors.acolors[val3]; } last_bpl_pix = pix3; } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6e(); - loaded_pix = getbpl6(); - } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl6o(); - loaded_pix = getbpl6(); - } - if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6(); + shiftbpl2(); + if (bpldat_copy[0] && ((cmp | 3) & 15) == bplcon1_shift_full_masked[0]) { + copybpl2e(); } - if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) { - copybpl6o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl6(); + if (bpldat_copy[1] && ((cmp | 3) & 15) == bplcon1_shift_full_masked[1]) { + copybpl2o(); } + loaded_pix = getbpl2(); uae_u32 sv3 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -28894,11 +81460,11 @@ static void lts_aga_fm0_ehb1_p6_ilores_dshres_spr(void) denise_cck++; } } -static void lts_aga_fm0_ehb1_p6_ilores_dshres_spr_filtered(void) +static void lts_aga_fm0_dpf1_p2_ishres_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm0_ham0_p6_ilores_dshres_spr(void) +static void lts_aga_fm0_ehb0_p2_ishres_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -28909,30 +81475,12 @@ 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; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = decode_ham_pixel_aga(pix0); - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6(); - loaded_pix = getbpl6(); - } - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6(); } uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { @@ -28942,30 +81490,12 @@ static void lts_aga_fm0_ham0_p6_ilores_dshres_spr(void) sv0 = svt; } } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - dpix_val1 = decode_ham_pixel_aga(pix1); - } - last_bpl_pix = pix1; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6(); - loaded_pix = getbpl6(); - } - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6(); } uae_u32 sv1 = 0; if (denise_spr_nr_armeds) { @@ -28975,30 +81505,12 @@ static void lts_aga_fm0_ham0_p6_ilores_dshres_spr(void) sv1 = svt; } } - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = decode_ham_pixel_aga(pix2); - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6(); - loaded_pix = getbpl6(); - } - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6(); } uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { @@ -29008,30 +81520,12 @@ static void lts_aga_fm0_ham0_p6_ilores_dshres_spr(void) sv2 = svt; } } - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - dpix_val3 = decode_ham_pixel_aga(pix3); - } - last_bpl_pix = pix3; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6(); - loaded_pix = getbpl6(); - } - if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6(); } uae_u32 sv3 = 0; if (denise_spr_nr_armeds) { @@ -29041,7 +81535,6 @@ static void lts_aga_fm0_ham0_p6_ilores_dshres_spr(void) sv3 = svt; } } - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { @@ -29127,11 +81620,11 @@ static void lts_aga_fm0_ham0_p6_ilores_dshres_spr(void) denise_cck++; } } -static void lts_aga_fm0_ham0_p6_ilores_dshres_spr_filtered(void) +static void lts_aga_fm0_ehb0_p2_ishres_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm0_ham1_p6_ilores_dshres_spr(void) +static void lts_aga_fm0_ehb1_p2_ishres_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -29142,41 +81635,12 @@ 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; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = decode_ham_pixel_aga(pix0); - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6e(); - loaded_pix = getbpl6(); - } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl6o(); - loaded_pix = getbpl6(); - } - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6(); - } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl6o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl6(); } uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { @@ -29186,41 +81650,12 @@ static void lts_aga_fm0_ham1_p6_ilores_dshres_spr(void) sv0 = svt; } } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - dpix_val1 = decode_ham_pixel_aga(pix1); - } - last_bpl_pix = pix1; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6e(); - loaded_pix = getbpl6(); - } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl6o(); - loaded_pix = getbpl6(); - } - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6(); - } - if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { - copybpl6o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl6(); } uae_u32 sv1 = 0; if (denise_spr_nr_armeds) { @@ -29230,41 +81665,12 @@ static void lts_aga_fm0_ham1_p6_ilores_dshres_spr(void) sv1 = svt; } } - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = decode_ham_pixel_aga(pix2); - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6e(); - loaded_pix = getbpl6(); - } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl6o(); - loaded_pix = getbpl6(); - } - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6(); - } - if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { - copybpl6o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl6(); } uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { @@ -29274,41 +81680,12 @@ static void lts_aga_fm0_ham1_p6_ilores_dshres_spr(void) sv2 = svt; } } - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - dpix_val3 = decode_ham_pixel_aga(pix3); - } - last_bpl_pix = pix3; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6e(); - loaded_pix = getbpl6(); - } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl6o(); - loaded_pix = getbpl6(); - } - if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6(); - } - if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) { - copybpl6o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl6(); } uae_u32 sv3 = 0; if (denise_spr_nr_armeds) { @@ -29318,7 +81695,6 @@ static void lts_aga_fm0_ham1_p6_ilores_dshres_spr(void) sv3 = svt; } } - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { @@ -29404,11 +81780,11 @@ static void lts_aga_fm0_ham1_p6_ilores_dshres_spr(void) denise_cck++; } } -static void lts_aga_fm0_ham1_p6_ilores_dshres_spr_filtered(void) +static void lts_aga_fm0_ehb1_p2_ishres_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm0_kehb0_p6_ilores_dshres_spr(void) +static void lts_aga_fm0_ham0_p2_ishres_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -29419,31 +81795,12 @@ 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; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - pix0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[pix0 & 31]; - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6(); - loaded_pix = getbpl6(); - } - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6(); } uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { @@ -29453,31 +81810,12 @@ static void lts_aga_fm0_kehb0_p6_ilores_dshres_spr(void) sv0 = svt; } } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - pix1 ^= bplcon4_denise_xor_val; - dpix_val1 = denise_colors.acolors[pix1 & 31]; - } - last_bpl_pix = pix1; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6(); - loaded_pix = getbpl6(); - } - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6(); } uae_u32 sv1 = 0; if (denise_spr_nr_armeds) { @@ -29487,31 +81825,12 @@ static void lts_aga_fm0_kehb0_p6_ilores_dshres_spr(void) sv1 = svt; } } - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - pix2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[pix2 & 31]; - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6(); - loaded_pix = getbpl6(); - } - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6(); } uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { @@ -29521,31 +81840,12 @@ static void lts_aga_fm0_kehb0_p6_ilores_dshres_spr(void) sv2 = svt; } } - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - pix3 ^= bplcon4_denise_xor_val; - dpix_val3 = denise_colors.acolors[pix3 & 31]; - } - last_bpl_pix = pix3; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6(); - loaded_pix = getbpl6(); - } - if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6(); } uae_u32 sv3 = 0; if (denise_spr_nr_armeds) { @@ -29555,7 +81855,6 @@ static void lts_aga_fm0_kehb0_p6_ilores_dshres_spr(void) sv3 = svt; } } - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { @@ -29641,11 +81940,11 @@ static void lts_aga_fm0_kehb0_p6_ilores_dshres_spr(void) denise_cck++; } } -static void lts_aga_fm0_kehb0_p6_ilores_dshres_spr_filtered(void) +static void lts_aga_fm0_ham0_p2_ishres_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm0_kehb1_p6_ilores_dshres_spr(void) +static void lts_aga_fm0_ham1_p2_ishres_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -29656,42 +81955,12 @@ 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; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - pix0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[pix0 & 31]; - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6e(); - loaded_pix = getbpl6(); - } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl6o(); - loaded_pix = getbpl6(); - } - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6(); - } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl6o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl6(); } uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { @@ -29701,87 +81970,27 @@ static void lts_aga_fm0_kehb1_p6_ilores_dshres_spr(void) sv0 = svt; } } - loaded_pixs[0] = loaded_pix; - internal_pixel_cnt += 1; - matchsprites_aga(cnt + 1); - uae_u8 pix1 = 0; - uae_u32 dpix_val1 = BLANK_COLOR; - if (!denise_blank_active) { - dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - pix1 ^= bplcon4_denise_xor_val; - dpix_val1 = denise_colors.acolors[pix1 & 31]; - } - last_bpl_pix = pix1; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6e(); - loaded_pix = getbpl6(); - } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl6o(); - loaded_pix = getbpl6(); - } - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6(); - } - if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { - copybpl6o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl6(); - } - uae_u32 sv1 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv1 = svt; - } - } - loaded_pixs[1] = loaded_pix; - internal_pixel_cnt += 1; - matchsprites_aga(cnt + 2); - uae_u8 pix2 = 0; - uae_u32 dpix_val2 = BLANK_COLOR; - if (!denise_blank_active) { - dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - pix2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[pix2 & 31]; - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6e(); - loaded_pix = getbpl6(); - } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl6o(); - loaded_pix = getbpl6(); + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; } - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6(); + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } } - if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { - copybpl6o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl6(); + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; } uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { @@ -29791,42 +82000,12 @@ static void lts_aga_fm0_kehb1_p6_ilores_dshres_spr(void) sv2 = svt; } } - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - pix3 ^= bplcon4_denise_xor_val; - dpix_val3 = denise_colors.acolors[pix3 & 31]; - } - last_bpl_pix = pix3; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6e(); - loaded_pix = getbpl6(); - } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl6o(); - loaded_pix = getbpl6(); - } - if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6(); - } - if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) { - copybpl6o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl6(); } uae_u32 sv3 = 0; if (denise_spr_nr_armeds) { @@ -29836,7 +82015,6 @@ static void lts_aga_fm0_kehb1_p6_ilores_dshres_spr(void) sv3 = svt; } } - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { @@ -29922,11 +82100,11 @@ static void lts_aga_fm0_kehb1_p6_ilores_dshres_spr(void) denise_cck++; } } -static void lts_aga_fm0_kehb1_p6_ilores_dshres_spr_filtered(void) +static void lts_aga_fm0_ham1_p2_ishres_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm0_n0_p8_ilores_dshres_spr(void) +static void lts_aga_fm0_kehb0_p2_ishres_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -29937,30 +82115,12 @@ 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; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8(); - loaded_pix = getbpl8(); - } - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8(); } uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { @@ -29970,30 +82130,12 @@ static void lts_aga_fm0_n0_p8_ilores_dshres_spr(void) sv0 = svt; } } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix1; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8(); - loaded_pix = getbpl8(); - } - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8(); } uae_u32 sv1 = 0; if (denise_spr_nr_armeds) { @@ -30003,30 +82145,12 @@ static void lts_aga_fm0_n0_p8_ilores_dshres_spr(void) sv1 = svt; } } - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8(); - loaded_pix = getbpl8(); - } - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8(); } uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { @@ -30036,30 +82160,12 @@ static void lts_aga_fm0_n0_p8_ilores_dshres_spr(void) sv2 = svt; } } - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix3; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8(); - loaded_pix = getbpl8(); - } - if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8(); } uae_u32 sv3 = 0; if (denise_spr_nr_armeds) { @@ -30069,7 +82175,6 @@ static void lts_aga_fm0_n0_p8_ilores_dshres_spr(void) sv3 = svt; } } - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { @@ -30155,11 +82260,11 @@ static void lts_aga_fm0_n0_p8_ilores_dshres_spr(void) denise_cck++; } } -static void lts_aga_fm0_n0_p8_ilores_dshres_spr_filtered(void) +static void lts_aga_fm0_kehb0_p2_ishres_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm0_n1_p8_ilores_dshres_spr(void) +static void lts_aga_fm0_kehb1_p2_ishres_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -30170,41 +82275,12 @@ 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; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8e(); - loaded_pix = getbpl8(); - } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl8o(); - loaded_pix = getbpl8(); - } - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8(); - } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl8(); } uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { @@ -30214,41 +82290,12 @@ static void lts_aga_fm0_n1_p8_ilores_dshres_spr(void) sv0 = svt; } } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix1; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8e(); - loaded_pix = getbpl8(); - } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl8o(); - loaded_pix = getbpl8(); - } - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8(); - } - if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl8(); } uae_u32 sv1 = 0; if (denise_spr_nr_armeds) { @@ -30258,41 +82305,12 @@ static void lts_aga_fm0_n1_p8_ilores_dshres_spr(void) sv1 = svt; } } - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8e(); - loaded_pix = getbpl8(); - } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl8o(); - loaded_pix = getbpl8(); - } - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8(); - } - if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl8(); } uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { @@ -30302,41 +82320,12 @@ static void lts_aga_fm0_n1_p8_ilores_dshres_spr(void) sv2 = svt; } } - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix3; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8e(); - loaded_pix = getbpl8(); - } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl8o(); - loaded_pix = getbpl8(); - } - if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8(); - } - if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl8(); } uae_u32 sv3 = 0; if (denise_spr_nr_armeds) { @@ -30346,7 +82335,6 @@ static void lts_aga_fm0_n1_p8_ilores_dshres_spr(void) sv3 = svt; } } - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { @@ -30432,11 +82420,11 @@ static void lts_aga_fm0_n1_p8_ilores_dshres_spr(void) denise_cck++; } } -static void lts_aga_fm0_n1_p8_ilores_dshres_spr_filtered(void) +static void lts_aga_fm0_kehb1_p2_ishres_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm0_dpf0_p8_ilores_dshres_spr(void) +static void lts_aga_fm0_n0_p4_ishres_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -30447,35 +82435,12 @@ 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; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8(); - loaded_pix = getbpl8(); - } - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8(); } uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { @@ -30485,35 +82450,12 @@ static void lts_aga_fm0_dpf0_p8_ilores_dshres_spr(void) sv0 = svt; } } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - if (dpf_lookup_no[pix1]) { - val1 += dblpfofs[bpldualpf2of]; - } - val1 ^= bplcon4_denise_xor_val; - dpix_val1 = denise_colors.acolors[val1]; - } - last_bpl_pix = pix1; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8(); - loaded_pix = getbpl8(); - } - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8(); } uae_u32 sv1 = 0; if (denise_spr_nr_armeds) { @@ -30523,35 +82465,12 @@ static void lts_aga_fm0_dpf0_p8_ilores_dshres_spr(void) sv1 = svt; } } - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8(); - loaded_pix = getbpl8(); - } - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8(); } uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { @@ -30561,35 +82480,12 @@ static void lts_aga_fm0_dpf0_p8_ilores_dshres_spr(void) sv2 = svt; } } - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - uae_u8 val3 = dpf_lookup[pix3]; - if (dpf_lookup_no[pix3]) { - val3 += dblpfofs[bpldualpf2of]; - } - val3 ^= bplcon4_denise_xor_val; - dpix_val3 = denise_colors.acolors[val3]; - } - last_bpl_pix = pix3; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8(); - loaded_pix = getbpl8(); - } - if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8(); } uae_u32 sv3 = 0; if (denise_spr_nr_armeds) { @@ -30599,7 +82495,6 @@ static void lts_aga_fm0_dpf0_p8_ilores_dshres_spr(void) sv3 = svt; } } - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { @@ -30685,11 +82580,11 @@ static void lts_aga_fm0_dpf0_p8_ilores_dshres_spr(void) denise_cck++; } } -static void lts_aga_fm0_dpf0_p8_ilores_dshres_spr_filtered(void) +static void lts_aga_fm0_n0_p4_ishres_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm0_dpf1_p8_ilores_dshres_spr(void) +static void lts_aga_fm0_n1_p4_ishres_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -30700,46 +82595,12 @@ 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; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8e(); - loaded_pix = getbpl8(); - } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl8o(); - loaded_pix = getbpl8(); - } - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8(); - } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl8(); } uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { @@ -30749,46 +82610,12 @@ static void lts_aga_fm0_dpf1_p8_ilores_dshres_spr(void) sv0 = svt; } } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - if (dpf_lookup_no[pix1]) { - val1 += dblpfofs[bpldualpf2of]; - } - val1 ^= bplcon4_denise_xor_val; - dpix_val1 = denise_colors.acolors[val1]; - } - last_bpl_pix = pix1; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8e(); - loaded_pix = getbpl8(); - } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl8o(); - loaded_pix = getbpl8(); - } - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8(); - } - if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl8(); } uae_u32 sv1 = 0; if (denise_spr_nr_armeds) { @@ -30798,46 +82625,12 @@ static void lts_aga_fm0_dpf1_p8_ilores_dshres_spr(void) sv1 = svt; } } - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8e(); - loaded_pix = getbpl8(); - } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl8o(); - loaded_pix = getbpl8(); - } - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8(); - } - if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl8(); } uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { @@ -30847,46 +82640,12 @@ static void lts_aga_fm0_dpf1_p8_ilores_dshres_spr(void) sv2 = svt; } } - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - uae_u8 val3 = dpf_lookup[pix3]; - if (dpf_lookup_no[pix3]) { - val3 += dblpfofs[bpldualpf2of]; - } - val3 ^= bplcon4_denise_xor_val; - dpix_val3 = denise_colors.acolors[val3]; - } - last_bpl_pix = pix3; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8e(); - loaded_pix = getbpl8(); - } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl8o(); - loaded_pix = getbpl8(); - } - if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8(); - } - if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl8(); } uae_u32 sv3 = 0; if (denise_spr_nr_armeds) { @@ -30896,7 +82655,6 @@ static void lts_aga_fm0_dpf1_p8_ilores_dshres_spr(void) sv3 = svt; } } - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { @@ -30982,27 +82740,11 @@ static void lts_aga_fm0_dpf1_p8_ilores_dshres_spr(void) denise_cck++; } } -static void lts_aga_fm0_dpf1_p8_ilores_dshres_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb0_p8_ilores_dshres_spr(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb0_p8_ilores_dshres_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb1_p8_ilores_dshres_spr(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb1_p8_ilores_dshres_spr_filtered(void) +static void lts_aga_fm0_n1_p4_ishres_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm0_ham0_p8_ilores_dshres_spr(void) +static void lts_aga_fm0_dpf0_p4_ishres_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -31013,30 +82755,12 @@ 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; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = decode_ham_pixel_aga(pix0); - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8(); - loaded_pix = getbpl8(); - } - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8(); } uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { @@ -31046,30 +82770,12 @@ static void lts_aga_fm0_ham0_p8_ilores_dshres_spr(void) sv0 = svt; } } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - dpix_val1 = decode_ham_pixel_aga(pix1); - } - last_bpl_pix = pix1; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8(); - loaded_pix = getbpl8(); - } - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8(); } uae_u32 sv1 = 0; if (denise_spr_nr_armeds) { @@ -31079,30 +82785,12 @@ static void lts_aga_fm0_ham0_p8_ilores_dshres_spr(void) sv1 = svt; } } - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = decode_ham_pixel_aga(pix2); - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8(); - loaded_pix = getbpl8(); - } - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8(); } uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { @@ -31112,30 +82800,12 @@ static void lts_aga_fm0_ham0_p8_ilores_dshres_spr(void) sv2 = svt; } } - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - dpix_val3 = decode_ham_pixel_aga(pix3); - } - last_bpl_pix = pix3; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8(); - loaded_pix = getbpl8(); - } - if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8(); } uae_u32 sv3 = 0; if (denise_spr_nr_armeds) { @@ -31145,7 +82815,6 @@ static void lts_aga_fm0_ham0_p8_ilores_dshres_spr(void) sv3 = svt; } } - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { @@ -31231,11 +82900,11 @@ static void lts_aga_fm0_ham0_p8_ilores_dshres_spr(void) denise_cck++; } } -static void lts_aga_fm0_ham0_p8_ilores_dshres_spr_filtered(void) +static void lts_aga_fm0_dpf0_p4_ishres_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm0_ham1_p8_ilores_dshres_spr(void) +static void lts_aga_fm0_dpf1_p4_ishres_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -31246,41 +82915,12 @@ 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; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = decode_ham_pixel_aga(pix0); - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8e(); - loaded_pix = getbpl8(); - } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl8o(); - loaded_pix = getbpl8(); - } - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8(); - } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl8(); } uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { @@ -31290,41 +82930,12 @@ static void lts_aga_fm0_ham1_p8_ilores_dshres_spr(void) sv0 = svt; } } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - dpix_val1 = decode_ham_pixel_aga(pix1); - } - last_bpl_pix = pix1; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8e(); - loaded_pix = getbpl8(); - } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl8o(); - loaded_pix = getbpl8(); - } - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8(); - } - if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl8(); } uae_u32 sv1 = 0; if (denise_spr_nr_armeds) { @@ -31334,41 +82945,12 @@ static void lts_aga_fm0_ham1_p8_ilores_dshres_spr(void) sv1 = svt; } } - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = decode_ham_pixel_aga(pix2); - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8e(); - loaded_pix = getbpl8(); - } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl8o(); - loaded_pix = getbpl8(); - } - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8(); - } - if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl8(); } uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { @@ -31378,41 +82960,12 @@ static void lts_aga_fm0_ham1_p8_ilores_dshres_spr(void) sv2 = svt; } } - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - dpix_val3 = decode_ham_pixel_aga(pix3); - } - last_bpl_pix = pix3; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8e(); - loaded_pix = getbpl8(); - } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl8o(); - loaded_pix = getbpl8(); - } - if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8(); - } - if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl8(); } uae_u32 sv3 = 0; if (denise_spr_nr_armeds) { @@ -31422,7 +82975,6 @@ static void lts_aga_fm0_ham1_p8_ilores_dshres_spr(void) sv3 = svt; } } - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { @@ -31508,27 +83060,11 @@ static void lts_aga_fm0_ham1_p8_ilores_dshres_spr(void) denise_cck++; } } -static void lts_aga_fm0_ham1_p8_ilores_dshres_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb0_p8_ilores_dshres_spr(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb0_p8_ilores_dshres_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb1_p8_ilores_dshres_spr(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb1_p8_ilores_dshres_spr_filtered(void) +static void lts_aga_fm0_dpf1_p4_ishres_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm0_n0_p2_ihires_dshres(void) +static void lts_aga_fm0_ehb0_p4_ishres_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -31539,108 +83075,95 @@ 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; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix0; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl2(); - loaded_pix = getbpl2(); - } - if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { - copybpl2(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl2(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix1; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl2(); - loaded_pix = getbpl2(); } - if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { - copybpl2(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl2(); + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } } - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl2(); - loaded_pix = getbpl2(); } - if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { - copybpl2(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl2(); + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } } - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix3; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl2(); - loaded_pix = getbpl2(); } - if (bpldat_copy[0] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[0]) { - copybpl2(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl2(); + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } } - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } dtbuf[h][0] = dpix_val0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } dtbuf[h][1] = dpix_val1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } dtbuf[h][2] = dpix_val2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + } + } dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -31697,11 +83220,11 @@ static void lts_aga_fm0_n0_p2_ihires_dshres(void) denise_cck++; } } -static void lts_aga_fm0_n0_p2_ihires_dshres_filtered(void) +static void lts_aga_fm0_ehb0_p4_ishres_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm0_n1_p2_ihires_dshres(void) +static void lts_aga_fm0_ehb1_p4_ishres_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -31712,152 +83235,95 @@ 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; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl2e(); - loaded_pix = getbpl2(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl2o(); - loaded_pix = getbpl2(); - } - if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { - copybpl2e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl2(); } - if (bpldat_copy[1] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[1]) { - copybpl2o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl2(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix1; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl2e(); - loaded_pix = getbpl2(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl2o(); - loaded_pix = getbpl2(); - } - if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { - copybpl2e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl2(); } - if (bpldat_copy[1] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[1]) { - copybpl2o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl2(); + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } } - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl2e(); - loaded_pix = getbpl2(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl2o(); - loaded_pix = getbpl2(); - } - if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { - copybpl2e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl2(); } - if (bpldat_copy[1] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[1]) { - copybpl2o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl2(); + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } } - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix3; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl2e(); - loaded_pix = getbpl2(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl2o(); - loaded_pix = getbpl2(); - } - if (bpldat_copy[0] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[0]) { - copybpl2e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl2(); } - if (bpldat_copy[1] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[1]) { - copybpl2o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl2(); + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } } - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } dtbuf[h][0] = dpix_val0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } dtbuf[h][1] = dpix_val1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } dtbuf[h][2] = dpix_val2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + } + } dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -31914,11 +83380,11 @@ static void lts_aga_fm0_n1_p2_ihires_dshres(void) denise_cck++; } } -static void lts_aga_fm0_n1_p2_ihires_dshres_filtered(void) +static void lts_aga_fm0_ehb1_p4_ishres_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm0_dpf0_p2_ihires_dshres(void) +static void lts_aga_fm0_ham0_p4_ishres_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -31929,128 +83395,95 @@ 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; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl2(); - loaded_pix = getbpl2(); } - if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { - copybpl2(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl2(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - if (dpf_lookup_no[pix1]) { - val1 += dblpfofs[bpldualpf2of]; - } - val1 ^= bplcon4_denise_xor_val; - dpix_val1 = denise_colors.acolors[val1]; - } - last_bpl_pix = pix1; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl2(); - loaded_pix = getbpl2(); } - if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { - copybpl2(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl2(); + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } } - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl2(); - loaded_pix = getbpl2(); } - if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { - copybpl2(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl2(); + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } } - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - uae_u8 val3 = dpf_lookup[pix3]; - if (dpf_lookup_no[pix3]) { - val3 += dblpfofs[bpldualpf2of]; - } - val3 ^= bplcon4_denise_xor_val; - dpix_val3 = denise_colors.acolors[val3]; - } - last_bpl_pix = pix3; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl2(); - loaded_pix = getbpl2(); } - if (bpldat_copy[0] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[0]) { - copybpl2(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl2(); + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } } - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } dtbuf[h][0] = dpix_val0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } dtbuf[h][1] = dpix_val1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } dtbuf[h][2] = dpix_val2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + } + } dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -32107,11 +83540,11 @@ static void lts_aga_fm0_dpf0_p2_ihires_dshres(void) denise_cck++; } } -static void lts_aga_fm0_dpf0_p2_ihires_dshres_filtered(void) +static void lts_aga_fm0_ham0_p4_ishres_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm0_dpf1_p2_ihires_dshres(void) +static void lts_aga_fm0_ham1_p4_ishres_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -32122,172 +83555,95 @@ 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; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl2e(); - loaded_pix = getbpl2(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl2o(); - loaded_pix = getbpl2(); - } - if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { - copybpl2e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl2(); } - if (bpldat_copy[1] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[1]) { - copybpl2o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl2(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - if (dpf_lookup_no[pix1]) { - val1 += dblpfofs[bpldualpf2of]; - } - val1 ^= bplcon4_denise_xor_val; - dpix_val1 = denise_colors.acolors[val1]; - } - last_bpl_pix = pix1; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl2e(); - loaded_pix = getbpl2(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl2o(); - loaded_pix = getbpl2(); - } - if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { - copybpl2e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl2(); } - if (bpldat_copy[1] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[1]) { - copybpl2o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl2(); + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } } - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl2e(); - loaded_pix = getbpl2(); } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl2o(); - loaded_pix = getbpl2(); - } - if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { - copybpl2e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl2(); - } - if (bpldat_copy[1] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[1]) { - copybpl2o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl2(); + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } } - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - uae_u8 val3 = dpf_lookup[pix3]; - if (dpf_lookup_no[pix3]) { - val3 += dblpfofs[bpldualpf2of]; - } - val3 ^= bplcon4_denise_xor_val; - dpix_val3 = denise_colors.acolors[val3]; - } - last_bpl_pix = pix3; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl2e(); - loaded_pix = getbpl2(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl2o(); - loaded_pix = getbpl2(); - } - if (bpldat_copy[0] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[0]) { - copybpl2e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl2(); } - if (bpldat_copy[1] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[1]) { - copybpl2o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl2(); + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } } - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } dtbuf[h][0] = dpix_val0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } dtbuf[h][1] = dpix_val1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } dtbuf[h][2] = dpix_val2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + } + } dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -32344,59 +83700,11 @@ static void lts_aga_fm0_dpf1_p2_ihires_dshres(void) denise_cck++; } } -static void lts_aga_fm0_dpf1_p2_ihires_dshres_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb0_p2_ihires_dshres(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb0_p2_ihires_dshres_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb1_p2_ihires_dshres(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb1_p2_ihires_dshres_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham0_p2_ihires_dshres(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham0_p2_ihires_dshres_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham1_p2_ihires_dshres(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham1_p2_ihires_dshres_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb0_p2_ihires_dshres(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb0_p2_ihires_dshres_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb1_p2_ihires_dshres(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb1_p2_ihires_dshres_filtered(void) +static void lts_aga_fm0_ham1_p4_ishres_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm0_n0_p4_ihires_dshres(void) +static void lts_aga_fm0_kehb0_p4_ishres_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -32407,108 +83715,95 @@ 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; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4(); - loaded_pix = getbpl4(); } - if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix1; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4(); - loaded_pix = getbpl4(); } - if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4(); + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } } - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4(); - loaded_pix = getbpl4(); } - if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4(); + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } } - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix3; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4(); - loaded_pix = getbpl4(); } - if (bpldat_copy[0] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4(); + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } } - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } dtbuf[h][0] = dpix_val0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } dtbuf[h][1] = dpix_val1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } dtbuf[h][2] = dpix_val2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + } + } dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -32565,11 +83860,11 @@ static void lts_aga_fm0_n0_p4_ihires_dshres(void) denise_cck++; } } -static void lts_aga_fm0_n0_p4_ihires_dshres_filtered(void) +static void lts_aga_fm0_kehb0_p4_ishres_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm0_n1_p4_ihires_dshres(void) +static void lts_aga_fm0_kehb1_p4_ishres_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -32580,152 +83875,95 @@ 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; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4e(); - loaded_pix = getbpl4(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl4o(); - loaded_pix = getbpl4(); - } - if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4(); } - if (bpldat_copy[1] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[1]) { - copybpl4o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl4(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix1; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4e(); - loaded_pix = getbpl4(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl4o(); - loaded_pix = getbpl4(); - } - if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4(); } - if (bpldat_copy[1] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[1]) { - copybpl4o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl4(); + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } } - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4e(); - loaded_pix = getbpl4(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl4o(); - loaded_pix = getbpl4(); - } - if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4(); } - if (bpldat_copy[1] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[1]) { - copybpl4o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl4(); + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } } - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix3; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4e(); - loaded_pix = getbpl4(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl4o(); - loaded_pix = getbpl4(); - } - if (bpldat_copy[0] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4(); } - if (bpldat_copy[1] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[1]) { - copybpl4o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl4(); + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } } - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } dtbuf[h][0] = dpix_val0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } dtbuf[h][1] = dpix_val1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } dtbuf[h][2] = dpix_val2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + } + } dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -32782,11 +84020,11 @@ static void lts_aga_fm0_n1_p4_ihires_dshres(void) denise_cck++; } } -static void lts_aga_fm0_n1_p4_ihires_dshres_filtered(void) +static void lts_aga_fm0_kehb1_p4_ishres_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm0_dpf0_p4_ihires_dshres(void) +static void lts_aga_fm0_n0_p6_ishres_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -32797,128 +84035,95 @@ 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; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4(); - loaded_pix = getbpl4(); } - if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - if (dpf_lookup_no[pix1]) { - val1 += dblpfofs[bpldualpf2of]; - } - val1 ^= bplcon4_denise_xor_val; - dpix_val1 = denise_colors.acolors[val1]; - } - last_bpl_pix = pix1; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4(); - loaded_pix = getbpl4(); } - if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4(); + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } } - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4(); - loaded_pix = getbpl4(); } - if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4(); + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } } - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - uae_u8 val3 = dpf_lookup[pix3]; - if (dpf_lookup_no[pix3]) { - val3 += dblpfofs[bpldualpf2of]; - } - val3 ^= bplcon4_denise_xor_val; - dpix_val3 = denise_colors.acolors[val3]; - } - last_bpl_pix = pix3; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4(); - loaded_pix = getbpl4(); } - if (bpldat_copy[0] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4(); + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } } - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } dtbuf[h][0] = dpix_val0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } dtbuf[h][1] = dpix_val1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } dtbuf[h][2] = dpix_val2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + } + } dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -32975,11 +84180,11 @@ static void lts_aga_fm0_dpf0_p4_ihires_dshres(void) denise_cck++; } } -static void lts_aga_fm0_dpf0_p4_ihires_dshres_filtered(void) +static void lts_aga_fm0_n0_p6_ishres_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm0_dpf1_p4_ihires_dshres(void) +static void lts_aga_fm0_n1_p6_ishres_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -32990,172 +84195,95 @@ 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; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4e(); - loaded_pix = getbpl4(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl4o(); - loaded_pix = getbpl4(); } - if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4(); - } - if (bpldat_copy[1] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[1]) { - copybpl4o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl4(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - if (dpf_lookup_no[pix1]) { - val1 += dblpfofs[bpldualpf2of]; - } - val1 ^= bplcon4_denise_xor_val; - dpix_val1 = denise_colors.acolors[val1]; - } - last_bpl_pix = pix1; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4e(); - loaded_pix = getbpl4(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl4o(); - loaded_pix = getbpl4(); - } - if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4(); } - if (bpldat_copy[1] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[1]) { - copybpl4o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl4(); + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } } - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4e(); - loaded_pix = getbpl4(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl4o(); - loaded_pix = getbpl4(); - } - if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4(); } - if (bpldat_copy[1] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[1]) { - copybpl4o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl4(); + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } } - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - uae_u8 val3 = dpf_lookup[pix3]; - if (dpf_lookup_no[pix3]) { - val3 += dblpfofs[bpldualpf2of]; - } - val3 ^= bplcon4_denise_xor_val; - dpix_val3 = denise_colors.acolors[val3]; - } - last_bpl_pix = pix3; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4e(); - loaded_pix = getbpl4(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl4o(); - loaded_pix = getbpl4(); - } - if (bpldat_copy[0] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4(); } - if (bpldat_copy[1] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[1]) { - copybpl4o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl4(); + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } } - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } dtbuf[h][0] = dpix_val0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } dtbuf[h][1] = dpix_val1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } dtbuf[h][2] = dpix_val2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + } + } dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -33212,219 +84340,11 @@ static void lts_aga_fm0_dpf1_p4_ihires_dshres(void) denise_cck++; } } -static void lts_aga_fm0_dpf1_p4_ihires_dshres_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb0_p4_ihires_dshres(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb0_p4_ihires_dshres_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb1_p4_ihires_dshres(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb1_p4_ihires_dshres_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham0_p4_ihires_dshres(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham0_p4_ihires_dshres_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham1_p4_ihires_dshres(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham1_p4_ihires_dshres_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb0_p4_ihires_dshres(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb0_p4_ihires_dshres_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb1_p4_ihires_dshres(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb1_p4_ihires_dshres_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_n0_p6_ihires_dshres(void) -{ - lts_null(); -} -static void lts_aga_fm0_n0_p6_ihires_dshres_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_n1_p6_ihires_dshres(void) -{ - lts_null(); -} -static void lts_aga_fm0_n1_p6_ihires_dshres_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_dpf0_p6_ihires_dshres(void) -{ - lts_null(); -} -static void lts_aga_fm0_dpf0_p6_ihires_dshres_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_dpf1_p6_ihires_dshres(void) -{ - lts_null(); -} -static void lts_aga_fm0_dpf1_p6_ihires_dshres_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb0_p6_ihires_dshres(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb0_p6_ihires_dshres_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb1_p6_ihires_dshres(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb1_p6_ihires_dshres_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham0_p6_ihires_dshres(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham0_p6_ihires_dshres_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham1_p6_ihires_dshres(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham1_p6_ihires_dshres_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb0_p6_ihires_dshres(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb0_p6_ihires_dshres_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb1_p6_ihires_dshres(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb1_p6_ihires_dshres_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_n0_p8_ihires_dshres(void) -{ - lts_null(); -} -static void lts_aga_fm0_n0_p8_ihires_dshres_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_n1_p8_ihires_dshres(void) -{ - lts_null(); -} -static void lts_aga_fm0_n1_p8_ihires_dshres_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_dpf0_p8_ihires_dshres(void) -{ - lts_null(); -} -static void lts_aga_fm0_dpf0_p8_ihires_dshres_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_dpf1_p8_ihires_dshres(void) -{ - lts_null(); -} -static void lts_aga_fm0_dpf1_p8_ihires_dshres_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb0_p8_ihires_dshres(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb0_p8_ihires_dshres_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb1_p8_ihires_dshres(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb1_p8_ihires_dshres_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham0_p8_ihires_dshres(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham0_p8_ihires_dshres_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham1_p8_ihires_dshres(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham1_p8_ihires_dshres_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb0_p8_ihires_dshres(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb0_p8_ihires_dshres_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb1_p8_ihires_dshres(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb1_p8_ihires_dshres_filtered(void) +static void lts_aga_fm0_n1_p6_ishres_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm0_n0_p2_ihires_dshres_spr(void) +static void lts_aga_fm0_dpf0_p6_ishres_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -33435,30 +84355,12 @@ 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; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl2(); - loaded_pix = getbpl2(); - } - if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { - copybpl2(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl2(); } uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { @@ -33468,30 +84370,12 @@ static void lts_aga_fm0_n0_p2_ihires_dshres_spr(void) sv0 = svt; } } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix1; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl2(); - loaded_pix = getbpl2(); - } - if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { - copybpl2(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl2(); } uae_u32 sv1 = 0; if (denise_spr_nr_armeds) { @@ -33501,30 +84385,12 @@ static void lts_aga_fm0_n0_p2_ihires_dshres_spr(void) sv1 = svt; } } - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl2(); - loaded_pix = getbpl2(); - } - if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { - copybpl2(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl2(); } uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { @@ -33534,30 +84400,12 @@ static void lts_aga_fm0_n0_p2_ihires_dshres_spr(void) sv2 = svt; } } - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix3; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl2(); - loaded_pix = getbpl2(); - } - if (bpldat_copy[0] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[0]) { - copybpl2(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl2(); } uae_u32 sv3 = 0; if (denise_spr_nr_armeds) { @@ -33567,7 +84415,6 @@ static void lts_aga_fm0_n0_p2_ihires_dshres_spr(void) sv3 = svt; } } - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { @@ -33653,11 +84500,11 @@ static void lts_aga_fm0_n0_p2_ihires_dshres_spr(void) denise_cck++; } } -static void lts_aga_fm0_n0_p2_ihires_dshres_spr_filtered(void) +static void lts_aga_fm0_dpf0_p6_ishres_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm0_n1_p2_ihires_dshres_spr(void) +static void lts_aga_fm0_dpf1_p6_ishres_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -33668,41 +84515,12 @@ 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; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl2e(); - loaded_pix = getbpl2(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl2o(); - loaded_pix = getbpl2(); - } - if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { - copybpl2e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl2(); - } - if (bpldat_copy[1] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[1]) { - copybpl2o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl2(); } uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { @@ -33712,41 +84530,12 @@ static void lts_aga_fm0_n1_p2_ihires_dshres_spr(void) sv0 = svt; } } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix1; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl2e(); - loaded_pix = getbpl2(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl2o(); - loaded_pix = getbpl2(); - } - if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { - copybpl2e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl2(); - } - if (bpldat_copy[1] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[1]) { - copybpl2o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl2(); } uae_u32 sv1 = 0; if (denise_spr_nr_armeds) { @@ -33756,41 +84545,172 @@ static void lts_aga_fm0_n1_p2_ihires_dshres_spr(void) sv1 = svt; } } - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; } - last_bpl_pix = pix2; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl2e(); - loaded_pix = getbpl2(); + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl2o(); - loaded_pix = getbpl2(); + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } + } + internal_pixel_cnt += 1; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } + dtbuf[h][1] = dpix_val1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + } + } + dtbuf[h][3] = dpix_val3; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_dpf1_p6_ishres_dshres_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm0_ehb0_p6_ishres_dshres_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; } - if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { - copybpl2e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl2(); + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } } - if (bpldat_copy[1] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[1]) { - copybpl2o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl2(); + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; } uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { @@ -33800,41 +84720,12 @@ static void lts_aga_fm0_n1_p2_ihires_dshres_spr(void) sv2 = svt; } } - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix3; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl2e(); - loaded_pix = getbpl2(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl2o(); - loaded_pix = getbpl2(); - } - if (bpldat_copy[0] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[0]) { - copybpl2e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl2(); - } - if (bpldat_copy[1] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[1]) { - copybpl2o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl2(); } uae_u32 sv3 = 0; if (denise_spr_nr_armeds) { @@ -33844,7 +84735,6 @@ static void lts_aga_fm0_n1_p2_ihires_dshres_spr(void) sv3 = svt; } } - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { @@ -33930,11 +84820,11 @@ static void lts_aga_fm0_n1_p2_ihires_dshres_spr(void) denise_cck++; } } -static void lts_aga_fm0_n1_p2_ihires_dshres_spr_filtered(void) +static void lts_aga_fm0_ehb0_p6_ishres_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm0_dpf0_p2_ihires_dshres_spr(void) +static void lts_aga_fm0_ehb1_p6_ishres_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -33945,35 +84835,12 @@ 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; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl2(); - loaded_pix = getbpl2(); - } - if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { - copybpl2(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl2(); } uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { @@ -33983,35 +84850,12 @@ static void lts_aga_fm0_dpf0_p2_ihires_dshres_spr(void) sv0 = svt; } } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - if (dpf_lookup_no[pix1]) { - val1 += dblpfofs[bpldualpf2of]; - } - val1 ^= bplcon4_denise_xor_val; - dpix_val1 = denise_colors.acolors[val1]; - } - last_bpl_pix = pix1; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl2(); - loaded_pix = getbpl2(); - } - if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { - copybpl2(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl2(); } uae_u32 sv1 = 0; if (denise_spr_nr_armeds) { @@ -34021,35 +84865,12 @@ static void lts_aga_fm0_dpf0_p2_ihires_dshres_spr(void) sv1 = svt; } } - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl2(); - loaded_pix = getbpl2(); - } - if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { - copybpl2(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl2(); } uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { @@ -34059,35 +84880,12 @@ static void lts_aga_fm0_dpf0_p2_ihires_dshres_spr(void) sv2 = svt; } } - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - uae_u8 val3 = dpf_lookup[pix3]; - if (dpf_lookup_no[pix3]) { - val3 += dblpfofs[bpldualpf2of]; - } - val3 ^= bplcon4_denise_xor_val; - dpix_val3 = denise_colors.acolors[val3]; - } - last_bpl_pix = pix3; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl2(); - loaded_pix = getbpl2(); - } - if (bpldat_copy[0] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[0]) { - copybpl2(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl2(); } uae_u32 sv3 = 0; if (denise_spr_nr_armeds) { @@ -34097,7 +84895,6 @@ static void lts_aga_fm0_dpf0_p2_ihires_dshres_spr(void) sv3 = svt; } } - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { @@ -34183,11 +84980,11 @@ static void lts_aga_fm0_dpf0_p2_ihires_dshres_spr(void) denise_cck++; } } -static void lts_aga_fm0_dpf0_p2_ihires_dshres_spr_filtered(void) +static void lts_aga_fm0_ehb1_p6_ishres_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm0_dpf1_p2_ihires_dshres_spr(void) +static void lts_aga_fm0_ham0_p6_ishres_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -34198,46 +84995,12 @@ 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; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl2e(); - loaded_pix = getbpl2(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl2o(); - loaded_pix = getbpl2(); - } - if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { - copybpl2e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl2(); - } - if (bpldat_copy[1] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[1]) { - copybpl2o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl2(); } uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { @@ -34247,46 +85010,12 @@ static void lts_aga_fm0_dpf1_p2_ihires_dshres_spr(void) sv0 = svt; } } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - if (dpf_lookup_no[pix1]) { - val1 += dblpfofs[bpldualpf2of]; - } - val1 ^= bplcon4_denise_xor_val; - dpix_val1 = denise_colors.acolors[val1]; - } - last_bpl_pix = pix1; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl2e(); - loaded_pix = getbpl2(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl2o(); - loaded_pix = getbpl2(); - } - if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { - copybpl2e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl2(); - } - if (bpldat_copy[1] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[1]) { - copybpl2o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl2(); } uae_u32 sv1 = 0; if (denise_spr_nr_armeds) { @@ -34296,46 +85025,12 @@ static void lts_aga_fm0_dpf1_p2_ihires_dshres_spr(void) sv1 = svt; } } - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl2e(); - loaded_pix = getbpl2(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl2o(); - loaded_pix = getbpl2(); - } - if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { - copybpl2e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl2(); - } - if (bpldat_copy[1] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[1]) { - copybpl2o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl2(); } uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { @@ -34345,46 +85040,12 @@ static void lts_aga_fm0_dpf1_p2_ihires_dshres_spr(void) sv2 = svt; } } - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - uae_u8 val3 = dpf_lookup[pix3]; - if (dpf_lookup_no[pix3]) { - val3 += dblpfofs[bpldualpf2of]; - } - val3 ^= bplcon4_denise_xor_val; - dpix_val3 = denise_colors.acolors[val3]; - } - last_bpl_pix = pix3; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl2e(); - loaded_pix = getbpl2(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl2o(); - loaded_pix = getbpl2(); - } - if (bpldat_copy[0] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[0]) { - copybpl2e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl2(); - } - if (bpldat_copy[1] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[1]) { - copybpl2o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl2(); } uae_u32 sv3 = 0; if (denise_spr_nr_armeds) { @@ -34394,7 +85055,6 @@ static void lts_aga_fm0_dpf1_p2_ihires_dshres_spr(void) sv3 = svt; } } - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { @@ -34480,59 +85140,11 @@ static void lts_aga_fm0_dpf1_p2_ihires_dshres_spr(void) denise_cck++; } } -static void lts_aga_fm0_dpf1_p2_ihires_dshres_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb0_p2_ihires_dshres_spr(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb0_p2_ihires_dshres_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb1_p2_ihires_dshres_spr(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb1_p2_ihires_dshres_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham0_p2_ihires_dshres_spr(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham0_p2_ihires_dshres_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham1_p2_ihires_dshres_spr(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham1_p2_ihires_dshres_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb0_p2_ihires_dshres_spr(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb0_p2_ihires_dshres_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb1_p2_ihires_dshres_spr(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb1_p2_ihires_dshres_spr_filtered(void) +static void lts_aga_fm0_ham0_p6_ishres_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm0_n0_p4_ihires_dshres_spr(void) +static void lts_aga_fm0_ham1_p6_ishres_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -34543,30 +85155,12 @@ 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; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4(); - loaded_pix = getbpl4(); - } - if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4(); } uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { @@ -34576,30 +85170,12 @@ static void lts_aga_fm0_n0_p4_ihires_dshres_spr(void) sv0 = svt; } } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix1; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4(); - loaded_pix = getbpl4(); - } - if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4(); } uae_u32 sv1 = 0; if (denise_spr_nr_armeds) { @@ -34609,30 +85185,12 @@ static void lts_aga_fm0_n0_p4_ihires_dshres_spr(void) sv1 = svt; } } - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4(); - loaded_pix = getbpl4(); - } - if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4(); } uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { @@ -34642,30 +85200,12 @@ static void lts_aga_fm0_n0_p4_ihires_dshres_spr(void) sv2 = svt; } } - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix3; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4(); - loaded_pix = getbpl4(); - } - if (bpldat_copy[0] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4(); } uae_u32 sv3 = 0; if (denise_spr_nr_armeds) { @@ -34675,7 +85215,6 @@ static void lts_aga_fm0_n0_p4_ihires_dshres_spr(void) sv3 = svt; } } - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { @@ -34761,11 +85300,11 @@ static void lts_aga_fm0_n0_p4_ihires_dshres_spr(void) denise_cck++; } } -static void lts_aga_fm0_n0_p4_ihires_dshres_spr_filtered(void) +static void lts_aga_fm0_ham1_p6_ishres_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm0_n1_p4_ihires_dshres_spr(void) +static void lts_aga_fm0_kehb0_p6_ishres_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -34776,41 +85315,12 @@ 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; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4e(); - loaded_pix = getbpl4(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl4o(); - loaded_pix = getbpl4(); - } - if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4(); - } - if (bpldat_copy[1] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[1]) { - copybpl4o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl4(); } uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { @@ -34820,41 +85330,12 @@ static void lts_aga_fm0_n1_p4_ihires_dshres_spr(void) sv0 = svt; } } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix1; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4e(); - loaded_pix = getbpl4(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl4o(); - loaded_pix = getbpl4(); - } - if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4(); - } - if (bpldat_copy[1] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[1]) { - copybpl4o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl4(); } uae_u32 sv1 = 0; if (denise_spr_nr_armeds) { @@ -34864,41 +85345,12 @@ static void lts_aga_fm0_n1_p4_ihires_dshres_spr(void) sv1 = svt; } } - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; - if (!denise_blank_active) { - dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4e(); - loaded_pix = getbpl4(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl4o(); - loaded_pix = getbpl4(); - } - if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4(); - } - if (bpldat_copy[1] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[1]) { - copybpl4o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl4(); + if (!denise_blank_active) { + dpix_val2 = bordercolor; } uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { @@ -34908,41 +85360,12 @@ static void lts_aga_fm0_n1_p4_ihires_dshres_spr(void) sv2 = svt; } } - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix3; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4e(); - loaded_pix = getbpl4(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl4o(); - loaded_pix = getbpl4(); - } - if (bpldat_copy[0] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4(); - } - if (bpldat_copy[1] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[1]) { - copybpl4o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl4(); } uae_u32 sv3 = 0; if (denise_spr_nr_armeds) { @@ -34952,7 +85375,6 @@ static void lts_aga_fm0_n1_p4_ihires_dshres_spr(void) sv3 = svt; } } - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { @@ -35038,11 +85460,11 @@ static void lts_aga_fm0_n1_p4_ihires_dshres_spr(void) denise_cck++; } } -static void lts_aga_fm0_n1_p4_ihires_dshres_spr_filtered(void) +static void lts_aga_fm0_kehb0_p6_ishres_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm0_dpf0_p4_ihires_dshres_spr(void) +static void lts_aga_fm0_kehb1_p6_ishres_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -35053,35 +85475,12 @@ 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; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4(); - loaded_pix = getbpl4(); - } - if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4(); } uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { @@ -35091,35 +85490,12 @@ static void lts_aga_fm0_dpf0_p4_ihires_dshres_spr(void) sv0 = svt; } } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - if (dpf_lookup_no[pix1]) { - val1 += dblpfofs[bpldualpf2of]; - } - val1 ^= bplcon4_denise_xor_val; - dpix_val1 = denise_colors.acolors[val1]; - } - last_bpl_pix = pix1; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4(); - loaded_pix = getbpl4(); - } - if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4(); } uae_u32 sv1 = 0; if (denise_spr_nr_armeds) { @@ -35129,35 +85505,12 @@ static void lts_aga_fm0_dpf0_p4_ihires_dshres_spr(void) sv1 = svt; } } - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4(); - loaded_pix = getbpl4(); - } - if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4(); } uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { @@ -35167,35 +85520,12 @@ static void lts_aga_fm0_dpf0_p4_ihires_dshres_spr(void) sv2 = svt; } } - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - uae_u8 val3 = dpf_lookup[pix3]; - if (dpf_lookup_no[pix3]) { - val3 += dblpfofs[bpldualpf2of]; - } - val3 ^= bplcon4_denise_xor_val; - dpix_val3 = denise_colors.acolors[val3]; - } - last_bpl_pix = pix3; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4(); - loaded_pix = getbpl4(); - } - if (bpldat_copy[0] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4(); } uae_u32 sv3 = 0; if (denise_spr_nr_armeds) { @@ -35205,7 +85535,6 @@ static void lts_aga_fm0_dpf0_p4_ihires_dshres_spr(void) sv3 = svt; } } - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { @@ -35291,11 +85620,11 @@ static void lts_aga_fm0_dpf0_p4_ihires_dshres_spr(void) denise_cck++; } } -static void lts_aga_fm0_dpf0_p4_ihires_dshres_spr_filtered(void) +static void lts_aga_fm0_kehb1_p6_ishres_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm0_dpf1_p4_ihires_dshres_spr(void) +static void lts_aga_fm0_n0_p8_ishres_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -35306,46 +85635,12 @@ 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; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4e(); - loaded_pix = getbpl4(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl4o(); - loaded_pix = getbpl4(); - } - if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4(); - } - if (bpldat_copy[1] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[1]) { - copybpl4o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl4(); } uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { @@ -35355,46 +85650,12 @@ static void lts_aga_fm0_dpf1_p4_ihires_dshres_spr(void) sv0 = svt; } } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - if (dpf_lookup_no[pix1]) { - val1 += dblpfofs[bpldualpf2of]; - } - val1 ^= bplcon4_denise_xor_val; - dpix_val1 = denise_colors.acolors[val1]; - } - last_bpl_pix = pix1; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4e(); - loaded_pix = getbpl4(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl4o(); - loaded_pix = getbpl4(); - } - if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4(); - } - if (bpldat_copy[1] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[1]) { - copybpl4o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl4(); } uae_u32 sv1 = 0; if (denise_spr_nr_armeds) { @@ -35404,46 +85665,12 @@ static void lts_aga_fm0_dpf1_p4_ihires_dshres_spr(void) sv1 = svt; } } - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4e(); - loaded_pix = getbpl4(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl4o(); - loaded_pix = getbpl4(); - } - if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4(); - } - if (bpldat_copy[1] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[1]) { - copybpl4o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl4(); } uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { @@ -35453,46 +85680,12 @@ static void lts_aga_fm0_dpf1_p4_ihires_dshres_spr(void) sv2 = svt; } } - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - uae_u8 val3 = dpf_lookup[pix3]; - if (dpf_lookup_no[pix3]) { - val3 += dblpfofs[bpldualpf2of]; - } - val3 ^= bplcon4_denise_xor_val; - dpix_val3 = denise_colors.acolors[val3]; - } - last_bpl_pix = pix3; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4e(); - loaded_pix = getbpl4(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl4o(); - loaded_pix = getbpl4(); - } - if (bpldat_copy[0] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4(); - } - if (bpldat_copy[1] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[1]) { - copybpl4o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl4(); } uae_u32 sv3 = 0; if (denise_spr_nr_armeds) { @@ -35502,7 +85695,6 @@ static void lts_aga_fm0_dpf1_p4_ihires_dshres_spr(void) sv3 = svt; } } - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { @@ -35545,262 +85737,214 @@ static void lts_aga_fm0_dpf1_p4_ihires_dshres_spr(void) #ifdef DEBUGGER if (decode_specials_debug) { t1 = decode_denise_specials_debug(t1, cnt + 1); - } - #endif - *buf1++ = t1; - *buf2++ = t1; - uae_u32 t2 = dtbuf[h ^ lol][2]; - #ifdef DEBUGGER - if (decode_specials_debug) { - t2 = decode_denise_specials_debug(t2, cnt + 2); - } - #endif - *buf1++ = t2; - *buf2++ = t2; - uae_u32 t3 = dtbuf[h ^ lol][3]; - #ifdef DEBUGGER - if (decode_specials_debug) { - t3 = decode_denise_specials_debug(t3, cnt + 3); - } - #endif - *buf1++ = t3; - *buf2++ = t3; - } - sprites_hidden = sprites_hidden2; - #ifdef DEBUGGER - *debug_dma_dhpos_odd = denise_hcounter; - #endif - denise_hcounter_cmp++; - denise_hcounter_cmp &= 511; - denise_hcounter++; - denise_hcounter &= 511; - denise_hcounter_next++; - denise_hcounter_next &= 511; - } - denise_pixtotal++; - if (denise_pixtotal == 0) { - internal_pixel_start_cnt = internal_pixel_cnt; - } - denise_hcounter = denise_hcounter_new; - if (denise_accurate_mode) { - denise_hcounter_cmp = denise_hcounter_new; - } - denise_cck++; - } -} -static void lts_aga_fm0_dpf1_p4_ihires_dshres_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb0_p4_ihires_dshres_spr(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb0_p4_ihires_dshres_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb1_p4_ihires_dshres_spr(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb1_p4_ihires_dshres_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham0_p4_ihires_dshres_spr(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham0_p4_ihires_dshres_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham1_p4_ihires_dshres_spr(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham1_p4_ihires_dshres_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb0_p4_ihires_dshres_spr(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb0_p4_ihires_dshres_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb1_p4_ihires_dshres_spr(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb1_p4_ihires_dshres_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_n0_p6_ihires_dshres_spr(void) -{ - lts_null(); -} -static void lts_aga_fm0_n0_p6_ihires_dshres_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_n1_p6_ihires_dshres_spr(void) -{ - lts_null(); -} -static void lts_aga_fm0_n1_p6_ihires_dshres_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_dpf0_p6_ihires_dshres_spr(void) -{ - lts_null(); -} -static void lts_aga_fm0_dpf0_p6_ihires_dshres_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_dpf1_p6_ihires_dshres_spr(void) -{ - lts_null(); -} -static void lts_aga_fm0_dpf1_p6_ihires_dshres_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb0_p6_ihires_dshres_spr(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb0_p6_ihires_dshres_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb1_p6_ihires_dshres_spr(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb1_p6_ihires_dshres_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham0_p6_ihires_dshres_spr(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham0_p6_ihires_dshres_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham1_p6_ihires_dshres_spr(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham1_p6_ihires_dshres_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb0_p6_ihires_dshres_spr(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb0_p6_ihires_dshres_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb1_p6_ihires_dshres_spr(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb1_p6_ihires_dshres_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_n0_p8_ihires_dshres_spr(void) -{ - lts_null(); -} -static void lts_aga_fm0_n0_p8_ihires_dshres_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_n1_p8_ihires_dshres_spr(void) -{ - lts_null(); -} -static void lts_aga_fm0_n1_p8_ihires_dshres_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_dpf0_p8_ihires_dshres_spr(void) -{ - lts_null(); -} -static void lts_aga_fm0_dpf0_p8_ihires_dshres_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_dpf1_p8_ihires_dshres_spr(void) -{ - lts_null(); -} -static void lts_aga_fm0_dpf1_p8_ihires_dshres_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb0_p8_ihires_dshres_spr(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb0_p8_ihires_dshres_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb1_p8_ihires_dshres_spr(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb1_p8_ihires_dshres_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham0_p8_ihires_dshres_spr(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham0_p8_ihires_dshres_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham1_p8_ihires_dshres_spr(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham1_p8_ihires_dshres_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb0_p8_ihires_dshres_spr(void) -{ - lts_null(); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm0_kehb0_p8_ihires_dshres_spr_filtered(void) +static void lts_aga_fm0_n0_p8_ishres_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm0_kehb1_p8_ihires_dshres_spr(void) +static void lts_aga_fm0_n1_p8_ishres_dshres_spr(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } + } + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } + } + internal_pixel_cnt += 1; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } + dtbuf[h][1] = dpix_val1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + } + } + dtbuf[h][3] = dpix_val3; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm0_kehb1_p8_ihires_dshres_spr_filtered(void) +static void lts_aga_fm0_n1_p8_ishres_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm0_n0_p2_ishres_dshres(void) +static void lts_aga_fm0_dpf0_p8_ishres_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -35811,84 +85955,95 @@ 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; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix0; } - shiftbpl2(); - if (bpldat_copy[0] && ((cmp | 0) & 15) == bplcon1_shift_full_masked[0]) { - copybpl2(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } } - loaded_pix = getbpl2(); - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix1; } - shiftbpl2(); - if (bpldat_copy[0] && ((cmp | 1) & 15) == bplcon1_shift_full_masked[0]) { - copybpl2(); + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } } - loaded_pix = getbpl2(); - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix2; } - shiftbpl2(); - if (bpldat_copy[0] && ((cmp | 2) & 15) == bplcon1_shift_full_masked[0]) { - copybpl2(); + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } } - loaded_pix = getbpl2(); - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix3; } - shiftbpl2(); - if (bpldat_copy[0] && ((cmp | 3) & 15) == bplcon1_shift_full_masked[0]) { - copybpl2(); + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } } - loaded_pix = getbpl2(); - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } dtbuf[h][0] = dpix_val0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } dtbuf[h][1] = dpix_val1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } dtbuf[h][2] = dpix_val2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + } + } dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -35945,11 +86100,11 @@ static void lts_aga_fm0_n0_p2_ishres_dshres(void) denise_cck++; } } -static void lts_aga_fm0_n0_p2_ishres_dshres_filtered(void) +static void lts_aga_fm0_dpf0_p8_ishres_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm0_n1_p2_ishres_dshres(void) +static void lts_aga_fm0_dpf1_p8_ishres_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -35960,96 +86115,95 @@ 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; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix0; - } - shiftbpl2(); - if (bpldat_copy[0] && ((cmp | 0) & 15) == bplcon1_shift_full_masked[0]) { - copybpl2e(); } - if (bpldat_copy[1] && ((cmp | 0) & 15) == bplcon1_shift_full_masked[1]) { - copybpl2o(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } } - loaded_pix = getbpl2(); - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix1; - } - shiftbpl2(); - if (bpldat_copy[0] && ((cmp | 1) & 15) == bplcon1_shift_full_masked[0]) { - copybpl2e(); } - if (bpldat_copy[1] && ((cmp | 1) & 15) == bplcon1_shift_full_masked[1]) { - copybpl2o(); + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } } - loaded_pix = getbpl2(); - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix2; - } - shiftbpl2(); - if (bpldat_copy[0] && ((cmp | 2) & 15) == bplcon1_shift_full_masked[0]) { - copybpl2e(); } - if (bpldat_copy[1] && ((cmp | 2) & 15) == bplcon1_shift_full_masked[1]) { - copybpl2o(); + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } } - loaded_pix = getbpl2(); - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix3; - } - shiftbpl2(); - if (bpldat_copy[0] && ((cmp | 3) & 15) == bplcon1_shift_full_masked[0]) { - copybpl2e(); } - if (bpldat_copy[1] && ((cmp | 3) & 15) == bplcon1_shift_full_masked[1]) { - copybpl2o(); + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } } - loaded_pix = getbpl2(); - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } dtbuf[h][0] = dpix_val0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } dtbuf[h][1] = dpix_val1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } dtbuf[h][2] = dpix_val2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + } + } dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -36106,11 +86260,11 @@ static void lts_aga_fm0_n1_p2_ishres_dshres(void) denise_cck++; } } -static void lts_aga_fm0_n1_p2_ishres_dshres_filtered(void) +static void lts_aga_fm0_dpf1_p8_ishres_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm0_dpf0_p2_ishres_dshres(void) +static void lts_aga_fm0_ehb0_p8_ishres_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -36121,104 +86275,95 @@ 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; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; } - shiftbpl2(); - if (bpldat_copy[0] && ((cmp | 0) & 15) == bplcon1_shift_full_masked[0]) { - copybpl2(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } } - loaded_pix = getbpl2(); - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - if (dpf_lookup_no[pix1]) { - val1 += dblpfofs[bpldualpf2of]; - } - val1 ^= bplcon4_denise_xor_val; - dpix_val1 = denise_colors.acolors[val1]; - } - last_bpl_pix = pix1; } - shiftbpl2(); - if (bpldat_copy[0] && ((cmp | 1) & 15) == bplcon1_shift_full_masked[0]) { - copybpl2(); + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } } - loaded_pix = getbpl2(); - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; - } - last_bpl_pix = pix2; } - shiftbpl2(); - if (bpldat_copy[0] && ((cmp | 2) & 15) == bplcon1_shift_full_masked[0]) { - copybpl2(); + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } } - loaded_pix = getbpl2(); - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - uae_u8 val3 = dpf_lookup[pix3]; - if (dpf_lookup_no[pix3]) { - val3 += dblpfofs[bpldualpf2of]; - } - val3 ^= bplcon4_denise_xor_val; - dpix_val3 = denise_colors.acolors[val3]; + } + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; } - last_bpl_pix = pix3; - } - shiftbpl2(); - if (bpldat_copy[0] && ((cmp | 3) & 15) == bplcon1_shift_full_masked[0]) { - copybpl2(); } - loaded_pix = getbpl2(); - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } dtbuf[h][0] = dpix_val0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } dtbuf[h][1] = dpix_val1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } dtbuf[h][2] = dpix_val2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + } + } dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -36275,11 +86420,11 @@ static void lts_aga_fm0_dpf0_p2_ishres_dshres(void) denise_cck++; } } -static void lts_aga_fm0_dpf0_p2_ishres_dshres_filtered(void) +static void lts_aga_fm0_ehb0_p8_ishres_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm0_dpf1_p2_ishres_dshres(void) +static void lts_aga_fm0_ehb1_p8_ishres_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -36290,116 +86435,95 @@ 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; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; - } - shiftbpl2(); - if (bpldat_copy[0] && ((cmp | 0) & 15) == bplcon1_shift_full_masked[0]) { - copybpl2e(); } - if (bpldat_copy[1] && ((cmp | 0) & 15) == bplcon1_shift_full_masked[1]) { - copybpl2o(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } } - loaded_pix = getbpl2(); - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - if (dpf_lookup_no[pix1]) { - val1 += dblpfofs[bpldualpf2of]; - } - val1 ^= bplcon4_denise_xor_val; - dpix_val1 = denise_colors.acolors[val1]; - } - last_bpl_pix = pix1; - } - shiftbpl2(); - if (bpldat_copy[0] && ((cmp | 1) & 15) == bplcon1_shift_full_masked[0]) { - copybpl2e(); } - if (bpldat_copy[1] && ((cmp | 1) & 15) == bplcon1_shift_full_masked[1]) { - copybpl2o(); + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } } - loaded_pix = getbpl2(); - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; - } - last_bpl_pix = pix2; - } - shiftbpl2(); - if (bpldat_copy[0] && ((cmp | 2) & 15) == bplcon1_shift_full_masked[0]) { - copybpl2e(); } - if (bpldat_copy[1] && ((cmp | 2) & 15) == bplcon1_shift_full_masked[1]) { - copybpl2o(); + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } } - loaded_pix = getbpl2(); - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - uae_u8 val3 = dpf_lookup[pix3]; - if (dpf_lookup_no[pix3]) { - val3 += dblpfofs[bpldualpf2of]; - } - val3 ^= bplcon4_denise_xor_val; - dpix_val3 = denise_colors.acolors[val3]; - } - last_bpl_pix = pix3; - } - shiftbpl2(); - if (bpldat_copy[0] && ((cmp | 3) & 15) == bplcon1_shift_full_masked[0]) { - copybpl2e(); } - if (bpldat_copy[1] && ((cmp | 3) & 15) == bplcon1_shift_full_masked[1]) { - copybpl2o(); + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } } - loaded_pix = getbpl2(); - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } dtbuf[h][0] = dpix_val0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } dtbuf[h][1] = dpix_val1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } dtbuf[h][2] = dpix_val2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + } + } dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -36456,299 +86580,11 @@ static void lts_aga_fm0_dpf1_p2_ishres_dshres(void) denise_cck++; } } -static void lts_aga_fm0_dpf1_p2_ishres_dshres_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb0_p2_ishres_dshres(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb0_p2_ishres_dshres_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb1_p2_ishres_dshres(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb1_p2_ishres_dshres_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham0_p2_ishres_dshres(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham0_p2_ishres_dshres_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham1_p2_ishres_dshres(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham1_p2_ishres_dshres_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb0_p2_ishres_dshres(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb0_p2_ishres_dshres_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb1_p2_ishres_dshres(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb1_p2_ishres_dshres_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_n0_p4_ishres_dshres(void) -{ - lts_null(); -} -static void lts_aga_fm0_n0_p4_ishres_dshres_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_n1_p4_ishres_dshres(void) -{ - lts_null(); -} -static void lts_aga_fm0_n1_p4_ishres_dshres_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_dpf0_p4_ishres_dshres(void) -{ - lts_null(); -} -static void lts_aga_fm0_dpf0_p4_ishres_dshres_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_dpf1_p4_ishres_dshres(void) -{ - lts_null(); -} -static void lts_aga_fm0_dpf1_p4_ishres_dshres_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb0_p4_ishres_dshres(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb0_p4_ishres_dshres_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb1_p4_ishres_dshres(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb1_p4_ishres_dshres_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham0_p4_ishres_dshres(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham0_p4_ishres_dshres_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham1_p4_ishres_dshres(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham1_p4_ishres_dshres_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb0_p4_ishres_dshres(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb0_p4_ishres_dshres_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb1_p4_ishres_dshres(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb1_p4_ishres_dshres_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_n0_p6_ishres_dshres(void) -{ - lts_null(); -} -static void lts_aga_fm0_n0_p6_ishres_dshres_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_n1_p6_ishres_dshres(void) -{ - lts_null(); -} -static void lts_aga_fm0_n1_p6_ishres_dshres_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_dpf0_p6_ishres_dshres(void) -{ - lts_null(); -} -static void lts_aga_fm0_dpf0_p6_ishres_dshres_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_dpf1_p6_ishres_dshres(void) -{ - lts_null(); -} -static void lts_aga_fm0_dpf1_p6_ishres_dshres_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb0_p6_ishres_dshres(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb0_p6_ishres_dshres_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb1_p6_ishres_dshres(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb1_p6_ishres_dshres_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham0_p6_ishres_dshres(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham0_p6_ishres_dshres_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham1_p6_ishres_dshres(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham1_p6_ishres_dshres_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb0_p6_ishres_dshres(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb0_p6_ishres_dshres_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb1_p6_ishres_dshres(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb1_p6_ishres_dshres_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_n0_p8_ishres_dshres(void) -{ - lts_null(); -} -static void lts_aga_fm0_n0_p8_ishres_dshres_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_n1_p8_ishres_dshres(void) -{ - lts_null(); -} -static void lts_aga_fm0_n1_p8_ishres_dshres_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_dpf0_p8_ishres_dshres(void) -{ - lts_null(); -} -static void lts_aga_fm0_dpf0_p8_ishres_dshres_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_dpf1_p8_ishres_dshres(void) -{ - lts_null(); -} -static void lts_aga_fm0_dpf1_p8_ishres_dshres_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb0_p8_ishres_dshres(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb0_p8_ishres_dshres_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb1_p8_ishres_dshres(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb1_p8_ishres_dshres_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham0_p8_ishres_dshres(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham0_p8_ishres_dshres_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham1_p8_ishres_dshres(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham1_p8_ishres_dshres_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb0_p8_ishres_dshres(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb0_p8_ishres_dshres_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb1_p8_ishres_dshres(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb1_p8_ishres_dshres_filtered(void) +static void lts_aga_fm0_ehb1_p8_ishres_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm0_n0_p2_ishres_dshres_spr(void) +static void lts_aga_fm0_ham0_p8_ishres_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -36759,25 +86595,13 @@ 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; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix0; - } - shiftbpl2(); - if (bpldat_copy[0] && ((cmp | 0) & 15) == bplcon1_shift_full_masked[0]) { - copybpl2(); } - loaded_pix = getbpl2(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -36786,25 +86610,13 @@ static void lts_aga_fm0_n0_p2_ishres_dshres_spr(void) sv0 = svt; } } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix1; - } - shiftbpl2(); - if (bpldat_copy[0] && ((cmp | 1) & 15) == bplcon1_shift_full_masked[0]) { - copybpl2(); } - loaded_pix = getbpl2(); uae_u32 sv1 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -36813,25 +86625,13 @@ static void lts_aga_fm0_n0_p2_ishres_dshres_spr(void) sv1 = svt; } } - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix2; - } - shiftbpl2(); - if (bpldat_copy[0] && ((cmp | 2) & 15) == bplcon1_shift_full_masked[0]) { - copybpl2(); } - loaded_pix = getbpl2(); uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -36840,25 +86640,13 @@ static void lts_aga_fm0_n0_p2_ishres_dshres_spr(void) sv2 = svt; } } - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix3; - } - shiftbpl2(); - if (bpldat_copy[0] && ((cmp | 3) & 15) == bplcon1_shift_full_masked[0]) { - copybpl2(); } - loaded_pix = getbpl2(); uae_u32 sv3 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -36867,7 +86655,6 @@ static void lts_aga_fm0_n0_p2_ishres_dshres_spr(void) sv3 = svt; } } - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { @@ -36953,11 +86740,11 @@ static void lts_aga_fm0_n0_p2_ishres_dshres_spr(void) denise_cck++; } } -static void lts_aga_fm0_n0_p2_ishres_dshres_spr_filtered(void) +static void lts_aga_fm0_ham0_p8_ishres_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm0_n1_p2_ishres_dshres_spr(void) +static void lts_aga_fm0_ham1_p8_ishres_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -36968,28 +86755,13 @@ 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; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix0; - } - shiftbpl2(); - if (bpldat_copy[0] && ((cmp | 0) & 15) == bplcon1_shift_full_masked[0]) { - copybpl2e(); } - if (bpldat_copy[1] && ((cmp | 0) & 15) == bplcon1_shift_full_masked[1]) { - copybpl2o(); - } - loaded_pix = getbpl2(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -36998,28 +86770,13 @@ static void lts_aga_fm0_n1_p2_ishres_dshres_spr(void) sv0 = svt; } } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix1; - } - shiftbpl2(); - if (bpldat_copy[0] && ((cmp | 1) & 15) == bplcon1_shift_full_masked[0]) { - copybpl2e(); - } - if (bpldat_copy[1] && ((cmp | 1) & 15) == bplcon1_shift_full_masked[1]) { - copybpl2o(); } - loaded_pix = getbpl2(); uae_u32 sv1 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -37028,28 +86785,13 @@ static void lts_aga_fm0_n1_p2_ishres_dshres_spr(void) sv1 = svt; } } - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix2; - } - shiftbpl2(); - if (bpldat_copy[0] && ((cmp | 2) & 15) == bplcon1_shift_full_masked[0]) { - copybpl2e(); - } - if (bpldat_copy[1] && ((cmp | 2) & 15) == bplcon1_shift_full_masked[1]) { - copybpl2o(); } - loaded_pix = getbpl2(); uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -37058,28 +86800,13 @@ static void lts_aga_fm0_n1_p2_ishres_dshres_spr(void) sv2 = svt; } } - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix3; - } - shiftbpl2(); - if (bpldat_copy[0] && ((cmp | 3) & 15) == bplcon1_shift_full_masked[0]) { - copybpl2e(); - } - if (bpldat_copy[1] && ((cmp | 3) & 15) == bplcon1_shift_full_masked[1]) { - copybpl2o(); } - loaded_pix = getbpl2(); uae_u32 sv3 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -37088,7 +86815,6 @@ static void lts_aga_fm0_n1_p2_ishres_dshres_spr(void) sv3 = svt; } } - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { @@ -37174,11 +86900,11 @@ static void lts_aga_fm0_n1_p2_ishres_dshres_spr(void) denise_cck++; } } -static void lts_aga_fm0_n1_p2_ishres_dshres_spr_filtered(void) +static void lts_aga_fm0_ham1_p8_ishres_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm0_dpf0_p2_ishres_dshres_spr(void) +static void lts_aga_fm0_kehb0_p8_ishres_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -37189,30 +86915,13 @@ 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; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; - } - shiftbpl2(); - if (bpldat_copy[0] && ((cmp | 0) & 15) == bplcon1_shift_full_masked[0]) { - copybpl2(); } - loaded_pix = getbpl2(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -37221,30 +86930,13 @@ static void lts_aga_fm0_dpf0_p2_ishres_dshres_spr(void) sv0 = svt; } } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - if (dpf_lookup_no[pix1]) { - val1 += dblpfofs[bpldualpf2of]; - } - val1 ^= bplcon4_denise_xor_val; - dpix_val1 = denise_colors.acolors[val1]; - } - last_bpl_pix = pix1; - } - shiftbpl2(); - if (bpldat_copy[0] && ((cmp | 1) & 15) == bplcon1_shift_full_masked[0]) { - copybpl2(); } - loaded_pix = getbpl2(); uae_u32 sv1 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -37253,30 +86945,13 @@ static void lts_aga_fm0_dpf0_p2_ishres_dshres_spr(void) sv1 = svt; } } - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; - } - last_bpl_pix = pix2; - } - shiftbpl2(); - if (bpldat_copy[0] && ((cmp | 2) & 15) == bplcon1_shift_full_masked[0]) { - copybpl2(); } - loaded_pix = getbpl2(); uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -37285,30 +86960,13 @@ static void lts_aga_fm0_dpf0_p2_ishres_dshres_spr(void) sv2 = svt; } } - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - uae_u8 val3 = dpf_lookup[pix3]; - if (dpf_lookup_no[pix3]) { - val3 += dblpfofs[bpldualpf2of]; - } - val3 ^= bplcon4_denise_xor_val; - dpix_val3 = denise_colors.acolors[val3]; - } - last_bpl_pix = pix3; - } - shiftbpl2(); - if (bpldat_copy[0] && ((cmp | 3) & 15) == bplcon1_shift_full_masked[0]) { - copybpl2(); } - loaded_pix = getbpl2(); uae_u32 sv3 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -37317,7 +86975,6 @@ static void lts_aga_fm0_dpf0_p2_ishres_dshres_spr(void) sv3 = svt; } } - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { @@ -37403,11 +87060,11 @@ static void lts_aga_fm0_dpf0_p2_ishres_dshres_spr(void) denise_cck++; } } -static void lts_aga_fm0_dpf0_p2_ishres_dshres_spr_filtered(void) +static void lts_aga_fm0_kehb0_p8_ishres_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm0_dpf1_p2_ishres_dshres_spr(void) +static void lts_aga_fm0_kehb1_p8_ishres_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -37418,33 +87075,13 @@ 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; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; - } - shiftbpl2(); - if (bpldat_copy[0] && ((cmp | 0) & 15) == bplcon1_shift_full_masked[0]) { - copybpl2e(); - } - if (bpldat_copy[1] && ((cmp | 0) & 15) == bplcon1_shift_full_masked[1]) { - copybpl2o(); } - loaded_pix = getbpl2(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -37453,33 +87090,13 @@ static void lts_aga_fm0_dpf1_p2_ishres_dshres_spr(void) sv0 = svt; } } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - if (dpf_lookup_no[pix1]) { - val1 += dblpfofs[bpldualpf2of]; - } - val1 ^= bplcon4_denise_xor_val; - dpix_val1 = denise_colors.acolors[val1]; - } - last_bpl_pix = pix1; - } - shiftbpl2(); - if (bpldat_copy[0] && ((cmp | 1) & 15) == bplcon1_shift_full_masked[0]) { - copybpl2e(); - } - if (bpldat_copy[1] && ((cmp | 1) & 15) == bplcon1_shift_full_masked[1]) { - copybpl2o(); } - loaded_pix = getbpl2(); uae_u32 sv1 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -37488,33 +87105,13 @@ static void lts_aga_fm0_dpf1_p2_ishres_dshres_spr(void) sv1 = svt; } } - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; - } - last_bpl_pix = pix2; - } - shiftbpl2(); - if (bpldat_copy[0] && ((cmp | 2) & 15) == bplcon1_shift_full_masked[0]) { - copybpl2e(); - } - if (bpldat_copy[1] && ((cmp | 2) & 15) == bplcon1_shift_full_masked[1]) { - copybpl2o(); } - loaded_pix = getbpl2(); uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -37523,33 +87120,13 @@ static void lts_aga_fm0_dpf1_p2_ishres_dshres_spr(void) sv2 = svt; } } - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - uae_u8 val3 = dpf_lookup[pix3]; - if (dpf_lookup_no[pix3]) { - val3 += dblpfofs[bpldualpf2of]; - } - val3 ^= bplcon4_denise_xor_val; - dpix_val3 = denise_colors.acolors[val3]; - } - last_bpl_pix = pix3; - } - shiftbpl2(); - if (bpldat_copy[0] && ((cmp | 3) & 15) == bplcon1_shift_full_masked[0]) { - copybpl2e(); - } - if (bpldat_copy[1] && ((cmp | 3) & 15) == bplcon1_shift_full_masked[1]) { - copybpl2o(); } - loaded_pix = getbpl2(); uae_u32 sv3 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -37558,7 +87135,6 @@ static void lts_aga_fm0_dpf1_p2_ishres_dshres_spr(void) sv3 = svt; } } - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { @@ -37644,294 +87220,6 @@ static void lts_aga_fm0_dpf1_p2_ishres_dshres_spr(void) denise_cck++; } } -static void lts_aga_fm0_dpf1_p2_ishres_dshres_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb0_p2_ishres_dshres_spr(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb0_p2_ishres_dshres_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb1_p2_ishres_dshres_spr(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb1_p2_ishres_dshres_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham0_p2_ishres_dshres_spr(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham0_p2_ishres_dshres_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham1_p2_ishres_dshres_spr(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham1_p2_ishres_dshres_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb0_p2_ishres_dshres_spr(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb0_p2_ishres_dshres_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb1_p2_ishres_dshres_spr(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb1_p2_ishres_dshres_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_n0_p4_ishres_dshres_spr(void) -{ - lts_null(); -} -static void lts_aga_fm0_n0_p4_ishres_dshres_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_n1_p4_ishres_dshres_spr(void) -{ - lts_null(); -} -static void lts_aga_fm0_n1_p4_ishres_dshres_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_dpf0_p4_ishres_dshres_spr(void) -{ - lts_null(); -} -static void lts_aga_fm0_dpf0_p4_ishres_dshres_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_dpf1_p4_ishres_dshres_spr(void) -{ - lts_null(); -} -static void lts_aga_fm0_dpf1_p4_ishres_dshres_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb0_p4_ishres_dshres_spr(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb0_p4_ishres_dshres_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb1_p4_ishres_dshres_spr(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb1_p4_ishres_dshres_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham0_p4_ishres_dshres_spr(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham0_p4_ishres_dshres_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham1_p4_ishres_dshres_spr(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham1_p4_ishres_dshres_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb0_p4_ishres_dshres_spr(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb0_p4_ishres_dshres_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb1_p4_ishres_dshres_spr(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb1_p4_ishres_dshres_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_n0_p6_ishres_dshres_spr(void) -{ - lts_null(); -} -static void lts_aga_fm0_n0_p6_ishres_dshres_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_n1_p6_ishres_dshres_spr(void) -{ - lts_null(); -} -static void lts_aga_fm0_n1_p6_ishres_dshres_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_dpf0_p6_ishres_dshres_spr(void) -{ - lts_null(); -} -static void lts_aga_fm0_dpf0_p6_ishres_dshres_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_dpf1_p6_ishres_dshres_spr(void) -{ - lts_null(); -} -static void lts_aga_fm0_dpf1_p6_ishres_dshres_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb0_p6_ishres_dshres_spr(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb0_p6_ishres_dshres_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb1_p6_ishres_dshres_spr(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb1_p6_ishres_dshres_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham0_p6_ishres_dshres_spr(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham0_p6_ishres_dshres_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham1_p6_ishres_dshres_spr(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham1_p6_ishres_dshres_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb0_p6_ishres_dshres_spr(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb0_p6_ishres_dshres_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb1_p6_ishres_dshres_spr(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb1_p6_ishres_dshres_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_n0_p8_ishres_dshres_spr(void) -{ - lts_null(); -} -static void lts_aga_fm0_n0_p8_ishres_dshres_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_n1_p8_ishres_dshres_spr(void) -{ - lts_null(); -} -static void lts_aga_fm0_n1_p8_ishres_dshres_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_dpf0_p8_ishres_dshres_spr(void) -{ - lts_null(); -} -static void lts_aga_fm0_dpf0_p8_ishres_dshres_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_dpf1_p8_ishres_dshres_spr(void) -{ - lts_null(); -} -static void lts_aga_fm0_dpf1_p8_ishres_dshres_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb0_p8_ishres_dshres_spr(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb0_p8_ishres_dshres_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb1_p8_ishres_dshres_spr(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb1_p8_ishres_dshres_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham0_p8_ishres_dshres_spr(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham0_p8_ishres_dshres_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham1_p8_ishres_dshres_spr(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham1_p8_ishres_dshres_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb0_p8_ishres_dshres_spr(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb0_p8_ishres_dshres_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb1_p8_ishres_dshres_spr(void) -{ - lts_null(); -} static void lts_aga_fm0_kehb1_p8_ishres_dshres_spr_filtered(void) { lts_null(); diff --git a/linetoscr_aga_fm0_genlock.cpp b/linetoscr_aga_fm0_genlock.cpp index 5a07e1c4..13c8b63b 100644 --- a/linetoscr_aga_fm0_genlock.cpp +++ b/linetoscr_aga_fm0_genlock.cpp @@ -313,54 +313,6 @@ static void lts_aga_fm0_dpf1_p4_ilores_dlores_filtered_genlock(void) lts_null(); } static void lts_aga_fm0_ehb0_p4_ilores_dlores_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb0_p4_ilores_dlores_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb1_p4_ilores_dlores_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb1_p4_ilores_dlores_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham0_p4_ilores_dlores_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham0_p4_ilores_dlores_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham1_p4_ilores_dlores_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham1_p4_ilores_dlores_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb0_p4_ilores_dlores_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb0_p4_ilores_dlores_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb1_p4_ilores_dlores_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb1_p4_ilores_dlores_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_n0_p8_ilores_dlores_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -371,7 +323,6 @@ 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; @@ -379,20 +330,7 @@ static void lts_aga_fm0_n0_p8_ilores_dlores_genlock(void) if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); - } - last_bpl_pix = pix0; } - shiftbpl8(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8(); - } - loaded_pix = getbpl8(); - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; @@ -429,11 +367,11 @@ static void lts_aga_fm0_n0_p8_ilores_dlores_genlock(void) denise_cck++; } } -static void lts_aga_fm0_n0_p8_ilores_dlores_filtered_genlock(void) +static void lts_aga_fm0_ehb0_p4_ilores_dlores_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm0_n1_p8_ilores_dlores_genlock(void) +static void lts_aga_fm0_ehb1_p4_ilores_dlores_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -444,7 +382,6 @@ 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; @@ -452,23 +389,7 @@ static void lts_aga_fm0_n1_p8_ilores_dlores_genlock(void) if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); - } - last_bpl_pix = pix0; - } - shiftbpl8(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e(); - } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o(); } - loaded_pix = getbpl8(); - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; @@ -505,11 +426,11 @@ static void lts_aga_fm0_n1_p8_ilores_dlores_genlock(void) denise_cck++; } } -static void lts_aga_fm0_n1_p8_ilores_dlores_filtered_genlock(void) +static void lts_aga_fm0_ehb1_p4_ilores_dlores_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm0_dpf0_p8_ilores_dlores_genlock(void) +static void lts_aga_fm0_ham0_p4_ilores_dlores_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -520,7 +441,6 @@ 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; @@ -528,25 +448,7 @@ static void lts_aga_fm0_dpf0_p8_ilores_dlores_genlock(void) if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - gpix0 = get_genlock_transparency(dpf_lookup[pix0]); - } - last_bpl_pix = pix0; - } - shiftbpl8(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8(); } - loaded_pix = getbpl8(); - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; @@ -583,11 +485,11 @@ static void lts_aga_fm0_dpf0_p8_ilores_dlores_genlock(void) denise_cck++; } } -static void lts_aga_fm0_dpf0_p8_ilores_dlores_filtered_genlock(void) +static void lts_aga_fm0_ham0_p4_ilores_dlores_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm0_dpf1_p8_ilores_dlores_genlock(void) +static void lts_aga_fm0_ham1_p4_ilores_dlores_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -598,7 +500,6 @@ 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; @@ -606,28 +507,7 @@ static void lts_aga_fm0_dpf1_p8_ilores_dlores_genlock(void) if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - gpix0 = get_genlock_transparency(dpf_lookup[pix0]); - } - last_bpl_pix = pix0; - } - shiftbpl8(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e(); - } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o(); } - loaded_pix = getbpl8(); - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; @@ -664,27 +544,11 @@ static void lts_aga_fm0_dpf1_p8_ilores_dlores_genlock(void) denise_cck++; } } -static void lts_aga_fm0_dpf1_p8_ilores_dlores_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb0_p8_ilores_dlores_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb0_p8_ilores_dlores_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb1_p8_ilores_dlores_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb1_p8_ilores_dlores_filtered_genlock(void) +static void lts_aga_fm0_ham1_p4_ilores_dlores_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm0_ham0_p8_ilores_dlores_genlock(void) +static void lts_aga_fm0_kehb0_p4_ilores_dlores_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -695,7 +559,6 @@ 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; @@ -703,20 +566,7 @@ static void lts_aga_fm0_ham0_p8_ilores_dlores_genlock(void) if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = decode_ham_pixel_aga(pix0); - gpix0 = get_genlock_transparency((pix0 >> 2) & 63); - } - last_bpl_pix = pix0; } - shiftbpl8(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8(); - } - loaded_pix = getbpl8(); - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; @@ -753,11 +603,11 @@ static void lts_aga_fm0_ham0_p8_ilores_dlores_genlock(void) denise_cck++; } } -static void lts_aga_fm0_ham0_p8_ilores_dlores_filtered_genlock(void) +static void lts_aga_fm0_kehb0_p4_ilores_dlores_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm0_ham1_p8_ilores_dlores_genlock(void) +static void lts_aga_fm0_kehb1_p4_ilores_dlores_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -768,7 +618,6 @@ 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; @@ -776,23 +625,7 @@ static void lts_aga_fm0_ham1_p8_ilores_dlores_genlock(void) if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = decode_ham_pixel_aga(pix0); - gpix0 = get_genlock_transparency((pix0 >> 2) & 63); - } - last_bpl_pix = pix0; - } - shiftbpl8(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e(); - } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o(); } - loaded_pix = getbpl8(); - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; @@ -829,27 +662,11 @@ static void lts_aga_fm0_ham1_p8_ilores_dlores_genlock(void) denise_cck++; } } -static void lts_aga_fm0_ham1_p8_ilores_dlores_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb0_p8_ilores_dlores_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb0_p8_ilores_dlores_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb1_p8_ilores_dlores_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb1_p8_ilores_dlores_filtered_genlock(void) +static void lts_aga_fm0_kehb1_p4_ilores_dlores_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm0_n0_p4_ilores_dlores_spr_genlock(void) +static void lts_aga_fm0_n0_p8_ilores_dlores_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -862,7 +679,6 @@ static void lts_aga_fm0_n0_p4_ilores_dlores_spr_genlock(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; @@ -877,30 +693,14 @@ static void lts_aga_fm0_n0_p4_ilores_dlores_spr_genlock(void) } last_bpl_pix = pix0; } - shiftbpl4(); + shiftbpl8(); if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4(); - } - loaded_pix = getbpl4(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } + copybpl8(); } + loaded_pix = getbpl8(); loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - gpix0 = get_genlock_transparency(spix0); - - } - } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; uae_u32 t0 = dtbuf[h ^ lol][0]; @@ -935,11 +735,11 @@ static void lts_aga_fm0_n0_p4_ilores_dlores_spr_genlock(void) denise_cck++; } } -static void lts_aga_fm0_n0_p4_ilores_dlores_spr_filtered_genlock(void) +static void lts_aga_fm0_n0_p8_ilores_dlores_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm0_n1_p4_ilores_dlores_spr_genlock(void) +static void lts_aga_fm0_n1_p8_ilores_dlores_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -952,7 +752,6 @@ static void lts_aga_fm0_n1_p4_ilores_dlores_spr_genlock(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; @@ -967,33 +766,17 @@ static void lts_aga_fm0_n1_p4_ilores_dlores_spr_genlock(void) } last_bpl_pix = pix0; } - shiftbpl4(); + shiftbpl8(); if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4e(); + copybpl8e(); } if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl4o(); - } - loaded_pix = getbpl4(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } + copybpl8o(); } + loaded_pix = getbpl8(); loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - gpix0 = get_genlock_transparency(spix0); - - } - } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; uae_u32 t0 = dtbuf[h ^ lol][0]; @@ -1028,11 +811,11 @@ static void lts_aga_fm0_n1_p4_ilores_dlores_spr_genlock(void) denise_cck++; } } -static void lts_aga_fm0_n1_p4_ilores_dlores_spr_filtered_genlock(void) +static void lts_aga_fm0_n1_p8_ilores_dlores_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm0_dpf0_p4_ilores_dlores_spr_genlock(void) +static void lts_aga_fm0_dpf0_p8_ilores_dlores_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -1045,7 +828,6 @@ static void lts_aga_fm0_dpf0_p4_ilores_dlores_spr_genlock(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; @@ -1065,30 +847,14 @@ static void lts_aga_fm0_dpf0_p4_ilores_dlores_spr_genlock(void) } last_bpl_pix = pix0; } - shiftbpl4(); + shiftbpl8(); if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4(); - } - loaded_pix = getbpl4(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } + copybpl8(); } + loaded_pix = getbpl8(); loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - gpix0 = get_genlock_transparency(spix0); - - } - } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; uae_u32 t0 = dtbuf[h ^ lol][0]; @@ -1123,11 +889,11 @@ static void lts_aga_fm0_dpf0_p4_ilores_dlores_spr_genlock(void) denise_cck++; } } -static void lts_aga_fm0_dpf0_p4_ilores_dlores_spr_filtered_genlock(void) +static void lts_aga_fm0_dpf0_p8_ilores_dlores_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm0_dpf1_p4_ilores_dlores_spr_genlock(void) +static void lts_aga_fm0_dpf1_p8_ilores_dlores_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -1140,7 +906,6 @@ static void lts_aga_fm0_dpf1_p4_ilores_dlores_spr_genlock(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; @@ -1160,33 +925,17 @@ static void lts_aga_fm0_dpf1_p4_ilores_dlores_spr_genlock(void) } last_bpl_pix = pix0; } - shiftbpl4(); + shiftbpl8(); if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4e(); + copybpl8e(); } if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl4o(); - } - loaded_pix = getbpl4(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } + copybpl8o(); } + loaded_pix = getbpl8(); loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - gpix0 = get_genlock_transparency(spix0); - - } - } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; uae_u32 t0 = dtbuf[h ^ lol][0]; @@ -1221,59 +970,11 @@ static void lts_aga_fm0_dpf1_p4_ilores_dlores_spr_genlock(void) denise_cck++; } } -static void lts_aga_fm0_dpf1_p4_ilores_dlores_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb0_p4_ilores_dlores_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb0_p4_ilores_dlores_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb1_p4_ilores_dlores_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb1_p4_ilores_dlores_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham0_p4_ilores_dlores_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham0_p4_ilores_dlores_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham1_p4_ilores_dlores_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham1_p4_ilores_dlores_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb0_p4_ilores_dlores_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb0_p4_ilores_dlores_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb1_p4_ilores_dlores_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb1_p4_ilores_dlores_spr_filtered_genlock(void) +static void lts_aga_fm0_dpf1_p8_ilores_dlores_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm0_n0_p8_ilores_dlores_spr_genlock(void) +static void lts_aga_fm0_ehb0_p8_ilores_dlores_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -1284,47 +985,16 @@ 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; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); - } - last_bpl_pix = pix0; - } - shiftbpl8(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8(); - } - loaded_pix = getbpl8(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - gpix0 = get_genlock_transparency(spix0); - - } - } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; uae_u32 t0 = dtbuf[h ^ lol][0]; @@ -1359,11 +1029,11 @@ static void lts_aga_fm0_n0_p8_ilores_dlores_spr_genlock(void) denise_cck++; } } -static void lts_aga_fm0_n0_p8_ilores_dlores_spr_filtered_genlock(void) +static void lts_aga_fm0_ehb0_p8_ilores_dlores_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm0_n1_p8_ilores_dlores_spr_genlock(void) +static void lts_aga_fm0_ehb1_p8_ilores_dlores_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -1374,50 +1044,16 @@ 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; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); - } - last_bpl_pix = pix0; - } - shiftbpl8(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e(); - } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o(); - } - loaded_pix = getbpl8(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - gpix0 = get_genlock_transparency(spix0); - - } - } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; uae_u32 t0 = dtbuf[h ^ lol][0]; @@ -1452,11 +1088,11 @@ static void lts_aga_fm0_n1_p8_ilores_dlores_spr_genlock(void) denise_cck++; } } -static void lts_aga_fm0_n1_p8_ilores_dlores_spr_filtered_genlock(void) +static void lts_aga_fm0_ehb1_p8_ilores_dlores_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm0_dpf0_p8_ilores_dlores_spr_genlock(void) +static void lts_aga_fm0_ham0_p8_ilores_dlores_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -1469,7 +1105,6 @@ static void lts_aga_fm0_dpf0_p8_ilores_dlores_spr_genlock(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; @@ -1479,13 +1114,8 @@ static void lts_aga_fm0_dpf0_p8_ilores_dlores_spr_genlock(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - gpix0 = get_genlock_transparency(dpf_lookup[pix0]); + dpix_val0 = decode_ham_pixel_aga(pix0); + gpix0 = get_genlock_transparency((pix0 >> 2) & 63); } last_bpl_pix = pix0; } @@ -1494,25 +1124,9 @@ static void lts_aga_fm0_dpf0_p8_ilores_dlores_spr_genlock(void) copybpl8(); } loaded_pix = getbpl8(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } - } loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - gpix0 = get_genlock_transparency(spix0); - - } - } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; uae_u32 t0 = dtbuf[h ^ lol][0]; @@ -1547,11 +1161,11 @@ static void lts_aga_fm0_dpf0_p8_ilores_dlores_spr_genlock(void) denise_cck++; } } -static void lts_aga_fm0_dpf0_p8_ilores_dlores_spr_filtered_genlock(void) +static void lts_aga_fm0_ham0_p8_ilores_dlores_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm0_dpf1_p8_ilores_dlores_spr_genlock(void) +static void lts_aga_fm0_ham1_p8_ilores_dlores_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -1564,7 +1178,6 @@ static void lts_aga_fm0_dpf1_p8_ilores_dlores_spr_genlock(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; @@ -1574,13 +1187,8 @@ static void lts_aga_fm0_dpf1_p8_ilores_dlores_spr_genlock(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - gpix0 = get_genlock_transparency(dpf_lookup[pix0]); + dpix_val0 = decode_ham_pixel_aga(pix0); + gpix0 = get_genlock_transparency((pix0 >> 2) & 63); } last_bpl_pix = pix0; } @@ -1592,25 +1200,9 @@ static void lts_aga_fm0_dpf1_p8_ilores_dlores_spr_genlock(void) copybpl8o(); } loaded_pix = getbpl8(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } - } loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - gpix0 = get_genlock_transparency(spix0); - - } - } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; uae_u32 t0 = dtbuf[h ^ lol][0]; @@ -1645,27 +1237,11 @@ static void lts_aga_fm0_dpf1_p8_ilores_dlores_spr_genlock(void) denise_cck++; } } -static void lts_aga_fm0_dpf1_p8_ilores_dlores_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb0_p8_ilores_dlores_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb0_p8_ilores_dlores_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb1_p8_ilores_dlores_spr_genlock(void) +static void lts_aga_fm0_ham1_p8_ilores_dlores_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm0_ehb1_p8_ilores_dlores_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham0_p8_ilores_dlores_spr_genlock(void) +static void lts_aga_fm0_kehb0_p8_ilores_dlores_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -1676,47 +1252,75 @@ 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; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = decode_ham_pixel_aga(pix0); - gpix0 = get_genlock_transparency((pix0 >> 2) & 63); + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); } - last_bpl_pix = pix0; + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; } - shiftbpl8(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8(); + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_kehb0_p8_ilores_dlores_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm0_kehb1_p8_ilores_dlores_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; } - loaded_pix = getbpl8(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - gpix0 = get_genlock_transparency(spix0); - - } - } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; uae_u32 t0 = dtbuf[h ^ lol][0]; @@ -1751,11 +1355,11 @@ static void lts_aga_fm0_ham0_p8_ilores_dlores_spr_genlock(void) denise_cck++; } } -static void lts_aga_fm0_ham0_p8_ilores_dlores_spr_filtered_genlock(void) +static void lts_aga_fm0_kehb1_p8_ilores_dlores_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm0_ham1_p8_ilores_dlores_spr_genlock(void) +static void lts_aga_fm0_n0_p4_ilores_dlores_spr_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -1778,19 +1382,16 @@ static void lts_aga_fm0_ham1_p8_ilores_dlores_spr_genlock(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - dpix_val0 = decode_ham_pixel_aga(pix0); - gpix0 = get_genlock_transparency((pix0 >> 2) & 63); + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); } last_bpl_pix = pix0; } - shiftbpl8(); + shiftbpl4(); if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e(); - } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o(); + copybpl4(); } - loaded_pix = getbpl8(); + loaded_pix = getbpl4(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -1844,27 +1445,11 @@ static void lts_aga_fm0_ham1_p8_ilores_dlores_spr_genlock(void) denise_cck++; } } -static void lts_aga_fm0_ham1_p8_ilores_dlores_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb0_p8_ilores_dlores_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb0_p8_ilores_dlores_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb1_p8_ilores_dlores_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb1_p8_ilores_dlores_spr_filtered_genlock(void) +static void lts_aga_fm0_n0_p4_ilores_dlores_spr_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm0_n0_p4_ihires_dlores_genlock(void) +static void lts_aga_fm0_n1_p4_ilores_dlores_spr_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -1877,6 +1462,7 @@ static void lts_aga_fm0_n0_p4_ihires_dlores_genlock(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; @@ -1892,14 +1478,32 @@ static void lts_aga_fm0_n0_p4_ihires_dlores_genlock(void) last_bpl_pix = pix0; } shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4e(); + } + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl4o(); } loaded_pix = getbpl4(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } loaded_pixs[0] = loaded_pix; - shiftbpl4(); internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; uae_u32 t0 = dtbuf[h ^ lol][0]; @@ -1934,7 +1538,11 @@ static void lts_aga_fm0_n0_p4_ihires_dlores_genlock(void) denise_cck++; } } -static void lts_aga_fm0_n0_p4_ihires_dlores_filtered_genlock(void) +static void lts_aga_fm0_n1_p4_ilores_dlores_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm0_dpf0_p4_ilores_dlores_spr_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -1947,6 +1555,7 @@ static void lts_aga_fm0_n0_p4_ihires_dlores_filtered_genlock(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; @@ -1956,41 +1565,40 @@ static void lts_aga_fm0_n0_p4_ihires_dlores_filtered_genlock(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + gpix0 = get_genlock_transparency(dpf_lookup[pix0]); } last_bpl_pix = pix0; } shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { copybpl4(); } loaded_pix = getbpl4(); - loaded_pixs[0] = loaded_pix; - uae_u8 pix1 = 0; - uae_u8 gpix1 = 0xff; - uae_u32 dpix_val1 = BLANK_COLOR; - if (!denise_blank_active) { - gpix1 = get_genlock_transparency_border(); - dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; - gpix1 = get_genlock_transparency(pix1 ^ bplcon4_denise_xor_val); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; } - last_bpl_pix = pix1; - } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4(); } - loaded_pix = getbpl4(); - loaded_pixs[1] = loaded_pix; + loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - dpix_val0 = filter_pixel(dpix_val0, dpix_val1); - gpix0 = filter_pixel_genlock(gpix0, gpix1); + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; uae_u32 t0 = dtbuf[h ^ lol][0]; @@ -2025,7 +1633,11 @@ static void lts_aga_fm0_n0_p4_ihires_dlores_filtered_genlock(void) denise_cck++; } } -static void lts_aga_fm0_n1_p4_ihires_dlores_genlock(void) +static void lts_aga_fm0_dpf0_p4_ilores_dlores_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm0_dpf1_p4_ilores_dlores_spr_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -2038,6 +1650,7 @@ static void lts_aga_fm0_n1_p4_ihires_dlores_genlock(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; @@ -2047,23 +1660,43 @@ static void lts_aga_fm0_n1_p4_ihires_dlores_genlock(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + gpix0 = get_genlock_transparency(dpf_lookup[pix0]); } last_bpl_pix = pix0; } shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { copybpl4e(); } - if (bpldat_copy[1] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[1]) { + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { copybpl4o(); } loaded_pix = getbpl4(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } loaded_pixs[0] = loaded_pix; - shiftbpl4(); internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; uae_u32 t0 = dtbuf[h ^ lol][0]; @@ -2098,7 +1731,11 @@ static void lts_aga_fm0_n1_p4_ihires_dlores_genlock(void) denise_cck++; } } -static void lts_aga_fm0_n1_p4_ihires_dlores_filtered_genlock(void) +static void lts_aga_fm0_dpf1_p4_ilores_dlores_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm0_ehb0_p4_ilores_dlores_spr_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -2109,58 +1746,33 @@ 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; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); - } - last_bpl_pix = pix0; } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4e(); - } - if (bpldat_copy[1] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[1]) { - copybpl4o(); - } - loaded_pix = getbpl4(); - loaded_pixs[0] = loaded_pix; - uae_u8 pix1 = 0; - uae_u8 gpix1 = 0xff; - uae_u32 dpix_val1 = BLANK_COLOR; - if (!denise_blank_active) { - gpix1 = get_genlock_transparency_border(); - dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; - gpix1 = get_genlock_transparency(pix1 ^ bplcon4_denise_xor_val); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; } - last_bpl_pix = pix1; - } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4e(); - } - if (bpldat_copy[1] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[1]) { - copybpl4o(); } - loaded_pix = getbpl4(); - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - dpix_val0 = filter_pixel(dpix_val0, dpix_val1); - gpix0 = filter_pixel_genlock(gpix0, gpix1); + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; uae_u32 t0 = dtbuf[h ^ lol][0]; @@ -2195,7 +1807,11 @@ static void lts_aga_fm0_n1_p4_ihires_dlores_filtered_genlock(void) denise_cck++; } } -static void lts_aga_fm0_dpf0_p4_ihires_dlores_genlock(void) +static void lts_aga_fm0_ehb0_p4_ilores_dlores_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm0_ehb1_p4_ilores_dlores_spr_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -2206,36 +1822,33 @@ 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; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - gpix0 = get_genlock_transparency(dpf_lookup[pix0]); - } - last_bpl_pix = pix0; } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } } - loaded_pix = getbpl4(); - loaded_pixs[0] = loaded_pix; - shiftbpl4(); internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; uae_u32 t0 = dtbuf[h ^ lol][0]; @@ -2270,7 +1883,11 @@ static void lts_aga_fm0_dpf0_p4_ihires_dlores_genlock(void) denise_cck++; } } -static void lts_aga_fm0_dpf0_p4_ihires_dlores_filtered_genlock(void) +static void lts_aga_fm0_ehb1_p4_ilores_dlores_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm0_ham0_p4_ilores_dlores_spr_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -2281,62 +1898,33 @@ 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; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - gpix0 = get_genlock_transparency(dpf_lookup[pix0]); - } - last_bpl_pix = pix0; - } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4(); } - loaded_pix = getbpl4(); - loaded_pixs[0] = loaded_pix; - uae_u8 pix1 = 0; - uae_u8 gpix1 = 0xff; - uae_u32 dpix_val1 = BLANK_COLOR; - if (!denise_blank_active) { - gpix1 = get_genlock_transparency_border(); - dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - if (dpf_lookup_no[pix1]) { - val1 += dblpfofs[bpldualpf2of]; - } - val1 ^= bplcon4_denise_xor_val; - dpix_val1 = denise_colors.acolors[val1]; - gpix1 = get_genlock_transparency(dpf_lookup[pix1]); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; } - last_bpl_pix = pix1; } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4(); - } - loaded_pix = getbpl4(); - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - dpix_val0 = filter_pixel(dpix_val0, dpix_val1); - gpix0 = filter_pixel_genlock(gpix0, gpix1); + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; uae_u32 t0 = dtbuf[h ^ lol][0]; @@ -2371,7 +1959,11 @@ static void lts_aga_fm0_dpf0_p4_ihires_dlores_filtered_genlock(void) denise_cck++; } } -static void lts_aga_fm0_dpf1_p4_ihires_dlores_genlock(void) +static void lts_aga_fm0_ham0_p4_ilores_dlores_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm0_ham1_p4_ilores_dlores_spr_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -2382,39 +1974,33 @@ 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; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - gpix0 = get_genlock_transparency(dpf_lookup[pix0]); - } - last_bpl_pix = pix0; - } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4e(); } - if (bpldat_copy[1] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[1]) { - copybpl4o(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } } - loaded_pix = getbpl4(); - loaded_pixs[0] = loaded_pix; - shiftbpl4(); internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; uae_u32 t0 = dtbuf[h ^ lol][0]; @@ -2449,7 +2035,11 @@ static void lts_aga_fm0_dpf1_p4_ihires_dlores_genlock(void) denise_cck++; } } -static void lts_aga_fm0_dpf1_p4_ihires_dlores_filtered_genlock(void) +static void lts_aga_fm0_ham1_p4_ilores_dlores_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm0_kehb0_p4_ilores_dlores_spr_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -2460,68 +2050,33 @@ 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; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - gpix0 = get_genlock_transparency(dpf_lookup[pix0]); - } - last_bpl_pix = pix0; } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4e(); - } - if (bpldat_copy[1] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[1]) { - copybpl4o(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } } - loaded_pix = getbpl4(); - loaded_pixs[0] = loaded_pix; - uae_u8 pix1 = 0; - uae_u8 gpix1 = 0xff; - uae_u32 dpix_val1 = BLANK_COLOR; - if (!denise_blank_active) { - gpix1 = get_genlock_transparency_border(); - dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - if (dpf_lookup_no[pix1]) { - val1 += dblpfofs[bpldualpf2of]; + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + } - val1 ^= bplcon4_denise_xor_val; - dpix_val1 = denise_colors.acolors[val1]; - gpix1 = get_genlock_transparency(dpf_lookup[pix1]); } - last_bpl_pix = pix1; - } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4e(); - } - if (bpldat_copy[1] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[1]) { - copybpl4o(); - } - loaded_pix = getbpl4(); - loaded_pixs[1] = loaded_pix; - internal_pixel_cnt += 4; - if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - dpix_val0 = filter_pixel(dpix_val0, dpix_val1); - gpix0 = filter_pixel_genlock(gpix0, gpix1); dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; uae_u32 t0 = dtbuf[h ^ lol][0]; @@ -2556,135 +2111,11 @@ static void lts_aga_fm0_dpf1_p4_ihires_dlores_filtered_genlock(void) denise_cck++; } } -static void lts_aga_fm0_ehb0_p4_ihires_dlores_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb0_p4_ihires_dlores_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb1_p4_ihires_dlores_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb1_p4_ihires_dlores_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham0_p4_ihires_dlores_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham0_p4_ihires_dlores_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham1_p4_ihires_dlores_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham1_p4_ihires_dlores_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb0_p4_ihires_dlores_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb0_p4_ihires_dlores_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb1_p4_ihires_dlores_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb1_p4_ihires_dlores_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_n0_p8_ihires_dlores_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_n0_p8_ihires_dlores_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_n1_p8_ihires_dlores_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_n1_p8_ihires_dlores_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_dpf0_p8_ihires_dlores_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_dpf0_p8_ihires_dlores_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_dpf1_p8_ihires_dlores_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_dpf1_p8_ihires_dlores_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb0_p8_ihires_dlores_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb0_p8_ihires_dlores_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb1_p8_ihires_dlores_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb1_p8_ihires_dlores_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham0_p8_ihires_dlores_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham0_p8_ihires_dlores_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham1_p8_ihires_dlores_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham1_p8_ihires_dlores_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb0_p8_ihires_dlores_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb0_p8_ihires_dlores_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb1_p8_ihires_dlores_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb1_p8_ihires_dlores_filtered_genlock(void) +static void lts_aga_fm0_kehb0_p4_ilores_dlores_spr_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm0_n0_p4_ihires_dlores_spr_genlock(void) +static void lts_aga_fm0_kehb1_p4_ilores_dlores_spr_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -2695,7 +2126,6 @@ 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; @@ -2704,19 +2134,7 @@ static void lts_aga_fm0_n0_p4_ihires_dlores_spr_genlock(void) if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); - } - last_bpl_pix = pix0; - } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4(); } - loaded_pix = getbpl4(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -2725,8 +2143,6 @@ static void lts_aga_fm0_n0_p4_ihires_dlores_spr_genlock(void) sv0 = svt; } } - loaded_pixs[0] = loaded_pix; - shiftbpl4(); internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { @@ -2771,7 +2187,11 @@ static void lts_aga_fm0_n0_p4_ihires_dlores_spr_genlock(void) denise_cck++; } } -static void lts_aga_fm0_n0_p4_ihires_dlores_spr_filtered_genlock(void) +static void lts_aga_fm0_kehb1_p4_ilores_dlores_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm0_n0_p8_ilores_dlores_spr_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -2799,11 +2219,11 @@ static void lts_aga_fm0_n0_p4_ihires_dlores_spr_filtered_genlock(void) } last_bpl_pix = pix0; } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4(); + shiftbpl8(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8(); } - loaded_pix = getbpl4(); + loaded_pix = getbpl8(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -2813,26 +2233,6 @@ static void lts_aga_fm0_n0_p4_ihires_dlores_spr_filtered_genlock(void) } } loaded_pixs[0] = loaded_pix; - uae_u8 pix1 = 0; - uae_u8 gpix1 = 0xff; - uae_u32 dpix_val1 = BLANK_COLOR; - if (!denise_blank_active) { - gpix1 = get_genlock_transparency_border(); - dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; - gpix1 = get_genlock_transparency(pix1 ^ bplcon4_denise_xor_val); - } - last_bpl_pix = pix1; - } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4(); - } - loaded_pix = getbpl4(); - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { @@ -2841,11 +2241,8 @@ static void lts_aga_fm0_n0_p4_ihires_dlores_spr_filtered_genlock(void) dpix_val0 = denise_colors.acolors[spix0]; gpix0 = get_genlock_transparency(spix0); - dpix_val1 = dpix_val0; } } - dpix_val0 = filter_pixel(dpix_val0, dpix_val1); - gpix0 = filter_pixel_genlock(gpix0, gpix1); dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; uae_u32 t0 = dtbuf[h ^ lol][0]; @@ -2880,7 +2277,11 @@ static void lts_aga_fm0_n0_p4_ihires_dlores_spr_filtered_genlock(void) denise_cck++; } } -static void lts_aga_fm0_n1_p4_ihires_dlores_spr_genlock(void) +static void lts_aga_fm0_n0_p8_ilores_dlores_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm0_n1_p8_ilores_dlores_spr_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -2908,14 +2309,14 @@ static void lts_aga_fm0_n1_p4_ihires_dlores_spr_genlock(void) } last_bpl_pix = pix0; } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4e(); + shiftbpl8(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8e(); } - if (bpldat_copy[1] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[1]) { - copybpl4o(); + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o(); } - loaded_pix = getbpl4(); + loaded_pix = getbpl8(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -2925,7 +2326,6 @@ static void lts_aga_fm0_n1_p4_ihires_dlores_spr_genlock(void) } } loaded_pixs[0] = loaded_pix; - shiftbpl4(); internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { @@ -2970,7 +2370,11 @@ static void lts_aga_fm0_n1_p4_ihires_dlores_spr_genlock(void) denise_cck++; } } -static void lts_aga_fm0_n1_p4_ihires_dlores_spr_filtered_genlock(void) +static void lts_aga_fm0_n1_p8_ilores_dlores_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm0_dpf0_p8_ilores_dlores_spr_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -2993,19 +2397,21 @@ static void lts_aga_fm0_n1_p4_ihires_dlores_spr_filtered_genlock(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + gpix0 = get_genlock_transparency(dpf_lookup[pix0]); } last_bpl_pix = pix0; } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4e(); - } - if (bpldat_copy[1] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[1]) { - copybpl4o(); + shiftbpl8(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8(); } - loaded_pix = getbpl4(); + loaded_pix = getbpl8(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -3015,29 +2421,6 @@ static void lts_aga_fm0_n1_p4_ihires_dlores_spr_filtered_genlock(void) } } loaded_pixs[0] = loaded_pix; - uae_u8 pix1 = 0; - uae_u8 gpix1 = 0xff; - uae_u32 dpix_val1 = BLANK_COLOR; - if (!denise_blank_active) { - gpix1 = get_genlock_transparency_border(); - dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; - gpix1 = get_genlock_transparency(pix1 ^ bplcon4_denise_xor_val); - } - last_bpl_pix = pix1; - } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4e(); - } - if (bpldat_copy[1] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[1]) { - copybpl4o(); - } - loaded_pix = getbpl4(); - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { @@ -3046,11 +2429,8 @@ static void lts_aga_fm0_n1_p4_ihires_dlores_spr_filtered_genlock(void) dpix_val0 = denise_colors.acolors[spix0]; gpix0 = get_genlock_transparency(spix0); - dpix_val1 = dpix_val0; } } - dpix_val0 = filter_pixel(dpix_val0, dpix_val1); - gpix0 = filter_pixel_genlock(gpix0, gpix1); dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; uae_u32 t0 = dtbuf[h ^ lol][0]; @@ -3085,7 +2465,11 @@ static void lts_aga_fm0_n1_p4_ihires_dlores_spr_filtered_genlock(void) denise_cck++; } } -static void lts_aga_fm0_dpf0_p4_ihires_dlores_spr_genlock(void) +static void lts_aga_fm0_dpf0_p8_ilores_dlores_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm0_dpf1_p8_ilores_dlores_spr_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -3118,11 +2502,14 @@ static void lts_aga_fm0_dpf0_p4_ihires_dlores_spr_genlock(void) } last_bpl_pix = pix0; } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4(); + shiftbpl8(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8e(); } - loaded_pix = getbpl4(); + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o(); + } + loaded_pix = getbpl8(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -3132,7 +2519,6 @@ static void lts_aga_fm0_dpf0_p4_ihires_dlores_spr_genlock(void) } } loaded_pixs[0] = loaded_pix; - shiftbpl4(); internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { @@ -3177,7 +2563,11 @@ static void lts_aga_fm0_dpf0_p4_ihires_dlores_spr_genlock(void) denise_cck++; } } -static void lts_aga_fm0_dpf0_p4_ihires_dlores_spr_filtered_genlock(void) +static void lts_aga_fm0_dpf1_p8_ilores_dlores_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm0_ehb0_p8_ilores_dlores_spr_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -3188,7 +2578,6 @@ 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; @@ -3197,24 +2586,7 @@ static void lts_aga_fm0_dpf0_p4_ihires_dlores_spr_filtered_genlock(void) if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - gpix0 = get_genlock_transparency(dpf_lookup[pix0]); - } - last_bpl_pix = pix0; - } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4(); } - loaded_pix = getbpl4(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -3223,32 +2595,82 @@ static void lts_aga_fm0_dpf0_p4_ihires_dlores_spr_filtered_genlock(void) sv0 = svt; } } - loaded_pixs[0] = loaded_pix; - uae_u8 pix1 = 0; - uae_u8 gpix1 = 0xff; - uae_u32 dpix_val1 = BLANK_COLOR; - if (!denise_blank_active) { - gpix1 = get_genlock_transparency_border(); - dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - if (dpf_lookup_no[pix1]) { - val1 += dblpfofs[bpldualpf2of]; + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + } - val1 ^= bplcon4_denise_xor_val; - dpix_val1 = denise_colors.acolors[val1]; - gpix1 = get_genlock_transparency(dpf_lookup[pix1]); } - last_bpl_pix = pix1; + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ehb0_p8_ilores_dlores_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm0_ehb1_p8_ilores_dlores_spr_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } } - loaded_pix = getbpl4(); - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { @@ -3257,11 +2679,8 @@ static void lts_aga_fm0_dpf0_p4_ihires_dlores_spr_filtered_genlock(void) dpix_val0 = denise_colors.acolors[spix0]; gpix0 = get_genlock_transparency(spix0); - dpix_val1 = dpix_val0; } } - dpix_val0 = filter_pixel(dpix_val0, dpix_val1); - gpix0 = filter_pixel_genlock(gpix0, gpix1); dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; uae_u32 t0 = dtbuf[h ^ lol][0]; @@ -3296,7 +2715,11 @@ static void lts_aga_fm0_dpf0_p4_ihires_dlores_spr_filtered_genlock(void) denise_cck++; } } -static void lts_aga_fm0_dpf1_p4_ihires_dlores_spr_genlock(void) +static void lts_aga_fm0_ehb1_p8_ilores_dlores_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm0_ham0_p8_ilores_dlores_spr_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -3319,24 +2742,16 @@ static void lts_aga_fm0_dpf1_p4_ihires_dlores_spr_genlock(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - gpix0 = get_genlock_transparency(dpf_lookup[pix0]); + dpix_val0 = decode_ham_pixel_aga(pix0); + gpix0 = get_genlock_transparency((pix0 >> 2) & 63); } last_bpl_pix = pix0; } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4e(); - } - if (bpldat_copy[1] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[1]) { - copybpl4o(); + shiftbpl8(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8(); } - loaded_pix = getbpl4(); + loaded_pix = getbpl8(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -3346,7 +2761,6 @@ static void lts_aga_fm0_dpf1_p4_ihires_dlores_spr_genlock(void) } } loaded_pixs[0] = loaded_pix; - shiftbpl4(); internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { @@ -3391,7 +2805,11 @@ static void lts_aga_fm0_dpf1_p4_ihires_dlores_spr_genlock(void) denise_cck++; } } -static void lts_aga_fm0_dpf1_p4_ihires_dlores_spr_filtered_genlock(void) +static void lts_aga_fm0_ham0_p8_ilores_dlores_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm0_ham1_p8_ilores_dlores_spr_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -3414,24 +2832,19 @@ static void lts_aga_fm0_dpf1_p4_ihires_dlores_spr_filtered_genlock(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - gpix0 = get_genlock_transparency(dpf_lookup[pix0]); + dpix_val0 = decode_ham_pixel_aga(pix0); + gpix0 = get_genlock_transparency((pix0 >> 2) & 63); } last_bpl_pix = pix0; } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4e(); + shiftbpl8(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8e(); } - if (bpldat_copy[1] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[1]) { - copybpl4o(); + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o(); } - loaded_pix = getbpl4(); + loaded_pix = getbpl8(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -3441,34 +2854,6 @@ static void lts_aga_fm0_dpf1_p4_ihires_dlores_spr_filtered_genlock(void) } } loaded_pixs[0] = loaded_pix; - uae_u8 pix1 = 0; - uae_u8 gpix1 = 0xff; - uae_u32 dpix_val1 = BLANK_COLOR; - if (!denise_blank_active) { - gpix1 = get_genlock_transparency_border(); - dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - if (dpf_lookup_no[pix1]) { - val1 += dblpfofs[bpldualpf2of]; - } - val1 ^= bplcon4_denise_xor_val; - dpix_val1 = denise_colors.acolors[val1]; - gpix1 = get_genlock_transparency(dpf_lookup[pix1]); - } - last_bpl_pix = pix1; - } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4e(); - } - if (bpldat_copy[1] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[1]) { - copybpl4o(); - } - loaded_pix = getbpl4(); - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { @@ -3477,11 +2862,8 @@ static void lts_aga_fm0_dpf1_p4_ihires_dlores_spr_filtered_genlock(void) dpix_val0 = denise_colors.acolors[spix0]; gpix0 = get_genlock_transparency(spix0); - dpix_val1 = dpix_val0; } } - dpix_val0 = filter_pixel(dpix_val0, dpix_val1); - gpix0 = filter_pixel_genlock(gpix0, gpix1); dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; uae_u32 t0 = dtbuf[h ^ lol][0]; @@ -3516,455 +2898,25308 @@ static void lts_aga_fm0_dpf1_p4_ihires_dlores_spr_filtered_genlock(void) denise_cck++; } } -static void lts_aga_fm0_ehb0_p4_ihires_dlores_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb0_p4_ihires_dlores_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb1_p4_ihires_dlores_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb1_p4_ihires_dlores_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham0_p4_ihires_dlores_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham0_p4_ihires_dlores_spr_filtered_genlock(void) +static void lts_aga_fm0_ham1_p8_ilores_dlores_spr_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm0_ham1_p4_ihires_dlores_spr_genlock(void) +static void lts_aga_fm0_kehb0_p8_ilores_dlores_spr_genlock(void) { - lts_null(); -} -static void lts_aga_fm0_ham1_p4_ihires_dlores_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb0_p4_ihires_dlores_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb0_p4_ihires_dlores_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb1_p4_ihires_dlores_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb1_p4_ihires_dlores_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_n0_p8_ihires_dlores_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_n0_p8_ihires_dlores_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_n1_p8_ihires_dlores_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_n1_p8_ihires_dlores_spr_filtered_genlock(void) -{ - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm0_dpf0_p8_ihires_dlores_spr_genlock(void) +static void lts_aga_fm0_kehb0_p8_ilores_dlores_spr_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm0_dpf0_p8_ihires_dlores_spr_filtered_genlock(void) +static void lts_aga_fm0_kehb1_p8_ilores_dlores_spr_genlock(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm0_dpf1_p8_ihires_dlores_spr_genlock(void) +static void lts_aga_fm0_kehb1_p8_ilores_dlores_spr_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm0_dpf1_p8_ihires_dlores_spr_filtered_genlock(void) +static void lts_aga_fm0_n0_p4_ihires_dlores_genlock(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_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; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix0; + } + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4(); + } + loaded_pix = getbpl4(); + loaded_pixs[0] = loaded_pix; + shiftbpl4(); + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm0_ehb0_p8_ihires_dlores_spr_genlock(void) +static void lts_aga_fm0_n0_p4_ihires_dlores_filtered_genlock(void) { - lts_null(); -} -static void lts_aga_fm0_ehb0_p8_ihires_dlores_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb1_p8_ihires_dlores_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb1_p8_ihires_dlores_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham0_p8_ihires_dlores_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham0_p8_ihires_dlores_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham1_p8_ihires_dlores_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham1_p8_ihires_dlores_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb0_p8_ihires_dlores_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb0_p8_ihires_dlores_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb1_p8_ihires_dlores_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb1_p8_ihires_dlores_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_n0_p4_ishres_dlores_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_n0_p4_ishres_dlores_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_n1_p4_ishres_dlores_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_n1_p4_ishres_dlores_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_dpf0_p4_ishres_dlores_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_dpf0_p4_ishres_dlores_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_dpf1_p4_ishres_dlores_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_dpf1_p4_ishres_dlores_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb0_p4_ishres_dlores_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb0_p4_ishres_dlores_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb1_p4_ishres_dlores_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb1_p4_ishres_dlores_filtered_genlock(void) -{ - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_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; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix0; + } + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4(); + } + loaded_pix = getbpl4(); + loaded_pixs[0] = loaded_pix; + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; + gpix1 = get_genlock_transparency(pix1 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix1; + } + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4(); + } + loaded_pix = getbpl4(); + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + gpix0 = filter_pixel_genlock(gpix0, gpix1); + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm0_ham0_p4_ishres_dlores_genlock(void) +static void lts_aga_fm0_n1_p4_ihires_dlores_genlock(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_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; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix0; + } + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4e(); + } + if (bpldat_copy[1] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[1]) { + copybpl4o(); + } + loaded_pix = getbpl4(); + loaded_pixs[0] = loaded_pix; + shiftbpl4(); + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm0_ham0_p4_ishres_dlores_filtered_genlock(void) +static void lts_aga_fm0_n1_p4_ihires_dlores_filtered_genlock(void) { - lts_null(); -} -static void lts_aga_fm0_ham1_p4_ishres_dlores_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham1_p4_ishres_dlores_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb0_p4_ishres_dlores_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb0_p4_ishres_dlores_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb1_p4_ishres_dlores_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb1_p4_ishres_dlores_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_n0_p8_ishres_dlores_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_n0_p8_ishres_dlores_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_n1_p8_ishres_dlores_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_n1_p8_ishres_dlores_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_dpf0_p8_ishres_dlores_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_dpf0_p8_ishres_dlores_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_dpf1_p8_ishres_dlores_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_dpf1_p8_ishres_dlores_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb0_p8_ishres_dlores_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb0_p8_ishres_dlores_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb1_p8_ishres_dlores_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb1_p8_ishres_dlores_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham0_p8_ishres_dlores_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham0_p8_ishres_dlores_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham1_p8_ishres_dlores_genlock(void) -{ - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_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; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix0; + } + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4e(); + } + if (bpldat_copy[1] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[1]) { + copybpl4o(); + } + loaded_pix = getbpl4(); + loaded_pixs[0] = loaded_pix; + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; + gpix1 = get_genlock_transparency(pix1 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix1; + } + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4e(); + } + if (bpldat_copy[1] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[1]) { + copybpl4o(); + } + loaded_pix = getbpl4(); + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + gpix0 = filter_pixel_genlock(gpix0, gpix1); + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm0_ham1_p8_ishres_dlores_filtered_genlock(void) +static void lts_aga_fm0_dpf0_p4_ihires_dlores_genlock(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_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; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + gpix0 = get_genlock_transparency(dpf_lookup[pix0]); + } + last_bpl_pix = pix0; + } + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4(); + } + loaded_pix = getbpl4(); + loaded_pixs[0] = loaded_pix; + shiftbpl4(); + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm0_kehb0_p8_ishres_dlores_genlock(void) +static void lts_aga_fm0_dpf0_p4_ihires_dlores_filtered_genlock(void) { - lts_null(); -} -static void lts_aga_fm0_kehb0_p8_ishres_dlores_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb1_p8_ishres_dlores_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb1_p8_ishres_dlores_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_n0_p4_ishres_dlores_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_n0_p4_ishres_dlores_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_n1_p4_ishres_dlores_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_n1_p4_ishres_dlores_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_dpf0_p4_ishres_dlores_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_dpf0_p4_ishres_dlores_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_dpf1_p4_ishres_dlores_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_dpf1_p4_ishres_dlores_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb0_p4_ishres_dlores_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb0_p4_ishres_dlores_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb1_p4_ishres_dlores_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb1_p4_ishres_dlores_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham0_p4_ishres_dlores_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham0_p4_ishres_dlores_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham1_p4_ishres_dlores_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham1_p4_ishres_dlores_spr_filtered_genlock(void) -{ - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_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; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + gpix0 = get_genlock_transparency(dpf_lookup[pix0]); + } + last_bpl_pix = pix0; + } + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4(); + } + loaded_pix = getbpl4(); + loaded_pixs[0] = loaded_pix; + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + uae_u8 val1 = dpf_lookup[pix1]; + if (dpf_lookup_no[pix1]) { + val1 += dblpfofs[bpldualpf2of]; + } + val1 ^= bplcon4_denise_xor_val; + dpix_val1 = denise_colors.acolors[val1]; + gpix1 = get_genlock_transparency(dpf_lookup[pix1]); + } + last_bpl_pix = pix1; + } + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4(); + } + loaded_pix = getbpl4(); + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + gpix0 = filter_pixel_genlock(gpix0, gpix1); + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm0_kehb0_p4_ishres_dlores_spr_genlock(void) +static void lts_aga_fm0_dpf1_p4_ihires_dlores_genlock(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_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; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + gpix0 = get_genlock_transparency(dpf_lookup[pix0]); + } + last_bpl_pix = pix0; + } + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4e(); + } + if (bpldat_copy[1] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[1]) { + copybpl4o(); + } + loaded_pix = getbpl4(); + loaded_pixs[0] = loaded_pix; + shiftbpl4(); + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm0_kehb0_p4_ishres_dlores_spr_filtered_genlock(void) +static void lts_aga_fm0_dpf1_p4_ihires_dlores_filtered_genlock(void) { - lts_null(); -} -static void lts_aga_fm0_kehb1_p4_ishres_dlores_spr_genlock(void) + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_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; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + gpix0 = get_genlock_transparency(dpf_lookup[pix0]); + } + last_bpl_pix = pix0; + } + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4e(); + } + if (bpldat_copy[1] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[1]) { + copybpl4o(); + } + loaded_pix = getbpl4(); + loaded_pixs[0] = loaded_pix; + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + uae_u8 val1 = dpf_lookup[pix1]; + if (dpf_lookup_no[pix1]) { + val1 += dblpfofs[bpldualpf2of]; + } + val1 ^= bplcon4_denise_xor_val; + dpix_val1 = denise_colors.acolors[val1]; + gpix1 = get_genlock_transparency(dpf_lookup[pix1]); + } + last_bpl_pix = pix1; + } + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4e(); + } + if (bpldat_copy[1] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[1]) { + copybpl4o(); + } + loaded_pix = getbpl4(); + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + gpix0 = filter_pixel_genlock(gpix0, gpix1); + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ehb0_p4_ihires_dlores_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ehb0_p4_ihires_dlores_filtered_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + gpix0 = filter_pixel_genlock(gpix0, gpix1); + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ehb1_p4_ihires_dlores_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ehb1_p4_ihires_dlores_filtered_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + gpix0 = filter_pixel_genlock(gpix0, gpix1); + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ham0_p4_ihires_dlores_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ham0_p4_ihires_dlores_filtered_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + gpix0 = filter_pixel_genlock(gpix0, gpix1); + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ham1_p4_ihires_dlores_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ham1_p4_ihires_dlores_filtered_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + gpix0 = filter_pixel_genlock(gpix0, gpix1); + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_kehb0_p4_ihires_dlores_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_kehb0_p4_ihires_dlores_filtered_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + gpix0 = filter_pixel_genlock(gpix0, gpix1); + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_kehb1_p4_ihires_dlores_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_kehb1_p4_ihires_dlores_filtered_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + gpix0 = filter_pixel_genlock(gpix0, gpix1); + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_n0_p8_ihires_dlores_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_n0_p8_ihires_dlores_filtered_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + gpix0 = filter_pixel_genlock(gpix0, gpix1); + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_n1_p8_ihires_dlores_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_n1_p8_ihires_dlores_filtered_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + gpix0 = filter_pixel_genlock(gpix0, gpix1); + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_dpf0_p8_ihires_dlores_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_dpf0_p8_ihires_dlores_filtered_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + gpix0 = filter_pixel_genlock(gpix0, gpix1); + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_dpf1_p8_ihires_dlores_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_dpf1_p8_ihires_dlores_filtered_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + gpix0 = filter_pixel_genlock(gpix0, gpix1); + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ehb0_p8_ihires_dlores_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ehb0_p8_ihires_dlores_filtered_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + gpix0 = filter_pixel_genlock(gpix0, gpix1); + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ehb1_p8_ihires_dlores_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ehb1_p8_ihires_dlores_filtered_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + gpix0 = filter_pixel_genlock(gpix0, gpix1); + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ham0_p8_ihires_dlores_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ham0_p8_ihires_dlores_filtered_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + gpix0 = filter_pixel_genlock(gpix0, gpix1); + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ham1_p8_ihires_dlores_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ham1_p8_ihires_dlores_filtered_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + gpix0 = filter_pixel_genlock(gpix0, gpix1); + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_kehb0_p8_ihires_dlores_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_kehb0_p8_ihires_dlores_filtered_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + gpix0 = filter_pixel_genlock(gpix0, gpix1); + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_kehb1_p8_ihires_dlores_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_kehb1_p8_ihires_dlores_filtered_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + gpix0 = filter_pixel_genlock(gpix0, gpix1); + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_n0_p4_ihires_dlores_spr_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix0; + } + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4(); + } + loaded_pix = getbpl4(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + shiftbpl4(); + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_n0_p4_ihires_dlores_spr_filtered_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix0; + } + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4(); + } + loaded_pix = getbpl4(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; + gpix1 = get_genlock_transparency(pix1 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix1; + } + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4(); + } + loaded_pix = getbpl4(); + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + gpix0 = filter_pixel_genlock(gpix0, gpix1); + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_n1_p4_ihires_dlores_spr_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix0; + } + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4e(); + } + if (bpldat_copy[1] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[1]) { + copybpl4o(); + } + loaded_pix = getbpl4(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + shiftbpl4(); + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_n1_p4_ihires_dlores_spr_filtered_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix0; + } + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4e(); + } + if (bpldat_copy[1] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[1]) { + copybpl4o(); + } + loaded_pix = getbpl4(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; + gpix1 = get_genlock_transparency(pix1 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix1; + } + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4e(); + } + if (bpldat_copy[1] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[1]) { + copybpl4o(); + } + loaded_pix = getbpl4(); + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + gpix0 = filter_pixel_genlock(gpix0, gpix1); + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_dpf0_p4_ihires_dlores_spr_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + gpix0 = get_genlock_transparency(dpf_lookup[pix0]); + } + last_bpl_pix = pix0; + } + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4(); + } + loaded_pix = getbpl4(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + shiftbpl4(); + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_dpf0_p4_ihires_dlores_spr_filtered_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + gpix0 = get_genlock_transparency(dpf_lookup[pix0]); + } + last_bpl_pix = pix0; + } + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4(); + } + loaded_pix = getbpl4(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + uae_u8 val1 = dpf_lookup[pix1]; + if (dpf_lookup_no[pix1]) { + val1 += dblpfofs[bpldualpf2of]; + } + val1 ^= bplcon4_denise_xor_val; + dpix_val1 = denise_colors.acolors[val1]; + gpix1 = get_genlock_transparency(dpf_lookup[pix1]); + } + last_bpl_pix = pix1; + } + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4(); + } + loaded_pix = getbpl4(); + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + gpix0 = filter_pixel_genlock(gpix0, gpix1); + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_dpf1_p4_ihires_dlores_spr_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + gpix0 = get_genlock_transparency(dpf_lookup[pix0]); + } + last_bpl_pix = pix0; + } + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4e(); + } + if (bpldat_copy[1] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[1]) { + copybpl4o(); + } + loaded_pix = getbpl4(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + shiftbpl4(); + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_dpf1_p4_ihires_dlores_spr_filtered_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + gpix0 = get_genlock_transparency(dpf_lookup[pix0]); + } + last_bpl_pix = pix0; + } + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4e(); + } + if (bpldat_copy[1] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[1]) { + copybpl4o(); + } + loaded_pix = getbpl4(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + uae_u8 val1 = dpf_lookup[pix1]; + if (dpf_lookup_no[pix1]) { + val1 += dblpfofs[bpldualpf2of]; + } + val1 ^= bplcon4_denise_xor_val; + dpix_val1 = denise_colors.acolors[val1]; + gpix1 = get_genlock_transparency(dpf_lookup[pix1]); + } + last_bpl_pix = pix1; + } + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4e(); + } + if (bpldat_copy[1] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[1]) { + copybpl4o(); + } + loaded_pix = getbpl4(); + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + gpix0 = filter_pixel_genlock(gpix0, gpix1); + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ehb0_p4_ihires_dlores_spr_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ehb0_p4_ihires_dlores_spr_filtered_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + gpix0 = filter_pixel_genlock(gpix0, gpix1); + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ehb1_p4_ihires_dlores_spr_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ehb1_p4_ihires_dlores_spr_filtered_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + gpix0 = filter_pixel_genlock(gpix0, gpix1); + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ham0_p4_ihires_dlores_spr_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ham0_p4_ihires_dlores_spr_filtered_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + gpix0 = filter_pixel_genlock(gpix0, gpix1); + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ham1_p4_ihires_dlores_spr_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ham1_p4_ihires_dlores_spr_filtered_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + gpix0 = filter_pixel_genlock(gpix0, gpix1); + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_kehb0_p4_ihires_dlores_spr_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_kehb0_p4_ihires_dlores_spr_filtered_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + gpix0 = filter_pixel_genlock(gpix0, gpix1); + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_kehb1_p4_ihires_dlores_spr_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_kehb1_p4_ihires_dlores_spr_filtered_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + gpix0 = filter_pixel_genlock(gpix0, gpix1); + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_n0_p8_ihires_dlores_spr_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_n0_p8_ihires_dlores_spr_filtered_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + gpix0 = filter_pixel_genlock(gpix0, gpix1); + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_n1_p8_ihires_dlores_spr_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_n1_p8_ihires_dlores_spr_filtered_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + gpix0 = filter_pixel_genlock(gpix0, gpix1); + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_dpf0_p8_ihires_dlores_spr_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_dpf0_p8_ihires_dlores_spr_filtered_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + gpix0 = filter_pixel_genlock(gpix0, gpix1); + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_dpf1_p8_ihires_dlores_spr_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_dpf1_p8_ihires_dlores_spr_filtered_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + gpix0 = filter_pixel_genlock(gpix0, gpix1); + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ehb0_p8_ihires_dlores_spr_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ehb0_p8_ihires_dlores_spr_filtered_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + gpix0 = filter_pixel_genlock(gpix0, gpix1); + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ehb1_p8_ihires_dlores_spr_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ehb1_p8_ihires_dlores_spr_filtered_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + gpix0 = filter_pixel_genlock(gpix0, gpix1); + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ham0_p8_ihires_dlores_spr_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ham0_p8_ihires_dlores_spr_filtered_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + gpix0 = filter_pixel_genlock(gpix0, gpix1); + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ham1_p8_ihires_dlores_spr_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ham1_p8_ihires_dlores_spr_filtered_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + gpix0 = filter_pixel_genlock(gpix0, gpix1); + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_kehb0_p8_ihires_dlores_spr_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_kehb0_p8_ihires_dlores_spr_filtered_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + gpix0 = filter_pixel_genlock(gpix0, gpix1); + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_kehb1_p8_ihires_dlores_spr_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_kehb1_p8_ihires_dlores_spr_filtered_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + gpix0 = filter_pixel_genlock(gpix0, gpix1); + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_n0_p4_ishres_dlores_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm0_n0_p4_ishres_dlores_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm0_n1_p4_ishres_dlores_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm0_n1_p4_ishres_dlores_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm0_dpf0_p4_ishres_dlores_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm0_dpf0_p4_ishres_dlores_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm0_dpf1_p4_ishres_dlores_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm0_dpf1_p4_ishres_dlores_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm0_ehb0_p4_ishres_dlores_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm0_ehb0_p4_ishres_dlores_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm0_ehb1_p4_ishres_dlores_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm0_ehb1_p4_ishres_dlores_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm0_ham0_p4_ishres_dlores_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm0_ham0_p4_ishres_dlores_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm0_ham1_p4_ishres_dlores_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm0_ham1_p4_ishres_dlores_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm0_kehb0_p4_ishres_dlores_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm0_kehb0_p4_ishres_dlores_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm0_kehb1_p4_ishres_dlores_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm0_kehb1_p4_ishres_dlores_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm0_n0_p8_ishres_dlores_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm0_n0_p8_ishres_dlores_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm0_n1_p8_ishres_dlores_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm0_n1_p8_ishres_dlores_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm0_dpf0_p8_ishres_dlores_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm0_dpf0_p8_ishres_dlores_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm0_dpf1_p8_ishres_dlores_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm0_dpf1_p8_ishres_dlores_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm0_ehb0_p8_ishres_dlores_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm0_ehb0_p8_ishres_dlores_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm0_ehb1_p8_ishres_dlores_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm0_ehb1_p8_ishres_dlores_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm0_ham0_p8_ishres_dlores_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm0_ham0_p8_ishres_dlores_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm0_ham1_p8_ishres_dlores_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm0_ham1_p8_ishres_dlores_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm0_kehb0_p8_ishres_dlores_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm0_kehb0_p8_ishres_dlores_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm0_kehb1_p8_ishres_dlores_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm0_kehb1_p8_ishres_dlores_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm0_n0_p4_ishres_dlores_spr_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm0_n0_p4_ishres_dlores_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm0_n1_p4_ishres_dlores_spr_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm0_n1_p4_ishres_dlores_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm0_dpf0_p4_ishres_dlores_spr_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm0_dpf0_p4_ishres_dlores_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm0_dpf1_p4_ishres_dlores_spr_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm0_dpf1_p4_ishres_dlores_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm0_ehb0_p4_ishres_dlores_spr_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm0_ehb0_p4_ishres_dlores_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm0_ehb1_p4_ishres_dlores_spr_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm0_ehb1_p4_ishres_dlores_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm0_ham0_p4_ishres_dlores_spr_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm0_ham0_p4_ishres_dlores_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm0_ham1_p4_ishres_dlores_spr_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm0_ham1_p4_ishres_dlores_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm0_kehb0_p4_ishres_dlores_spr_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm0_kehb0_p4_ishres_dlores_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm0_kehb1_p4_ishres_dlores_spr_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm0_kehb1_p4_ishres_dlores_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm0_n0_p8_ishres_dlores_spr_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm0_n0_p8_ishres_dlores_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm0_n1_p8_ishres_dlores_spr_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm0_n1_p8_ishres_dlores_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm0_dpf0_p8_ishres_dlores_spr_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm0_dpf0_p8_ishres_dlores_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm0_dpf1_p8_ishres_dlores_spr_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm0_dpf1_p8_ishres_dlores_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm0_ehb0_p8_ishres_dlores_spr_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm0_ehb0_p8_ishres_dlores_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm0_ehb1_p8_ishres_dlores_spr_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm0_ehb1_p8_ishres_dlores_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm0_ham0_p8_ishres_dlores_spr_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm0_ham0_p8_ishres_dlores_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm0_ham1_p8_ishres_dlores_spr_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm0_ham1_p8_ishres_dlores_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm0_kehb0_p8_ishres_dlores_spr_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm0_kehb0_p8_ishres_dlores_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm0_kehb1_p8_ishres_dlores_spr_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm0_kehb1_p8_ishres_dlores_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm0_n0_p4_ilores_dhires_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_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; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4(); + loaded_pix = getbpl4(); + } + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4(); + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + gpix2 = get_genlock_transparency(pix2 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4(); + loaded_pix = getbpl4(); + } + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4(); + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_n0_p4_ilores_dhires_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm0_n1_p4_ilores_dhires_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_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; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4e(); + loaded_pix = getbpl4(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl4o(); + loaded_pix = getbpl4(); + } + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4(); + } + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl4o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl4(); + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + gpix2 = get_genlock_transparency(pix2 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4e(); + loaded_pix = getbpl4(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl4o(); + loaded_pix = getbpl4(); + } + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4(); + } + if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { + copybpl4o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl4(); + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_n1_p4_ilores_dhires_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm0_dpf0_p4_ilores_dhires_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_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; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + gpix0 = get_genlock_transparency(dpf_lookup[pix0]); + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4(); + loaded_pix = getbpl4(); + } + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4(); + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; + gpix2 = get_genlock_transparency(dpf_lookup[pix2]); + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4(); + loaded_pix = getbpl4(); + } + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4(); + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_dpf0_p4_ilores_dhires_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm0_dpf1_p4_ilores_dhires_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_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; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + gpix0 = get_genlock_transparency(dpf_lookup[pix0]); + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4e(); + loaded_pix = getbpl4(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl4o(); + loaded_pix = getbpl4(); + } + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4(); + } + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl4o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl4(); + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; + gpix2 = get_genlock_transparency(dpf_lookup[pix2]); + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4e(); + loaded_pix = getbpl4(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl4o(); + loaded_pix = getbpl4(); + } + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4(); + } + if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { + copybpl4o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl4(); + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_dpf1_p4_ilores_dhires_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm0_ehb0_p4_ilores_dhires_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ehb0_p4_ilores_dhires_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm0_ehb1_p4_ilores_dhires_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ehb1_p4_ilores_dhires_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm0_ham0_p4_ilores_dhires_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ham0_p4_ilores_dhires_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm0_ham1_p4_ilores_dhires_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ham1_p4_ilores_dhires_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm0_kehb0_p4_ilores_dhires_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_kehb0_p4_ilores_dhires_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm0_kehb1_p4_ilores_dhires_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_kehb1_p4_ilores_dhires_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm0_n0_p8_ilores_dhires_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_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; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8(); + loaded_pix = getbpl8(); + } + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8(); + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + gpix2 = get_genlock_transparency(pix2 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8(); + loaded_pix = getbpl8(); + } + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8(); + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_n0_p8_ilores_dhires_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm0_n1_p8_ilores_dhires_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_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; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8e(); + loaded_pix = getbpl8(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl8o(); + loaded_pix = getbpl8(); + } + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8(); + } + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl8(); + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + gpix2 = get_genlock_transparency(pix2 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8e(); + loaded_pix = getbpl8(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl8o(); + loaded_pix = getbpl8(); + } + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8(); + } + if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl8(); + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_n1_p8_ilores_dhires_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm0_dpf0_p8_ilores_dhires_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_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; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + gpix0 = get_genlock_transparency(dpf_lookup[pix0]); + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8(); + loaded_pix = getbpl8(); + } + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8(); + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; + gpix2 = get_genlock_transparency(dpf_lookup[pix2]); + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8(); + loaded_pix = getbpl8(); + } + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8(); + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_dpf0_p8_ilores_dhires_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm0_dpf1_p8_ilores_dhires_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_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; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + gpix0 = get_genlock_transparency(dpf_lookup[pix0]); + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8e(); + loaded_pix = getbpl8(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl8o(); + loaded_pix = getbpl8(); + } + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8(); + } + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl8(); + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; + gpix2 = get_genlock_transparency(dpf_lookup[pix2]); + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8e(); + loaded_pix = getbpl8(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl8o(); + loaded_pix = getbpl8(); + } + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8(); + } + if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl8(); + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_dpf1_p8_ilores_dhires_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm0_ehb0_p8_ilores_dhires_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ehb0_p8_ilores_dhires_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm0_ehb1_p8_ilores_dhires_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ehb1_p8_ilores_dhires_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm0_ham0_p8_ilores_dhires_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_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; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = decode_ham_pixel_aga(pix0); + gpix0 = get_genlock_transparency((pix0 >> 2) & 63); + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8(); + loaded_pix = getbpl8(); + } + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8(); + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = decode_ham_pixel_aga(pix2); + gpix2 = get_genlock_transparency((pix2 >> 2) & 63); + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8(); + loaded_pix = getbpl8(); + } + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8(); + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ham0_p8_ilores_dhires_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm0_ham1_p8_ilores_dhires_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_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; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = decode_ham_pixel_aga(pix0); + gpix0 = get_genlock_transparency((pix0 >> 2) & 63); + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8e(); + loaded_pix = getbpl8(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl8o(); + loaded_pix = getbpl8(); + } + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8(); + } + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl8(); + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = decode_ham_pixel_aga(pix2); + gpix2 = get_genlock_transparency((pix2 >> 2) & 63); + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8e(); + loaded_pix = getbpl8(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl8o(); + loaded_pix = getbpl8(); + } + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8(); + } + if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl8(); + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ham1_p8_ilores_dhires_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm0_kehb0_p8_ilores_dhires_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_kehb0_p8_ilores_dhires_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm0_kehb1_p8_ilores_dhires_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_kehb1_p8_ilores_dhires_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm0_n0_p4_ilores_dhires_spr_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4(); + loaded_pix = getbpl4(); + } + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4(); + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + gpix2 = get_genlock_transparency(pix2 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4(); + loaded_pix = getbpl4(); + } + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4(); + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_n0_p4_ilores_dhires_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm0_n1_p4_ilores_dhires_spr_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4e(); + loaded_pix = getbpl4(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl4o(); + loaded_pix = getbpl4(); + } + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4(); + } + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl4o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl4(); + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + gpix2 = get_genlock_transparency(pix2 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4e(); + loaded_pix = getbpl4(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl4o(); + loaded_pix = getbpl4(); + } + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4(); + } + if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { + copybpl4o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl4(); + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_n1_p4_ilores_dhires_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm0_dpf0_p4_ilores_dhires_spr_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + gpix0 = get_genlock_transparency(dpf_lookup[pix0]); + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4(); + loaded_pix = getbpl4(); + } + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4(); + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; + gpix2 = get_genlock_transparency(dpf_lookup[pix2]); + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4(); + loaded_pix = getbpl4(); + } + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4(); + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_dpf0_p4_ilores_dhires_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm0_dpf1_p4_ilores_dhires_spr_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + gpix0 = get_genlock_transparency(dpf_lookup[pix0]); + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4e(); + loaded_pix = getbpl4(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl4o(); + loaded_pix = getbpl4(); + } + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4(); + } + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl4o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl4(); + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; + gpix2 = get_genlock_transparency(dpf_lookup[pix2]); + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4e(); + loaded_pix = getbpl4(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl4o(); + loaded_pix = getbpl4(); + } + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4(); + } + if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { + copybpl4o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl4(); + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_dpf1_p4_ilores_dhires_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm0_ehb0_p4_ilores_dhires_spr_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ehb0_p4_ilores_dhires_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm0_ehb1_p4_ilores_dhires_spr_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ehb1_p4_ilores_dhires_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm0_ham0_p4_ilores_dhires_spr_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ham0_p4_ilores_dhires_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm0_ham1_p4_ilores_dhires_spr_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ham1_p4_ilores_dhires_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm0_kehb0_p4_ilores_dhires_spr_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_kehb0_p4_ilores_dhires_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm0_kehb1_p4_ilores_dhires_spr_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_kehb1_p4_ilores_dhires_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm0_n0_p8_ilores_dhires_spr_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8(); + loaded_pix = getbpl8(); + } + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8(); + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + gpix2 = get_genlock_transparency(pix2 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8(); + loaded_pix = getbpl8(); + } + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8(); + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_n0_p8_ilores_dhires_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm0_n1_p8_ilores_dhires_spr_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8e(); + loaded_pix = getbpl8(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl8o(); + loaded_pix = getbpl8(); + } + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8(); + } + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl8(); + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + gpix2 = get_genlock_transparency(pix2 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8e(); + loaded_pix = getbpl8(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl8o(); + loaded_pix = getbpl8(); + } + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8(); + } + if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl8(); + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_n1_p8_ilores_dhires_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm0_dpf0_p8_ilores_dhires_spr_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + gpix0 = get_genlock_transparency(dpf_lookup[pix0]); + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8(); + loaded_pix = getbpl8(); + } + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8(); + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; + gpix2 = get_genlock_transparency(dpf_lookup[pix2]); + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8(); + loaded_pix = getbpl8(); + } + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8(); + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_dpf0_p8_ilores_dhires_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm0_dpf1_p8_ilores_dhires_spr_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + gpix0 = get_genlock_transparency(dpf_lookup[pix0]); + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8e(); + loaded_pix = getbpl8(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl8o(); + loaded_pix = getbpl8(); + } + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8(); + } + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl8(); + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; + gpix2 = get_genlock_transparency(dpf_lookup[pix2]); + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8e(); + loaded_pix = getbpl8(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl8o(); + loaded_pix = getbpl8(); + } + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8(); + } + if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl8(); + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_dpf1_p8_ilores_dhires_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm0_ehb0_p8_ilores_dhires_spr_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ehb0_p8_ilores_dhires_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm0_ehb1_p8_ilores_dhires_spr_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ehb1_p8_ilores_dhires_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm0_ham0_p8_ilores_dhires_spr_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = decode_ham_pixel_aga(pix0); + gpix0 = get_genlock_transparency((pix0 >> 2) & 63); + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8(); + loaded_pix = getbpl8(); + } + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8(); + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = decode_ham_pixel_aga(pix2); + gpix2 = get_genlock_transparency((pix2 >> 2) & 63); + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8(); + loaded_pix = getbpl8(); + } + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8(); + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ham0_p8_ilores_dhires_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm0_ham1_p8_ilores_dhires_spr_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = decode_ham_pixel_aga(pix0); + gpix0 = get_genlock_transparency((pix0 >> 2) & 63); + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8e(); + loaded_pix = getbpl8(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl8o(); + loaded_pix = getbpl8(); + } + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8(); + } + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl8(); + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = decode_ham_pixel_aga(pix2); + gpix2 = get_genlock_transparency((pix2 >> 2) & 63); + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8e(); + loaded_pix = getbpl8(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl8o(); + loaded_pix = getbpl8(); + } + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8(); + } + if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl8(); + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ham1_p8_ilores_dhires_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm0_kehb0_p8_ilores_dhires_spr_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_kehb0_p8_ilores_dhires_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm0_kehb1_p8_ilores_dhires_spr_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_kehb1_p8_ilores_dhires_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm0_n0_p4_ihires_dhires_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_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; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix0; + } + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4(); + } + loaded_pix = getbpl4(); + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + gpix2 = get_genlock_transparency(pix2 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix2; + } + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4(); + } + loaded_pix = getbpl4(); + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_n0_p4_ihires_dhires_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm0_n1_p4_ihires_dhires_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_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; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix0; + } + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4e(); + } + if (bpldat_copy[1] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[1]) { + copybpl4o(); + } + loaded_pix = getbpl4(); + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + gpix2 = get_genlock_transparency(pix2 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix2; + } + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4e(); + } + if (bpldat_copy[1] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[1]) { + copybpl4o(); + } + loaded_pix = getbpl4(); + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_n1_p4_ihires_dhires_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm0_dpf0_p4_ihires_dhires_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_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; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + gpix0 = get_genlock_transparency(dpf_lookup[pix0]); + } + last_bpl_pix = pix0; + } + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4(); + } + loaded_pix = getbpl4(); + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; + gpix2 = get_genlock_transparency(dpf_lookup[pix2]); + } + last_bpl_pix = pix2; + } + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4(); + } + loaded_pix = getbpl4(); + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_dpf0_p4_ihires_dhires_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm0_dpf1_p4_ihires_dhires_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_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; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + gpix0 = get_genlock_transparency(dpf_lookup[pix0]); + } + last_bpl_pix = pix0; + } + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4e(); + } + if (bpldat_copy[1] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[1]) { + copybpl4o(); + } + loaded_pix = getbpl4(); + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; + gpix2 = get_genlock_transparency(dpf_lookup[pix2]); + } + last_bpl_pix = pix2; + } + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4e(); + } + if (bpldat_copy[1] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[1]) { + copybpl4o(); + } + loaded_pix = getbpl4(); + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_dpf1_p4_ihires_dhires_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm0_ehb0_p4_ihires_dhires_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ehb0_p4_ihires_dhires_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm0_ehb1_p4_ihires_dhires_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ehb1_p4_ihires_dhires_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm0_ham0_p4_ihires_dhires_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ham0_p4_ihires_dhires_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm0_ham1_p4_ihires_dhires_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ham1_p4_ihires_dhires_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm0_kehb0_p4_ihires_dhires_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_kehb0_p4_ihires_dhires_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm0_kehb1_p4_ihires_dhires_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_kehb1_p4_ihires_dhires_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm0_n0_p8_ihires_dhires_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_n0_p8_ihires_dhires_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm0_n1_p8_ihires_dhires_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_n1_p8_ihires_dhires_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm0_dpf0_p8_ihires_dhires_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_dpf0_p8_ihires_dhires_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm0_dpf1_p8_ihires_dhires_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_dpf1_p8_ihires_dhires_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm0_ehb0_p8_ihires_dhires_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ehb0_p8_ihires_dhires_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm0_ehb1_p8_ihires_dhires_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ehb1_p8_ihires_dhires_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm0_ham0_p8_ihires_dhires_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ham0_p8_ihires_dhires_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm0_ham1_p8_ihires_dhires_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ham1_p8_ihires_dhires_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm0_kehb0_p8_ihires_dhires_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_kehb0_p8_ihires_dhires_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm0_kehb1_p8_ihires_dhires_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_kehb1_p8_ihires_dhires_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm0_n0_p4_ihires_dhires_spr_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix0; + } + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4(); + } + loaded_pix = getbpl4(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + gpix2 = get_genlock_transparency(pix2 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix2; + } + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4(); + } + loaded_pix = getbpl4(); + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_n0_p4_ihires_dhires_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm0_n1_p4_ihires_dhires_spr_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix0; + } + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4e(); + } + if (bpldat_copy[1] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[1]) { + copybpl4o(); + } + loaded_pix = getbpl4(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + gpix2 = get_genlock_transparency(pix2 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix2; + } + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4e(); + } + if (bpldat_copy[1] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[1]) { + copybpl4o(); + } + loaded_pix = getbpl4(); + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_n1_p4_ihires_dhires_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm0_dpf0_p4_ihires_dhires_spr_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + gpix0 = get_genlock_transparency(dpf_lookup[pix0]); + } + last_bpl_pix = pix0; + } + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4(); + } + loaded_pix = getbpl4(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; + gpix2 = get_genlock_transparency(dpf_lookup[pix2]); + } + last_bpl_pix = pix2; + } + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4(); + } + loaded_pix = getbpl4(); + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_dpf0_p4_ihires_dhires_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm0_dpf1_p4_ihires_dhires_spr_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + gpix0 = get_genlock_transparency(dpf_lookup[pix0]); + } + last_bpl_pix = pix0; + } + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4e(); + } + if (bpldat_copy[1] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[1]) { + copybpl4o(); + } + loaded_pix = getbpl4(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; + gpix2 = get_genlock_transparency(dpf_lookup[pix2]); + } + last_bpl_pix = pix2; + } + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4e(); + } + if (bpldat_copy[1] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[1]) { + copybpl4o(); + } + loaded_pix = getbpl4(); + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_dpf1_p4_ihires_dhires_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm0_ehb0_p4_ihires_dhires_spr_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ehb0_p4_ihires_dhires_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm0_ehb1_p4_ihires_dhires_spr_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ehb1_p4_ihires_dhires_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm0_ham0_p4_ihires_dhires_spr_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ham0_p4_ihires_dhires_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm0_ham1_p4_ihires_dhires_spr_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ham1_p4_ihires_dhires_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm0_kehb0_p4_ihires_dhires_spr_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_kehb0_p4_ihires_dhires_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm0_kehb1_p4_ihires_dhires_spr_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_kehb1_p4_ihires_dhires_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm0_n0_p8_ihires_dhires_spr_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_n0_p8_ihires_dhires_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm0_n1_p8_ihires_dhires_spr_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_n1_p8_ihires_dhires_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm0_dpf0_p8_ihires_dhires_spr_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_dpf0_p8_ihires_dhires_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm0_dpf1_p8_ihires_dhires_spr_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_dpf1_p8_ihires_dhires_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm0_ehb0_p8_ihires_dhires_spr_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ehb0_p8_ihires_dhires_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm0_ehb1_p8_ihires_dhires_spr_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ehb1_p8_ihires_dhires_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm0_ham0_p8_ihires_dhires_spr_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ham0_p8_ihires_dhires_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm0_ham1_p8_ihires_dhires_spr_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ham1_p8_ihires_dhires_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm0_kehb0_p8_ihires_dhires_spr_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_kehb0_p8_ihires_dhires_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm0_kehb1_p8_ihires_dhires_spr_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_kehb1_p8_ihires_dhires_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm0_n0_p4_ishres_dhires_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_n0_p4_ishres_dhires_filtered_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + gpix0 = filter_pixel_genlock(gpix0, gpix1); + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + gpix2 = filter_pixel_genlock(gpix2, gpix3); + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_n1_p4_ishres_dhires_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_n1_p4_ishres_dhires_filtered_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + gpix0 = filter_pixel_genlock(gpix0, gpix1); + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + gpix2 = filter_pixel_genlock(gpix2, gpix3); + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_dpf0_p4_ishres_dhires_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_dpf0_p4_ishres_dhires_filtered_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + gpix0 = filter_pixel_genlock(gpix0, gpix1); + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + gpix2 = filter_pixel_genlock(gpix2, gpix3); + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_dpf1_p4_ishres_dhires_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_dpf1_p4_ishres_dhires_filtered_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + gpix0 = filter_pixel_genlock(gpix0, gpix1); + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + gpix2 = filter_pixel_genlock(gpix2, gpix3); + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ehb0_p4_ishres_dhires_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ehb0_p4_ishres_dhires_filtered_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + gpix0 = filter_pixel_genlock(gpix0, gpix1); + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + gpix2 = filter_pixel_genlock(gpix2, gpix3); + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ehb1_p4_ishres_dhires_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ehb1_p4_ishres_dhires_filtered_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + gpix0 = filter_pixel_genlock(gpix0, gpix1); + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + gpix2 = filter_pixel_genlock(gpix2, gpix3); + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ham0_p4_ishres_dhires_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ham0_p4_ishres_dhires_filtered_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + gpix0 = filter_pixel_genlock(gpix0, gpix1); + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + gpix2 = filter_pixel_genlock(gpix2, gpix3); + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ham1_p4_ishres_dhires_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ham1_p4_ishres_dhires_filtered_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + gpix0 = filter_pixel_genlock(gpix0, gpix1); + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + gpix2 = filter_pixel_genlock(gpix2, gpix3); + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_kehb0_p4_ishres_dhires_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_kehb0_p4_ishres_dhires_filtered_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + gpix0 = filter_pixel_genlock(gpix0, gpix1); + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + gpix2 = filter_pixel_genlock(gpix2, gpix3); + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_kehb1_p4_ishres_dhires_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_kehb1_p4_ishres_dhires_filtered_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + gpix0 = filter_pixel_genlock(gpix0, gpix1); + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + gpix2 = filter_pixel_genlock(gpix2, gpix3); + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_n0_p8_ishres_dhires_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_n0_p8_ishres_dhires_filtered_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + gpix0 = filter_pixel_genlock(gpix0, gpix1); + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + gpix2 = filter_pixel_genlock(gpix2, gpix3); + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_n1_p8_ishres_dhires_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_n1_p8_ishres_dhires_filtered_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + gpix0 = filter_pixel_genlock(gpix0, gpix1); + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + gpix2 = filter_pixel_genlock(gpix2, gpix3); + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_dpf0_p8_ishres_dhires_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_dpf0_p8_ishres_dhires_filtered_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + gpix0 = filter_pixel_genlock(gpix0, gpix1); + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + gpix2 = filter_pixel_genlock(gpix2, gpix3); + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_dpf1_p8_ishres_dhires_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_dpf1_p8_ishres_dhires_filtered_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + gpix0 = filter_pixel_genlock(gpix0, gpix1); + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + gpix2 = filter_pixel_genlock(gpix2, gpix3); + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ehb0_p8_ishres_dhires_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ehb0_p8_ishres_dhires_filtered_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + gpix0 = filter_pixel_genlock(gpix0, gpix1); + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + gpix2 = filter_pixel_genlock(gpix2, gpix3); + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ehb1_p8_ishres_dhires_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ehb1_p8_ishres_dhires_filtered_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + gpix0 = filter_pixel_genlock(gpix0, gpix1); + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + gpix2 = filter_pixel_genlock(gpix2, gpix3); + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ham0_p8_ishres_dhires_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ham0_p8_ishres_dhires_filtered_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + gpix0 = filter_pixel_genlock(gpix0, gpix1); + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + gpix2 = filter_pixel_genlock(gpix2, gpix3); + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ham1_p8_ishres_dhires_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ham1_p8_ishres_dhires_filtered_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + gpix0 = filter_pixel_genlock(gpix0, gpix1); + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + gpix2 = filter_pixel_genlock(gpix2, gpix3); + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_kehb0_p8_ishres_dhires_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_kehb0_p8_ishres_dhires_filtered_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + gpix0 = filter_pixel_genlock(gpix0, gpix1); + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + gpix2 = filter_pixel_genlock(gpix2, gpix3); + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_kehb1_p8_ishres_dhires_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_kehb1_p8_ishres_dhires_filtered_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + gpix0 = filter_pixel_genlock(gpix0, gpix1); + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + gpix2 = filter_pixel_genlock(gpix2, gpix3); + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_n0_p4_ishres_dhires_spr_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_n0_p4_ishres_dhires_spr_filtered_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + gpix0 = filter_pixel_genlock(gpix0, gpix1); + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + dpix_val3 = dpix_val2; + } + } + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + gpix2 = filter_pixel_genlock(gpix2, gpix3); + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_n1_p4_ishres_dhires_spr_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_n1_p4_ishres_dhires_spr_filtered_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + gpix0 = filter_pixel_genlock(gpix0, gpix1); + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + dpix_val3 = dpix_val2; + } + } + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + gpix2 = filter_pixel_genlock(gpix2, gpix3); + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_dpf0_p4_ishres_dhires_spr_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_dpf0_p4_ishres_dhires_spr_filtered_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + gpix0 = filter_pixel_genlock(gpix0, gpix1); + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + dpix_val3 = dpix_val2; + } + } + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + gpix2 = filter_pixel_genlock(gpix2, gpix3); + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_dpf1_p4_ishres_dhires_spr_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_dpf1_p4_ishres_dhires_spr_filtered_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + gpix0 = filter_pixel_genlock(gpix0, gpix1); + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + dpix_val3 = dpix_val2; + } + } + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + gpix2 = filter_pixel_genlock(gpix2, gpix3); + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ehb0_p4_ishres_dhires_spr_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ehb0_p4_ishres_dhires_spr_filtered_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + gpix0 = filter_pixel_genlock(gpix0, gpix1); + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + dpix_val3 = dpix_val2; + } + } + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + gpix2 = filter_pixel_genlock(gpix2, gpix3); + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ehb1_p4_ishres_dhires_spr_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ehb1_p4_ishres_dhires_spr_filtered_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + gpix0 = filter_pixel_genlock(gpix0, gpix1); + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + dpix_val3 = dpix_val2; + } + } + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + gpix2 = filter_pixel_genlock(gpix2, gpix3); + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ham0_p4_ishres_dhires_spr_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ham0_p4_ishres_dhires_spr_filtered_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + gpix0 = filter_pixel_genlock(gpix0, gpix1); + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + dpix_val3 = dpix_val2; + } + } + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + gpix2 = filter_pixel_genlock(gpix2, gpix3); + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ham1_p4_ishres_dhires_spr_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ham1_p4_ishres_dhires_spr_filtered_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + gpix0 = filter_pixel_genlock(gpix0, gpix1); + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + dpix_val3 = dpix_val2; + } + } + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + gpix2 = filter_pixel_genlock(gpix2, gpix3); + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_kehb0_p4_ishres_dhires_spr_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_kehb0_p4_ishres_dhires_spr_filtered_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + gpix0 = filter_pixel_genlock(gpix0, gpix1); + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + dpix_val3 = dpix_val2; + } + } + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + gpix2 = filter_pixel_genlock(gpix2, gpix3); + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_kehb1_p4_ishres_dhires_spr_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_kehb1_p4_ishres_dhires_spr_filtered_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + gpix0 = filter_pixel_genlock(gpix0, gpix1); + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + dpix_val3 = dpix_val2; + } + } + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + gpix2 = filter_pixel_genlock(gpix2, gpix3); + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_n0_p8_ishres_dhires_spr_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_n0_p8_ishres_dhires_spr_filtered_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + gpix0 = filter_pixel_genlock(gpix0, gpix1); + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + dpix_val3 = dpix_val2; + } + } + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + gpix2 = filter_pixel_genlock(gpix2, gpix3); + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_n1_p8_ishres_dhires_spr_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_n1_p8_ishres_dhires_spr_filtered_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + gpix0 = filter_pixel_genlock(gpix0, gpix1); + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + dpix_val3 = dpix_val2; + } + } + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + gpix2 = filter_pixel_genlock(gpix2, gpix3); + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_dpf0_p8_ishres_dhires_spr_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_dpf0_p8_ishres_dhires_spr_filtered_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + gpix0 = filter_pixel_genlock(gpix0, gpix1); + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + dpix_val3 = dpix_val2; + } + } + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + gpix2 = filter_pixel_genlock(gpix2, gpix3); + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_dpf1_p8_ishres_dhires_spr_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_dpf1_p8_ishres_dhires_spr_filtered_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + gpix0 = filter_pixel_genlock(gpix0, gpix1); + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + dpix_val3 = dpix_val2; + } + } + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + gpix2 = filter_pixel_genlock(gpix2, gpix3); + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ehb0_p8_ishres_dhires_spr_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ehb0_p8_ishres_dhires_spr_filtered_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + gpix0 = filter_pixel_genlock(gpix0, gpix1); + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + dpix_val3 = dpix_val2; + } + } + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + gpix2 = filter_pixel_genlock(gpix2, gpix3); + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ehb1_p8_ishres_dhires_spr_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ehb1_p8_ishres_dhires_spr_filtered_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + gpix0 = filter_pixel_genlock(gpix0, gpix1); + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + dpix_val3 = dpix_val2; + } + } + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + gpix2 = filter_pixel_genlock(gpix2, gpix3); + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ham0_p8_ishres_dhires_spr_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ham0_p8_ishres_dhires_spr_filtered_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + gpix0 = filter_pixel_genlock(gpix0, gpix1); + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + dpix_val3 = dpix_val2; + } + } + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + gpix2 = filter_pixel_genlock(gpix2, gpix3); + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ham1_p8_ishres_dhires_spr_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_ham1_p8_ishres_dhires_spr_filtered_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + gpix0 = filter_pixel_genlock(gpix0, gpix1); + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + dpix_val3 = dpix_val2; + } + } + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + gpix2 = filter_pixel_genlock(gpix2, gpix3); + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_kehb0_p8_ishres_dhires_spr_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_kehb0_p8_ishres_dhires_spr_filtered_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + gpix0 = filter_pixel_genlock(gpix0, gpix1); + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + dpix_val3 = dpix_val2; + } + } + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + gpix2 = filter_pixel_genlock(gpix2, gpix3); + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_kehb1_p8_ishres_dhires_spr_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_kehb1_p8_ishres_dhires_spr_filtered_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + gpix0 = filter_pixel_genlock(gpix0, gpix1); + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + dpix_val3 = dpix_val2; + } + } + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + gpix2 = filter_pixel_genlock(gpix2, gpix3); + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_n0_p4_ilores_dshres_genlock(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_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; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4(); + loaded_pix = getbpl4(); + } + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4(); + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; + gpix1 = get_genlock_transparency(pix1 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix1; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4(); + loaded_pix = getbpl4(); + } + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4(); + } + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 1; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + gpix2 = get_genlock_transparency(pix2 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4(); + loaded_pix = getbpl4(); + } + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4(); + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; + gpix3 = get_genlock_transparency(pix3 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix3; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4(); + loaded_pix = getbpl4(); + } + if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4(); + } + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 1; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][1] = dpix_val1; + dtgbuf[h][1] = gpix1; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + dtbuf[h][3] = dpix_val3; + dtgbuf[h][3] = gpix3; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = dtgbuf[h ^ lol][1]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + *gbuf++ = dtgbuf[h ^ lol][3]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm0_kehb1_p4_ishres_dlores_spr_filtered_genlock(void) +static void lts_aga_fm0_n0_p4_ilores_dshres_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm0_n0_p8_ishres_dlores_spr_genlock(void) +static void lts_aga_fm0_n1_p4_ilores_dshres_genlock(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_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; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4e(); + loaded_pix = getbpl4(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl4o(); + loaded_pix = getbpl4(); + } + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4(); + } + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl4o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl4(); + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; + gpix1 = get_genlock_transparency(pix1 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix1; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4e(); + loaded_pix = getbpl4(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl4o(); + loaded_pix = getbpl4(); + } + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4(); + } + if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { + copybpl4o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl4(); + } + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 1; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + gpix2 = get_genlock_transparency(pix2 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4e(); + loaded_pix = getbpl4(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl4o(); + loaded_pix = getbpl4(); + } + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4(); + } + if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { + copybpl4o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl4(); + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; + gpix3 = get_genlock_transparency(pix3 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix3; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4e(); + loaded_pix = getbpl4(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl4o(); + loaded_pix = getbpl4(); + } + if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4(); + } + if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) { + copybpl4o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl4(); + } + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 1; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][1] = dpix_val1; + dtgbuf[h][1] = gpix1; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + dtbuf[h][3] = dpix_val3; + dtgbuf[h][3] = gpix3; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = dtgbuf[h ^ lol][1]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + *gbuf++ = dtgbuf[h ^ lol][3]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm0_n0_p8_ishres_dlores_spr_filtered_genlock(void) +static void lts_aga_fm0_n1_p4_ilores_dshres_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm0_n1_p8_ishres_dlores_spr_genlock(void) +static void lts_aga_fm0_dpf0_p4_ilores_dshres_genlock(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_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; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + gpix0 = get_genlock_transparency(dpf_lookup[pix0]); + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4(); + loaded_pix = getbpl4(); + } + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4(); + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + uae_u8 val1 = dpf_lookup[pix1]; + if (dpf_lookup_no[pix1]) { + val1 += dblpfofs[bpldualpf2of]; + } + val1 ^= bplcon4_denise_xor_val; + dpix_val1 = denise_colors.acolors[val1]; + gpix1 = get_genlock_transparency(dpf_lookup[pix1]); + } + last_bpl_pix = pix1; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4(); + loaded_pix = getbpl4(); + } + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4(); + } + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 1; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; + gpix2 = get_genlock_transparency(dpf_lookup[pix2]); + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4(); + loaded_pix = getbpl4(); + } + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4(); + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + uae_u8 val3 = dpf_lookup[pix3]; + if (dpf_lookup_no[pix3]) { + val3 += dblpfofs[bpldualpf2of]; + } + val3 ^= bplcon4_denise_xor_val; + dpix_val3 = denise_colors.acolors[val3]; + gpix3 = get_genlock_transparency(dpf_lookup[pix3]); + } + last_bpl_pix = pix3; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4(); + loaded_pix = getbpl4(); + } + if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4(); + } + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 1; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][1] = dpix_val1; + dtgbuf[h][1] = gpix1; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + dtbuf[h][3] = dpix_val3; + dtgbuf[h][3] = gpix3; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = dtgbuf[h ^ lol][1]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + *gbuf++ = dtgbuf[h ^ lol][3]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm0_n1_p8_ishres_dlores_spr_filtered_genlock(void) +static void lts_aga_fm0_dpf0_p4_ilores_dshres_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm0_dpf0_p8_ishres_dlores_spr_genlock(void) +static void lts_aga_fm0_dpf1_p4_ilores_dshres_genlock(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_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; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + gpix0 = get_genlock_transparency(dpf_lookup[pix0]); + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4e(); + loaded_pix = getbpl4(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl4o(); + loaded_pix = getbpl4(); + } + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4(); + } + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl4o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl4(); + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + uae_u8 val1 = dpf_lookup[pix1]; + if (dpf_lookup_no[pix1]) { + val1 += dblpfofs[bpldualpf2of]; + } + val1 ^= bplcon4_denise_xor_val; + dpix_val1 = denise_colors.acolors[val1]; + gpix1 = get_genlock_transparency(dpf_lookup[pix1]); + } + last_bpl_pix = pix1; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4e(); + loaded_pix = getbpl4(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl4o(); + loaded_pix = getbpl4(); + } + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4(); + } + if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { + copybpl4o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl4(); + } + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 1; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; + gpix2 = get_genlock_transparency(dpf_lookup[pix2]); + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4e(); + loaded_pix = getbpl4(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl4o(); + loaded_pix = getbpl4(); + } + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4(); + } + if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { + copybpl4o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl4(); + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + uae_u8 val3 = dpf_lookup[pix3]; + if (dpf_lookup_no[pix3]) { + val3 += dblpfofs[bpldualpf2of]; + } + val3 ^= bplcon4_denise_xor_val; + dpix_val3 = denise_colors.acolors[val3]; + gpix3 = get_genlock_transparency(dpf_lookup[pix3]); + } + last_bpl_pix = pix3; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4e(); + loaded_pix = getbpl4(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl4o(); + loaded_pix = getbpl4(); + } + if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4(); + } + if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) { + copybpl4o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl4(); + } + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 1; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][1] = dpix_val1; + dtgbuf[h][1] = gpix1; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + dtbuf[h][3] = dpix_val3; + dtgbuf[h][3] = gpix3; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = dtgbuf[h ^ lol][1]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + *gbuf++ = dtgbuf[h ^ lol][3]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm0_dpf0_p8_ishres_dlores_spr_filtered_genlock(void) +static void lts_aga_fm0_dpf1_p4_ilores_dshres_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm0_dpf1_p8_ishres_dlores_spr_genlock(void) +static void lts_aga_fm0_ehb0_p4_ilores_dshres_genlock(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 1; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 1; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][1] = dpix_val1; + dtgbuf[h][1] = gpix1; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + dtbuf[h][3] = dpix_val3; + dtgbuf[h][3] = gpix3; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = dtgbuf[h ^ lol][1]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + *gbuf++ = dtgbuf[h ^ lol][3]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm0_dpf1_p8_ishres_dlores_spr_filtered_genlock(void) +static void lts_aga_fm0_ehb0_p4_ilores_dshres_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm0_ehb0_p8_ishres_dlores_spr_genlock(void) +static void lts_aga_fm0_ehb1_p4_ilores_dshres_genlock(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 1; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 1; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][1] = dpix_val1; + dtgbuf[h][1] = gpix1; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + dtbuf[h][3] = dpix_val3; + dtgbuf[h][3] = gpix3; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = dtgbuf[h ^ lol][1]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + *gbuf++ = dtgbuf[h ^ lol][3]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm0_ehb0_p8_ishres_dlores_spr_filtered_genlock(void) +static void lts_aga_fm0_ehb1_p4_ilores_dshres_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm0_ehb1_p8_ishres_dlores_spr_genlock(void) +static void lts_aga_fm0_ham0_p4_ilores_dshres_genlock(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 1; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 1; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][1] = dpix_val1; + dtgbuf[h][1] = gpix1; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + dtbuf[h][3] = dpix_val3; + dtgbuf[h][3] = gpix3; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = dtgbuf[h ^ lol][1]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + *gbuf++ = dtgbuf[h ^ lol][3]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm0_ehb1_p8_ishres_dlores_spr_filtered_genlock(void) +static void lts_aga_fm0_ham0_p4_ilores_dshres_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm0_ham0_p8_ishres_dlores_spr_genlock(void) +static void lts_aga_fm0_ham1_p4_ilores_dshres_genlock(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 1; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 1; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][1] = dpix_val1; + dtgbuf[h][1] = gpix1; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + dtbuf[h][3] = dpix_val3; + dtgbuf[h][3] = gpix3; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = dtgbuf[h ^ lol][1]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + *gbuf++ = dtgbuf[h ^ lol][3]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm0_ham0_p8_ishres_dlores_spr_filtered_genlock(void) +static void lts_aga_fm0_ham1_p4_ilores_dshres_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm0_ham1_p8_ishres_dlores_spr_genlock(void) +static void lts_aga_fm0_kehb0_p4_ilores_dshres_genlock(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 1; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 1; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][1] = dpix_val1; + dtgbuf[h][1] = gpix1; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + dtbuf[h][3] = dpix_val3; + dtgbuf[h][3] = gpix3; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = dtgbuf[h ^ lol][1]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + *gbuf++ = dtgbuf[h ^ lol][3]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm0_ham1_p8_ishres_dlores_spr_filtered_genlock(void) +static void lts_aga_fm0_kehb0_p4_ilores_dshres_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm0_kehb0_p8_ishres_dlores_spr_genlock(void) +static void lts_aga_fm0_kehb1_p4_ilores_dshres_genlock(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 1; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 1; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][1] = dpix_val1; + dtgbuf[h][1] = gpix1; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + dtbuf[h][3] = dpix_val3; + dtgbuf[h][3] = gpix3; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = dtgbuf[h ^ lol][1]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + *gbuf++ = dtgbuf[h ^ lol][3]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm0_kehb0_p8_ishres_dlores_spr_filtered_genlock(void) +static void lts_aga_fm0_kehb1_p4_ilores_dshres_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm0_kehb1_p8_ishres_dlores_spr_genlock(void) +static void lts_aga_fm0_n0_p8_ilores_dshres_genlock(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_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; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8(); + loaded_pix = getbpl8(); + } + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8(); + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; + gpix1 = get_genlock_transparency(pix1 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix1; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8(); + loaded_pix = getbpl8(); + } + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8(); + } + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 1; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + gpix2 = get_genlock_transparency(pix2 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8(); + loaded_pix = getbpl8(); + } + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8(); + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; + gpix3 = get_genlock_transparency(pix3 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix3; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8(); + loaded_pix = getbpl8(); + } + if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8(); + } + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 1; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][1] = dpix_val1; + dtgbuf[h][1] = gpix1; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + dtbuf[h][3] = dpix_val3; + dtgbuf[h][3] = gpix3; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = dtgbuf[h ^ lol][1]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + *gbuf++ = dtgbuf[h ^ lol][3]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm0_kehb1_p8_ishres_dlores_spr_filtered_genlock(void) +static void lts_aga_fm0_n0_p8_ilores_dshres_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm0_n0_p4_ilores_dhires_genlock(void) +static void lts_aga_fm0_n1_p8_ilores_dshres_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -3991,19 +28226,68 @@ static void lts_aga_fm0_n0_p4_ilores_dhires_genlock(void) } last_bpl_pix = pix0; } - bplshiftcnt[0] += 2; + bplshiftcnt[0] += 1; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl4(); - loaded_pix = getbpl4(); + shiftbpl8e(); + loaded_pix = getbpl8(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl8o(); + loaded_pix = getbpl8(); } if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4(); + copybpl8e(); bplshiftcnt[0] = 0; - loaded_pix = getbpl4(); + loaded_pix = getbpl8(); + } + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl8(); } loaded_pixs[0] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; + gpix1 = get_genlock_transparency(pix1 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix1; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8e(); + loaded_pix = getbpl8(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl8o(); + loaded_pix = getbpl8(); + } + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8(); + } + if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl8(); + } + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u8 gpix2 = 0xff; uae_u32 dpix_val2 = BLANK_COLOR; @@ -4018,24 +28302,77 @@ static void lts_aga_fm0_n0_p4_ilores_dhires_genlock(void) } last_bpl_pix = pix2; } - bplshiftcnt[0] += 2; + bplshiftcnt[0] += 1; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl4(); - loaded_pix = getbpl4(); + shiftbpl8e(); + loaded_pix = getbpl8(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl8o(); + loaded_pix = getbpl8(); } if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4(); + copybpl8e(); bplshiftcnt[0] = 0; - loaded_pix = getbpl4(); + loaded_pix = getbpl8(); + } + if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl8(); } loaded_pixs[2] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; + gpix3 = get_genlock_transparency(pix3 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix3; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8e(); + loaded_pix = getbpl8(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl8o(); + loaded_pix = getbpl8(); + } + if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8(); + } + if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl8(); + } + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; + dtbuf[h][1] = dpix_val1; + dtgbuf[h][1] = gpix1; dtbuf[h][2] = dpix_val2; dtgbuf[h][2] = gpix2; + dtbuf[h][3] = dpix_val3; + dtgbuf[h][3] = gpix3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -4045,6 +28382,15 @@ static void lts_aga_fm0_n0_p4_ilores_dhires_genlock(void) *buf1++ = t0; *buf2++ = t0; *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = dtgbuf[h ^ lol][1]; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -4054,6 +28400,15 @@ static void lts_aga_fm0_n0_p4_ilores_dhires_genlock(void) *buf1++ = t2; *buf2++ = t2; *gbuf++ = dtgbuf[h ^ lol][2]; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + *gbuf++ = dtgbuf[h ^ lol][3]; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -4077,11 +28432,11 @@ static void lts_aga_fm0_n0_p4_ilores_dhires_genlock(void) denise_cck++; } } -static void lts_aga_fm0_n0_p4_ilores_dhires_filtered_genlock(void) +static void lts_aga_fm0_n1_p8_ilores_dshres_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm0_n1_p4_ilores_dhires_genlock(void) +static void lts_aga_fm0_dpf0_p8_ilores_dshres_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -4101,37 +28456,63 @@ static void lts_aga_fm0_n1_p4_ilores_dhires_genlock(void) gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + gpix0 = get_genlock_transparency(dpf_lookup[pix0]); + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8(); + loaded_pix = getbpl8(); + } + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8(); + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + uae_u8 val1 = dpf_lookup[pix1]; + if (dpf_lookup_no[pix1]) { + val1 += dblpfofs[bpldualpf2of]; + } + val1 ^= bplcon4_denise_xor_val; + dpix_val1 = denise_colors.acolors[val1]; + gpix1 = get_genlock_transparency(dpf_lookup[pix1]); } - last_bpl_pix = pix0; + last_bpl_pix = pix1; } - bplshiftcnt[0] += 2; + bplshiftcnt[0] += 1; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl4e(); - loaded_pix = getbpl4(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl4o(); - loaded_pix = getbpl4(); + shiftbpl8(); + loaded_pix = getbpl8(); } - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4e(); + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8(); bplshiftcnt[0] = 0; - loaded_pix = getbpl4(); - } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl4o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl4(); + loaded_pix = getbpl8(); } - loaded_pixs[0] = loaded_pix; - internal_pixel_cnt += 2; + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u8 gpix2 = 0xff; uae_u32 dpix_val2 = BLANK_COLOR; @@ -4141,40 +28522,70 @@ static void lts_aga_fm0_n1_p4_ilores_dhires_genlock(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; - gpix2 = get_genlock_transparency(pix2 ^ bplcon4_denise_xor_val); + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; + gpix2 = get_genlock_transparency(dpf_lookup[pix2]); } last_bpl_pix = pix2; } - bplshiftcnt[0] += 2; + bplshiftcnt[0] += 1; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl4e(); - loaded_pix = getbpl4(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl4o(); - loaded_pix = getbpl4(); + shiftbpl8(); + loaded_pix = getbpl8(); } if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4e(); + copybpl8(); bplshiftcnt[0] = 0; - loaded_pix = getbpl4(); - } - if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { - copybpl4o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl4(); + loaded_pix = getbpl8(); } loaded_pixs[2] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + uae_u8 val3 = dpf_lookup[pix3]; + if (dpf_lookup_no[pix3]) { + val3 += dblpfofs[bpldualpf2of]; + } + val3 ^= bplcon4_denise_xor_val; + dpix_val3 = denise_colors.acolors[val3]; + gpix3 = get_genlock_transparency(dpf_lookup[pix3]); + } + last_bpl_pix = pix3; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8(); + loaded_pix = getbpl8(); + } + if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8(); + } + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; + dtbuf[h][1] = dpix_val1; + dtgbuf[h][1] = gpix1; dtbuf[h][2] = dpix_val2; dtgbuf[h][2] = gpix2; + dtbuf[h][3] = dpix_val3; + dtgbuf[h][3] = gpix3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -4184,6 +28595,15 @@ static void lts_aga_fm0_n1_p4_ilores_dhires_genlock(void) *buf1++ = t0; *buf2++ = t0; *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = dtgbuf[h ^ lol][1]; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -4193,6 +28613,15 @@ static void lts_aga_fm0_n1_p4_ilores_dhires_genlock(void) *buf1++ = t2; *buf2++ = t2; *gbuf++ = dtgbuf[h ^ lol][2]; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + *gbuf++ = dtgbuf[h ^ lol][3]; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -4216,11 +28645,11 @@ static void lts_aga_fm0_n1_p4_ilores_dhires_genlock(void) denise_cck++; } } -static void lts_aga_fm0_n1_p4_ilores_dhires_filtered_genlock(void) +static void lts_aga_fm0_dpf0_p8_ilores_dshres_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm0_dpf0_p4_ilores_dhires_genlock(void) +static void lts_aga_fm0_dpf1_p8_ilores_dshres_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -4252,19 +28681,73 @@ static void lts_aga_fm0_dpf0_p4_ilores_dhires_genlock(void) } last_bpl_pix = pix0; } - bplshiftcnt[0] += 2; + bplshiftcnt[0] += 1; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl4(); - loaded_pix = getbpl4(); + shiftbpl8e(); + loaded_pix = getbpl8(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl8o(); + loaded_pix = getbpl8(); } if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4(); + copybpl8e(); bplshiftcnt[0] = 0; - loaded_pix = getbpl4(); + loaded_pix = getbpl8(); + } + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl8(); } loaded_pixs[0] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + uae_u8 val1 = dpf_lookup[pix1]; + if (dpf_lookup_no[pix1]) { + val1 += dblpfofs[bpldualpf2of]; + } + val1 ^= bplcon4_denise_xor_val; + dpix_val1 = denise_colors.acolors[val1]; + gpix1 = get_genlock_transparency(dpf_lookup[pix1]); + } + last_bpl_pix = pix1; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8e(); + loaded_pix = getbpl8(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl8o(); + loaded_pix = getbpl8(); + } + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8(); + } + if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl8(); + } + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u8 gpix2 = 0xff; uae_u32 dpix_val2 = BLANK_COLOR; @@ -4284,24 +28767,82 @@ static void lts_aga_fm0_dpf0_p4_ilores_dhires_genlock(void) } last_bpl_pix = pix2; } - bplshiftcnt[0] += 2; + bplshiftcnt[0] += 1; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl4(); - loaded_pix = getbpl4(); + shiftbpl8e(); + loaded_pix = getbpl8(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl8o(); + loaded_pix = getbpl8(); } if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4(); + copybpl8e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8(); + } + if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl8(); + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + uae_u8 val3 = dpf_lookup[pix3]; + if (dpf_lookup_no[pix3]) { + val3 += dblpfofs[bpldualpf2of]; + } + val3 ^= bplcon4_denise_xor_val; + dpix_val3 = denise_colors.acolors[val3]; + gpix3 = get_genlock_transparency(dpf_lookup[pix3]); + } + last_bpl_pix = pix3; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8e(); + loaded_pix = getbpl8(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl8o(); + loaded_pix = getbpl8(); + } + if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8e(); bplshiftcnt[0] = 0; - loaded_pix = getbpl4(); + loaded_pix = getbpl8(); } - loaded_pixs[2] = loaded_pix; - internal_pixel_cnt += 2; + if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl8(); + } + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; + dtbuf[h][1] = dpix_val1; + dtgbuf[h][1] = gpix1; dtbuf[h][2] = dpix_val2; dtgbuf[h][2] = gpix2; + dtbuf[h][3] = dpix_val3; + dtgbuf[h][3] = gpix3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -4311,6 +28852,15 @@ static void lts_aga_fm0_dpf0_p4_ilores_dhires_genlock(void) *buf1++ = t0; *buf2++ = t0; *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = dtgbuf[h ^ lol][1]; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -4320,6 +28870,15 @@ static void lts_aga_fm0_dpf0_p4_ilores_dhires_genlock(void) *buf1++ = t2; *buf2++ = t2; *gbuf++ = dtgbuf[h ^ lol][2]; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + *gbuf++ = dtgbuf[h ^ lol][3]; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -4343,11 +28902,11 @@ static void lts_aga_fm0_dpf0_p4_ilores_dhires_genlock(void) denise_cck++; } } -static void lts_aga_fm0_dpf0_p4_ilores_dhires_filtered_genlock(void) +static void lts_aga_fm0_dpf1_p8_ilores_dshres_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm0_dpf1_p4_ilores_dhires_genlock(void) +static void lts_aga_fm0_ehb0_p8_ilores_dshres_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -4358,7 +28917,6 @@ 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; @@ -4366,91 +28924,41 @@ static void lts_aga_fm0_dpf1_p4_ilores_dhires_genlock(void) if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - gpix0 = get_genlock_transparency(dpf_lookup[pix0]); - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4e(); - loaded_pix = getbpl4(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl4o(); - loaded_pix = getbpl4(); - } - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4(); } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl4o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl4(); + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; } - loaded_pixs[0] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u8 gpix2 = 0xff; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { gpix2 = get_genlock_transparency_border(); dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; - gpix2 = get_genlock_transparency(dpf_lookup[pix2]); - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4e(); - loaded_pix = getbpl4(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl4o(); - loaded_pix = getbpl4(); - } - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4(); } - if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { - copybpl4o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl4(); + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; } - loaded_pixs[2] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; + dtbuf[h][1] = dpix_val1; + dtgbuf[h][1] = gpix1; dtbuf[h][2] = dpix_val2; dtgbuf[h][2] = gpix2; + dtbuf[h][3] = dpix_val3; + dtgbuf[h][3] = gpix3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -4460,6 +28968,15 @@ static void lts_aga_fm0_dpf1_p4_ilores_dhires_genlock(void) *buf1++ = t0; *buf2++ = t0; *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = dtgbuf[h ^ lol][1]; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -4469,6 +28986,15 @@ static void lts_aga_fm0_dpf1_p4_ilores_dhires_genlock(void) *buf1++ = t2; *buf2++ = t2; *gbuf++ = dtgbuf[h ^ lol][2]; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + *gbuf++ = dtgbuf[h ^ lol][3]; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -4492,59 +29018,11 @@ static void lts_aga_fm0_dpf1_p4_ilores_dhires_genlock(void) denise_cck++; } } -static void lts_aga_fm0_dpf1_p4_ilores_dhires_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb0_p4_ilores_dhires_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb0_p4_ilores_dhires_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb1_p4_ilores_dhires_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb1_p4_ilores_dhires_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham0_p4_ilores_dhires_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham0_p4_ilores_dhires_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham1_p4_ilores_dhires_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham1_p4_ilores_dhires_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb0_p4_ilores_dhires_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb0_p4_ilores_dhires_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb1_p4_ilores_dhires_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb1_p4_ilores_dhires_filtered_genlock(void) +static void lts_aga_fm0_ehb0_p8_ilores_dshres_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm0_n0_p8_ilores_dhires_genlock(void) +static void lts_aga_fm0_ehb1_p8_ilores_dshres_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -4555,7 +29033,6 @@ 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; @@ -4563,59 +29040,41 @@ static void lts_aga_fm0_n0_p8_ilores_dhires_genlock(void) if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8(); - loaded_pix = getbpl8(); } - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8(); + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; } - loaded_pixs[0] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u8 gpix2 = 0xff; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { gpix2 = get_genlock_transparency_border(); dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; - gpix2 = get_genlock_transparency(pix2 ^ bplcon4_denise_xor_val); - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8(); - loaded_pix = getbpl8(); } - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8(); + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; } - loaded_pixs[2] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; + dtbuf[h][1] = dpix_val1; + dtgbuf[h][1] = gpix1; dtbuf[h][2] = dpix_val2; dtgbuf[h][2] = gpix2; + dtbuf[h][3] = dpix_val3; + dtgbuf[h][3] = gpix3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -4625,6 +29084,15 @@ static void lts_aga_fm0_n0_p8_ilores_dhires_genlock(void) *buf1++ = t0; *buf2++ = t0; *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = dtgbuf[h ^ lol][1]; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -4634,6 +29102,15 @@ static void lts_aga_fm0_n0_p8_ilores_dhires_genlock(void) *buf1++ = t2; *buf2++ = t2; *gbuf++ = dtgbuf[h ^ lol][2]; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + *gbuf++ = dtgbuf[h ^ lol][3]; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -4657,11 +29134,11 @@ static void lts_aga_fm0_n0_p8_ilores_dhires_genlock(void) denise_cck++; } } -static void lts_aga_fm0_n0_p8_ilores_dhires_filtered_genlock(void) +static void lts_aga_fm0_ehb1_p8_ilores_dshres_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm0_n1_p8_ilores_dhires_genlock(void) +static void lts_aga_fm0_ham0_p8_ilores_dshres_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -4683,35 +29160,51 @@ static void lts_aga_fm0_n1_p8_ilores_dhires_genlock(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); + dpix_val0 = decode_ham_pixel_aga(pix0); + gpix0 = get_genlock_transparency((pix0 >> 2) & 63); } last_bpl_pix = pix0; } - bplshiftcnt[0] += 2; + bplshiftcnt[0] += 1; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl8e(); + shiftbpl8(); loaded_pix = getbpl8(); } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl8o(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8(); + bplshiftcnt[0] = 0; loaded_pix = getbpl8(); } - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e(); + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + dpix_val1 = decode_ham_pixel_aga(pix1); + gpix1 = get_genlock_transparency((pix1 >> 2) & 63); + } + last_bpl_pix = pix1; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; + shiftbpl8(); loaded_pix = getbpl8(); } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o(); - bplshiftcnt[1] = 0; + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8(); + bplshiftcnt[0] = 0; loaded_pix = getbpl8(); } - loaded_pixs[0] = loaded_pix; - internal_pixel_cnt += 2; + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u8 gpix2 = 0xff; uae_u32 dpix_val2 = BLANK_COLOR; @@ -4721,40 +29214,60 @@ static void lts_aga_fm0_n1_p8_ilores_dhires_genlock(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; - gpix2 = get_genlock_transparency(pix2 ^ bplcon4_denise_xor_val); + dpix_val2 = decode_ham_pixel_aga(pix2); + gpix2 = get_genlock_transparency((pix2 >> 2) & 63); } last_bpl_pix = pix2; } - bplshiftcnt[0] += 2; + bplshiftcnt[0] += 1; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl8e(); + shiftbpl8(); loaded_pix = getbpl8(); } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl8o(); + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8(); + bplshiftcnt[0] = 0; loaded_pix = getbpl8(); } - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e(); + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + dpix_val3 = decode_ham_pixel_aga(pix3); + gpix3 = get_genlock_transparency((pix3 >> 2) & 63); + } + last_bpl_pix = pix3; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; + shiftbpl8(); loaded_pix = getbpl8(); } - if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o(); - bplshiftcnt[1] = 0; + if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8(); + bplshiftcnt[0] = 0; loaded_pix = getbpl8(); } - loaded_pixs[2] = loaded_pix; - internal_pixel_cnt += 2; + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; + dtbuf[h][1] = dpix_val1; + dtgbuf[h][1] = gpix1; dtbuf[h][2] = dpix_val2; dtgbuf[h][2] = gpix2; + dtbuf[h][3] = dpix_val3; + dtgbuf[h][3] = gpix3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -4764,6 +29277,15 @@ static void lts_aga_fm0_n1_p8_ilores_dhires_genlock(void) *buf1++ = t0; *buf2++ = t0; *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = dtgbuf[h ^ lol][1]; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -4773,6 +29295,15 @@ static void lts_aga_fm0_n1_p8_ilores_dhires_genlock(void) *buf1++ = t2; *buf2++ = t2; *gbuf++ = dtgbuf[h ^ lol][2]; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + *gbuf++ = dtgbuf[h ^ lol][3]; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -4796,11 +29327,11 @@ static void lts_aga_fm0_n1_p8_ilores_dhires_genlock(void) denise_cck++; } } -static void lts_aga_fm0_n1_p8_ilores_dhires_filtered_genlock(void) +static void lts_aga_fm0_ham0_p8_ilores_dshres_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm0_dpf0_p8_ilores_dhires_genlock(void) +static void lts_aga_fm0_ham1_p8_ilores_dshres_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -4822,29 +29353,73 @@ static void lts_aga_fm0_dpf0_p8_ilores_dhires_genlock(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - gpix0 = get_genlock_transparency(dpf_lookup[pix0]); + dpix_val0 = decode_ham_pixel_aga(pix0); + gpix0 = get_genlock_transparency((pix0 >> 2) & 63); } last_bpl_pix = pix0; } - bplshiftcnt[0] += 2; + bplshiftcnt[0] += 1; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl8(); + shiftbpl8e(); + loaded_pix = getbpl8(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl8o(); loaded_pix = getbpl8(); } if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8(); + copybpl8e(); bplshiftcnt[0] = 0; loaded_pix = getbpl8(); } + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl8(); + } loaded_pixs[0] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + dpix_val1 = decode_ham_pixel_aga(pix1); + gpix1 = get_genlock_transparency((pix1 >> 2) & 63); + } + last_bpl_pix = pix1; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8e(); + loaded_pix = getbpl8(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl8o(); + loaded_pix = getbpl8(); + } + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8(); + } + if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl8(); + } + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u8 gpix2 = 0xff; uae_u32 dpix_val2 = BLANK_COLOR; @@ -4854,34 +29429,82 @@ static void lts_aga_fm0_dpf0_p8_ilores_dhires_genlock(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; - gpix2 = get_genlock_transparency(dpf_lookup[pix2]); + dpix_val2 = decode_ham_pixel_aga(pix2); + gpix2 = get_genlock_transparency((pix2 >> 2) & 63); } last_bpl_pix = pix2; } - bplshiftcnt[0] += 2; + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8e(); + loaded_pix = getbpl8(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl8o(); + loaded_pix = getbpl8(); + } + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8(); + } + if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl8(); + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + dpix_val3 = decode_ham_pixel_aga(pix3); + gpix3 = get_genlock_transparency((pix3 >> 2) & 63); + } + last_bpl_pix = pix3; + } + bplshiftcnt[0] += 1; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl8(); + shiftbpl8e(); loaded_pix = getbpl8(); } - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8(); + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl8o(); + loaded_pix = getbpl8(); + } + if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8e(); bplshiftcnt[0] = 0; loaded_pix = getbpl8(); } - loaded_pixs[2] = loaded_pix; - internal_pixel_cnt += 2; + if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl8(); + } + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; + dtbuf[h][1] = dpix_val1; + dtgbuf[h][1] = gpix1; dtbuf[h][2] = dpix_val2; dtgbuf[h][2] = gpix2; + dtbuf[h][3] = dpix_val3; + dtgbuf[h][3] = gpix3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -4891,6 +29514,15 @@ static void lts_aga_fm0_dpf0_p8_ilores_dhires_genlock(void) *buf1++ = t0; *buf2++ = t0; *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = dtgbuf[h ^ lol][1]; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -4900,6 +29532,15 @@ static void lts_aga_fm0_dpf0_p8_ilores_dhires_genlock(void) *buf1++ = t2; *buf2++ = t2; *gbuf++ = dtgbuf[h ^ lol][2]; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + *gbuf++ = dtgbuf[h ^ lol][3]; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -4923,11 +29564,11 @@ static void lts_aga_fm0_dpf0_p8_ilores_dhires_genlock(void) denise_cck++; } } -static void lts_aga_fm0_dpf0_p8_ilores_dhires_filtered_genlock(void) +static void lts_aga_fm0_ham1_p8_ilores_dshres_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm0_dpf1_p8_ilores_dhires_genlock(void) +static void lts_aga_fm0_kehb0_p8_ilores_dshres_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -4938,7 +29579,6 @@ 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; @@ -4946,91 +29586,41 @@ static void lts_aga_fm0_dpf1_p8_ilores_dhires_genlock(void) if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - gpix0 = get_genlock_transparency(dpf_lookup[pix0]); - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8e(); - loaded_pix = getbpl8(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl8o(); - loaded_pix = getbpl8(); } - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8(); - } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl8(); + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; } - loaded_pixs[0] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u8 gpix2 = 0xff; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { gpix2 = get_genlock_transparency_border(); dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; - gpix2 = get_genlock_transparency(dpf_lookup[pix2]); - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8e(); - loaded_pix = getbpl8(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl8o(); - loaded_pix = getbpl8(); - } - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8(); } - if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl8(); + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; } - loaded_pixs[2] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; + dtbuf[h][1] = dpix_val1; + dtgbuf[h][1] = gpix1; dtbuf[h][2] = dpix_val2; dtgbuf[h][2] = gpix2; + dtbuf[h][3] = dpix_val3; + dtgbuf[h][3] = gpix3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -5040,6 +29630,15 @@ static void lts_aga_fm0_dpf1_p8_ilores_dhires_genlock(void) *buf1++ = t0; *buf2++ = t0; *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = dtgbuf[h ^ lol][1]; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -5049,6 +29648,15 @@ static void lts_aga_fm0_dpf1_p8_ilores_dhires_genlock(void) *buf1++ = t2; *buf2++ = t2; *gbuf++ = dtgbuf[h ^ lol][2]; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + *gbuf++ = dtgbuf[h ^ lol][3]; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -5072,27 +29680,11 @@ static void lts_aga_fm0_dpf1_p8_ilores_dhires_genlock(void) denise_cck++; } } -static void lts_aga_fm0_dpf1_p8_ilores_dhires_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb0_p8_ilores_dhires_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb0_p8_ilores_dhires_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb1_p8_ilores_dhires_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb1_p8_ilores_dhires_filtered_genlock(void) +static void lts_aga_fm0_kehb0_p8_ilores_dshres_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm0_ham0_p8_ilores_dhires_genlock(void) +static void lts_aga_fm0_kehb1_p8_ilores_dshres_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -5103,7 +29695,6 @@ 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; @@ -5111,59 +29702,41 @@ static void lts_aga_fm0_ham0_p8_ilores_dhires_genlock(void) if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = decode_ham_pixel_aga(pix0); - gpix0 = get_genlock_transparency((pix0 >> 2) & 63); - } - last_bpl_pix = pix0; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8(); - loaded_pix = getbpl8(); - } - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8(); + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; } - loaded_pixs[0] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u8 gpix2 = 0xff; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { gpix2 = get_genlock_transparency_border(); dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = decode_ham_pixel_aga(pix2); - gpix2 = get_genlock_transparency((pix2 >> 2) & 63); - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8(); - loaded_pix = getbpl8(); } - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8(); + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; } - loaded_pixs[2] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; + dtbuf[h][1] = dpix_val1; + dtgbuf[h][1] = gpix1; dtbuf[h][2] = dpix_val2; dtgbuf[h][2] = gpix2; + dtbuf[h][3] = dpix_val3; + dtgbuf[h][3] = gpix3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -5173,6 +29746,15 @@ static void lts_aga_fm0_ham0_p8_ilores_dhires_genlock(void) *buf1++ = t0; *buf2++ = t0; *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = dtgbuf[h ^ lol][1]; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -5182,6 +29764,15 @@ static void lts_aga_fm0_ham0_p8_ilores_dhires_genlock(void) *buf1++ = t2; *buf2++ = t2; *gbuf++ = dtgbuf[h ^ lol][2]; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + *gbuf++ = dtgbuf[h ^ lol][3]; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -5205,11 +29796,11 @@ static void lts_aga_fm0_ham0_p8_ilores_dhires_genlock(void) denise_cck++; } } -static void lts_aga_fm0_ham0_p8_ilores_dhires_filtered_genlock(void) +static void lts_aga_fm0_kehb1_p8_ilores_dshres_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm0_ham1_p8_ilores_dhires_genlock(void) +static void lts_aga_fm0_n0_p4_ilores_dshres_spr_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -5222,6 +29813,7 @@ static void lts_aga_fm0_ham1_p8_ilores_dhires_genlock(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; @@ -5231,35 +29823,69 @@ static void lts_aga_fm0_ham1_p8_ilores_dhires_genlock(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - dpix_val0 = decode_ham_pixel_aga(pix0); - gpix0 = get_genlock_transparency((pix0 >> 2) & 63); + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); } last_bpl_pix = pix0; } - bplshiftcnt[0] += 2; + bplshiftcnt[0] += 1; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl8e(); - loaded_pix = getbpl8(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl8o(); - loaded_pix = getbpl8(); + shiftbpl4(); + loaded_pix = getbpl4(); } if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e(); + copybpl4(); bplshiftcnt[0] = 0; - loaded_pix = getbpl8(); + loaded_pix = getbpl4(); } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl8(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } } loaded_pixs[0] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; + gpix1 = get_genlock_transparency(pix1 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix1; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4(); + loaded_pix = getbpl4(); + } + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4(); + } + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } + } + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u8 gpix2 = 0xff; uae_u32 dpix_val2 = BLANK_COLOR; @@ -5269,40 +29895,109 @@ static void lts_aga_fm0_ham1_p8_ilores_dhires_genlock(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - dpix_val2 = decode_ham_pixel_aga(pix2); - gpix2 = get_genlock_transparency((pix2 >> 2) & 63); + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + gpix2 = get_genlock_transparency(pix2 ^ bplcon4_denise_xor_val); } last_bpl_pix = pix2; } - bplshiftcnt[0] += 2; + bplshiftcnt[0] += 1; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl8e(); - loaded_pix = getbpl8(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl8o(); - loaded_pix = getbpl8(); + shiftbpl4(); + loaded_pix = getbpl4(); } if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e(); + copybpl4(); bplshiftcnt[0] = 0; - loaded_pix = getbpl8(); + loaded_pix = getbpl4(); } - if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl8(); + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } } loaded_pixs[2] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; + gpix3 = get_genlock_transparency(pix3 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix3; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4(); + loaded_pix = getbpl4(); + } + if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4(); + } + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } + } + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + gpix1 = get_genlock_transparency(spix1); + + } + } + dtbuf[h][1] = dpix_val1; + dtgbuf[h][1] = gpix1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } dtbuf[h][2] = dpix_val2; dtgbuf[h][2] = gpix2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + gpix3 = get_genlock_transparency(spix3); + + } + } + dtbuf[h][3] = dpix_val3; + dtgbuf[h][3] = gpix3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -5312,6 +30007,15 @@ static void lts_aga_fm0_ham1_p8_ilores_dhires_genlock(void) *buf1++ = t0; *buf2++ = t0; *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = dtgbuf[h ^ lol][1]; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -5321,6 +30025,15 @@ static void lts_aga_fm0_ham1_p8_ilores_dhires_genlock(void) *buf1++ = t2; *buf2++ = t2; *gbuf++ = dtgbuf[h ^ lol][2]; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + *gbuf++ = dtgbuf[h ^ lol][3]; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -5344,27 +30057,11 @@ static void lts_aga_fm0_ham1_p8_ilores_dhires_genlock(void) denise_cck++; } } -static void lts_aga_fm0_ham1_p8_ilores_dhires_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb0_p8_ilores_dhires_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb0_p8_ilores_dhires_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb1_p8_ilores_dhires_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb1_p8_ilores_dhires_filtered_genlock(void) +static void lts_aga_fm0_n0_p4_ilores_dshres_spr_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm0_n0_p4_ilores_dhires_spr_genlock(void) +static void lts_aga_fm0_n1_p4_ilores_dshres_spr_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -5382,37 +30079,95 @@ static void lts_aga_fm0_n0_p4_ilores_dhires_spr_genlock(void) uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { - gpix0 = get_genlock_transparency_border(); - dpix_val0 = bordercolor; + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4e(); + loaded_pix = getbpl4(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl4o(); + loaded_pix = getbpl4(); + } + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4(); + } + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl4o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl4(); + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; + gpix1 = get_genlock_transparency(pix1 ^ bplcon4_denise_xor_val); } - last_bpl_pix = pix0; + last_bpl_pix = pix1; } - bplshiftcnt[0] += 2; + bplshiftcnt[0] += 1; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl4(); + shiftbpl4e(); loaded_pix = getbpl4(); } - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4(); + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl4o(); + loaded_pix = getbpl4(); + } + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4e(); bplshiftcnt[0] = 0; loaded_pix = getbpl4(); } - uae_u32 sv0 = 0; + if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { + copybpl4o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl4(); + } + uae_u32 sv1 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; svt = denise_render_sprites_aga(denise_spr_add); if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; + sv1 = svt; } } - loaded_pixs[0] = loaded_pix; - internal_pixel_cnt += 2; + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 1; matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u8 gpix2 = 0xff; @@ -5428,17 +30183,28 @@ static void lts_aga_fm0_n0_p4_ilores_dhires_spr_genlock(void) } last_bpl_pix = pix2; } - bplshiftcnt[0] += 2; + bplshiftcnt[0] += 1; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl4(); + shiftbpl4e(); + loaded_pix = getbpl4(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl4o(); loaded_pix = getbpl4(); } if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4(); + copybpl4e(); bplshiftcnt[0] = 0; loaded_pix = getbpl4(); } + if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { + copybpl4o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl4(); + } uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -5448,7 +30214,54 @@ static void lts_aga_fm0_n0_p4_ilores_dhires_spr_genlock(void) } } loaded_pixs[2] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; + gpix3 = get_genlock_transparency(pix3 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix3; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4e(); + loaded_pix = getbpl4(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl4o(); + loaded_pix = getbpl4(); + } + if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4(); + } + if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) { + copybpl4o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl4(); + } + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } + } + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { uae_u32 spix0 = denise_render_sprites2(pix0, sv0); @@ -5460,6 +30273,16 @@ static void lts_aga_fm0_n0_p4_ilores_dhires_spr_genlock(void) } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + gpix1 = get_genlock_transparency(spix1); + + } + } + dtbuf[h][1] = dpix_val1; + dtgbuf[h][1] = gpix1; if (sv2) { uae_u32 spix2 = denise_render_sprites2(pix2, sv2); if (spix2) { @@ -5470,6 +30293,16 @@ static void lts_aga_fm0_n0_p4_ilores_dhires_spr_genlock(void) } dtbuf[h][2] = dpix_val2; dtgbuf[h][2] = gpix2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + gpix3 = get_genlock_transparency(spix3); + + } + } + dtbuf[h][3] = dpix_val3; + dtgbuf[h][3] = gpix3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -5479,6 +30312,15 @@ static void lts_aga_fm0_n0_p4_ilores_dhires_spr_genlock(void) *buf1++ = t0; *buf2++ = t0; *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = dtgbuf[h ^ lol][1]; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -5488,6 +30330,15 @@ static void lts_aga_fm0_n0_p4_ilores_dhires_spr_genlock(void) *buf1++ = t2; *buf2++ = t2; *gbuf++ = dtgbuf[h ^ lol][2]; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + *gbuf++ = dtgbuf[h ^ lol][3]; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -5511,11 +30362,11 @@ static void lts_aga_fm0_n0_p4_ilores_dhires_spr_genlock(void) denise_cck++; } } -static void lts_aga_fm0_n0_p4_ilores_dhires_spr_filtered_genlock(void) +static void lts_aga_fm0_n1_p4_ilores_dshres_spr_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm0_n1_p4_ilores_dhires_spr_genlock(void) +static void lts_aga_fm0_dpf0_p4_ilores_dshres_spr_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -5538,33 +30389,27 @@ static void lts_aga_fm0_n1_p4_ilores_dhires_spr_genlock(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + gpix0 = get_genlock_transparency(dpf_lookup[pix0]); } last_bpl_pix = pix0; } - bplshiftcnt[0] += 2; + bplshiftcnt[0] += 1; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl4e(); - loaded_pix = getbpl4(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl4o(); + shiftbpl4(); loaded_pix = getbpl4(); } if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4e(); + copybpl4(); bplshiftcnt[0] = 0; loaded_pix = getbpl4(); } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl4o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl4(); - } uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -5574,54 +30419,130 @@ static void lts_aga_fm0_n1_p4_ilores_dhires_spr_genlock(void) } } loaded_pixs[0] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + uae_u8 val1 = dpf_lookup[pix1]; + if (dpf_lookup_no[pix1]) { + val1 += dblpfofs[bpldualpf2of]; + } + val1 ^= bplcon4_denise_xor_val; + dpix_val1 = denise_colors.acolors[val1]; + gpix1 = get_genlock_transparency(dpf_lookup[pix1]); + } + last_bpl_pix = pix1; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4(); + loaded_pix = getbpl4(); + } + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4(); + } + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } + } + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 1; matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u8 gpix2 = 0xff; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { - gpix2 = get_genlock_transparency_border(); - dpix_val2 = bordercolor; + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; + gpix2 = get_genlock_transparency(dpf_lookup[pix2]); + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4(); + loaded_pix = getbpl4(); + } + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4(); + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; - gpix2 = get_genlock_transparency(pix2 ^ bplcon4_denise_xor_val); + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + uae_u8 val3 = dpf_lookup[pix3]; + if (dpf_lookup_no[pix3]) { + val3 += dblpfofs[bpldualpf2of]; + } + val3 ^= bplcon4_denise_xor_val; + dpix_val3 = denise_colors.acolors[val3]; + gpix3 = get_genlock_transparency(dpf_lookup[pix3]); } - last_bpl_pix = pix2; + last_bpl_pix = pix3; } - bplshiftcnt[0] += 2; + bplshiftcnt[0] += 1; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl4e(); - loaded_pix = getbpl4(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl4o(); + shiftbpl4(); loaded_pix = getbpl4(); } - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4e(); + if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4(); bplshiftcnt[0] = 0; loaded_pix = getbpl4(); } - if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { - copybpl4o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl4(); - } - uae_u32 sv2 = 0; + uae_u32 sv3 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; svt = denise_render_sprites_aga(denise_spr_add); if (!denise_sprite_blank_active && !sprites_hidden) { - sv2 = svt; + sv3 = svt; } } - loaded_pixs[2] = loaded_pix; - internal_pixel_cnt += 2; + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { uae_u32 spix0 = denise_render_sprites2(pix0, sv0); @@ -5633,6 +30554,16 @@ static void lts_aga_fm0_n1_p4_ilores_dhires_spr_genlock(void) } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + gpix1 = get_genlock_transparency(spix1); + + } + } + dtbuf[h][1] = dpix_val1; + dtgbuf[h][1] = gpix1; if (sv2) { uae_u32 spix2 = denise_render_sprites2(pix2, sv2); if (spix2) { @@ -5643,6 +30574,16 @@ static void lts_aga_fm0_n1_p4_ilores_dhires_spr_genlock(void) } dtbuf[h][2] = dpix_val2; dtgbuf[h][2] = gpix2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + gpix3 = get_genlock_transparency(spix3); + + } + } + dtbuf[h][3] = dpix_val3; + dtgbuf[h][3] = gpix3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -5652,6 +30593,15 @@ static void lts_aga_fm0_n1_p4_ilores_dhires_spr_genlock(void) *buf1++ = t0; *buf2++ = t0; *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = dtgbuf[h ^ lol][1]; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -5661,6 +30611,15 @@ static void lts_aga_fm0_n1_p4_ilores_dhires_spr_genlock(void) *buf1++ = t2; *buf2++ = t2; *gbuf++ = dtgbuf[h ^ lol][2]; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + *gbuf++ = dtgbuf[h ^ lol][3]; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -5684,11 +30643,11 @@ static void lts_aga_fm0_n1_p4_ilores_dhires_spr_genlock(void) denise_cck++; } } -static void lts_aga_fm0_n1_p4_ilores_dhires_spr_filtered_genlock(void) +static void lts_aga_fm0_dpf0_p4_ilores_dshres_spr_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm0_dpf0_p4_ilores_dhires_spr_genlock(void) +static void lts_aga_fm0_dpf1_p4_ilores_dshres_spr_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -5721,17 +30680,28 @@ static void lts_aga_fm0_dpf0_p4_ilores_dhires_spr_genlock(void) } last_bpl_pix = pix0; } - bplshiftcnt[0] += 2; + bplshiftcnt[0] += 1; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl4(); + shiftbpl4e(); + loaded_pix = getbpl4(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl4o(); loaded_pix = getbpl4(); } if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4(); + copybpl4e(); bplshiftcnt[0] = 0; loaded_pix = getbpl4(); } + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl4o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl4(); + } uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -5741,7 +30711,59 @@ static void lts_aga_fm0_dpf0_p4_ilores_dhires_spr_genlock(void) } } loaded_pixs[0] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + uae_u8 val1 = dpf_lookup[pix1]; + if (dpf_lookup_no[pix1]) { + val1 += dblpfofs[bpldualpf2of]; + } + val1 ^= bplcon4_denise_xor_val; + dpix_val1 = denise_colors.acolors[val1]; + gpix1 = get_genlock_transparency(dpf_lookup[pix1]); + } + last_bpl_pix = pix1; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4e(); + loaded_pix = getbpl4(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl4o(); + loaded_pix = getbpl4(); + } + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4(); + } + if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { + copybpl4o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl4(); + } + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } + } + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 1; matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u8 gpix2 = 0xff; @@ -5762,17 +30784,28 @@ static void lts_aga_fm0_dpf0_p4_ilores_dhires_spr_genlock(void) } last_bpl_pix = pix2; } - bplshiftcnt[0] += 2; + bplshiftcnt[0] += 1; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl4(); + shiftbpl4e(); + loaded_pix = getbpl4(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl4o(); loaded_pix = getbpl4(); } if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4(); + copybpl4e(); bplshiftcnt[0] = 0; loaded_pix = getbpl4(); } + if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { + copybpl4o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl4(); + } uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -5782,7 +30815,59 @@ static void lts_aga_fm0_dpf0_p4_ilores_dhires_spr_genlock(void) } } loaded_pixs[2] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + uae_u8 val3 = dpf_lookup[pix3]; + if (dpf_lookup_no[pix3]) { + val3 += dblpfofs[bpldualpf2of]; + } + val3 ^= bplcon4_denise_xor_val; + dpix_val3 = denise_colors.acolors[val3]; + gpix3 = get_genlock_transparency(dpf_lookup[pix3]); + } + last_bpl_pix = pix3; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4e(); + loaded_pix = getbpl4(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl4o(); + loaded_pix = getbpl4(); + } + if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4(); + } + if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) { + copybpl4o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl4(); + } + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } + } + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { uae_u32 spix0 = denise_render_sprites2(pix0, sv0); @@ -5794,6 +30879,16 @@ static void lts_aga_fm0_dpf0_p4_ilores_dhires_spr_genlock(void) } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + gpix1 = get_genlock_transparency(spix1); + + } + } + dtbuf[h][1] = dpix_val1; + dtgbuf[h][1] = gpix1; if (sv2) { uae_u32 spix2 = denise_render_sprites2(pix2, sv2); if (spix2) { @@ -5804,6 +30899,16 @@ static void lts_aga_fm0_dpf0_p4_ilores_dhires_spr_genlock(void) } dtbuf[h][2] = dpix_val2; dtgbuf[h][2] = gpix2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + gpix3 = get_genlock_transparency(spix3); + + } + } + dtbuf[h][3] = dpix_val3; + dtgbuf[h][3] = gpix3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -5813,6 +30918,15 @@ static void lts_aga_fm0_dpf0_p4_ilores_dhires_spr_genlock(void) *buf1++ = t0; *buf2++ = t0; *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = dtgbuf[h ^ lol][1]; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -5822,6 +30936,15 @@ static void lts_aga_fm0_dpf0_p4_ilores_dhires_spr_genlock(void) *buf1++ = t2; *buf2++ = t2; *gbuf++ = dtgbuf[h ^ lol][2]; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + *gbuf++ = dtgbuf[h ^ lol][3]; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -5845,11 +30968,11 @@ static void lts_aga_fm0_dpf0_p4_ilores_dhires_spr_genlock(void) denise_cck++; } } -static void lts_aga_fm0_dpf0_p4_ilores_dhires_spr_filtered_genlock(void) +static void lts_aga_fm0_dpf1_p4_ilores_dshres_spr_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm0_dpf1_p4_ilores_dhires_spr_genlock(void) +static void lts_aga_fm0_ehb0_p4_ilores_dshres_spr_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -5860,7 +30983,6 @@ 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; @@ -5869,40 +30991,6 @@ static void lts_aga_fm0_dpf1_p4_ilores_dhires_spr_genlock(void) if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - gpix0 = get_genlock_transparency(dpf_lookup[pix0]); - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4e(); - loaded_pix = getbpl4(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl4o(); - loaded_pix = getbpl4(); - } - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4(); - } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl4o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl4(); } uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { @@ -5912,8 +31000,24 @@ static void lts_aga_fm0_dpf1_p4_ilores_dhires_spr_genlock(void) sv0 = svt; } } - loaded_pixs[0] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } + } + internal_pixel_cnt += 1; matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u8 gpix2 = 0xff; @@ -5921,40 +31025,6 @@ static void lts_aga_fm0_dpf1_p4_ilores_dhires_spr_genlock(void) if (!denise_blank_active) { gpix2 = get_genlock_transparency_border(); dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; - gpix2 = get_genlock_transparency(dpf_lookup[pix2]); - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4e(); - loaded_pix = getbpl4(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl4o(); - loaded_pix = getbpl4(); - } - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4(); - } - if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { - copybpl4o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl4(); } uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { @@ -5964,8 +31034,24 @@ static void lts_aga_fm0_dpf1_p4_ilores_dhires_spr_genlock(void) sv2 = svt; } } - loaded_pixs[2] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + } + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } + } + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { uae_u32 spix0 = denise_render_sprites2(pix0, sv0); @@ -5977,6 +31063,16 @@ static void lts_aga_fm0_dpf1_p4_ilores_dhires_spr_genlock(void) } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + gpix1 = get_genlock_transparency(spix1); + + } + } + dtbuf[h][1] = dpix_val1; + dtgbuf[h][1] = gpix1; if (sv2) { uae_u32 spix2 = denise_render_sprites2(pix2, sv2); if (spix2) { @@ -5987,6 +31083,16 @@ static void lts_aga_fm0_dpf1_p4_ilores_dhires_spr_genlock(void) } dtbuf[h][2] = dpix_val2; dtgbuf[h][2] = gpix2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + gpix3 = get_genlock_transparency(spix3); + + } + } + dtbuf[h][3] = dpix_val3; + dtgbuf[h][3] = gpix3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -5996,6 +31102,15 @@ static void lts_aga_fm0_dpf1_p4_ilores_dhires_spr_genlock(void) *buf1++ = t0; *buf2++ = t0; *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = dtgbuf[h ^ lol][1]; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -6005,6 +31120,15 @@ static void lts_aga_fm0_dpf1_p4_ilores_dhires_spr_genlock(void) *buf1++ = t2; *buf2++ = t2; *gbuf++ = dtgbuf[h ^ lol][2]; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + *gbuf++ = dtgbuf[h ^ lol][3]; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -6028,59 +31152,11 @@ static void lts_aga_fm0_dpf1_p4_ilores_dhires_spr_genlock(void) denise_cck++; } } -static void lts_aga_fm0_dpf1_p4_ilores_dhires_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb0_p4_ilores_dhires_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb0_p4_ilores_dhires_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb1_p4_ilores_dhires_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb1_p4_ilores_dhires_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham0_p4_ilores_dhires_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham0_p4_ilores_dhires_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham1_p4_ilores_dhires_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham1_p4_ilores_dhires_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb0_p4_ilores_dhires_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb0_p4_ilores_dhires_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb1_p4_ilores_dhires_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb1_p4_ilores_dhires_spr_filtered_genlock(void) +static void lts_aga_fm0_ehb0_p4_ilores_dshres_spr_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm0_n0_p8_ilores_dhires_spr_genlock(void) +static void lts_aga_fm0_ehb1_p4_ilores_dshres_spr_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -6091,7 +31167,6 @@ 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; @@ -6100,35 +31175,33 @@ static void lts_aga_fm0_n0_p8_ilores_dhires_spr_genlock(void) if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); - } - last_bpl_pix = pix0; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8(); - loaded_pix = getbpl8(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } } - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8(); + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; } - uae_u32 sv0 = 0; + uae_u32 sv1 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; svt = denise_render_sprites_aga(denise_spr_add); if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; + sv1 = svt; } } - loaded_pixs[0] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u8 gpix2 = 0xff; @@ -6136,24 +31209,6 @@ static void lts_aga_fm0_n0_p8_ilores_dhires_spr_genlock(void) if (!denise_blank_active) { gpix2 = get_genlock_transparency_border(); dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; - gpix2 = get_genlock_transparency(pix2 ^ bplcon4_denise_xor_val); - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8(); - loaded_pix = getbpl8(); - } - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8(); } uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { @@ -6163,8 +31218,24 @@ static void lts_aga_fm0_n0_p8_ilores_dhires_spr_genlock(void) sv2 = svt; } } - loaded_pixs[2] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + } + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } + } + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { uae_u32 spix0 = denise_render_sprites2(pix0, sv0); @@ -6176,6 +31247,16 @@ static void lts_aga_fm0_n0_p8_ilores_dhires_spr_genlock(void) } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + gpix1 = get_genlock_transparency(spix1); + + } + } + dtbuf[h][1] = dpix_val1; + dtgbuf[h][1] = gpix1; if (sv2) { uae_u32 spix2 = denise_render_sprites2(pix2, sv2); if (spix2) { @@ -6186,6 +31267,16 @@ static void lts_aga_fm0_n0_p8_ilores_dhires_spr_genlock(void) } dtbuf[h][2] = dpix_val2; dtgbuf[h][2] = gpix2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + gpix3 = get_genlock_transparency(spix3); + + } + } + dtbuf[h][3] = dpix_val3; + dtgbuf[h][3] = gpix3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -6195,6 +31286,15 @@ static void lts_aga_fm0_n0_p8_ilores_dhires_spr_genlock(void) *buf1++ = t0; *buf2++ = t0; *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = dtgbuf[h ^ lol][1]; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -6204,6 +31304,15 @@ static void lts_aga_fm0_n0_p8_ilores_dhires_spr_genlock(void) *buf1++ = t2; *buf2++ = t2; *gbuf++ = dtgbuf[h ^ lol][2]; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + *gbuf++ = dtgbuf[h ^ lol][3]; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -6227,11 +31336,11 @@ static void lts_aga_fm0_n0_p8_ilores_dhires_spr_genlock(void) denise_cck++; } } -static void lts_aga_fm0_n0_p8_ilores_dhires_spr_filtered_genlock(void) +static void lts_aga_fm0_ehb1_p4_ilores_dshres_spr_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm0_n1_p8_ilores_dhires_spr_genlock(void) +static void lts_aga_fm0_ham0_p4_ilores_dshres_spr_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -6242,7 +31351,6 @@ 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; @@ -6251,35 +31359,6 @@ static void lts_aga_fm0_n1_p8_ilores_dhires_spr_genlock(void) if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8e(); - loaded_pix = getbpl8(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl8o(); - loaded_pix = getbpl8(); - } - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8(); - } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl8(); } uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { @@ -6289,8 +31368,24 @@ static void lts_aga_fm0_n1_p8_ilores_dhires_spr_genlock(void) sv0 = svt; } } - loaded_pixs[0] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } + } + internal_pixel_cnt += 1; matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u8 gpix2 = 0xff; @@ -6298,35 +31393,6 @@ static void lts_aga_fm0_n1_p8_ilores_dhires_spr_genlock(void) if (!denise_blank_active) { gpix2 = get_genlock_transparency_border(); dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; - gpix2 = get_genlock_transparency(pix2 ^ bplcon4_denise_xor_val); - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8e(); - loaded_pix = getbpl8(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl8o(); - loaded_pix = getbpl8(); - } - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8(); - } - if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl8(); } uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { @@ -6336,8 +31402,24 @@ static void lts_aga_fm0_n1_p8_ilores_dhires_spr_genlock(void) sv2 = svt; } } - loaded_pixs[2] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + } + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } + } + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { uae_u32 spix0 = denise_render_sprites2(pix0, sv0); @@ -6349,6 +31431,16 @@ static void lts_aga_fm0_n1_p8_ilores_dhires_spr_genlock(void) } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + gpix1 = get_genlock_transparency(spix1); + + } + } + dtbuf[h][1] = dpix_val1; + dtgbuf[h][1] = gpix1; if (sv2) { uae_u32 spix2 = denise_render_sprites2(pix2, sv2); if (spix2) { @@ -6359,6 +31451,16 @@ static void lts_aga_fm0_n1_p8_ilores_dhires_spr_genlock(void) } dtbuf[h][2] = dpix_val2; dtgbuf[h][2] = gpix2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + gpix3 = get_genlock_transparency(spix3); + + } + } + dtbuf[h][3] = dpix_val3; + dtgbuf[h][3] = gpix3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -6368,6 +31470,15 @@ static void lts_aga_fm0_n1_p8_ilores_dhires_spr_genlock(void) *buf1++ = t0; *buf2++ = t0; *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = dtgbuf[h ^ lol][1]; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -6377,6 +31488,15 @@ static void lts_aga_fm0_n1_p8_ilores_dhires_spr_genlock(void) *buf1++ = t2; *buf2++ = t2; *gbuf++ = dtgbuf[h ^ lol][2]; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + *gbuf++ = dtgbuf[h ^ lol][3]; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -6400,11 +31520,11 @@ static void lts_aga_fm0_n1_p8_ilores_dhires_spr_genlock(void) denise_cck++; } } -static void lts_aga_fm0_n1_p8_ilores_dhires_spr_filtered_genlock(void) +static void lts_aga_fm0_ham0_p4_ilores_dshres_spr_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm0_dpf0_p8_ilores_dhires_spr_genlock(void) +static void lts_aga_fm0_ham1_p4_ilores_dshres_spr_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -6415,38 +31535,14 @@ 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; uae_u8 gpix0 = 0xff; - uae_u32 dpix_val0 = BLANK_COLOR; - if (!denise_blank_active) { - gpix0 = get_genlock_transparency_border(); - dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - gpix0 = get_genlock_transparency(dpf_lookup[pix0]); - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8(); - loaded_pix = getbpl8(); - } - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8(); + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; } uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { @@ -6456,8 +31552,24 @@ static void lts_aga_fm0_dpf0_p8_ilores_dhires_spr_genlock(void) sv0 = svt; } } - loaded_pixs[0] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } + } + internal_pixel_cnt += 1; matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u8 gpix2 = 0xff; @@ -6465,29 +31577,6 @@ static void lts_aga_fm0_dpf0_p8_ilores_dhires_spr_genlock(void) if (!denise_blank_active) { gpix2 = get_genlock_transparency_border(); dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; - gpix2 = get_genlock_transparency(dpf_lookup[pix2]); - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8(); - loaded_pix = getbpl8(); - } - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8(); } uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { @@ -6497,8 +31586,24 @@ static void lts_aga_fm0_dpf0_p8_ilores_dhires_spr_genlock(void) sv2 = svt; } } - loaded_pixs[2] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + } + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } + } + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { uae_u32 spix0 = denise_render_sprites2(pix0, sv0); @@ -6510,6 +31615,16 @@ static void lts_aga_fm0_dpf0_p8_ilores_dhires_spr_genlock(void) } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + gpix1 = get_genlock_transparency(spix1); + + } + } + dtbuf[h][1] = dpix_val1; + dtgbuf[h][1] = gpix1; if (sv2) { uae_u32 spix2 = denise_render_sprites2(pix2, sv2); if (spix2) { @@ -6520,6 +31635,16 @@ static void lts_aga_fm0_dpf0_p8_ilores_dhires_spr_genlock(void) } dtbuf[h][2] = dpix_val2; dtgbuf[h][2] = gpix2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + gpix3 = get_genlock_transparency(spix3); + + } + } + dtbuf[h][3] = dpix_val3; + dtgbuf[h][3] = gpix3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -6529,6 +31654,15 @@ static void lts_aga_fm0_dpf0_p8_ilores_dhires_spr_genlock(void) *buf1++ = t0; *buf2++ = t0; *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = dtgbuf[h ^ lol][1]; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -6538,6 +31672,15 @@ static void lts_aga_fm0_dpf0_p8_ilores_dhires_spr_genlock(void) *buf1++ = t2; *buf2++ = t2; *gbuf++ = dtgbuf[h ^ lol][2]; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + *gbuf++ = dtgbuf[h ^ lol][3]; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -6561,11 +31704,11 @@ static void lts_aga_fm0_dpf0_p8_ilores_dhires_spr_genlock(void) denise_cck++; } } -static void lts_aga_fm0_dpf0_p8_ilores_dhires_spr_filtered_genlock(void) +static void lts_aga_fm0_ham1_p4_ilores_dshres_spr_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm0_dpf1_p8_ilores_dhires_spr_genlock(void) +static void lts_aga_fm0_kehb0_p4_ilores_dshres_spr_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -6576,7 +31719,6 @@ 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; @@ -6585,40 +31727,6 @@ static void lts_aga_fm0_dpf1_p8_ilores_dhires_spr_genlock(void) if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - gpix0 = get_genlock_transparency(dpf_lookup[pix0]); - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8e(); - loaded_pix = getbpl8(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl8o(); - loaded_pix = getbpl8(); - } - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8(); - } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl8(); } uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { @@ -6628,8 +31736,24 @@ static void lts_aga_fm0_dpf1_p8_ilores_dhires_spr_genlock(void) sv0 = svt; } } - loaded_pixs[0] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } + } + internal_pixel_cnt += 1; matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u8 gpix2 = 0xff; @@ -6637,40 +31761,6 @@ static void lts_aga_fm0_dpf1_p8_ilores_dhires_spr_genlock(void) if (!denise_blank_active) { gpix2 = get_genlock_transparency_border(); dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; - gpix2 = get_genlock_transparency(dpf_lookup[pix2]); - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8e(); - loaded_pix = getbpl8(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl8o(); - loaded_pix = getbpl8(); - } - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8(); - } - if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl8(); } uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { @@ -6680,8 +31770,24 @@ static void lts_aga_fm0_dpf1_p8_ilores_dhires_spr_genlock(void) sv2 = svt; } } - loaded_pixs[2] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + } + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } + } + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { uae_u32 spix0 = denise_render_sprites2(pix0, sv0); @@ -6693,6 +31799,16 @@ static void lts_aga_fm0_dpf1_p8_ilores_dhires_spr_genlock(void) } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + gpix1 = get_genlock_transparency(spix1); + + } + } + dtbuf[h][1] = dpix_val1; + dtgbuf[h][1] = gpix1; if (sv2) { uae_u32 spix2 = denise_render_sprites2(pix2, sv2); if (spix2) { @@ -6703,6 +31819,16 @@ static void lts_aga_fm0_dpf1_p8_ilores_dhires_spr_genlock(void) } dtbuf[h][2] = dpix_val2; dtgbuf[h][2] = gpix2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + gpix3 = get_genlock_transparency(spix3); + + } + } + dtbuf[h][3] = dpix_val3; + dtgbuf[h][3] = gpix3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -6712,15 +31838,33 @@ static void lts_aga_fm0_dpf1_p8_ilores_dhires_spr_genlock(void) *buf1++ = t0; *buf2++ = t0; *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = dtgbuf[h ^ lol][1]; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { - t2 = decode_denise_specials_debug(t2, cnt + 2); + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); } #endif - *buf1++ = t2; - *buf2++ = t2; - *gbuf++ = dtgbuf[h ^ lol][2]; + *buf1++ = t3; + *buf2++ = t3; + *gbuf++ = dtgbuf[h ^ lol][3]; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -6744,27 +31888,11 @@ static void lts_aga_fm0_dpf1_p8_ilores_dhires_spr_genlock(void) denise_cck++; } } -static void lts_aga_fm0_dpf1_p8_ilores_dhires_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb0_p8_ilores_dhires_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb0_p8_ilores_dhires_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb1_p8_ilores_dhires_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb1_p8_ilores_dhires_spr_filtered_genlock(void) +static void lts_aga_fm0_kehb0_p4_ilores_dshres_spr_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm0_ham0_p8_ilores_dhires_spr_genlock(void) +static void lts_aga_fm0_kehb1_p4_ilores_dshres_spr_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -6775,7 +31903,6 @@ 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; @@ -6784,24 +31911,6 @@ static void lts_aga_fm0_ham0_p8_ilores_dhires_spr_genlock(void) if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = decode_ham_pixel_aga(pix0); - gpix0 = get_genlock_transparency((pix0 >> 2) & 63); - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8(); - loaded_pix = getbpl8(); - } - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8(); } uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { @@ -6811,8 +31920,24 @@ static void lts_aga_fm0_ham0_p8_ilores_dhires_spr_genlock(void) sv0 = svt; } } - loaded_pixs[0] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } + } + internal_pixel_cnt += 1; matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u8 gpix2 = 0xff; @@ -6820,24 +31945,6 @@ static void lts_aga_fm0_ham0_p8_ilores_dhires_spr_genlock(void) if (!denise_blank_active) { gpix2 = get_genlock_transparency_border(); dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = decode_ham_pixel_aga(pix2); - gpix2 = get_genlock_transparency((pix2 >> 2) & 63); - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8(); - loaded_pix = getbpl8(); - } - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8(); } uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { @@ -6847,8 +31954,24 @@ static void lts_aga_fm0_ham0_p8_ilores_dhires_spr_genlock(void) sv2 = svt; } } - loaded_pixs[2] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + } + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } + } + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { uae_u32 spix0 = denise_render_sprites2(pix0, sv0); @@ -6860,6 +31983,16 @@ static void lts_aga_fm0_ham0_p8_ilores_dhires_spr_genlock(void) } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + gpix1 = get_genlock_transparency(spix1); + + } + } + dtbuf[h][1] = dpix_val1; + dtgbuf[h][1] = gpix1; if (sv2) { uae_u32 spix2 = denise_render_sprites2(pix2, sv2); if (spix2) { @@ -6870,6 +32003,16 @@ static void lts_aga_fm0_ham0_p8_ilores_dhires_spr_genlock(void) } dtbuf[h][2] = dpix_val2; dtgbuf[h][2] = gpix2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + gpix3 = get_genlock_transparency(spix3); + + } + } + dtbuf[h][3] = dpix_val3; + dtgbuf[h][3] = gpix3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -6879,6 +32022,15 @@ static void lts_aga_fm0_ham0_p8_ilores_dhires_spr_genlock(void) *buf1++ = t0; *buf2++ = t0; *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = dtgbuf[h ^ lol][1]; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -6888,6 +32040,15 @@ static void lts_aga_fm0_ham0_p8_ilores_dhires_spr_genlock(void) *buf1++ = t2; *buf2++ = t2; *gbuf++ = dtgbuf[h ^ lol][2]; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + *gbuf++ = dtgbuf[h ^ lol][3]; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -6911,11 +32072,11 @@ static void lts_aga_fm0_ham0_p8_ilores_dhires_spr_genlock(void) denise_cck++; } } -static void lts_aga_fm0_ham0_p8_ilores_dhires_spr_filtered_genlock(void) +static void lts_aga_fm0_kehb1_p4_ilores_dshres_spr_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm0_ham1_p8_ilores_dhires_spr_genlock(void) +static void lts_aga_fm0_n0_p8_ilores_dshres_spr_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -6938,33 +32099,22 @@ static void lts_aga_fm0_ham1_p8_ilores_dhires_spr_genlock(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - dpix_val0 = decode_ham_pixel_aga(pix0); - gpix0 = get_genlock_transparency((pix0 >> 2) & 63); + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); } last_bpl_pix = pix0; } - bplshiftcnt[0] += 2; + bplshiftcnt[0] += 1; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl8e(); - loaded_pix = getbpl8(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl8o(); + shiftbpl8(); loaded_pix = getbpl8(); } if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e(); + copybpl8(); bplshiftcnt[0] = 0; loaded_pix = getbpl8(); } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl8(); - } uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -6974,7 +32124,43 @@ static void lts_aga_fm0_ham1_p8_ilores_dhires_spr_genlock(void) } } loaded_pixs[0] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; + gpix1 = get_genlock_transparency(pix1 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix1; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8(); + loaded_pix = getbpl8(); + } + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8(); + } + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } + } + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 1; matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u8 gpix2 = 0xff; @@ -6985,43 +32171,68 @@ static void lts_aga_fm0_ham1_p8_ilores_dhires_spr_genlock(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - dpix_val2 = decode_ham_pixel_aga(pix2); - gpix2 = get_genlock_transparency((pix2 >> 2) & 63); + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + gpix2 = get_genlock_transparency(pix2 ^ bplcon4_denise_xor_val); } last_bpl_pix = pix2; } - bplshiftcnt[0] += 2; + bplshiftcnt[0] += 1; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl8e(); + shiftbpl8(); loaded_pix = getbpl8(); } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl8o(); + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8(); + bplshiftcnt[0] = 0; loaded_pix = getbpl8(); } - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e(); + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; + gpix3 = get_genlock_transparency(pix3 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix3; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8(); + loaded_pix = getbpl8(); + } + if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8(); bplshiftcnt[0] = 0; loaded_pix = getbpl8(); } - if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl8(); - } - uae_u32 sv2 = 0; + uae_u32 sv3 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; svt = denise_render_sprites_aga(denise_spr_add); if (!denise_sprite_blank_active && !sprites_hidden) { - sv2 = svt; + sv3 = svt; } } - loaded_pixs[2] = loaded_pix; - internal_pixel_cnt += 2; + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { uae_u32 spix0 = denise_render_sprites2(pix0, sv0); @@ -7033,6 +32244,16 @@ static void lts_aga_fm0_ham1_p8_ilores_dhires_spr_genlock(void) } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + gpix1 = get_genlock_transparency(spix1); + + } + } + dtbuf[h][1] = dpix_val1; + dtgbuf[h][1] = gpix1; if (sv2) { uae_u32 spix2 = denise_render_sprites2(pix2, sv2); if (spix2) { @@ -7043,6 +32264,16 @@ static void lts_aga_fm0_ham1_p8_ilores_dhires_spr_genlock(void) } dtbuf[h][2] = dpix_val2; dtgbuf[h][2] = gpix2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + gpix3 = get_genlock_transparency(spix3); + + } + } + dtbuf[h][3] = dpix_val3; + dtgbuf[h][3] = gpix3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -7052,6 +32283,15 @@ static void lts_aga_fm0_ham1_p8_ilores_dhires_spr_genlock(void) *buf1++ = t0; *buf2++ = t0; *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = dtgbuf[h ^ lol][1]; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -7061,6 +32301,15 @@ static void lts_aga_fm0_ham1_p8_ilores_dhires_spr_genlock(void) *buf1++ = t2; *buf2++ = t2; *gbuf++ = dtgbuf[h ^ lol][2]; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + *gbuf++ = dtgbuf[h ^ lol][3]; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -7084,27 +32333,11 @@ static void lts_aga_fm0_ham1_p8_ilores_dhires_spr_genlock(void) denise_cck++; } } -static void lts_aga_fm0_ham1_p8_ilores_dhires_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb0_p8_ilores_dhires_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb0_p8_ilores_dhires_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb1_p8_ilores_dhires_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb1_p8_ilores_dhires_spr_filtered_genlock(void) +static void lts_aga_fm0_n0_p8_ilores_dshres_spr_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm0_n0_p4_ihires_dhires_genlock(void) +static void lts_aga_fm0_n1_p8_ilores_dshres_spr_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -7117,6 +32350,7 @@ static void lts_aga_fm0_n0_p4_ihires_dhires_genlock(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; @@ -7131,13 +32365,86 @@ static void lts_aga_fm0_n0_p4_ihires_dhires_genlock(void) } last_bpl_pix = pix0; } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4(); + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8e(); + loaded_pix = getbpl8(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl8o(); + loaded_pix = getbpl8(); + } + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8(); + } + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl8(); + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } } - loaded_pix = getbpl4(); loaded_pixs[0] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; + gpix1 = get_genlock_transparency(pix1 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix1; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8e(); + loaded_pix = getbpl8(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl8o(); + loaded_pix = getbpl8(); + } + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8(); + } + if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl8(); + } + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } + } + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u8 gpix2 = 0xff; uae_u32 dpix_val2 = BLANK_COLOR; @@ -7152,129 +32459,126 @@ static void lts_aga_fm0_n0_p4_ihires_dhires_genlock(void) } last_bpl_pix = pix2; } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4(); + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8e(); + loaded_pix = getbpl8(); } - loaded_pix = getbpl4(); - loaded_pixs[2] = loaded_pix; - internal_pixel_cnt += 2; - if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - dtbuf[h][0] = dpix_val0; - dtgbuf[h][0] = gpix0; - dtbuf[h][2] = dpix_val2; - dtgbuf[h][2] = gpix2; - uae_u32 t0 = dtbuf[h ^ lol][0]; - #ifdef DEBUGGER - if (decode_specials_debug) { - t0 = decode_denise_specials_debug(t0, cnt + 0); - } - #endif - *buf1++ = t0; - *buf2++ = t0; - *gbuf++ = dtgbuf[h ^ lol][0]; - uae_u32 t2 = dtbuf[h ^ lol][2]; - #ifdef DEBUGGER - if (decode_specials_debug) { - t2 = decode_denise_specials_debug(t2, cnt + 2); - } - #endif - *buf1++ = t2; - *buf2++ = t2; - *gbuf++ = dtgbuf[h ^ lol][2]; + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl8o(); + loaded_pix = getbpl8(); } - sprites_hidden = sprites_hidden2; - #ifdef DEBUGGER - *debug_dma_dhpos_odd = denise_hcounter; - #endif - denise_hcounter_cmp++; - denise_hcounter_cmp &= 511; - denise_hcounter++; - denise_hcounter &= 511; - denise_hcounter_next++; - denise_hcounter_next &= 511; - } - denise_pixtotal++; - if (denise_pixtotal == 0) { - internal_pixel_start_cnt = internal_pixel_cnt; - } - denise_hcounter = denise_hcounter_new; - if (denise_accurate_mode) { - denise_hcounter_cmp = denise_hcounter_new; - } - denise_cck++; - } -} -static void lts_aga_fm0_n0_p4_ihires_dhires_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_n1_p4_ihires_dhires_genlock(void) -{ - while (denise_cck < denise_endcycle) { - do_denise_cck(denise_linecnt, denise_startpos, denise_cck); - if (lts_changed) return; - for (int h = 0; h < 2; h++) { - if (h) { - denise_hcounter_next = denise_hcounter_new; + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8(); } - int cnt = denise_hcounter << 2; - int cnt_next = denise_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; - uae_u32 dpix_val0 = BLANK_COLOR; + if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl8(); + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { - gpix0 = get_genlock_transparency_border(); - dpix_val0 = bordercolor; + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; + gpix3 = get_genlock_transparency(pix3 ^ bplcon4_denise_xor_val); } - last_bpl_pix = pix0; + last_bpl_pix = pix3; } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4e(); + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8e(); + loaded_pix = getbpl8(); } - if (bpldat_copy[1] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[1]) { - copybpl4o(); + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl8o(); + loaded_pix = getbpl8(); } - loaded_pix = getbpl4(); - loaded_pixs[0] = loaded_pix; - internal_pixel_cnt += 2; - uae_u8 pix2 = 0; - uae_u8 gpix2 = 0xff; - uae_u32 dpix_val2 = BLANK_COLOR; - if (!denise_blank_active) { - gpix2 = get_genlock_transparency_border(); - dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; - gpix2 = get_genlock_transparency(pix2 ^ bplcon4_denise_xor_val); - } - last_bpl_pix = pix2; + if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8(); } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4e(); + if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl8(); } - if (bpldat_copy[1] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[1]) { - copybpl4o(); + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } } - loaded_pix = getbpl4(); - loaded_pixs[2] = loaded_pix; - internal_pixel_cnt += 2; + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + gpix1 = get_genlock_transparency(spix1); + + } + } + dtbuf[h][1] = dpix_val1; + dtgbuf[h][1] = gpix1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } dtbuf[h][2] = dpix_val2; dtgbuf[h][2] = gpix2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + gpix3 = get_genlock_transparency(spix3); + + } + } + dtbuf[h][3] = dpix_val3; + dtgbuf[h][3] = gpix3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -7284,6 +32588,15 @@ static void lts_aga_fm0_n1_p4_ihires_dhires_genlock(void) *buf1++ = t0; *buf2++ = t0; *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = dtgbuf[h ^ lol][1]; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -7293,6 +32606,15 @@ static void lts_aga_fm0_n1_p4_ihires_dhires_genlock(void) *buf1++ = t2; *buf2++ = t2; *gbuf++ = dtgbuf[h ^ lol][2]; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + *gbuf++ = dtgbuf[h ^ lol][3]; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -7316,11 +32638,11 @@ static void lts_aga_fm0_n1_p4_ihires_dhires_genlock(void) denise_cck++; } } -static void lts_aga_fm0_n1_p4_ihires_dhires_filtered_genlock(void) +static void lts_aga_fm0_n1_p8_ilores_dshres_spr_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm0_dpf0_p4_ihires_dhires_genlock(void) +static void lts_aga_fm0_dpf0_p8_ilores_dshres_spr_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -7333,6 +32655,7 @@ static void lts_aga_fm0_dpf0_p4_ihires_dhires_genlock(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; @@ -7352,13 +32675,69 @@ static void lts_aga_fm0_dpf0_p4_ihires_dhires_genlock(void) } last_bpl_pix = pix0; } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4(); + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8(); + loaded_pix = getbpl8(); + } + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8(); + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } } - loaded_pix = getbpl4(); loaded_pixs[0] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + uae_u8 val1 = dpf_lookup[pix1]; + if (dpf_lookup_no[pix1]) { + val1 += dblpfofs[bpldualpf2of]; + } + val1 ^= bplcon4_denise_xor_val; + dpix_val1 = denise_colors.acolors[val1]; + gpix1 = get_genlock_transparency(dpf_lookup[pix1]); + } + last_bpl_pix = pix1; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8(); + loaded_pix = getbpl8(); + } + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8(); + } + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } + } + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u8 gpix2 = 0xff; uae_u32 dpix_val2 = BLANK_COLOR; @@ -7378,18 +32757,109 @@ static void lts_aga_fm0_dpf0_p4_ihires_dhires_genlock(void) } last_bpl_pix = pix2; } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4(); + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8(); + loaded_pix = getbpl8(); + } + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8(); + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + uae_u8 val3 = dpf_lookup[pix3]; + if (dpf_lookup_no[pix3]) { + val3 += dblpfofs[bpldualpf2of]; + } + val3 ^= bplcon4_denise_xor_val; + dpix_val3 = denise_colors.acolors[val3]; + gpix3 = get_genlock_transparency(dpf_lookup[pix3]); + } + last_bpl_pix = pix3; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8(); + loaded_pix = getbpl8(); + } + if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8(); + } + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } } - loaded_pix = getbpl4(); - loaded_pixs[2] = loaded_pix; - internal_pixel_cnt += 2; + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + gpix1 = get_genlock_transparency(spix1); + + } + } + dtbuf[h][1] = dpix_val1; + dtgbuf[h][1] = gpix1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } dtbuf[h][2] = dpix_val2; dtgbuf[h][2] = gpix2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + gpix3 = get_genlock_transparency(spix3); + + } + } + dtbuf[h][3] = dpix_val3; + dtgbuf[h][3] = gpix3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -7399,6 +32869,15 @@ static void lts_aga_fm0_dpf0_p4_ihires_dhires_genlock(void) *buf1++ = t0; *buf2++ = t0; *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = dtgbuf[h ^ lol][1]; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -7408,6 +32887,15 @@ static void lts_aga_fm0_dpf0_p4_ihires_dhires_genlock(void) *buf1++ = t2; *buf2++ = t2; *gbuf++ = dtgbuf[h ^ lol][2]; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + *gbuf++ = dtgbuf[h ^ lol][3]; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -7431,11 +32919,11 @@ static void lts_aga_fm0_dpf0_p4_ihires_dhires_genlock(void) denise_cck++; } } -static void lts_aga_fm0_dpf0_p4_ihires_dhires_filtered_genlock(void) +static void lts_aga_fm0_dpf0_p8_ilores_dshres_spr_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm0_dpf1_p4_ihires_dhires_genlock(void) +static void lts_aga_fm0_dpf1_p8_ilores_dshres_spr_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -7448,6 +32936,7 @@ static void lts_aga_fm0_dpf1_p4_ihires_dhires_genlock(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; @@ -7467,16 +32956,91 @@ static void lts_aga_fm0_dpf1_p4_ihires_dhires_genlock(void) } last_bpl_pix = pix0; } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4e(); + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8e(); + loaded_pix = getbpl8(); } - if (bpldat_copy[1] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[1]) { - copybpl4o(); + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl8o(); + loaded_pix = getbpl8(); + } + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8(); + } + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl8(); + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } } - loaded_pix = getbpl4(); loaded_pixs[0] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + uae_u8 val1 = dpf_lookup[pix1]; + if (dpf_lookup_no[pix1]) { + val1 += dblpfofs[bpldualpf2of]; + } + val1 ^= bplcon4_denise_xor_val; + dpix_val1 = denise_colors.acolors[val1]; + gpix1 = get_genlock_transparency(dpf_lookup[pix1]); + } + last_bpl_pix = pix1; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8e(); + loaded_pix = getbpl8(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl8o(); + loaded_pix = getbpl8(); + } + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8(); + } + if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl8(); + } + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } + } + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u8 gpix2 = 0xff; uae_u32 dpix_val2 = BLANK_COLOR; @@ -7496,21 +33060,131 @@ static void lts_aga_fm0_dpf1_p4_ihires_dhires_genlock(void) } last_bpl_pix = pix2; } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4e(); + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8e(); + loaded_pix = getbpl8(); } - if (bpldat_copy[1] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[1]) { - copybpl4o(); + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl8o(); + loaded_pix = getbpl8(); + } + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8(); + } + if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl8(); + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } } - loaded_pix = getbpl4(); loaded_pixs[2] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + uae_u8 val3 = dpf_lookup[pix3]; + if (dpf_lookup_no[pix3]) { + val3 += dblpfofs[bpldualpf2of]; + } + val3 ^= bplcon4_denise_xor_val; + dpix_val3 = denise_colors.acolors[val3]; + gpix3 = get_genlock_transparency(dpf_lookup[pix3]); + } + last_bpl_pix = pix3; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8e(); + loaded_pix = getbpl8(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl8o(); + loaded_pix = getbpl8(); + } + if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8(); + } + if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl8(); + } + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } + } + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + gpix1 = get_genlock_transparency(spix1); + + } + } + dtbuf[h][1] = dpix_val1; + dtgbuf[h][1] = gpix1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } dtbuf[h][2] = dpix_val2; dtgbuf[h][2] = gpix2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + gpix3 = get_genlock_transparency(spix3); + + } + } + dtbuf[h][3] = dpix_val3; + dtgbuf[h][3] = gpix3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -7520,6 +33194,15 @@ static void lts_aga_fm0_dpf1_p4_ihires_dhires_genlock(void) *buf1++ = t0; *buf2++ = t0; *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = dtgbuf[h ^ lol][1]; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -7529,6 +33212,15 @@ static void lts_aga_fm0_dpf1_p4_ihires_dhires_genlock(void) *buf1++ = t2; *buf2++ = t2; *gbuf++ = dtgbuf[h ^ lol][2]; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + *gbuf++ = dtgbuf[h ^ lol][3]; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -7552,139 +33244,11 @@ static void lts_aga_fm0_dpf1_p4_ihires_dhires_genlock(void) denise_cck++; } } -static void lts_aga_fm0_dpf1_p4_ihires_dhires_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb0_p4_ihires_dhires_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb0_p4_ihires_dhires_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb1_p4_ihires_dhires_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb1_p4_ihires_dhires_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham0_p4_ihires_dhires_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham0_p4_ihires_dhires_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham1_p4_ihires_dhires_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham1_p4_ihires_dhires_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb0_p4_ihires_dhires_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb0_p4_ihires_dhires_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb1_p4_ihires_dhires_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb1_p4_ihires_dhires_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_n0_p8_ihires_dhires_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_n0_p8_ihires_dhires_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_n1_p8_ihires_dhires_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_n1_p8_ihires_dhires_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_dpf0_p8_ihires_dhires_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_dpf0_p8_ihires_dhires_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_dpf1_p8_ihires_dhires_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_dpf1_p8_ihires_dhires_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb0_p8_ihires_dhires_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb0_p8_ihires_dhires_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb1_p8_ihires_dhires_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb1_p8_ihires_dhires_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham0_p8_ihires_dhires_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham0_p8_ihires_dhires_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham1_p8_ihires_dhires_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham1_p8_ihires_dhires_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb0_p8_ihires_dhires_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb0_p8_ihires_dhires_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb1_p8_ihires_dhires_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb1_p8_ihires_dhires_filtered_genlock(void) +static void lts_aga_fm0_dpf1_p8_ilores_dshres_spr_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm0_n0_p4_ihires_dhires_spr_genlock(void) +static void lts_aga_fm0_ehb0_p8_ilores_dshres_spr_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -7695,7 +33259,6 @@ 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; @@ -7704,19 +33267,7 @@ static void lts_aga_fm0_n0_p4_ihires_dhires_spr_genlock(void) if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); - } - last_bpl_pix = pix0; - } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4(); } - loaded_pix = getbpl4(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -7725,8 +33276,24 @@ static void lts_aga_fm0_n0_p4_ihires_dhires_spr_genlock(void) sv0 = svt; } } - loaded_pixs[0] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } + } + internal_pixel_cnt += 1; matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u8 gpix2 = 0xff; @@ -7734,19 +33301,7 @@ static void lts_aga_fm0_n0_p4_ihires_dhires_spr_genlock(void) if (!denise_blank_active) { gpix2 = get_genlock_transparency_border(); dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; - gpix2 = get_genlock_transparency(pix2 ^ bplcon4_denise_xor_val); - } - last_bpl_pix = pix2; - } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4(); } - loaded_pix = getbpl4(); uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -7755,8 +33310,24 @@ static void lts_aga_fm0_n0_p4_ihires_dhires_spr_genlock(void) sv2 = svt; } } - loaded_pixs[2] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + } + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } + } + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { uae_u32 spix0 = denise_render_sprites2(pix0, sv0); @@ -7768,6 +33339,16 @@ static void lts_aga_fm0_n0_p4_ihires_dhires_spr_genlock(void) } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + gpix1 = get_genlock_transparency(spix1); + + } + } + dtbuf[h][1] = dpix_val1; + dtgbuf[h][1] = gpix1; if (sv2) { uae_u32 spix2 = denise_render_sprites2(pix2, sv2); if (spix2) { @@ -7778,6 +33359,16 @@ static void lts_aga_fm0_n0_p4_ihires_dhires_spr_genlock(void) } dtbuf[h][2] = dpix_val2; dtgbuf[h][2] = gpix2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + gpix3 = get_genlock_transparency(spix3); + + } + } + dtbuf[h][3] = dpix_val3; + dtgbuf[h][3] = gpix3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -7787,6 +33378,15 @@ static void lts_aga_fm0_n0_p4_ihires_dhires_spr_genlock(void) *buf1++ = t0; *buf2++ = t0; *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = dtgbuf[h ^ lol][1]; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -7796,6 +33396,15 @@ static void lts_aga_fm0_n0_p4_ihires_dhires_spr_genlock(void) *buf1++ = t2; *buf2++ = t2; *gbuf++ = dtgbuf[h ^ lol][2]; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + *gbuf++ = dtgbuf[h ^ lol][3]; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -7819,11 +33428,11 @@ static void lts_aga_fm0_n0_p4_ihires_dhires_spr_genlock(void) denise_cck++; } } -static void lts_aga_fm0_n0_p4_ihires_dhires_spr_filtered_genlock(void) +static void lts_aga_fm0_ehb0_p8_ilores_dshres_spr_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm0_n1_p4_ihires_dhires_spr_genlock(void) +static void lts_aga_fm0_ehb1_p8_ilores_dshres_spr_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -7834,7 +33443,6 @@ 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; @@ -7843,22 +33451,7 @@ static void lts_aga_fm0_n1_p4_ihires_dhires_spr_genlock(void) if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); - } - last_bpl_pix = pix0; - } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4e(); - } - if (bpldat_copy[1] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[1]) { - copybpl4o(); } - loaded_pix = getbpl4(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -7867,8 +33460,24 @@ static void lts_aga_fm0_n1_p4_ihires_dhires_spr_genlock(void) sv0 = svt; } } - loaded_pixs[0] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } + } + internal_pixel_cnt += 1; matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u8 gpix2 = 0xff; @@ -7876,22 +33485,7 @@ static void lts_aga_fm0_n1_p4_ihires_dhires_spr_genlock(void) if (!denise_blank_active) { gpix2 = get_genlock_transparency_border(); dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; - gpix2 = get_genlock_transparency(pix2 ^ bplcon4_denise_xor_val); - } - last_bpl_pix = pix2; - } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4e(); } - if (bpldat_copy[1] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[1]) { - copybpl4o(); - } - loaded_pix = getbpl4(); uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -7900,8 +33494,24 @@ static void lts_aga_fm0_n1_p4_ihires_dhires_spr_genlock(void) sv2 = svt; } } - loaded_pixs[2] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + } + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } + } + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { uae_u32 spix0 = denise_render_sprites2(pix0, sv0); @@ -7913,6 +33523,16 @@ static void lts_aga_fm0_n1_p4_ihires_dhires_spr_genlock(void) } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + gpix1 = get_genlock_transparency(spix1); + + } + } + dtbuf[h][1] = dpix_val1; + dtgbuf[h][1] = gpix1; if (sv2) { uae_u32 spix2 = denise_render_sprites2(pix2, sv2); if (spix2) { @@ -7923,6 +33543,16 @@ static void lts_aga_fm0_n1_p4_ihires_dhires_spr_genlock(void) } dtbuf[h][2] = dpix_val2; dtgbuf[h][2] = gpix2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + gpix3 = get_genlock_transparency(spix3); + + } + } + dtbuf[h][3] = dpix_val3; + dtgbuf[h][3] = gpix3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -7932,6 +33562,15 @@ static void lts_aga_fm0_n1_p4_ihires_dhires_spr_genlock(void) *buf1++ = t0; *buf2++ = t0; *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = dtgbuf[h ^ lol][1]; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -7941,6 +33580,15 @@ static void lts_aga_fm0_n1_p4_ihires_dhires_spr_genlock(void) *buf1++ = t2; *buf2++ = t2; *gbuf++ = dtgbuf[h ^ lol][2]; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + *gbuf++ = dtgbuf[h ^ lol][3]; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -7964,11 +33612,11 @@ static void lts_aga_fm0_n1_p4_ihires_dhires_spr_genlock(void) denise_cck++; } } -static void lts_aga_fm0_n1_p4_ihires_dhires_spr_filtered_genlock(void) +static void lts_aga_fm0_ehb1_p8_ilores_dshres_spr_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm0_dpf0_p4_ihires_dhires_spr_genlock(void) +static void lts_aga_fm0_ham0_p8_ilores_dshres_spr_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -7991,21 +33639,22 @@ static void lts_aga_fm0_dpf0_p4_ihires_dhires_spr_genlock(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - gpix0 = get_genlock_transparency(dpf_lookup[pix0]); + dpix_val0 = decode_ham_pixel_aga(pix0); + gpix0 = get_genlock_transparency((pix0 >> 2) & 63); } last_bpl_pix = pix0; } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4(); + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8(); + loaded_pix = getbpl8(); + } + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8(); } - loaded_pix = getbpl4(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -8015,7 +33664,43 @@ static void lts_aga_fm0_dpf0_p4_ihires_dhires_spr_genlock(void) } } loaded_pixs[0] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + dpix_val1 = decode_ham_pixel_aga(pix1); + gpix1 = get_genlock_transparency((pix1 >> 2) & 63); + } + last_bpl_pix = pix1; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8(); + loaded_pix = getbpl8(); + } + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8(); + } + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } + } + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 1; matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u8 gpix2 = 0xff; @@ -8026,31 +33711,68 @@ static void lts_aga_fm0_dpf0_p4_ihires_dhires_spr_genlock(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; - gpix2 = get_genlock_transparency(dpf_lookup[pix2]); + dpix_val2 = decode_ham_pixel_aga(pix2); + gpix2 = get_genlock_transparency((pix2 >> 2) & 63); } last_bpl_pix = pix2; } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4(); + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8(); + loaded_pix = getbpl8(); + } + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8(); } - loaded_pix = getbpl4(); uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; svt = denise_render_sprites_aga(denise_spr_add); if (!denise_sprite_blank_active && !sprites_hidden) { - sv2 = svt; + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + dpix_val3 = decode_ham_pixel_aga(pix3); + gpix3 = get_genlock_transparency((pix3 >> 2) & 63); + } + last_bpl_pix = pix3; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8(); + loaded_pix = getbpl8(); + } + if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8(); + } + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; } } - loaded_pixs[2] = loaded_pix; - internal_pixel_cnt += 2; + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { uae_u32 spix0 = denise_render_sprites2(pix0, sv0); @@ -8062,6 +33784,16 @@ static void lts_aga_fm0_dpf0_p4_ihires_dhires_spr_genlock(void) } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + gpix1 = get_genlock_transparency(spix1); + + } + } + dtbuf[h][1] = dpix_val1; + dtgbuf[h][1] = gpix1; if (sv2) { uae_u32 spix2 = denise_render_sprites2(pix2, sv2); if (spix2) { @@ -8072,6 +33804,16 @@ static void lts_aga_fm0_dpf0_p4_ihires_dhires_spr_genlock(void) } dtbuf[h][2] = dpix_val2; dtgbuf[h][2] = gpix2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + gpix3 = get_genlock_transparency(spix3); + + } + } + dtbuf[h][3] = dpix_val3; + dtgbuf[h][3] = gpix3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -8081,6 +33823,15 @@ static void lts_aga_fm0_dpf0_p4_ihires_dhires_spr_genlock(void) *buf1++ = t0; *buf2++ = t0; *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = dtgbuf[h ^ lol][1]; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -8090,6 +33841,15 @@ static void lts_aga_fm0_dpf0_p4_ihires_dhires_spr_genlock(void) *buf1++ = t2; *buf2++ = t2; *gbuf++ = dtgbuf[h ^ lol][2]; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + *gbuf++ = dtgbuf[h ^ lol][3]; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -8113,11 +33873,11 @@ static void lts_aga_fm0_dpf0_p4_ihires_dhires_spr_genlock(void) denise_cck++; } } -static void lts_aga_fm0_dpf0_p4_ihires_dhires_spr_filtered_genlock(void) +static void lts_aga_fm0_ham0_p8_ilores_dshres_spr_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm0_dpf1_p4_ihires_dhires_spr_genlock(void) +static void lts_aga_fm0_ham1_p8_ilores_dshres_spr_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -8140,24 +33900,33 @@ static void lts_aga_fm0_dpf1_p4_ihires_dhires_spr_genlock(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - gpix0 = get_genlock_transparency(dpf_lookup[pix0]); + dpix_val0 = decode_ham_pixel_aga(pix0); + gpix0 = get_genlock_transparency((pix0 >> 2) & 63); } last_bpl_pix = pix0; } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4e(); + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8e(); + loaded_pix = getbpl8(); } - if (bpldat_copy[1] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[1]) { - copybpl4o(); + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl8o(); + loaded_pix = getbpl8(); + } + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8(); + } + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl8(); } - loaded_pix = getbpl4(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -8167,7 +33936,54 @@ static void lts_aga_fm0_dpf1_p4_ihires_dhires_spr_genlock(void) } } loaded_pixs[0] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + dpix_val1 = decode_ham_pixel_aga(pix1); + gpix1 = get_genlock_transparency((pix1 >> 2) & 63); + } + last_bpl_pix = pix1; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8e(); + loaded_pix = getbpl8(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl8o(); + loaded_pix = getbpl8(); + } + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8(); + } + if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl8(); + } + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } + } + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 1; matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u8 gpix2 = 0xff; @@ -8178,24 +33994,33 @@ static void lts_aga_fm0_dpf1_p4_ihires_dhires_spr_genlock(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; - gpix2 = get_genlock_transparency(dpf_lookup[pix2]); + dpix_val2 = decode_ham_pixel_aga(pix2); + gpix2 = get_genlock_transparency((pix2 >> 2) & 63); } last_bpl_pix = pix2; } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4e(); + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8e(); + loaded_pix = getbpl8(); } - if (bpldat_copy[1] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[1]) { - copybpl4o(); + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl8o(); + loaded_pix = getbpl8(); + } + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8(); + } + if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl8(); } - loaded_pix = getbpl4(); uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -8205,7 +34030,54 @@ static void lts_aga_fm0_dpf1_p4_ihires_dhires_spr_genlock(void) } } loaded_pixs[2] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + dpix_val3 = decode_ham_pixel_aga(pix3); + gpix3 = get_genlock_transparency((pix3 >> 2) & 63); + } + last_bpl_pix = pix3; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8e(); + loaded_pix = getbpl8(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl8o(); + loaded_pix = getbpl8(); + } + if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8(); + } + if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl8(); + } + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } + } + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { uae_u32 spix0 = denise_render_sprites2(pix0, sv0); @@ -8217,6 +34089,16 @@ static void lts_aga_fm0_dpf1_p4_ihires_dhires_spr_genlock(void) } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + gpix1 = get_genlock_transparency(spix1); + + } + } + dtbuf[h][1] = dpix_val1; + dtgbuf[h][1] = gpix1; if (sv2) { uae_u32 spix2 = denise_render_sprites2(pix2, sv2); if (spix2) { @@ -8227,6 +34109,16 @@ static void lts_aga_fm0_dpf1_p4_ihires_dhires_spr_genlock(void) } dtbuf[h][2] = dpix_val2; dtgbuf[h][2] = gpix2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + gpix3 = get_genlock_transparency(spix3); + + } + } + dtbuf[h][3] = dpix_val3; + dtgbuf[h][3] = gpix3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -8236,15 +34128,33 @@ static void lts_aga_fm0_dpf1_p4_ihires_dhires_spr_genlock(void) *buf1++ = t0; *buf2++ = t0; *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = dtgbuf[h ^ lol][1]; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { t2 = decode_denise_specials_debug(t2, cnt + 2); } #endif - *buf1++ = t2; - *buf2++ = t2; - *gbuf++ = dtgbuf[h ^ lol][2]; + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + *gbuf++ = dtgbuf[h ^ lol][3]; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -8265,462 +34175,3985 @@ static void lts_aga_fm0_dpf1_p4_ihires_dhires_spr_genlock(void) if (denise_accurate_mode) { denise_hcounter_cmp = denise_hcounter_new; } - denise_cck++; - } -} -static void lts_aga_fm0_dpf1_p4_ihires_dhires_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb0_p4_ihires_dhires_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb0_p4_ihires_dhires_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb1_p4_ihires_dhires_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb1_p4_ihires_dhires_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham0_p4_ihires_dhires_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham0_p4_ihires_dhires_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham1_p4_ihires_dhires_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham1_p4_ihires_dhires_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb0_p4_ihires_dhires_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb0_p4_ihires_dhires_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb1_p4_ihires_dhires_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb1_p4_ihires_dhires_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_n0_p8_ihires_dhires_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_n0_p8_ihires_dhires_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_n1_p8_ihires_dhires_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_n1_p8_ihires_dhires_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_dpf0_p8_ihires_dhires_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_dpf0_p8_ihires_dhires_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_dpf1_p8_ihires_dhires_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_dpf1_p8_ihires_dhires_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb0_p8_ihires_dhires_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb0_p8_ihires_dhires_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb1_p8_ihires_dhires_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb1_p8_ihires_dhires_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham0_p8_ihires_dhires_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham0_p8_ihires_dhires_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham1_p8_ihires_dhires_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham1_p8_ihires_dhires_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb0_p8_ihires_dhires_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb0_p8_ihires_dhires_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb1_p8_ihires_dhires_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb1_p8_ihires_dhires_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_n0_p4_ishres_dhires_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_n0_p4_ishres_dhires_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_n1_p4_ishres_dhires_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_n1_p4_ishres_dhires_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_dpf0_p4_ishres_dhires_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_dpf0_p4_ishres_dhires_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_dpf1_p4_ishres_dhires_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_dpf1_p4_ishres_dhires_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb0_p4_ishres_dhires_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb0_p4_ishres_dhires_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb1_p4_ishres_dhires_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb1_p4_ishres_dhires_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham0_p4_ishres_dhires_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham0_p4_ishres_dhires_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham1_p4_ishres_dhires_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham1_p4_ishres_dhires_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb0_p4_ishres_dhires_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb0_p4_ishres_dhires_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb1_p4_ishres_dhires_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb1_p4_ishres_dhires_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_n0_p8_ishres_dhires_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_n0_p8_ishres_dhires_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_n1_p8_ishres_dhires_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_n1_p8_ishres_dhires_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_dpf0_p8_ishres_dhires_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_dpf0_p8_ishres_dhires_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_dpf1_p8_ishres_dhires_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_dpf1_p8_ishres_dhires_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb0_p8_ishres_dhires_genlock(void) -{ - lts_null(); + denise_cck++; + } } -static void lts_aga_fm0_ehb0_p8_ishres_dhires_filtered_genlock(void) +static void lts_aga_fm0_ham1_p8_ilores_dshres_spr_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm0_ehb1_p8_ishres_dhires_genlock(void) +static void lts_aga_fm0_kehb0_p8_ilores_dshres_spr_genlock(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } + } + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + } + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } + } + internal_pixel_cnt += 1; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + gpix1 = get_genlock_transparency(spix1); + + } + } + dtbuf[h][1] = dpix_val1; + dtgbuf[h][1] = gpix1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + gpix3 = get_genlock_transparency(spix3); + + } + } + dtbuf[h][3] = dpix_val3; + dtgbuf[h][3] = gpix3; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = dtgbuf[h ^ lol][1]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + *gbuf++ = dtgbuf[h ^ lol][3]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm0_ehb1_p8_ishres_dhires_filtered_genlock(void) +static void lts_aga_fm0_kehb0_p8_ilores_dshres_spr_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm0_ham0_p8_ishres_dhires_genlock(void) +static void lts_aga_fm0_kehb1_p8_ilores_dshres_spr_genlock(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } + } + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + } + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } + } + internal_pixel_cnt += 1; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + gpix1 = get_genlock_transparency(spix1); + + } + } + dtbuf[h][1] = dpix_val1; + dtgbuf[h][1] = gpix1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + gpix3 = get_genlock_transparency(spix3); + + } + } + dtbuf[h][3] = dpix_val3; + dtgbuf[h][3] = gpix3; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = dtgbuf[h ^ lol][1]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + *gbuf++ = dtgbuf[h ^ lol][3]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm0_ham0_p8_ishres_dhires_filtered_genlock(void) +static void lts_aga_fm0_kehb1_p8_ilores_dshres_spr_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm0_ham1_p8_ishres_dhires_genlock(void) +static void lts_aga_fm0_n0_p4_ihires_dshres_genlock(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_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; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4(); + loaded_pix = getbpl4(); + } + if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4(); + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; + gpix1 = get_genlock_transparency(pix1 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix1; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4(); + loaded_pix = getbpl4(); + } + if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4(); + } + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 1; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + gpix2 = get_genlock_transparency(pix2 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4(); + loaded_pix = getbpl4(); + } + if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4(); + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; + gpix3 = get_genlock_transparency(pix3 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix3; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4(); + loaded_pix = getbpl4(); + } + if (bpldat_copy[0] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4(); + } + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 1; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][1] = dpix_val1; + dtgbuf[h][1] = gpix1; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + dtbuf[h][3] = dpix_val3; + dtgbuf[h][3] = gpix3; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = dtgbuf[h ^ lol][1]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + *gbuf++ = dtgbuf[h ^ lol][3]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm0_ham1_p8_ishres_dhires_filtered_genlock(void) +static void lts_aga_fm0_n0_p4_ihires_dshres_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm0_kehb0_p8_ishres_dhires_genlock(void) +static void lts_aga_fm0_n1_p4_ihires_dshres_genlock(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_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; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4e(); + loaded_pix = getbpl4(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl4o(); + loaded_pix = getbpl4(); + } + if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4(); + } + if (bpldat_copy[1] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[1]) { + copybpl4o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl4(); + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; + gpix1 = get_genlock_transparency(pix1 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix1; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4e(); + loaded_pix = getbpl4(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl4o(); + loaded_pix = getbpl4(); + } + if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4(); + } + if (bpldat_copy[1] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[1]) { + copybpl4o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl4(); + } + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 1; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + gpix2 = get_genlock_transparency(pix2 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4e(); + loaded_pix = getbpl4(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl4o(); + loaded_pix = getbpl4(); + } + if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4(); + } + if (bpldat_copy[1] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[1]) { + copybpl4o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl4(); + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; + gpix3 = get_genlock_transparency(pix3 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix3; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4e(); + loaded_pix = getbpl4(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl4o(); + loaded_pix = getbpl4(); + } + if (bpldat_copy[0] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4(); + } + if (bpldat_copy[1] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[1]) { + copybpl4o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl4(); + } + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 1; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][1] = dpix_val1; + dtgbuf[h][1] = gpix1; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + dtbuf[h][3] = dpix_val3; + dtgbuf[h][3] = gpix3; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = dtgbuf[h ^ lol][1]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + *gbuf++ = dtgbuf[h ^ lol][3]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm0_kehb0_p8_ishres_dhires_filtered_genlock(void) +static void lts_aga_fm0_n1_p4_ihires_dshres_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm0_kehb1_p8_ishres_dhires_genlock(void) +static void lts_aga_fm0_dpf0_p4_ihires_dshres_genlock(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_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; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + gpix0 = get_genlock_transparency(dpf_lookup[pix0]); + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4(); + loaded_pix = getbpl4(); + } + if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4(); + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + uae_u8 val1 = dpf_lookup[pix1]; + if (dpf_lookup_no[pix1]) { + val1 += dblpfofs[bpldualpf2of]; + } + val1 ^= bplcon4_denise_xor_val; + dpix_val1 = denise_colors.acolors[val1]; + gpix1 = get_genlock_transparency(dpf_lookup[pix1]); + } + last_bpl_pix = pix1; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4(); + loaded_pix = getbpl4(); + } + if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4(); + } + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 1; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; + gpix2 = get_genlock_transparency(dpf_lookup[pix2]); + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4(); + loaded_pix = getbpl4(); + } + if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4(); + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + uae_u8 val3 = dpf_lookup[pix3]; + if (dpf_lookup_no[pix3]) { + val3 += dblpfofs[bpldualpf2of]; + } + val3 ^= bplcon4_denise_xor_val; + dpix_val3 = denise_colors.acolors[val3]; + gpix3 = get_genlock_transparency(dpf_lookup[pix3]); + } + last_bpl_pix = pix3; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4(); + loaded_pix = getbpl4(); + } + if (bpldat_copy[0] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4(); + } + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 1; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][1] = dpix_val1; + dtgbuf[h][1] = gpix1; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + dtbuf[h][3] = dpix_val3; + dtgbuf[h][3] = gpix3; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = dtgbuf[h ^ lol][1]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + *gbuf++ = dtgbuf[h ^ lol][3]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm0_kehb1_p8_ishres_dhires_filtered_genlock(void) +static void lts_aga_fm0_dpf0_p4_ihires_dshres_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm0_n0_p4_ishres_dhires_spr_genlock(void) +static void lts_aga_fm0_dpf1_p4_ihires_dshres_genlock(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_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; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + gpix0 = get_genlock_transparency(dpf_lookup[pix0]); + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4e(); + loaded_pix = getbpl4(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl4o(); + loaded_pix = getbpl4(); + } + if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4(); + } + if (bpldat_copy[1] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[1]) { + copybpl4o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl4(); + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + uae_u8 val1 = dpf_lookup[pix1]; + if (dpf_lookup_no[pix1]) { + val1 += dblpfofs[bpldualpf2of]; + } + val1 ^= bplcon4_denise_xor_val; + dpix_val1 = denise_colors.acolors[val1]; + gpix1 = get_genlock_transparency(dpf_lookup[pix1]); + } + last_bpl_pix = pix1; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4e(); + loaded_pix = getbpl4(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl4o(); + loaded_pix = getbpl4(); + } + if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4(); + } + if (bpldat_copy[1] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[1]) { + copybpl4o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl4(); + } + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 1; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; + gpix2 = get_genlock_transparency(dpf_lookup[pix2]); + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4e(); + loaded_pix = getbpl4(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl4o(); + loaded_pix = getbpl4(); + } + if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4(); + } + if (bpldat_copy[1] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[1]) { + copybpl4o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl4(); + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + uae_u8 val3 = dpf_lookup[pix3]; + if (dpf_lookup_no[pix3]) { + val3 += dblpfofs[bpldualpf2of]; + } + val3 ^= bplcon4_denise_xor_val; + dpix_val3 = denise_colors.acolors[val3]; + gpix3 = get_genlock_transparency(dpf_lookup[pix3]); + } + last_bpl_pix = pix3; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4e(); + loaded_pix = getbpl4(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl4o(); + loaded_pix = getbpl4(); + } + if (bpldat_copy[0] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4(); + } + if (bpldat_copy[1] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[1]) { + copybpl4o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl4(); + } + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 1; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][1] = dpix_val1; + dtgbuf[h][1] = gpix1; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + dtbuf[h][3] = dpix_val3; + dtgbuf[h][3] = gpix3; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = dtgbuf[h ^ lol][1]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + *gbuf++ = dtgbuf[h ^ lol][3]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm0_n0_p4_ishres_dhires_spr_filtered_genlock(void) +static void lts_aga_fm0_dpf1_p4_ihires_dshres_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm0_n1_p4_ishres_dhires_spr_genlock(void) +static void lts_aga_fm0_ehb0_p4_ihires_dshres_genlock(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 1; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 1; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][1] = dpix_val1; + dtgbuf[h][1] = gpix1; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + dtbuf[h][3] = dpix_val3; + dtgbuf[h][3] = gpix3; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = dtgbuf[h ^ lol][1]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + *gbuf++ = dtgbuf[h ^ lol][3]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm0_n1_p4_ishres_dhires_spr_filtered_genlock(void) +static void lts_aga_fm0_ehb0_p4_ihires_dshres_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm0_dpf0_p4_ishres_dhires_spr_genlock(void) +static void lts_aga_fm0_ehb1_p4_ihires_dshres_genlock(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 1; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 1; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][1] = dpix_val1; + dtgbuf[h][1] = gpix1; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + dtbuf[h][3] = dpix_val3; + dtgbuf[h][3] = gpix3; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = dtgbuf[h ^ lol][1]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + *gbuf++ = dtgbuf[h ^ lol][3]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm0_dpf0_p4_ishres_dhires_spr_filtered_genlock(void) +static void lts_aga_fm0_ehb1_p4_ihires_dshres_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm0_dpf1_p4_ishres_dhires_spr_genlock(void) +static void lts_aga_fm0_ham0_p4_ihires_dshres_genlock(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 1; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 1; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][1] = dpix_val1; + dtgbuf[h][1] = gpix1; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + dtbuf[h][3] = dpix_val3; + dtgbuf[h][3] = gpix3; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = dtgbuf[h ^ lol][1]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + *gbuf++ = dtgbuf[h ^ lol][3]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm0_dpf1_p4_ishres_dhires_spr_filtered_genlock(void) +static void lts_aga_fm0_ham0_p4_ihires_dshres_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm0_ehb0_p4_ishres_dhires_spr_genlock(void) +static void lts_aga_fm0_ham1_p4_ihires_dshres_genlock(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 1; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 1; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][1] = dpix_val1; + dtgbuf[h][1] = gpix1; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + dtbuf[h][3] = dpix_val3; + dtgbuf[h][3] = gpix3; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = dtgbuf[h ^ lol][1]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + *gbuf++ = dtgbuf[h ^ lol][3]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm0_ehb0_p4_ishres_dhires_spr_filtered_genlock(void) +static void lts_aga_fm0_ham1_p4_ihires_dshres_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm0_ehb1_p4_ishres_dhires_spr_genlock(void) +static void lts_aga_fm0_kehb0_p4_ihires_dshres_genlock(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 1; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 1; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][1] = dpix_val1; + dtgbuf[h][1] = gpix1; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + dtbuf[h][3] = dpix_val3; + dtgbuf[h][3] = gpix3; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = dtgbuf[h ^ lol][1]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + *gbuf++ = dtgbuf[h ^ lol][3]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm0_ehb1_p4_ishres_dhires_spr_filtered_genlock(void) +static void lts_aga_fm0_kehb0_p4_ihires_dshres_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm0_ham0_p4_ishres_dhires_spr_genlock(void) +static void lts_aga_fm0_kehb1_p4_ihires_dshres_genlock(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 1; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 1; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][1] = dpix_val1; + dtgbuf[h][1] = gpix1; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + dtbuf[h][3] = dpix_val3; + dtgbuf[h][3] = gpix3; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = dtgbuf[h ^ lol][1]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + *gbuf++ = dtgbuf[h ^ lol][3]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm0_ham0_p4_ishres_dhires_spr_filtered_genlock(void) +static void lts_aga_fm0_kehb1_p4_ihires_dshres_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm0_ham1_p4_ishres_dhires_spr_genlock(void) +static void lts_aga_fm0_n0_p8_ihires_dshres_genlock(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 1; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 1; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][1] = dpix_val1; + dtgbuf[h][1] = gpix1; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + dtbuf[h][3] = dpix_val3; + dtgbuf[h][3] = gpix3; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = dtgbuf[h ^ lol][1]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + *gbuf++ = dtgbuf[h ^ lol][3]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm0_ham1_p4_ishres_dhires_spr_filtered_genlock(void) +static void lts_aga_fm0_n0_p8_ihires_dshres_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm0_kehb0_p4_ishres_dhires_spr_genlock(void) +static void lts_aga_fm0_n1_p8_ihires_dshres_genlock(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 1; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 1; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][1] = dpix_val1; + dtgbuf[h][1] = gpix1; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + dtbuf[h][3] = dpix_val3; + dtgbuf[h][3] = gpix3; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = dtgbuf[h ^ lol][1]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + *gbuf++ = dtgbuf[h ^ lol][3]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm0_kehb0_p4_ishres_dhires_spr_filtered_genlock(void) +static void lts_aga_fm0_n1_p8_ihires_dshres_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm0_kehb1_p4_ishres_dhires_spr_genlock(void) +static void lts_aga_fm0_dpf0_p8_ihires_dshres_genlock(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 1; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 1; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][1] = dpix_val1; + dtgbuf[h][1] = gpix1; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + dtbuf[h][3] = dpix_val3; + dtgbuf[h][3] = gpix3; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = dtgbuf[h ^ lol][1]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + *gbuf++ = dtgbuf[h ^ lol][3]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm0_kehb1_p4_ishres_dhires_spr_filtered_genlock(void) +static void lts_aga_fm0_dpf0_p8_ihires_dshres_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm0_n0_p8_ishres_dhires_spr_genlock(void) +static void lts_aga_fm0_dpf1_p8_ihires_dshres_genlock(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 1; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 1; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][1] = dpix_val1; + dtgbuf[h][1] = gpix1; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + dtbuf[h][3] = dpix_val3; + dtgbuf[h][3] = gpix3; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = dtgbuf[h ^ lol][1]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + *gbuf++ = dtgbuf[h ^ lol][3]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm0_n0_p8_ishres_dhires_spr_filtered_genlock(void) +static void lts_aga_fm0_dpf1_p8_ihires_dshres_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm0_n1_p8_ishres_dhires_spr_genlock(void) +static void lts_aga_fm0_ehb0_p8_ihires_dshres_genlock(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 1; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 1; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][1] = dpix_val1; + dtgbuf[h][1] = gpix1; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + dtbuf[h][3] = dpix_val3; + dtgbuf[h][3] = gpix3; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = dtgbuf[h ^ lol][1]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + *gbuf++ = dtgbuf[h ^ lol][3]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm0_n1_p8_ishres_dhires_spr_filtered_genlock(void) +static void lts_aga_fm0_ehb0_p8_ihires_dshres_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm0_dpf0_p8_ishres_dhires_spr_genlock(void) +static void lts_aga_fm0_ehb1_p8_ihires_dshres_genlock(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 1; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 1; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][1] = dpix_val1; + dtgbuf[h][1] = gpix1; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + dtbuf[h][3] = dpix_val3; + dtgbuf[h][3] = gpix3; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = dtgbuf[h ^ lol][1]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + *gbuf++ = dtgbuf[h ^ lol][3]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm0_dpf0_p8_ishres_dhires_spr_filtered_genlock(void) +static void lts_aga_fm0_ehb1_p8_ihires_dshres_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm0_dpf1_p8_ishres_dhires_spr_genlock(void) +static void lts_aga_fm0_ham0_p8_ihires_dshres_genlock(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 1; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 1; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][1] = dpix_val1; + dtgbuf[h][1] = gpix1; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + dtbuf[h][3] = dpix_val3; + dtgbuf[h][3] = gpix3; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = dtgbuf[h ^ lol][1]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + *gbuf++ = dtgbuf[h ^ lol][3]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm0_dpf1_p8_ishres_dhires_spr_filtered_genlock(void) +static void lts_aga_fm0_ham0_p8_ihires_dshres_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm0_ehb0_p8_ishres_dhires_spr_genlock(void) +static void lts_aga_fm0_ham1_p8_ihires_dshres_genlock(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 1; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 1; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][1] = dpix_val1; + dtgbuf[h][1] = gpix1; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + dtbuf[h][3] = dpix_val3; + dtgbuf[h][3] = gpix3; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = dtgbuf[h ^ lol][1]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + *gbuf++ = dtgbuf[h ^ lol][3]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm0_ehb0_p8_ishres_dhires_spr_filtered_genlock(void) +static void lts_aga_fm0_ham1_p8_ihires_dshres_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm0_ehb1_p8_ishres_dhires_spr_genlock(void) +static void lts_aga_fm0_kehb0_p8_ihires_dshres_genlock(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 1; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 1; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][1] = dpix_val1; + dtgbuf[h][1] = gpix1; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + dtbuf[h][3] = dpix_val3; + dtgbuf[h][3] = gpix3; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = dtgbuf[h ^ lol][1]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + *gbuf++ = dtgbuf[h ^ lol][3]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm0_ehb1_p8_ishres_dhires_spr_filtered_genlock(void) +static void lts_aga_fm0_kehb0_p8_ihires_dshres_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm0_ham0_p8_ishres_dhires_spr_genlock(void) +static void lts_aga_fm0_kehb1_p8_ihires_dshres_genlock(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 1; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 1; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][1] = dpix_val1; + dtgbuf[h][1] = gpix1; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + dtbuf[h][3] = dpix_val3; + dtgbuf[h][3] = gpix3; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = dtgbuf[h ^ lol][1]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + *gbuf++ = dtgbuf[h ^ lol][3]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm0_ham0_p8_ishres_dhires_spr_filtered_genlock(void) +static void lts_aga_fm0_kehb1_p8_ihires_dshres_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm0_ham1_p8_ishres_dhires_spr_genlock(void) +static void lts_aga_fm0_n0_p4_ihires_dshres_spr_genlock(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4(); + loaded_pix = getbpl4(); + } + if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4(); + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; + gpix1 = get_genlock_transparency(pix1 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix1; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4(); + loaded_pix = getbpl4(); + } + if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4(); + } + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } + } + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + gpix2 = get_genlock_transparency(pix2 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4(); + loaded_pix = getbpl4(); + } + if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4(); + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; + gpix3 = get_genlock_transparency(pix3 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix3; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4(); + loaded_pix = getbpl4(); + } + if (bpldat_copy[0] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4(); + } + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } + } + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 1; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + gpix1 = get_genlock_transparency(spix1); + + } + } + dtbuf[h][1] = dpix_val1; + dtgbuf[h][1] = gpix1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + gpix3 = get_genlock_transparency(spix3); + + } + } + dtbuf[h][3] = dpix_val3; + dtgbuf[h][3] = gpix3; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = dtgbuf[h ^ lol][1]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + *gbuf++ = dtgbuf[h ^ lol][3]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm0_ham1_p8_ishres_dhires_spr_filtered_genlock(void) +static void lts_aga_fm0_n0_p4_ihires_dshres_spr_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm0_kehb0_p8_ishres_dhires_spr_genlock(void) +static void lts_aga_fm0_n1_p4_ihires_dshres_spr_genlock(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4e(); + loaded_pix = getbpl4(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl4o(); + loaded_pix = getbpl4(); + } + if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4(); + } + if (bpldat_copy[1] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[1]) { + copybpl4o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl4(); + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; + gpix1 = get_genlock_transparency(pix1 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix1; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4e(); + loaded_pix = getbpl4(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl4o(); + loaded_pix = getbpl4(); + } + if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4(); + } + if (bpldat_copy[1] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[1]) { + copybpl4o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl4(); + } + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } + } + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + gpix2 = get_genlock_transparency(pix2 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4e(); + loaded_pix = getbpl4(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl4o(); + loaded_pix = getbpl4(); + } + if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4(); + } + if (bpldat_copy[1] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[1]) { + copybpl4o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl4(); + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; + gpix3 = get_genlock_transparency(pix3 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix3; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4e(); + loaded_pix = getbpl4(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl4o(); + loaded_pix = getbpl4(); + } + if (bpldat_copy[0] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4(); + } + if (bpldat_copy[1] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[1]) { + copybpl4o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl4(); + } + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } + } + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 1; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + gpix1 = get_genlock_transparency(spix1); + + } + } + dtbuf[h][1] = dpix_val1; + dtgbuf[h][1] = gpix1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + gpix3 = get_genlock_transparency(spix3); + + } + } + dtbuf[h][3] = dpix_val3; + dtgbuf[h][3] = gpix3; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = dtgbuf[h ^ lol][1]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + *gbuf++ = dtgbuf[h ^ lol][3]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm0_kehb0_p8_ishres_dhires_spr_filtered_genlock(void) +static void lts_aga_fm0_n1_p4_ihires_dshres_spr_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm0_kehb1_p8_ishres_dhires_spr_genlock(void) +static void lts_aga_fm0_dpf0_p4_ihires_dshres_spr_genlock(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + gpix0 = get_genlock_transparency(dpf_lookup[pix0]); + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4(); + loaded_pix = getbpl4(); + } + if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4(); + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + uae_u8 val1 = dpf_lookup[pix1]; + if (dpf_lookup_no[pix1]) { + val1 += dblpfofs[bpldualpf2of]; + } + val1 ^= bplcon4_denise_xor_val; + dpix_val1 = denise_colors.acolors[val1]; + gpix1 = get_genlock_transparency(dpf_lookup[pix1]); + } + last_bpl_pix = pix1; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4(); + loaded_pix = getbpl4(); + } + if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4(); + } + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } + } + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; + gpix2 = get_genlock_transparency(dpf_lookup[pix2]); + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4(); + loaded_pix = getbpl4(); + } + if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4(); + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + uae_u8 val3 = dpf_lookup[pix3]; + if (dpf_lookup_no[pix3]) { + val3 += dblpfofs[bpldualpf2of]; + } + val3 ^= bplcon4_denise_xor_val; + dpix_val3 = denise_colors.acolors[val3]; + gpix3 = get_genlock_transparency(dpf_lookup[pix3]); + } + last_bpl_pix = pix3; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4(); + loaded_pix = getbpl4(); + } + if (bpldat_copy[0] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4(); + } + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } + } + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 1; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + gpix1 = get_genlock_transparency(spix1); + + } + } + dtbuf[h][1] = dpix_val1; + dtgbuf[h][1] = gpix1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + gpix3 = get_genlock_transparency(spix3); + + } + } + dtbuf[h][3] = dpix_val3; + dtgbuf[h][3] = gpix3; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = dtgbuf[h ^ lol][1]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + *gbuf++ = dtgbuf[h ^ lol][3]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm0_kehb1_p8_ishres_dhires_spr_filtered_genlock(void) +static void lts_aga_fm0_dpf0_p4_ihires_dshres_spr_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm0_n0_p4_ilores_dshres_genlock(void) +static void lts_aga_fm0_dpf1_p4_ihires_dshres_spr_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -8733,6 +38166,7 @@ static void lts_aga_fm0_n0_p4_ilores_dshres_genlock(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; @@ -8742,24 +38176,49 @@ static void lts_aga_fm0_n0_p4_ilores_dshres_genlock(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + gpix0 = get_genlock_transparency(dpf_lookup[pix0]); } last_bpl_pix = pix0; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl4(); + shiftbpl4e(); loaded_pix = getbpl4(); } - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4(); + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl4o(); + loaded_pix = getbpl4(); + } + if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4e(); bplshiftcnt[0] = 0; loaded_pix = getbpl4(); } + if (bpldat_copy[1] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[1]) { + copybpl4o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl4(); + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u8 gpix1 = 0xff; uae_u32 dpix_val1 = BLANK_COLOR; @@ -8769,24 +38228,49 @@ static void lts_aga_fm0_n0_p4_ilores_dshres_genlock(void) if (denise_hdiw && bpl1dat_trigger) { pix1 = loaded_pixs[1]; clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; - gpix1 = get_genlock_transparency(pix1 ^ bplcon4_denise_xor_val); + uae_u8 val1 = dpf_lookup[pix1]; + if (dpf_lookup_no[pix1]) { + val1 += dblpfofs[bpldualpf2of]; + } + val1 ^= bplcon4_denise_xor_val; + dpix_val1 = denise_colors.acolors[val1]; + gpix1 = get_genlock_transparency(dpf_lookup[pix1]); } last_bpl_pix = pix1; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl4(); + shiftbpl4e(); loaded_pix = getbpl4(); } - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4(); + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl4o(); + loaded_pix = getbpl4(); + } + if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4e(); bplshiftcnt[0] = 0; loaded_pix = getbpl4(); } + if (bpldat_copy[1] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[1]) { + copybpl4o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl4(); + } + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } + } loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u8 gpix2 = 0xff; uae_u32 dpix_val2 = BLANK_COLOR; @@ -8796,24 +38280,49 @@ static void lts_aga_fm0_n0_p4_ilores_dshres_genlock(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; - gpix2 = get_genlock_transparency(pix2 ^ bplcon4_denise_xor_val); + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; + gpix2 = get_genlock_transparency(dpf_lookup[pix2]); } last_bpl_pix = pix2; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl4(); + shiftbpl4e(); loaded_pix = getbpl4(); } - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4(); + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl4o(); + loaded_pix = getbpl4(); + } + if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4e(); bplshiftcnt[0] = 0; loaded_pix = getbpl4(); } + if (bpldat_copy[1] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[1]) { + copybpl4o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl4(); + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u8 gpix3 = 0xff; uae_u32 dpix_val3 = BLANK_COLOR; @@ -8823,31 +38332,87 @@ static void lts_aga_fm0_n0_p4_ilores_dshres_genlock(void) if (denise_hdiw && bpl1dat_trigger) { pix3 = loaded_pixs[3]; clxdat |= bplcoltable[pix3]; - dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; - gpix3 = get_genlock_transparency(pix3 ^ bplcon4_denise_xor_val); + uae_u8 val3 = dpf_lookup[pix3]; + if (dpf_lookup_no[pix3]) { + val3 += dblpfofs[bpldualpf2of]; + } + val3 ^= bplcon4_denise_xor_val; + dpix_val3 = denise_colors.acolors[val3]; + gpix3 = get_genlock_transparency(dpf_lookup[pix3]); } last_bpl_pix = pix3; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl4(); + shiftbpl4e(); loaded_pix = getbpl4(); } - if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4(); + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl4o(); + loaded_pix = getbpl4(); + } + if (bpldat_copy[0] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4e(); bplshiftcnt[0] = 0; loaded_pix = getbpl4(); } + if (bpldat_copy[1] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[1]) { + copybpl4o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl4(); + } + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } + } loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + gpix1 = get_genlock_transparency(spix1); + + } + } dtbuf[h][1] = dpix_val1; dtgbuf[h][1] = gpix1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } dtbuf[h][2] = dpix_val2; dtgbuf[h][2] = gpix2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + gpix3 = get_genlock_transparency(spix3); + + } + } dtbuf[h][3] = dpix_val3; dtgbuf[h][3] = gpix3; uae_u32 t0 = dtbuf[h ^ lol][0]; @@ -8909,11 +38474,11 @@ static void lts_aga_fm0_n0_p4_ilores_dshres_genlock(void) denise_cck++; } } -static void lts_aga_fm0_n0_p4_ilores_dshres_filtered_genlock(void) +static void lts_aga_fm0_dpf1_p4_ihires_dshres_spr_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm0_n1_p4_ilores_dshres_genlock(void) +static void lts_aga_fm0_ehb0_p4_ihires_dshres_spr_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -8924,167 +38489,114 @@ 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; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4e(); - loaded_pix = getbpl4(); - } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl4o(); - loaded_pix = getbpl4(); - } - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4(); } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl4o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl4(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u8 gpix1 = 0xff; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { gpix1 = get_genlock_transparency_border(); dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; - gpix1 = get_genlock_transparency(pix1 ^ bplcon4_denise_xor_val); - } - last_bpl_pix = pix1; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4e(); - loaded_pix = getbpl4(); - } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl4o(); - loaded_pix = getbpl4(); - } - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4(); } - if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { - copybpl4o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl4(); + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } } - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u8 gpix2 = 0xff; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { gpix2 = get_genlock_transparency_border(); dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; - gpix2 = get_genlock_transparency(pix2 ^ bplcon4_denise_xor_val); - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4e(); - loaded_pix = getbpl4(); - } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl4o(); - loaded_pix = getbpl4(); - } - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4(); } - if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { - copybpl4o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl4(); + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } } - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u8 gpix3 = 0xff; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { gpix3 = get_genlock_transparency_border(); dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; - gpix3 = get_genlock_transparency(pix3 ^ bplcon4_denise_xor_val); - } - last_bpl_pix = pix3; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4e(); - loaded_pix = getbpl4(); - } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl4o(); - loaded_pix = getbpl4(); - } - if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4(); } - if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) { - copybpl4o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl4(); + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } } - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + gpix1 = get_genlock_transparency(spix1); + + } + } dtbuf[h][1] = dpix_val1; dtgbuf[h][1] = gpix1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } dtbuf[h][2] = dpix_val2; dtgbuf[h][2] = gpix2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + gpix3 = get_genlock_transparency(spix3); + + } + } dtbuf[h][3] = dpix_val3; dtgbuf[h][3] = gpix3; uae_u32 t0 = dtbuf[h ^ lol][0]; @@ -9146,11 +38658,11 @@ static void lts_aga_fm0_n1_p4_ilores_dshres_genlock(void) denise_cck++; } } -static void lts_aga_fm0_n1_p4_ilores_dshres_filtered_genlock(void) +static void lts_aga_fm0_ehb0_p4_ihires_dshres_spr_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm0_dpf0_p4_ilores_dshres_genlock(void) +static void lts_aga_fm0_ehb1_p4_ihires_dshres_spr_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -9161,143 +38673,114 @@ 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; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - gpix0 = get_genlock_transparency(dpf_lookup[pix0]); - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4(); - loaded_pix = getbpl4(); } - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u8 gpix1 = 0xff; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { gpix1 = get_genlock_transparency_border(); dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - if (dpf_lookup_no[pix1]) { - val1 += dblpfofs[bpldualpf2of]; - } - val1 ^= bplcon4_denise_xor_val; - dpix_val1 = denise_colors.acolors[val1]; - gpix1 = get_genlock_transparency(dpf_lookup[pix1]); - } - last_bpl_pix = pix1; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4(); - loaded_pix = getbpl4(); } - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4(); + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } } - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u8 gpix2 = 0xff; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { gpix2 = get_genlock_transparency_border(); dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; - gpix2 = get_genlock_transparency(dpf_lookup[pix2]); - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4(); - loaded_pix = getbpl4(); } - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4(); + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } } - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u8 gpix3 = 0xff; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { gpix3 = get_genlock_transparency_border(); dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - uae_u8 val3 = dpf_lookup[pix3]; - if (dpf_lookup_no[pix3]) { - val3 += dblpfofs[bpldualpf2of]; - } - val3 ^= bplcon4_denise_xor_val; - dpix_val3 = denise_colors.acolors[val3]; - gpix3 = get_genlock_transparency(dpf_lookup[pix3]); - } - last_bpl_pix = pix3; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4(); - loaded_pix = getbpl4(); } - if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4(); + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } } - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + gpix1 = get_genlock_transparency(spix1); + + } + } dtbuf[h][1] = dpix_val1; dtgbuf[h][1] = gpix1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } dtbuf[h][2] = dpix_val2; dtgbuf[h][2] = gpix2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + gpix3 = get_genlock_transparency(spix3); + + } + } dtbuf[h][3] = dpix_val3; dtgbuf[h][3] = gpix3; uae_u32 t0 = dtbuf[h ^ lol][0]; @@ -9359,11 +38842,11 @@ static void lts_aga_fm0_dpf0_p4_ilores_dshres_genlock(void) denise_cck++; } } -static void lts_aga_fm0_dpf0_p4_ilores_dshres_filtered_genlock(void) +static void lts_aga_fm0_ehb1_p4_ihires_dshres_spr_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm0_dpf1_p4_ilores_dshres_genlock(void) +static void lts_aga_fm0_ham0_p4_ihires_dshres_spr_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -9374,187 +38857,114 @@ 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; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - gpix0 = get_genlock_transparency(dpf_lookup[pix0]); - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4e(); - loaded_pix = getbpl4(); - } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl4o(); - loaded_pix = getbpl4(); - } - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4(); } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl4o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl4(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u8 gpix1 = 0xff; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { gpix1 = get_genlock_transparency_border(); dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - if (dpf_lookup_no[pix1]) { - val1 += dblpfofs[bpldualpf2of]; - } - val1 ^= bplcon4_denise_xor_val; - dpix_val1 = denise_colors.acolors[val1]; - gpix1 = get_genlock_transparency(dpf_lookup[pix1]); - } - last_bpl_pix = pix1; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4e(); - loaded_pix = getbpl4(); - } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl4o(); - loaded_pix = getbpl4(); - } - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4(); } - if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { - copybpl4o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl4(); + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } } - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u8 gpix2 = 0xff; - uae_u32 dpix_val2 = BLANK_COLOR; - if (!denise_blank_active) { - gpix2 = get_genlock_transparency_border(); - dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; - gpix2 = get_genlock_transparency(dpf_lookup[pix2]); - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4e(); - loaded_pix = getbpl4(); - } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl4o(); - loaded_pix = getbpl4(); - } - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4(); - } - if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { - copybpl4o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl4(); - } - loaded_pixs[2] = loaded_pix; - internal_pixel_cnt += 1; - uae_u8 pix3 = 0; - uae_u8 gpix3 = 0xff; - uae_u32 dpix_val3 = BLANK_COLOR; - if (!denise_blank_active) { - gpix3 = get_genlock_transparency_border(); - dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - uae_u8 val3 = dpf_lookup[pix3]; - if (dpf_lookup_no[pix3]) { - val3 += dblpfofs[bpldualpf2of]; - } - val3 ^= bplcon4_denise_xor_val; - dpix_val3 = denise_colors.acolors[val3]; - gpix3 = get_genlock_transparency(dpf_lookup[pix3]); - } - last_bpl_pix = pix3; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4e(); - loaded_pix = getbpl4(); + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl4o(); - loaded_pix = getbpl4(); + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } } - if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4(); + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; } - if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) { - copybpl4o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl4(); + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } } - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + gpix1 = get_genlock_transparency(spix1); + + } + } dtbuf[h][1] = dpix_val1; dtgbuf[h][1] = gpix1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } dtbuf[h][2] = dpix_val2; dtgbuf[h][2] = gpix2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + gpix3 = get_genlock_transparency(spix3); + + } + } dtbuf[h][3] = dpix_val3; dtgbuf[h][3] = gpix3; uae_u32 t0 = dtbuf[h ^ lol][0]; @@ -9616,59 +39026,11 @@ static void lts_aga_fm0_dpf1_p4_ilores_dshres_genlock(void) denise_cck++; } } -static void lts_aga_fm0_dpf1_p4_ilores_dshres_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb0_p4_ilores_dshres_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb0_p4_ilores_dshres_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb1_p4_ilores_dshres_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb1_p4_ilores_dshres_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham0_p4_ilores_dshres_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham0_p4_ilores_dshres_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham1_p4_ilores_dshres_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham1_p4_ilores_dshres_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb0_p4_ilores_dshres_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb0_p4_ilores_dshres_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb1_p4_ilores_dshres_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb1_p4_ilores_dshres_filtered_genlock(void) +static void lts_aga_fm0_ham0_p4_ihires_dshres_spr_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm0_n0_p8_ilores_dshres_genlock(void) +static void lts_aga_fm0_ham1_p4_ihires_dshres_spr_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -9679,123 +39041,114 @@ 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; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8(); - loaded_pix = getbpl8(); } - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u8 gpix1 = 0xff; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { gpix1 = get_genlock_transparency_border(); dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; - gpix1 = get_genlock_transparency(pix1 ^ bplcon4_denise_xor_val); - } - last_bpl_pix = pix1; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8(); - loaded_pix = getbpl8(); } - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8(); + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } } - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u8 gpix2 = 0xff; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { gpix2 = get_genlock_transparency_border(); dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; - gpix2 = get_genlock_transparency(pix2 ^ bplcon4_denise_xor_val); - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8(); - loaded_pix = getbpl8(); } - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8(); + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } } - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u8 gpix3 = 0xff; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { gpix3 = get_genlock_transparency_border(); dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; - gpix3 = get_genlock_transparency(pix3 ^ bplcon4_denise_xor_val); - } - last_bpl_pix = pix3; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8(); - loaded_pix = getbpl8(); } - if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8(); + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } } - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + gpix1 = get_genlock_transparency(spix1); + + } + } dtbuf[h][1] = dpix_val1; dtgbuf[h][1] = gpix1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } dtbuf[h][2] = dpix_val2; dtgbuf[h][2] = gpix2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + gpix3 = get_genlock_transparency(spix3); + + } + } dtbuf[h][3] = dpix_val3; dtgbuf[h][3] = gpix3; uae_u32 t0 = dtbuf[h ^ lol][0]; @@ -9857,11 +39210,11 @@ static void lts_aga_fm0_n0_p8_ilores_dshres_genlock(void) denise_cck++; } } -static void lts_aga_fm0_n0_p8_ilores_dshres_filtered_genlock(void) +static void lts_aga_fm0_ham1_p4_ihires_dshres_spr_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm0_n1_p8_ilores_dshres_genlock(void) +static void lts_aga_fm0_kehb0_p4_ihires_dshres_spr_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -9872,167 +39225,114 @@ 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; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8e(); - loaded_pix = getbpl8(); - } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl8o(); - loaded_pix = getbpl8(); - } - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8(); } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl8(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u8 gpix1 = 0xff; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { gpix1 = get_genlock_transparency_border(); dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; - gpix1 = get_genlock_transparency(pix1 ^ bplcon4_denise_xor_val); - } - last_bpl_pix = pix1; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8e(); - loaded_pix = getbpl8(); - } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl8o(); - loaded_pix = getbpl8(); - } - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8(); } - if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl8(); + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } } - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u8 gpix2 = 0xff; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { gpix2 = get_genlock_transparency_border(); dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; - gpix2 = get_genlock_transparency(pix2 ^ bplcon4_denise_xor_val); - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8e(); - loaded_pix = getbpl8(); - } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl8o(); - loaded_pix = getbpl8(); } - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8(); - } - if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl8(); + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } } - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u8 gpix3 = 0xff; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { gpix3 = get_genlock_transparency_border(); dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; - gpix3 = get_genlock_transparency(pix3 ^ bplcon4_denise_xor_val); - } - last_bpl_pix = pix3; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8e(); - loaded_pix = getbpl8(); - } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl8o(); - loaded_pix = getbpl8(); - } - if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8(); } - if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl8(); + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } } - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + gpix1 = get_genlock_transparency(spix1); + + } + } dtbuf[h][1] = dpix_val1; dtgbuf[h][1] = gpix1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } dtbuf[h][2] = dpix_val2; dtgbuf[h][2] = gpix2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + gpix3 = get_genlock_transparency(spix3); + + } + } dtbuf[h][3] = dpix_val3; dtgbuf[h][3] = gpix3; uae_u32 t0 = dtbuf[h ^ lol][0]; @@ -10094,11 +39394,11 @@ static void lts_aga_fm0_n1_p8_ilores_dshres_genlock(void) denise_cck++; } } -static void lts_aga_fm0_n1_p8_ilores_dshres_filtered_genlock(void) +static void lts_aga_fm0_kehb0_p4_ihires_dshres_spr_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm0_dpf0_p8_ilores_dshres_genlock(void) +static void lts_aga_fm0_kehb1_p4_ihires_dshres_spr_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -10109,143 +39409,114 @@ 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; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - gpix0 = get_genlock_transparency(dpf_lookup[pix0]); - } - last_bpl_pix = pix0; } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8(); - loaded_pix = getbpl8(); - } - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u8 gpix1 = 0xff; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { gpix1 = get_genlock_transparency_border(); dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - if (dpf_lookup_no[pix1]) { - val1 += dblpfofs[bpldualpf2of]; - } - val1 ^= bplcon4_denise_xor_val; - dpix_val1 = denise_colors.acolors[val1]; - gpix1 = get_genlock_transparency(dpf_lookup[pix1]); - } - last_bpl_pix = pix1; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8(); - loaded_pix = getbpl8(); } - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8(); + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } } - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u8 gpix2 = 0xff; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { gpix2 = get_genlock_transparency_border(); dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; - gpix2 = get_genlock_transparency(dpf_lookup[pix2]); - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8(); - loaded_pix = getbpl8(); } - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8(); + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } } - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u8 gpix3 = 0xff; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { gpix3 = get_genlock_transparency_border(); dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - uae_u8 val3 = dpf_lookup[pix3]; - if (dpf_lookup_no[pix3]) { - val3 += dblpfofs[bpldualpf2of]; - } - val3 ^= bplcon4_denise_xor_val; - dpix_val3 = denise_colors.acolors[val3]; - gpix3 = get_genlock_transparency(dpf_lookup[pix3]); - } - last_bpl_pix = pix3; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8(); - loaded_pix = getbpl8(); } - if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8(); + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } } - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + gpix1 = get_genlock_transparency(spix1); + + } + } dtbuf[h][1] = dpix_val1; dtgbuf[h][1] = gpix1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } dtbuf[h][2] = dpix_val2; dtgbuf[h][2] = gpix2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + gpix3 = get_genlock_transparency(spix3); + + } + } dtbuf[h][3] = dpix_val3; dtgbuf[h][3] = gpix3; uae_u32 t0 = dtbuf[h ^ lol][0]; @@ -10307,11 +39578,11 @@ static void lts_aga_fm0_dpf0_p8_ilores_dshres_genlock(void) denise_cck++; } } -static void lts_aga_fm0_dpf0_p8_ilores_dshres_filtered_genlock(void) +static void lts_aga_fm0_kehb1_p4_ihires_dshres_spr_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm0_dpf1_p8_ilores_dshres_genlock(void) +static void lts_aga_fm0_n0_p8_ihires_dshres_spr_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -10322,187 +39593,114 @@ 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; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - gpix0 = get_genlock_transparency(dpf_lookup[pix0]); - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8e(); - loaded_pix = getbpl8(); - } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl8o(); - loaded_pix = getbpl8(); - } - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8(); } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl8(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u8 gpix1 = 0xff; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { gpix1 = get_genlock_transparency_border(); dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - if (dpf_lookup_no[pix1]) { - val1 += dblpfofs[bpldualpf2of]; - } - val1 ^= bplcon4_denise_xor_val; - dpix_val1 = denise_colors.acolors[val1]; - gpix1 = get_genlock_transparency(dpf_lookup[pix1]); - } - last_bpl_pix = pix1; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8e(); - loaded_pix = getbpl8(); - } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl8o(); - loaded_pix = getbpl8(); - } - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8(); } - if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl8(); + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } } - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u8 gpix2 = 0xff; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { gpix2 = get_genlock_transparency_border(); dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; - gpix2 = get_genlock_transparency(dpf_lookup[pix2]); - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8e(); - loaded_pix = getbpl8(); - } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl8o(); - loaded_pix = getbpl8(); - } - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8(); - } - if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl8(); - } - loaded_pixs[2] = loaded_pix; - internal_pixel_cnt += 1; - uae_u8 pix3 = 0; - uae_u8 gpix3 = 0xff; - uae_u32 dpix_val3 = BLANK_COLOR; - if (!denise_blank_active) { - gpix3 = get_genlock_transparency_border(); - dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - uae_u8 val3 = dpf_lookup[pix3]; - if (dpf_lookup_no[pix3]) { - val3 += dblpfofs[bpldualpf2of]; - } - val3 ^= bplcon4_denise_xor_val; - dpix_val3 = denise_colors.acolors[val3]; - gpix3 = get_genlock_transparency(dpf_lookup[pix3]); - } - last_bpl_pix = pix3; } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8e(); - loaded_pix = getbpl8(); - } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl8o(); - loaded_pix = getbpl8(); + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } } - if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8(); + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; } - if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl8(); + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } } - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + gpix1 = get_genlock_transparency(spix1); + + } + } dtbuf[h][1] = dpix_val1; dtgbuf[h][1] = gpix1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } dtbuf[h][2] = dpix_val2; dtgbuf[h][2] = gpix2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + gpix3 = get_genlock_transparency(spix3); + + } + } dtbuf[h][3] = dpix_val3; dtgbuf[h][3] = gpix3; uae_u32 t0 = dtbuf[h ^ lol][0]; @@ -10564,27 +39762,11 @@ static void lts_aga_fm0_dpf1_p8_ilores_dshres_genlock(void) denise_cck++; } } -static void lts_aga_fm0_dpf1_p8_ilores_dshres_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb0_p8_ilores_dshres_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb0_p8_ilores_dshres_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb1_p8_ilores_dshres_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb1_p8_ilores_dshres_filtered_genlock(void) +static void lts_aga_fm0_n0_p8_ihires_dshres_spr_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm0_ham0_p8_ilores_dshres_genlock(void) +static void lts_aga_fm0_n1_p8_ihires_dshres_spr_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -10595,123 +39777,114 @@ 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; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = decode_ham_pixel_aga(pix0); - gpix0 = get_genlock_transparency((pix0 >> 2) & 63); - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8(); - loaded_pix = getbpl8(); } - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u8 gpix1 = 0xff; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { gpix1 = get_genlock_transparency_border(); dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - dpix_val1 = decode_ham_pixel_aga(pix1); - gpix1 = get_genlock_transparency((pix1 >> 2) & 63); - } - last_bpl_pix = pix1; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8(); - loaded_pix = getbpl8(); } - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8(); + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } } - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u8 gpix2 = 0xff; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { gpix2 = get_genlock_transparency_border(); dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = decode_ham_pixel_aga(pix2); - gpix2 = get_genlock_transparency((pix2 >> 2) & 63); - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8(); - loaded_pix = getbpl8(); } - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8(); + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } } - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u8 gpix3 = 0xff; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { gpix3 = get_genlock_transparency_border(); dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - dpix_val3 = decode_ham_pixel_aga(pix3); - gpix3 = get_genlock_transparency((pix3 >> 2) & 63); - } - last_bpl_pix = pix3; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8(); - loaded_pix = getbpl8(); } - if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8(); + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } } - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + gpix1 = get_genlock_transparency(spix1); + + } + } dtbuf[h][1] = dpix_val1; dtgbuf[h][1] = gpix1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } dtbuf[h][2] = dpix_val2; dtgbuf[h][2] = gpix2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + gpix3 = get_genlock_transparency(spix3); + + } + } dtbuf[h][3] = dpix_val3; dtgbuf[h][3] = gpix3; uae_u32 t0 = dtbuf[h ^ lol][0]; @@ -10773,182 +39946,129 @@ static void lts_aga_fm0_ham0_p8_ilores_dshres_genlock(void) denise_cck++; } } -static void lts_aga_fm0_ham0_p8_ilores_dshres_filtered_genlock(void) +static void lts_aga_fm0_n1_p8_ihires_dshres_spr_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm0_ham1_p8_ilores_dshres_genlock(void) -{ - while (denise_cck < denise_endcycle) { - do_denise_cck(denise_linecnt, denise_startpos, denise_cck); - if (lts_changed) return; - for (int h = 0; h < 2; h++) { - if (h) { - denise_hcounter_next = denise_hcounter_new; - } - int cnt = denise_hcounter << 2; - int cnt_next = denise_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; - uae_u32 dpix_val0 = BLANK_COLOR; - if (!denise_blank_active) { - gpix0 = get_genlock_transparency_border(); - dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = decode_ham_pixel_aga(pix0); - gpix0 = get_genlock_transparency((pix0 >> 2) & 63); - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8e(); - loaded_pix = getbpl8(); - } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl8o(); - loaded_pix = getbpl8(); +static void lts_aga_fm0_dpf0_p8_ihires_dshres_spr_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; } - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8(); + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl8(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u8 gpix1 = 0xff; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { gpix1 = get_genlock_transparency_border(); dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - dpix_val1 = decode_ham_pixel_aga(pix1); - gpix1 = get_genlock_transparency((pix1 >> 2) & 63); - } - last_bpl_pix = pix1; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8e(); - loaded_pix = getbpl8(); - } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl8o(); - loaded_pix = getbpl8(); - } - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8(); } - if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl8(); + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } } - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u8 gpix2 = 0xff; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { gpix2 = get_genlock_transparency_border(); dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = decode_ham_pixel_aga(pix2); - gpix2 = get_genlock_transparency((pix2 >> 2) & 63); - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8e(); - loaded_pix = getbpl8(); - } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl8o(); - loaded_pix = getbpl8(); - } - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8(); } - if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl8(); + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } } - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u8 gpix3 = 0xff; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { gpix3 = get_genlock_transparency_border(); dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - dpix_val3 = decode_ham_pixel_aga(pix3); - gpix3 = get_genlock_transparency((pix3 >> 2) & 63); - } - last_bpl_pix = pix3; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8e(); - loaded_pix = getbpl8(); - } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl8o(); - loaded_pix = getbpl8(); - } - if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8(); } - if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl8(); + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } } - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + gpix1 = get_genlock_transparency(spix1); + + } + } dtbuf[h][1] = dpix_val1; dtgbuf[h][1] = gpix1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } dtbuf[h][2] = dpix_val2; dtgbuf[h][2] = gpix2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + gpix3 = get_genlock_transparency(spix3); + + } + } dtbuf[h][3] = dpix_val3; dtgbuf[h][3] = gpix3; uae_u32 t0 = dtbuf[h ^ lol][0]; @@ -11010,27 +40130,11 @@ static void lts_aga_fm0_ham1_p8_ilores_dshres_genlock(void) denise_cck++; } } -static void lts_aga_fm0_ham1_p8_ilores_dshres_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb0_p8_ilores_dshres_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb0_p8_ilores_dshres_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb1_p8_ilores_dshres_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb1_p8_ilores_dshres_filtered_genlock(void) +static void lts_aga_fm0_dpf0_p8_ihires_dshres_spr_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm0_n0_p4_ilores_dshres_spr_genlock(void) +static void lts_aga_fm0_dpf1_p8_ihires_dshres_spr_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -11041,7 +40145,6 @@ 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; @@ -11050,24 +40153,6 @@ static void lts_aga_fm0_n0_p4_ilores_dshres_spr_genlock(void) if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4(); - loaded_pix = getbpl4(); - } - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4(); } uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { @@ -11077,7 +40162,6 @@ static void lts_aga_fm0_n0_p4_ilores_dshres_spr_genlock(void) sv0 = svt; } } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; @@ -11086,24 +40170,6 @@ static void lts_aga_fm0_n0_p4_ilores_dshres_spr_genlock(void) if (!denise_blank_active) { gpix1 = get_genlock_transparency_border(); dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; - gpix1 = get_genlock_transparency(pix1 ^ bplcon4_denise_xor_val); - } - last_bpl_pix = pix1; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4(); - loaded_pix = getbpl4(); - } - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4(); } uae_u32 sv1 = 0; if (denise_spr_nr_armeds) { @@ -11113,33 +40179,14 @@ static void lts_aga_fm0_n0_p4_ilores_dshres_spr_genlock(void) sv1 = svt; } } - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u8 gpix2 = 0xff; uae_u32 dpix_val2 = BLANK_COLOR; - if (!denise_blank_active) { - gpix2 = get_genlock_transparency_border(); - dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; - gpix2 = get_genlock_transparency(pix2 ^ bplcon4_denise_xor_val); - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4(); - loaded_pix = getbpl4(); - } - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4(); + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; } uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { @@ -11149,7 +40196,6 @@ static void lts_aga_fm0_n0_p4_ilores_dshres_spr_genlock(void) sv2 = svt; } } - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; @@ -11158,24 +40204,6 @@ static void lts_aga_fm0_n0_p4_ilores_dshres_spr_genlock(void) if (!denise_blank_active) { gpix3 = get_genlock_transparency_border(); dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; - gpix3 = get_genlock_transparency(pix3 ^ bplcon4_denise_xor_val); - } - last_bpl_pix = pix3; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4(); - loaded_pix = getbpl4(); - } - if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4(); } uae_u32 sv3 = 0; if (denise_spr_nr_armeds) { @@ -11185,7 +40213,6 @@ static void lts_aga_fm0_n0_p4_ilores_dshres_spr_genlock(void) sv3 = svt; } } - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { @@ -11287,11 +40314,11 @@ static void lts_aga_fm0_n0_p4_ilores_dshres_spr_genlock(void) denise_cck++; } } -static void lts_aga_fm0_n0_p4_ilores_dshres_spr_filtered_genlock(void) +static void lts_aga_fm0_dpf1_p8_ihires_dshres_spr_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm0_n1_p4_ilores_dshres_spr_genlock(void) +static void lts_aga_fm0_ehb0_p8_ihires_dshres_spr_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -11302,7 +40329,6 @@ 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; @@ -11311,35 +40337,6 @@ static void lts_aga_fm0_n1_p4_ilores_dshres_spr_genlock(void) if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4e(); - loaded_pix = getbpl4(); - } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl4o(); - loaded_pix = getbpl4(); - } - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4(); - } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl4o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl4(); } uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { @@ -11349,7 +40346,6 @@ static void lts_aga_fm0_n1_p4_ilores_dshres_spr_genlock(void) sv0 = svt; } } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; @@ -11358,35 +40354,6 @@ static void lts_aga_fm0_n1_p4_ilores_dshres_spr_genlock(void) if (!denise_blank_active) { gpix1 = get_genlock_transparency_border(); dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; - gpix1 = get_genlock_transparency(pix1 ^ bplcon4_denise_xor_val); - } - last_bpl_pix = pix1; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4e(); - loaded_pix = getbpl4(); - } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl4o(); - loaded_pix = getbpl4(); - } - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4(); - } - if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { - copybpl4o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl4(); } uae_u32 sv1 = 0; if (denise_spr_nr_armeds) { @@ -11396,7 +40363,6 @@ static void lts_aga_fm0_n1_p4_ilores_dshres_spr_genlock(void) sv1 = svt; } } - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; @@ -11405,35 +40371,6 @@ static void lts_aga_fm0_n1_p4_ilores_dshres_spr_genlock(void) if (!denise_blank_active) { gpix2 = get_genlock_transparency_border(); dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; - gpix2 = get_genlock_transparency(pix2 ^ bplcon4_denise_xor_val); - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4e(); - loaded_pix = getbpl4(); - } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl4o(); - loaded_pix = getbpl4(); - } - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4(); - } - if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { - copybpl4o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl4(); } uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { @@ -11443,7 +40380,6 @@ static void lts_aga_fm0_n1_p4_ilores_dshres_spr_genlock(void) sv2 = svt; } } - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; @@ -11452,35 +40388,6 @@ static void lts_aga_fm0_n1_p4_ilores_dshres_spr_genlock(void) if (!denise_blank_active) { gpix3 = get_genlock_transparency_border(); dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; - gpix3 = get_genlock_transparency(pix3 ^ bplcon4_denise_xor_val); - } - last_bpl_pix = pix3; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4e(); - loaded_pix = getbpl4(); - } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl4o(); - loaded_pix = getbpl4(); - } - if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4(); - } - if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) { - copybpl4o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl4(); } uae_u32 sv3 = 0; if (denise_spr_nr_armeds) { @@ -11490,7 +40397,6 @@ static void lts_aga_fm0_n1_p4_ilores_dshres_spr_genlock(void) sv3 = svt; } } - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { @@ -11592,11 +40498,11 @@ static void lts_aga_fm0_n1_p4_ilores_dshres_spr_genlock(void) denise_cck++; } } -static void lts_aga_fm0_n1_p4_ilores_dshres_spr_filtered_genlock(void) +static void lts_aga_fm0_ehb0_p8_ihires_dshres_spr_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm0_dpf0_p4_ilores_dshres_spr_genlock(void) +static void lts_aga_fm0_ehb1_p8_ihires_dshres_spr_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -11607,7 +40513,6 @@ 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; @@ -11616,29 +40521,6 @@ static void lts_aga_fm0_dpf0_p4_ilores_dshres_spr_genlock(void) if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - gpix0 = get_genlock_transparency(dpf_lookup[pix0]); - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4(); - loaded_pix = getbpl4(); - } - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4(); } uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { @@ -11648,7 +40530,6 @@ static void lts_aga_fm0_dpf0_p4_ilores_dshres_spr_genlock(void) sv0 = svt; } } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; @@ -11657,29 +40538,6 @@ static void lts_aga_fm0_dpf0_p4_ilores_dshres_spr_genlock(void) if (!denise_blank_active) { gpix1 = get_genlock_transparency_border(); dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - if (dpf_lookup_no[pix1]) { - val1 += dblpfofs[bpldualpf2of]; - } - val1 ^= bplcon4_denise_xor_val; - dpix_val1 = denise_colors.acolors[val1]; - gpix1 = get_genlock_transparency(dpf_lookup[pix1]); - } - last_bpl_pix = pix1; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4(); - loaded_pix = getbpl4(); - } - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4(); } uae_u32 sv1 = 0; if (denise_spr_nr_armeds) { @@ -11689,7 +40547,6 @@ static void lts_aga_fm0_dpf0_p4_ilores_dshres_spr_genlock(void) sv1 = svt; } } - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; @@ -11698,70 +40555,23 @@ static void lts_aga_fm0_dpf0_p4_ilores_dshres_spr_genlock(void) if (!denise_blank_active) { gpix2 = get_genlock_transparency_border(); dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; - gpix2 = get_genlock_transparency(dpf_lookup[pix2]); - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4(); - loaded_pix = getbpl4(); - } - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4(); } uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv2 = svt; - } - } - loaded_pixs[2] = loaded_pix; - internal_pixel_cnt += 1; - matchsprites_aga(cnt + 3); - uae_u8 pix3 = 0; - uae_u8 gpix3 = 0xff; - uae_u32 dpix_val3 = BLANK_COLOR; - if (!denise_blank_active) { - gpix3 = get_genlock_transparency_border(); - dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - uae_u8 val3 = dpf_lookup[pix3]; - if (dpf_lookup_no[pix3]) { - val3 += dblpfofs[bpldualpf2of]; - } - val3 ^= bplcon4_denise_xor_val; - dpix_val3 = denise_colors.acolors[val3]; - gpix3 = get_genlock_transparency(dpf_lookup[pix3]); - } - last_bpl_pix = pix3; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4(); - loaded_pix = getbpl4(); + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } } - if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4(); + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; } uae_u32 sv3 = 0; if (denise_spr_nr_armeds) { @@ -11771,7 +40581,6 @@ static void lts_aga_fm0_dpf0_p4_ilores_dshres_spr_genlock(void) sv3 = svt; } } - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { @@ -11873,11 +40682,11 @@ static void lts_aga_fm0_dpf0_p4_ilores_dshres_spr_genlock(void) denise_cck++; } } -static void lts_aga_fm0_dpf0_p4_ilores_dshres_spr_filtered_genlock(void) +static void lts_aga_fm0_ehb1_p8_ihires_dshres_spr_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm0_dpf1_p4_ilores_dshres_spr_genlock(void) +static void lts_aga_fm0_ham0_p8_ihires_dshres_spr_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -11888,7 +40697,6 @@ 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; @@ -11897,40 +40705,6 @@ static void lts_aga_fm0_dpf1_p4_ilores_dshres_spr_genlock(void) if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - gpix0 = get_genlock_transparency(dpf_lookup[pix0]); - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4e(); - loaded_pix = getbpl4(); - } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl4o(); - loaded_pix = getbpl4(); - } - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4(); - } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl4o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl4(); } uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { @@ -11940,7 +40714,6 @@ static void lts_aga_fm0_dpf1_p4_ilores_dshres_spr_genlock(void) sv0 = svt; } } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; @@ -11949,40 +40722,6 @@ static void lts_aga_fm0_dpf1_p4_ilores_dshres_spr_genlock(void) if (!denise_blank_active) { gpix1 = get_genlock_transparency_border(); dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - if (dpf_lookup_no[pix1]) { - val1 += dblpfofs[bpldualpf2of]; - } - val1 ^= bplcon4_denise_xor_val; - dpix_val1 = denise_colors.acolors[val1]; - gpix1 = get_genlock_transparency(dpf_lookup[pix1]); - } - last_bpl_pix = pix1; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4e(); - loaded_pix = getbpl4(); - } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl4o(); - loaded_pix = getbpl4(); - } - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4(); - } - if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { - copybpl4o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl4(); } uae_u32 sv1 = 0; if (denise_spr_nr_armeds) { @@ -11992,7 +40731,6 @@ static void lts_aga_fm0_dpf1_p4_ilores_dshres_spr_genlock(void) sv1 = svt; } } - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; @@ -12001,40 +40739,6 @@ static void lts_aga_fm0_dpf1_p4_ilores_dshres_spr_genlock(void) if (!denise_blank_active) { gpix2 = get_genlock_transparency_border(); dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; - gpix2 = get_genlock_transparency(dpf_lookup[pix2]); - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4e(); - loaded_pix = getbpl4(); - } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl4o(); - loaded_pix = getbpl4(); - } - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4(); - } - if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { - copybpl4o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl4(); } uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { @@ -12044,7 +40748,6 @@ static void lts_aga_fm0_dpf1_p4_ilores_dshres_spr_genlock(void) sv2 = svt; } } - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; @@ -12053,40 +40756,6 @@ static void lts_aga_fm0_dpf1_p4_ilores_dshres_spr_genlock(void) if (!denise_blank_active) { gpix3 = get_genlock_transparency_border(); dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - uae_u8 val3 = dpf_lookup[pix3]; - if (dpf_lookup_no[pix3]) { - val3 += dblpfofs[bpldualpf2of]; - } - val3 ^= bplcon4_denise_xor_val; - dpix_val3 = denise_colors.acolors[val3]; - gpix3 = get_genlock_transparency(dpf_lookup[pix3]); - } - last_bpl_pix = pix3; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4e(); - loaded_pix = getbpl4(); - } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl4o(); - loaded_pix = getbpl4(); - } - if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4(); - } - if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) { - copybpl4o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl4(); } uae_u32 sv3 = 0; if (denise_spr_nr_armeds) { @@ -12096,7 +40765,6 @@ static void lts_aga_fm0_dpf1_p4_ilores_dshres_spr_genlock(void) sv3 = svt; } } - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { @@ -12151,106 +40819,58 @@ static void lts_aga_fm0_dpf1_p4_ilores_dshres_spr_genlock(void) uae_u32 t1 = dtbuf[h ^ lol][1]; #ifdef DEBUGGER if (decode_specials_debug) { - t1 = decode_denise_specials_debug(t1, cnt + 1); - } - #endif - *buf1++ = t1; - *buf2++ = t1; - *gbuf++ = dtgbuf[h ^ lol][1]; - uae_u32 t2 = dtbuf[h ^ lol][2]; - #ifdef DEBUGGER - if (decode_specials_debug) { - t2 = decode_denise_specials_debug(t2, cnt + 2); - } - #endif - *buf1++ = t2; - *buf2++ = t2; - *gbuf++ = dtgbuf[h ^ lol][2]; - uae_u32 t3 = dtbuf[h ^ lol][3]; - #ifdef DEBUGGER - if (decode_specials_debug) { - t3 = decode_denise_specials_debug(t3, cnt + 3); - } - #endif - *buf1++ = t3; - *buf2++ = t3; - *gbuf++ = dtgbuf[h ^ lol][3]; - } - sprites_hidden = sprites_hidden2; - #ifdef DEBUGGER - *debug_dma_dhpos_odd = denise_hcounter; - #endif - denise_hcounter_cmp++; - denise_hcounter_cmp &= 511; - denise_hcounter++; - denise_hcounter &= 511; - denise_hcounter_next++; - denise_hcounter_next &= 511; - } - denise_pixtotal++; - if (denise_pixtotal == 0) { - internal_pixel_start_cnt = internal_pixel_cnt; - } - denise_hcounter = denise_hcounter_new; - if (denise_accurate_mode) { - denise_hcounter_cmp = denise_hcounter_new; - } - denise_cck++; - } -} -static void lts_aga_fm0_dpf1_p4_ilores_dshres_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb0_p4_ilores_dshres_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb0_p4_ilores_dshres_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb1_p4_ilores_dshres_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb1_p4_ilores_dshres_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham0_p4_ilores_dshres_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham0_p4_ilores_dshres_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham1_p4_ilores_dshres_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham1_p4_ilores_dshres_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb0_p4_ilores_dshres_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb0_p4_ilores_dshres_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb1_p4_ilores_dshres_spr_genlock(void) -{ - lts_null(); + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = dtgbuf[h ^ lol][1]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + *gbuf++ = dtgbuf[h ^ lol][3]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm0_kehb1_p4_ilores_dshres_spr_filtered_genlock(void) +static void lts_aga_fm0_ham0_p8_ihires_dshres_spr_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm0_n0_p8_ilores_dshres_spr_genlock(void) +static void lts_aga_fm0_ham1_p8_ihires_dshres_spr_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -12261,7 +40881,6 @@ 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; @@ -12270,24 +40889,6 @@ static void lts_aga_fm0_n0_p8_ilores_dshres_spr_genlock(void) if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8(); - loaded_pix = getbpl8(); - } - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8(); } uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { @@ -12297,7 +40898,6 @@ static void lts_aga_fm0_n0_p8_ilores_dshres_spr_genlock(void) sv0 = svt; } } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; @@ -12306,24 +40906,6 @@ static void lts_aga_fm0_n0_p8_ilores_dshres_spr_genlock(void) if (!denise_blank_active) { gpix1 = get_genlock_transparency_border(); dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; - gpix1 = get_genlock_transparency(pix1 ^ bplcon4_denise_xor_val); - } - last_bpl_pix = pix1; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8(); - loaded_pix = getbpl8(); - } - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8(); } uae_u32 sv1 = 0; if (denise_spr_nr_armeds) { @@ -12333,7 +40915,6 @@ static void lts_aga_fm0_n0_p8_ilores_dshres_spr_genlock(void) sv1 = svt; } } - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; @@ -12342,24 +40923,6 @@ static void lts_aga_fm0_n0_p8_ilores_dshres_spr_genlock(void) if (!denise_blank_active) { gpix2 = get_genlock_transparency_border(); dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; - gpix2 = get_genlock_transparency(pix2 ^ bplcon4_denise_xor_val); - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8(); - loaded_pix = getbpl8(); - } - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8(); } uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { @@ -12369,7 +40932,6 @@ static void lts_aga_fm0_n0_p8_ilores_dshres_spr_genlock(void) sv2 = svt; } } - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; @@ -12378,24 +40940,6 @@ static void lts_aga_fm0_n0_p8_ilores_dshres_spr_genlock(void) if (!denise_blank_active) { gpix3 = get_genlock_transparency_border(); dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; - gpix3 = get_genlock_transparency(pix3 ^ bplcon4_denise_xor_val); - } - last_bpl_pix = pix3; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8(); - loaded_pix = getbpl8(); - } - if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8(); } uae_u32 sv3 = 0; if (denise_spr_nr_armeds) { @@ -12405,7 +40949,6 @@ static void lts_aga_fm0_n0_p8_ilores_dshres_spr_genlock(void) sv3 = svt; } } - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { @@ -12507,11 +41050,11 @@ static void lts_aga_fm0_n0_p8_ilores_dshres_spr_genlock(void) denise_cck++; } } -static void lts_aga_fm0_n0_p8_ilores_dshres_spr_filtered_genlock(void) +static void lts_aga_fm0_ham1_p8_ihires_dshres_spr_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm0_n1_p8_ilores_dshres_spr_genlock(void) +static void lts_aga_fm0_kehb0_p8_ihires_dshres_spr_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -12522,7 +41065,6 @@ 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; @@ -12531,35 +41073,6 @@ static void lts_aga_fm0_n1_p8_ilores_dshres_spr_genlock(void) if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8e(); - loaded_pix = getbpl8(); - } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl8o(); - loaded_pix = getbpl8(); - } - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8(); - } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl8(); } uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { @@ -12569,7 +41082,6 @@ static void lts_aga_fm0_n1_p8_ilores_dshres_spr_genlock(void) sv0 = svt; } } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; @@ -12578,35 +41090,6 @@ static void lts_aga_fm0_n1_p8_ilores_dshres_spr_genlock(void) if (!denise_blank_active) { gpix1 = get_genlock_transparency_border(); dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; - gpix1 = get_genlock_transparency(pix1 ^ bplcon4_denise_xor_val); - } - last_bpl_pix = pix1; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8e(); - loaded_pix = getbpl8(); - } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl8o(); - loaded_pix = getbpl8(); - } - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8(); - } - if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl8(); } uae_u32 sv1 = 0; if (denise_spr_nr_armeds) { @@ -12616,7 +41099,6 @@ static void lts_aga_fm0_n1_p8_ilores_dshres_spr_genlock(void) sv1 = svt; } } - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; @@ -12625,35 +41107,6 @@ static void lts_aga_fm0_n1_p8_ilores_dshres_spr_genlock(void) if (!denise_blank_active) { gpix2 = get_genlock_transparency_border(); dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; - gpix2 = get_genlock_transparency(pix2 ^ bplcon4_denise_xor_val); - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8e(); - loaded_pix = getbpl8(); - } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl8o(); - loaded_pix = getbpl8(); - } - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8(); - } - if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl8(); } uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { @@ -12661,46 +41114,16 @@ static void lts_aga_fm0_n1_p8_ilores_dshres_spr_genlock(void) svt = denise_render_sprites_aga(denise_spr_add); if (!denise_sprite_blank_active && !sprites_hidden) { sv2 = svt; - } - } - loaded_pixs[2] = loaded_pix; - internal_pixel_cnt += 1; - matchsprites_aga(cnt + 3); - uae_u8 pix3 = 0; - uae_u8 gpix3 = 0xff; - uae_u32 dpix_val3 = BLANK_COLOR; - if (!denise_blank_active) { - gpix3 = get_genlock_transparency_border(); - dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; - gpix3 = get_genlock_transparency(pix3 ^ bplcon4_denise_xor_val); - } - last_bpl_pix = pix3; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8e(); - loaded_pix = getbpl8(); - } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl8o(); - loaded_pix = getbpl8(); - } - if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8(); + } } - if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl8(); + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; } uae_u32 sv3 = 0; if (denise_spr_nr_armeds) { @@ -12710,7 +41133,6 @@ static void lts_aga_fm0_n1_p8_ilores_dshres_spr_genlock(void) sv3 = svt; } } - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { @@ -12812,11 +41234,11 @@ static void lts_aga_fm0_n1_p8_ilores_dshres_spr_genlock(void) denise_cck++; } } -static void lts_aga_fm0_n1_p8_ilores_dshres_spr_filtered_genlock(void) +static void lts_aga_fm0_kehb0_p8_ihires_dshres_spr_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm0_dpf0_p8_ilores_dshres_spr_genlock(void) +static void lts_aga_fm0_kehb1_p8_ihires_dshres_spr_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -12827,7 +41249,6 @@ 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; @@ -12836,29 +41257,6 @@ static void lts_aga_fm0_dpf0_p8_ilores_dshres_spr_genlock(void) if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - gpix0 = get_genlock_transparency(dpf_lookup[pix0]); - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8(); - loaded_pix = getbpl8(); - } - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8(); } uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { @@ -12868,7 +41266,6 @@ static void lts_aga_fm0_dpf0_p8_ilores_dshres_spr_genlock(void) sv0 = svt; } } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; @@ -12877,29 +41274,6 @@ static void lts_aga_fm0_dpf0_p8_ilores_dshres_spr_genlock(void) if (!denise_blank_active) { gpix1 = get_genlock_transparency_border(); dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - if (dpf_lookup_no[pix1]) { - val1 += dblpfofs[bpldualpf2of]; - } - val1 ^= bplcon4_denise_xor_val; - dpix_val1 = denise_colors.acolors[val1]; - gpix1 = get_genlock_transparency(dpf_lookup[pix1]); - } - last_bpl_pix = pix1; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8(); - loaded_pix = getbpl8(); - } - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8(); } uae_u32 sv1 = 0; if (denise_spr_nr_armeds) { @@ -12909,7 +41283,6 @@ static void lts_aga_fm0_dpf0_p8_ilores_dshres_spr_genlock(void) sv1 = svt; } } - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; @@ -12918,29 +41291,6 @@ static void lts_aga_fm0_dpf0_p8_ilores_dshres_spr_genlock(void) if (!denise_blank_active) { gpix2 = get_genlock_transparency_border(); dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; - gpix2 = get_genlock_transparency(dpf_lookup[pix2]); - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8(); - loaded_pix = getbpl8(); - } - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8(); } uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { @@ -12950,7 +41300,6 @@ static void lts_aga_fm0_dpf0_p8_ilores_dshres_spr_genlock(void) sv2 = svt; } } - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; @@ -12959,29 +41308,6 @@ static void lts_aga_fm0_dpf0_p8_ilores_dshres_spr_genlock(void) if (!denise_blank_active) { gpix3 = get_genlock_transparency_border(); dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - uae_u8 val3 = dpf_lookup[pix3]; - if (dpf_lookup_no[pix3]) { - val3 += dblpfofs[bpldualpf2of]; - } - val3 ^= bplcon4_denise_xor_val; - dpix_val3 = denise_colors.acolors[val3]; - gpix3 = get_genlock_transparency(dpf_lookup[pix3]); - } - last_bpl_pix = pix3; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8(); - loaded_pix = getbpl8(); - } - if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8(); } uae_u32 sv3 = 0; if (denise_spr_nr_armeds) { @@ -12991,7 +41317,6 @@ static void lts_aga_fm0_dpf0_p8_ilores_dshres_spr_genlock(void) sv3 = svt; } } - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { @@ -13093,11 +41418,11 @@ static void lts_aga_fm0_dpf0_p8_ilores_dshres_spr_genlock(void) denise_cck++; } } -static void lts_aga_fm0_dpf0_p8_ilores_dshres_spr_filtered_genlock(void) +static void lts_aga_fm0_kehb1_p8_ihires_dshres_spr_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm0_dpf1_p8_ilores_dshres_spr_genlock(void) +static void lts_aga_fm0_n0_p4_ishres_dshres_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -13108,255 +41433,46 @@ 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; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { - gpix0 = get_genlock_transparency_border(); - dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - gpix0 = get_genlock_transparency(dpf_lookup[pix0]); - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8e(); - loaded_pix = getbpl8(); - } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl8o(); - loaded_pix = getbpl8(); - } - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8(); - } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl8(); - } - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } - } - loaded_pixs[0] = loaded_pix; - internal_pixel_cnt += 1; - matchsprites_aga(cnt + 1); - uae_u8 pix1 = 0; - uae_u8 gpix1 = 0xff; - uae_u32 dpix_val1 = BLANK_COLOR; - if (!denise_blank_active) { - gpix1 = get_genlock_transparency_border(); - dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - if (dpf_lookup_no[pix1]) { - val1 += dblpfofs[bpldualpf2of]; - } - val1 ^= bplcon4_denise_xor_val; - dpix_val1 = denise_colors.acolors[val1]; - gpix1 = get_genlock_transparency(dpf_lookup[pix1]); - } - last_bpl_pix = pix1; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8e(); - loaded_pix = getbpl8(); - } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl8o(); - loaded_pix = getbpl8(); - } - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8(); - } - if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl8(); - } - uae_u32 sv1 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv1 = svt; - } - } - loaded_pixs[1] = loaded_pix; - internal_pixel_cnt += 1; - matchsprites_aga(cnt + 2); - uae_u8 pix2 = 0; - uae_u8 gpix2 = 0xff; - uae_u32 dpix_val2 = BLANK_COLOR; - if (!denise_blank_active) { - gpix2 = get_genlock_transparency_border(); - dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; - gpix2 = get_genlock_transparency(dpf_lookup[pix2]); - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8e(); - loaded_pix = getbpl8(); - } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl8o(); - loaded_pix = getbpl8(); - } - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8(); + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; } - if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl8(); + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; } - uae_u32 sv2 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv2 = svt; - } + internal_pixel_cnt += 1; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; } - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; - matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u8 gpix3 = 0xff; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { gpix3 = get_genlock_transparency_border(); dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - uae_u8 val3 = dpf_lookup[pix3]; - if (dpf_lookup_no[pix3]) { - val3 += dblpfofs[bpldualpf2of]; - } - val3 ^= bplcon4_denise_xor_val; - dpix_val3 = denise_colors.acolors[val3]; - gpix3 = get_genlock_transparency(dpf_lookup[pix3]); - } - last_bpl_pix = pix3; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8e(); - loaded_pix = getbpl8(); - } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl8o(); - loaded_pix = getbpl8(); - } - if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8(); - } - if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl8(); - } - uae_u32 sv3 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv3 = svt; - } } - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - gpix0 = get_genlock_transparency(spix0); - - } - } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; - if (sv1) { - uae_u32 spix1 = denise_render_sprites2(pix1, sv1); - if (spix1) { - dpix_val1 = denise_colors.acolors[spix1]; - gpix1 = get_genlock_transparency(spix1); - - } - } dtbuf[h][1] = dpix_val1; dtgbuf[h][1] = gpix1; - if (sv2) { - uae_u32 spix2 = denise_render_sprites2(pix2, sv2); - if (spix2) { - dpix_val2 = denise_colors.acolors[spix2]; - gpix2 = get_genlock_transparency(spix2); - - } - } dtbuf[h][2] = dpix_val2; dtgbuf[h][2] = gpix2; - if (sv3) { - uae_u32 spix3 = denise_render_sprites2(pix3, sv3); - if (spix3) { - dpix_val3 = denise_colors.acolors[spix3]; - gpix3 = get_genlock_transparency(spix3); - - } - } dtbuf[h][3] = dpix_val3; dtgbuf[h][3] = gpix3; uae_u32 t0 = dtbuf[h ^ lol][0]; @@ -13418,27 +41534,11 @@ static void lts_aga_fm0_dpf1_p8_ilores_dshres_spr_genlock(void) denise_cck++; } } -static void lts_aga_fm0_dpf1_p8_ilores_dshres_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb0_p8_ilores_dshres_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb0_p8_ilores_dshres_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb1_p8_ilores_dshres_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb1_p8_ilores_dshres_spr_filtered_genlock(void) +static void lts_aga_fm0_n0_p4_ishres_dshres_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm0_ham0_p8_ilores_dshres_spr_genlock(void) +static void lts_aga_fm0_n1_p4_ishres_dshres_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -13449,191 +41549,46 @@ 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; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = decode_ham_pixel_aga(pix0); - gpix0 = get_genlock_transparency((pix0 >> 2) & 63); - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8(); - loaded_pix = getbpl8(); - } - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8(); } - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } - } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; - matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u8 gpix1 = 0xff; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { gpix1 = get_genlock_transparency_border(); dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - dpix_val1 = decode_ham_pixel_aga(pix1); - gpix1 = get_genlock_transparency((pix1 >> 2) & 63); - } - last_bpl_pix = pix1; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8(); - loaded_pix = getbpl8(); - } - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8(); - } - uae_u32 sv1 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv1 = svt; - } } - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; - matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u8 gpix2 = 0xff; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { gpix2 = get_genlock_transparency_border(); dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = decode_ham_pixel_aga(pix2); - gpix2 = get_genlock_transparency((pix2 >> 2) & 63); - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8(); - loaded_pix = getbpl8(); - } - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8(); - } - uae_u32 sv2 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv2 = svt; - } } - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; - matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u8 gpix3 = 0xff; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { gpix3 = get_genlock_transparency_border(); dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - dpix_val3 = decode_ham_pixel_aga(pix3); - gpix3 = get_genlock_transparency((pix3 >> 2) & 63); - } - last_bpl_pix = pix3; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8(); - loaded_pix = getbpl8(); - } - if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8(); - } - uae_u32 sv3 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv3 = svt; - } } - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; - if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - gpix0 = get_genlock_transparency(spix0); - - } - } - dtbuf[h][0] = dpix_val0; - dtgbuf[h][0] = gpix0; - if (sv1) { - uae_u32 spix1 = denise_render_sprites2(pix1, sv1); - if (spix1) { - dpix_val1 = denise_colors.acolors[spix1]; - gpix1 = get_genlock_transparency(spix1); - - } - } + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; dtbuf[h][1] = dpix_val1; dtgbuf[h][1] = gpix1; - if (sv2) { - uae_u32 spix2 = denise_render_sprites2(pix2, sv2); - if (spix2) { - dpix_val2 = denise_colors.acolors[spix2]; - gpix2 = get_genlock_transparency(spix2); - - } - } dtbuf[h][2] = dpix_val2; dtgbuf[h][2] = gpix2; - if (sv3) { - uae_u32 spix3 = denise_render_sprites2(pix3, sv3); - if (spix3) { - dpix_val3 = denise_colors.acolors[spix3]; - gpix3 = get_genlock_transparency(spix3); - - } - } dtbuf[h][3] = dpix_val3; dtgbuf[h][3] = gpix3; uae_u32 t0 = dtbuf[h ^ lol][0]; @@ -13695,11 +41650,11 @@ static void lts_aga_fm0_ham0_p8_ilores_dshres_spr_genlock(void) denise_cck++; } } -static void lts_aga_fm0_ham0_p8_ilores_dshres_spr_filtered_genlock(void) +static void lts_aga_fm0_n1_p4_ishres_dshres_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm0_ham1_p8_ilores_dshres_spr_genlock(void) +static void lts_aga_fm0_dpf0_p4_ishres_dshres_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -13710,235 +41665,162 @@ 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; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = decode_ham_pixel_aga(pix0); - gpix0 = get_genlock_transparency((pix0 >> 2) & 63); - } - last_bpl_pix = pix0; } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8e(); - loaded_pix = getbpl8(); - } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl8o(); - loaded_pix = getbpl8(); - } - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8(); - } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl8(); - } - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } - } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; - matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u8 gpix1 = 0xff; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { gpix1 = get_genlock_transparency_border(); dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - dpix_val1 = decode_ham_pixel_aga(pix1); - gpix1 = get_genlock_transparency((pix1 >> 2) & 63); - } - last_bpl_pix = pix1; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8e(); - loaded_pix = getbpl8(); - } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl8o(); - loaded_pix = getbpl8(); - } - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8(); - } - if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl8(); - } - uae_u32 sv1 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv1 = svt; - } } - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; - matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u8 gpix2 = 0xff; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { gpix2 = get_genlock_transparency_border(); dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = decode_ham_pixel_aga(pix2); - gpix2 = get_genlock_transparency((pix2 >> 2) & 63); - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8e(); - loaded_pix = getbpl8(); - } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl8o(); - loaded_pix = getbpl8(); - } - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8(); - } - if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl8(); - } - uae_u32 sv2 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv2 = svt; - } } - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; - matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u8 gpix3 = 0xff; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { gpix3 = get_genlock_transparency_border(); dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - dpix_val3 = decode_ham_pixel_aga(pix3); - gpix3 = get_genlock_transparency((pix3 >> 2) & 63); + } + internal_pixel_cnt += 1; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][1] = dpix_val1; + dtgbuf[h][1] = gpix1; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + dtbuf[h][3] = dpix_val3; + dtgbuf[h][3] = gpix3; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); } - last_bpl_pix = pix3; + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = dtgbuf[h ^ lol][1]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + *gbuf++ = dtgbuf[h ^ lol][3]; } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8e(); - loaded_pix = getbpl8(); + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm0_dpf0_p4_ishres_dshres_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm0_dpf1_p4_ishres_dshres_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl8o(); - loaded_pix = getbpl8(); + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; } - if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8(); + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; } - if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl8(); + internal_pixel_cnt += 1; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; } - uae_u32 sv3 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv3 = svt; - } + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; } - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - gpix0 = get_genlock_transparency(spix0); - - } - } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; - if (sv1) { - uae_u32 spix1 = denise_render_sprites2(pix1, sv1); - if (spix1) { - dpix_val1 = denise_colors.acolors[spix1]; - gpix1 = get_genlock_transparency(spix1); - - } - } dtbuf[h][1] = dpix_val1; dtgbuf[h][1] = gpix1; - if (sv2) { - uae_u32 spix2 = denise_render_sprites2(pix2, sv2); - if (spix2) { - dpix_val2 = denise_colors.acolors[spix2]; - gpix2 = get_genlock_transparency(spix2); - - } - } dtbuf[h][2] = dpix_val2; dtgbuf[h][2] = gpix2; - if (sv3) { - uae_u32 spix3 = denise_render_sprites2(pix3, sv3); - if (spix3) { - dpix_val3 = denise_colors.acolors[spix3]; - gpix3 = get_genlock_transparency(spix3); - - } - } dtbuf[h][3] = dpix_val3; dtgbuf[h][3] = gpix3; uae_u32 t0 = dtbuf[h ^ lol][0]; @@ -14000,27 +41882,11 @@ static void lts_aga_fm0_ham1_p8_ilores_dshres_spr_genlock(void) denise_cck++; } } -static void lts_aga_fm0_ham1_p8_ilores_dshres_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb0_p8_ilores_dshres_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb0_p8_ilores_dshres_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb1_p8_ilores_dshres_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb1_p8_ilores_dshres_spr_filtered_genlock(void) +static void lts_aga_fm0_dpf1_p4_ishres_dshres_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm0_n0_p4_ihires_dshres_genlock(void) +static void lts_aga_fm0_ehb0_p4_ishres_dshres_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -14031,7 +41897,6 @@ 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; @@ -14039,26 +41904,7 @@ static void lts_aga_fm0_n0_p4_ihires_dshres_genlock(void) if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4(); - loaded_pix = getbpl4(); - } - if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4(); } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; uae_u8 pix1 = 0; uae_u8 gpix1 = 0xff; @@ -14066,26 +41912,7 @@ static void lts_aga_fm0_n0_p4_ihires_dshres_genlock(void) if (!denise_blank_active) { gpix1 = get_genlock_transparency_border(); dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; - gpix1 = get_genlock_transparency(pix1 ^ bplcon4_denise_xor_val); - } - last_bpl_pix = pix1; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4(); - loaded_pix = getbpl4(); - } - if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4(); } - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u8 gpix2 = 0xff; @@ -14093,26 +41920,7 @@ static void lts_aga_fm0_n0_p4_ihires_dshres_genlock(void) if (!denise_blank_active) { gpix2 = get_genlock_transparency_border(); dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; - gpix2 = get_genlock_transparency(pix2 ^ bplcon4_denise_xor_val); - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4(); - loaded_pix = getbpl4(); - } - if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4(); } - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; uae_u8 pix3 = 0; uae_u8 gpix3 = 0xff; @@ -14120,26 +41928,7 @@ static void lts_aga_fm0_n0_p4_ihires_dshres_genlock(void) if (!denise_blank_active) { gpix3 = get_genlock_transparency_border(); dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; - gpix3 = get_genlock_transparency(pix3 ^ bplcon4_denise_xor_val); - } - last_bpl_pix = pix3; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4(); - loaded_pix = getbpl4(); - } - if (bpldat_copy[0] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4(); } - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; @@ -14209,11 +41998,11 @@ static void lts_aga_fm0_n0_p4_ihires_dshres_genlock(void) denise_cck++; } } -static void lts_aga_fm0_n0_p4_ihires_dshres_filtered_genlock(void) +static void lts_aga_fm0_ehb0_p4_ishres_dshres_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm0_n1_p4_ihires_dshres_genlock(void) +static void lts_aga_fm0_ehb1_p4_ishres_dshres_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -14224,7 +42013,6 @@ 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; @@ -14232,37 +42020,7 @@ static void lts_aga_fm0_n1_p4_ihires_dshres_genlock(void) if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4e(); - loaded_pix = getbpl4(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl4o(); - loaded_pix = getbpl4(); - } - if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4(); - } - if (bpldat_copy[1] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[1]) { - copybpl4o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl4(); } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; uae_u8 pix1 = 0; uae_u8 gpix1 = 0xff; @@ -14270,75 +42028,15 @@ static void lts_aga_fm0_n1_p4_ihires_dshres_genlock(void) if (!denise_blank_active) { gpix1 = get_genlock_transparency_border(); dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; - gpix1 = get_genlock_transparency(pix1 ^ bplcon4_denise_xor_val); - } - last_bpl_pix = pix1; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4e(); - loaded_pix = getbpl4(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl4o(); - loaded_pix = getbpl4(); - } - if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4(); } - if (bpldat_copy[1] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[1]) { - copybpl4o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl4(); - } - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; uae_u8 pix2 = 0; - uae_u8 gpix2 = 0xff; - uae_u32 dpix_val2 = BLANK_COLOR; - if (!denise_blank_active) { - gpix2 = get_genlock_transparency_border(); - dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; - gpix2 = get_genlock_transparency(pix2 ^ bplcon4_denise_xor_val); - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4e(); - loaded_pix = getbpl4(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl4o(); - loaded_pix = getbpl4(); - } - if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4(); - } - if (bpldat_copy[1] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[1]) { - copybpl4o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl4(); + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; } - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; uae_u8 pix3 = 0; uae_u8 gpix3 = 0xff; @@ -14346,37 +42044,7 @@ static void lts_aga_fm0_n1_p4_ihires_dshres_genlock(void) if (!denise_blank_active) { gpix3 = get_genlock_transparency_border(); dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; - gpix3 = get_genlock_transparency(pix3 ^ bplcon4_denise_xor_val); - } - last_bpl_pix = pix3; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4e(); - loaded_pix = getbpl4(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl4o(); - loaded_pix = getbpl4(); - } - if (bpldat_copy[0] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4(); - } - if (bpldat_copy[1] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[1]) { - copybpl4o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl4(); } - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; @@ -14446,11 +42114,11 @@ static void lts_aga_fm0_n1_p4_ihires_dshres_genlock(void) denise_cck++; } } -static void lts_aga_fm0_n1_p4_ihires_dshres_filtered_genlock(void) +static void lts_aga_fm0_ehb1_p4_ishres_dshres_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm0_dpf0_p4_ihires_dshres_genlock(void) +static void lts_aga_fm0_ham0_p4_ishres_dshres_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -14461,7 +42129,6 @@ 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; @@ -14469,31 +42136,7 @@ static void lts_aga_fm0_dpf0_p4_ihires_dshres_genlock(void) if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - gpix0 = get_genlock_transparency(dpf_lookup[pix0]); - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4(); - loaded_pix = getbpl4(); - } - if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4(); } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; uae_u8 pix1 = 0; uae_u8 gpix1 = 0xff; @@ -14501,31 +42144,7 @@ static void lts_aga_fm0_dpf0_p4_ihires_dshres_genlock(void) if (!denise_blank_active) { gpix1 = get_genlock_transparency_border(); dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - if (dpf_lookup_no[pix1]) { - val1 += dblpfofs[bpldualpf2of]; - } - val1 ^= bplcon4_denise_xor_val; - dpix_val1 = denise_colors.acolors[val1]; - gpix1 = get_genlock_transparency(dpf_lookup[pix1]); - } - last_bpl_pix = pix1; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4(); - loaded_pix = getbpl4(); - } - if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4(); } - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u8 gpix2 = 0xff; @@ -14533,31 +42152,7 @@ static void lts_aga_fm0_dpf0_p4_ihires_dshres_genlock(void) if (!denise_blank_active) { gpix2 = get_genlock_transparency_border(); dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; - gpix2 = get_genlock_transparency(dpf_lookup[pix2]); - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4(); - loaded_pix = getbpl4(); - } - if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4(); } - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; uae_u8 pix3 = 0; uae_u8 gpix3 = 0xff; @@ -14565,31 +42160,7 @@ static void lts_aga_fm0_dpf0_p4_ihires_dshres_genlock(void) if (!denise_blank_active) { gpix3 = get_genlock_transparency_border(); dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - uae_u8 val3 = dpf_lookup[pix3]; - if (dpf_lookup_no[pix3]) { - val3 += dblpfofs[bpldualpf2of]; - } - val3 ^= bplcon4_denise_xor_val; - dpix_val3 = denise_colors.acolors[val3]; - gpix3 = get_genlock_transparency(dpf_lookup[pix3]); - } - last_bpl_pix = pix3; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4(); - loaded_pix = getbpl4(); - } - if (bpldat_copy[0] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4(); } - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; @@ -14659,11 +42230,11 @@ static void lts_aga_fm0_dpf0_p4_ihires_dshres_genlock(void) denise_cck++; } } -static void lts_aga_fm0_dpf0_p4_ihires_dshres_filtered_genlock(void) +static void lts_aga_fm0_ham0_p4_ishres_dshres_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm0_dpf1_p4_ihires_dshres_genlock(void) +static void lts_aga_fm0_ham1_p4_ishres_dshres_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -14674,7 +42245,6 @@ 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; @@ -14682,128 +42252,23 @@ static void lts_aga_fm0_dpf1_p4_ihires_dshres_genlock(void) if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - gpix0 = get_genlock_transparency(dpf_lookup[pix0]); - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4e(); - loaded_pix = getbpl4(); } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl4o(); - loaded_pix = getbpl4(); - } - if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4(); - } - if (bpldat_copy[1] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[1]) { - copybpl4o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl4(); - } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; uae_u8 pix1 = 0; uae_u8 gpix1 = 0xff; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { - gpix1 = get_genlock_transparency_border(); - dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - if (dpf_lookup_no[pix1]) { - val1 += dblpfofs[bpldualpf2of]; - } - val1 ^= bplcon4_denise_xor_val; - dpix_val1 = denise_colors.acolors[val1]; - gpix1 = get_genlock_transparency(dpf_lookup[pix1]); - } - last_bpl_pix = pix1; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4e(); - loaded_pix = getbpl4(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl4o(); - loaded_pix = getbpl4(); - } - if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4(); - } - if (bpldat_copy[1] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[1]) { - copybpl4o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl4(); - } - loaded_pixs[1] = loaded_pix; - internal_pixel_cnt += 1; - uae_u8 pix2 = 0; - uae_u8 gpix2 = 0xff; - uae_u32 dpix_val2 = BLANK_COLOR; - if (!denise_blank_active) { - gpix2 = get_genlock_transparency_border(); - dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; - gpix2 = get_genlock_transparency(dpf_lookup[pix2]); - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4e(); - loaded_pix = getbpl4(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl4o(); - loaded_pix = getbpl4(); - } - if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4(); - } - if (bpldat_copy[1] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[1]) { - copybpl4o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl4(); + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 1; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; } - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; uae_u8 pix3 = 0; uae_u8 gpix3 = 0xff; @@ -14811,42 +42276,7 @@ static void lts_aga_fm0_dpf1_p4_ihires_dshres_genlock(void) if (!denise_blank_active) { gpix3 = get_genlock_transparency_border(); dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - uae_u8 val3 = dpf_lookup[pix3]; - if (dpf_lookup_no[pix3]) { - val3 += dblpfofs[bpldualpf2of]; - } - val3 ^= bplcon4_denise_xor_val; - dpix_val3 = denise_colors.acolors[val3]; - gpix3 = get_genlock_transparency(dpf_lookup[pix3]); - } - last_bpl_pix = pix3; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4e(); - loaded_pix = getbpl4(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl4o(); - loaded_pix = getbpl4(); - } - if (bpldat_copy[0] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4(); } - if (bpldat_copy[1] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[1]) { - copybpl4o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl4(); - } - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; @@ -14916,139 +42346,127 @@ static void lts_aga_fm0_dpf1_p4_ihires_dshres_genlock(void) denise_cck++; } } -static void lts_aga_fm0_dpf1_p4_ihires_dshres_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb0_p4_ihires_dshres_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb0_p4_ihires_dshres_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb1_p4_ihires_dshres_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb1_p4_ihires_dshres_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham0_p4_ihires_dshres_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham0_p4_ihires_dshres_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham1_p4_ihires_dshres_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham1_p4_ihires_dshres_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb0_p4_ihires_dshres_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb0_p4_ihires_dshres_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb1_p4_ihires_dshres_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb1_p4_ihires_dshres_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_n0_p8_ihires_dshres_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_n0_p8_ihires_dshres_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_n1_p8_ihires_dshres_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_n1_p8_ihires_dshres_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_dpf0_p8_ihires_dshres_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_dpf0_p8_ihires_dshres_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_dpf1_p8_ihires_dshres_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_dpf1_p8_ihires_dshres_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb0_p8_ihires_dshres_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb0_p8_ihires_dshres_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb1_p8_ihires_dshres_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb1_p8_ihires_dshres_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham0_p8_ihires_dshres_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham0_p8_ihires_dshres_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham1_p8_ihires_dshres_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham1_p8_ihires_dshres_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb0_p8_ihires_dshres_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb0_p8_ihires_dshres_filtered_genlock(void) +static void lts_aga_fm0_ham1_p4_ishres_dshres_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm0_kehb1_p8_ihires_dshres_genlock(void) +static void lts_aga_fm0_kehb0_p4_ishres_dshres_genlock(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 1; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 1; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][1] = dpix_val1; + dtgbuf[h][1] = gpix1; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + dtbuf[h][3] = dpix_val3; + dtgbuf[h][3] = gpix3; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = dtgbuf[h ^ lol][1]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + *gbuf++ = dtgbuf[h ^ lol][3]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm0_kehb1_p8_ihires_dshres_filtered_genlock(void) +static void lts_aga_fm0_kehb0_p4_ishres_dshres_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm0_n0_p4_ihires_dshres_spr_genlock(void) +static void lts_aga_fm0_kehb1_p4_ishres_dshres_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -15059,191 +42477,46 @@ 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; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4(); - loaded_pix = getbpl4(); - } - if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4(); } - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } - } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; - matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u8 gpix1 = 0xff; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { gpix1 = get_genlock_transparency_border(); dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; - gpix1 = get_genlock_transparency(pix1 ^ bplcon4_denise_xor_val); - } - last_bpl_pix = pix1; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4(); - loaded_pix = getbpl4(); - } - if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4(); - } - uae_u32 sv1 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv1 = svt; - } } - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; - matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u8 gpix2 = 0xff; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { gpix2 = get_genlock_transparency_border(); dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; - gpix2 = get_genlock_transparency(pix2 ^ bplcon4_denise_xor_val); - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4(); - loaded_pix = getbpl4(); - } - if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4(); - } - uae_u32 sv2 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv2 = svt; - } } - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; - matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u8 gpix3 = 0xff; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { gpix3 = get_genlock_transparency_border(); dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; - gpix3 = get_genlock_transparency(pix3 ^ bplcon4_denise_xor_val); - } - last_bpl_pix = pix3; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4(); - loaded_pix = getbpl4(); - } - if (bpldat_copy[0] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4(); - } - uae_u32 sv3 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv3 = svt; - } } - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - gpix0 = get_genlock_transparency(spix0); - - } - } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; - if (sv1) { - uae_u32 spix1 = denise_render_sprites2(pix1, sv1); - if (spix1) { - dpix_val1 = denise_colors.acolors[spix1]; - gpix1 = get_genlock_transparency(spix1); - - } - } dtbuf[h][1] = dpix_val1; dtgbuf[h][1] = gpix1; - if (sv2) { - uae_u32 spix2 = denise_render_sprites2(pix2, sv2); - if (spix2) { - dpix_val2 = denise_colors.acolors[spix2]; - gpix2 = get_genlock_transparency(spix2); - - } - } dtbuf[h][2] = dpix_val2; dtgbuf[h][2] = gpix2; - if (sv3) { - uae_u32 spix3 = denise_render_sprites2(pix3, sv3); - if (spix3) { - dpix_val3 = denise_colors.acolors[spix3]; - gpix3 = get_genlock_transparency(spix3); - - } - } dtbuf[h][3] = dpix_val3; dtgbuf[h][3] = gpix3; uae_u32 t0 = dtbuf[h ^ lol][0]; @@ -15305,11 +42578,11 @@ static void lts_aga_fm0_n0_p4_ihires_dshres_spr_genlock(void) denise_cck++; } } -static void lts_aga_fm0_n0_p4_ihires_dshres_spr_filtered_genlock(void) +static void lts_aga_fm0_kehb1_p4_ishres_dshres_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm0_n1_p4_ihires_dshres_spr_genlock(void) +static void lts_aga_fm0_n0_p8_ishres_dshres_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -15320,235 +42593,46 @@ 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; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4e(); - loaded_pix = getbpl4(); } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl4o(); - loaded_pix = getbpl4(); - } - if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4(); - } - if (bpldat_copy[1] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[1]) { - copybpl4o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl4(); - } - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } - } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; - matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u8 gpix1 = 0xff; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { gpix1 = get_genlock_transparency_border(); - dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; - gpix1 = get_genlock_transparency(pix1 ^ bplcon4_denise_xor_val); - } - last_bpl_pix = pix1; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4e(); - loaded_pix = getbpl4(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl4o(); - loaded_pix = getbpl4(); - } - if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4(); - } - if (bpldat_copy[1] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[1]) { - copybpl4o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl4(); - } - uae_u32 sv1 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv1 = svt; - } + dpix_val1 = bordercolor; } - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; - matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u8 gpix2 = 0xff; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { gpix2 = get_genlock_transparency_border(); dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; - gpix2 = get_genlock_transparency(pix2 ^ bplcon4_denise_xor_val); - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4e(); - loaded_pix = getbpl4(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl4o(); - loaded_pix = getbpl4(); - } - if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4(); - } - if (bpldat_copy[1] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[1]) { - copybpl4o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl4(); } - uae_u32 sv2 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv2 = svt; - } - } - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; - matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u8 gpix3 = 0xff; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { gpix3 = get_genlock_transparency_border(); dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; - gpix3 = get_genlock_transparency(pix3 ^ bplcon4_denise_xor_val); - } - last_bpl_pix = pix3; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4e(); - loaded_pix = getbpl4(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl4o(); - loaded_pix = getbpl4(); - } - if (bpldat_copy[0] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4(); - } - if (bpldat_copy[1] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[1]) { - copybpl4o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl4(); - } - uae_u32 sv3 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv3 = svt; - } } - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - gpix0 = get_genlock_transparency(spix0); - - } - } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; - if (sv1) { - uae_u32 spix1 = denise_render_sprites2(pix1, sv1); - if (spix1) { - dpix_val1 = denise_colors.acolors[spix1]; - gpix1 = get_genlock_transparency(spix1); - - } - } dtbuf[h][1] = dpix_val1; dtgbuf[h][1] = gpix1; - if (sv2) { - uae_u32 spix2 = denise_render_sprites2(pix2, sv2); - if (spix2) { - dpix_val2 = denise_colors.acolors[spix2]; - gpix2 = get_genlock_transparency(spix2); - - } - } dtbuf[h][2] = dpix_val2; dtgbuf[h][2] = gpix2; - if (sv3) { - uae_u32 spix3 = denise_render_sprites2(pix3, sv3); - if (spix3) { - dpix_val3 = denise_colors.acolors[spix3]; - gpix3 = get_genlock_transparency(spix3); - - } - } dtbuf[h][3] = dpix_val3; dtgbuf[h][3] = gpix3; uae_u32 t0 = dtbuf[h ^ lol][0]; @@ -15610,11 +42694,11 @@ static void lts_aga_fm0_n1_p4_ihires_dshres_spr_genlock(void) denise_cck++; } } -static void lts_aga_fm0_n1_p4_ihires_dshres_spr_filtered_genlock(void) +static void lts_aga_fm0_n0_p8_ishres_dshres_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm0_dpf0_p4_ihires_dshres_spr_genlock(void) +static void lts_aga_fm0_n1_p8_ishres_dshres_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -15625,211 +42709,46 @@ 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; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - gpix0 = get_genlock_transparency(dpf_lookup[pix0]); - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4(); - loaded_pix = getbpl4(); - } - if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4(); - } - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; - matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u8 gpix1 = 0xff; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { gpix1 = get_genlock_transparency_border(); dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - if (dpf_lookup_no[pix1]) { - val1 += dblpfofs[bpldualpf2of]; - } - val1 ^= bplcon4_denise_xor_val; - dpix_val1 = denise_colors.acolors[val1]; - gpix1 = get_genlock_transparency(dpf_lookup[pix1]); - } - last_bpl_pix = pix1; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4(); - loaded_pix = getbpl4(); - } - if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4(); - } - uae_u32 sv1 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv1 = svt; - } } - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; - matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u8 gpix2 = 0xff; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { gpix2 = get_genlock_transparency_border(); dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; - gpix2 = get_genlock_transparency(dpf_lookup[pix2]); - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4(); - loaded_pix = getbpl4(); - } - if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4(); - } - uae_u32 sv2 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv2 = svt; - } - } - loaded_pixs[2] = loaded_pix; - internal_pixel_cnt += 1; - matchsprites_aga(cnt + 3); - uae_u8 pix3 = 0; - uae_u8 gpix3 = 0xff; - uae_u32 dpix_val3 = BLANK_COLOR; - if (!denise_blank_active) { - gpix3 = get_genlock_transparency_border(); - dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - uae_u8 val3 = dpf_lookup[pix3]; - if (dpf_lookup_no[pix3]) { - val3 += dblpfofs[bpldualpf2of]; - } - val3 ^= bplcon4_denise_xor_val; - dpix_val3 = denise_colors.acolors[val3]; - gpix3 = get_genlock_transparency(dpf_lookup[pix3]); - } - last_bpl_pix = pix3; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4(); - loaded_pix = getbpl4(); - } - if (bpldat_copy[0] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4(); - } - uae_u32 sv3 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv3 = svt; - } } - loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + } internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - gpix0 = get_genlock_transparency(spix0); - - } - } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; - if (sv1) { - uae_u32 spix1 = denise_render_sprites2(pix1, sv1); - if (spix1) { - dpix_val1 = denise_colors.acolors[spix1]; - gpix1 = get_genlock_transparency(spix1); - - } - } dtbuf[h][1] = dpix_val1; dtgbuf[h][1] = gpix1; - if (sv2) { - uae_u32 spix2 = denise_render_sprites2(pix2, sv2); - if (spix2) { - dpix_val2 = denise_colors.acolors[spix2]; - gpix2 = get_genlock_transparency(spix2); - - } - } dtbuf[h][2] = dpix_val2; dtgbuf[h][2] = gpix2; - if (sv3) { - uae_u32 spix3 = denise_render_sprites2(pix3, sv3); - if (spix3) { - dpix_val3 = denise_colors.acolors[spix3]; - gpix3 = get_genlock_transparency(spix3); - - } - } dtbuf[h][3] = dpix_val3; dtgbuf[h][3] = gpix3; uae_u32 t0 = dtbuf[h ^ lol][0]; @@ -15891,11 +42810,11 @@ static void lts_aga_fm0_dpf0_p4_ihires_dshres_spr_genlock(void) denise_cck++; } } -static void lts_aga_fm0_dpf0_p4_ihires_dshres_spr_filtered_genlock(void) +static void lts_aga_fm0_n1_p8_ishres_dshres_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm0_dpf1_p4_ihires_dshres_spr_genlock(void) +static void lts_aga_fm0_dpf0_p8_ishres_dshres_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -15906,255 +42825,46 @@ 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; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - gpix0 = get_genlock_transparency(dpf_lookup[pix0]); - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4e(); - loaded_pix = getbpl4(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl4o(); - loaded_pix = getbpl4(); - } - if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4(); - } - if (bpldat_copy[1] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[1]) { - copybpl4o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl4(); - } - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; - matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u8 gpix1 = 0xff; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { gpix1 = get_genlock_transparency_border(); dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - if (dpf_lookup_no[pix1]) { - val1 += dblpfofs[bpldualpf2of]; - } - val1 ^= bplcon4_denise_xor_val; - dpix_val1 = denise_colors.acolors[val1]; - gpix1 = get_genlock_transparency(dpf_lookup[pix1]); - } - last_bpl_pix = pix1; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4e(); - loaded_pix = getbpl4(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl4o(); - loaded_pix = getbpl4(); - } - if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4(); - } - if (bpldat_copy[1] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[1]) { - copybpl4o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl4(); - } - uae_u32 sv1 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv1 = svt; - } } - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; - matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u8 gpix2 = 0xff; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { gpix2 = get_genlock_transparency_border(); dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; - gpix2 = get_genlock_transparency(dpf_lookup[pix2]); - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4e(); - loaded_pix = getbpl4(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl4o(); - loaded_pix = getbpl4(); - } - if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4(); - } - if (bpldat_copy[1] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[1]) { - copybpl4o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl4(); - } - uae_u32 sv2 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv2 = svt; - } } - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; - matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u8 gpix3 = 0xff; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { gpix3 = get_genlock_transparency_border(); dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - uae_u8 val3 = dpf_lookup[pix3]; - if (dpf_lookup_no[pix3]) { - val3 += dblpfofs[bpldualpf2of]; - } - val3 ^= bplcon4_denise_xor_val; - dpix_val3 = denise_colors.acolors[val3]; - gpix3 = get_genlock_transparency(dpf_lookup[pix3]); - } - last_bpl_pix = pix3; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4e(); - loaded_pix = getbpl4(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl4o(); - loaded_pix = getbpl4(); - } - if (bpldat_copy[0] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4(); } - if (bpldat_copy[1] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[1]) { - copybpl4o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl4(); - } - uae_u32 sv3 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv3 = svt; - } - } - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - gpix0 = get_genlock_transparency(spix0); - - } - } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; - if (sv1) { - uae_u32 spix1 = denise_render_sprites2(pix1, sv1); - if (spix1) { - dpix_val1 = denise_colors.acolors[spix1]; - gpix1 = get_genlock_transparency(spix1); - - } - } dtbuf[h][1] = dpix_val1; dtgbuf[h][1] = gpix1; - if (sv2) { - uae_u32 spix2 = denise_render_sprites2(pix2, sv2); - if (spix2) { - dpix_val2 = denise_colors.acolors[spix2]; - gpix2 = get_genlock_transparency(spix2); - - } - } - dtbuf[h][2] = dpix_val2; - dtgbuf[h][2] = gpix2; - if (sv3) { - uae_u32 spix3 = denise_render_sprites2(pix3, sv3); - if (spix3) { - dpix_val3 = denise_colors.acolors[spix3]; - gpix3 = get_genlock_transparency(spix3); - - } - } + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; dtbuf[h][3] = dpix_val3; dtgbuf[h][3] = gpix3; uae_u32 t0 = dtbuf[h ^ lol][0]; @@ -16193,260 +42903,28 @@ static void lts_aga_fm0_dpf1_p4_ihires_dshres_spr_genlock(void) *buf1++ = t3; *buf2++ = t3; *gbuf++ = dtgbuf[h ^ lol][3]; - } - sprites_hidden = sprites_hidden2; - #ifdef DEBUGGER - *debug_dma_dhpos_odd = denise_hcounter; - #endif - denise_hcounter_cmp++; - denise_hcounter_cmp &= 511; - denise_hcounter++; - denise_hcounter &= 511; - denise_hcounter_next++; - denise_hcounter_next &= 511; - } - denise_pixtotal++; - if (denise_pixtotal == 0) { - internal_pixel_start_cnt = internal_pixel_cnt; - } - denise_hcounter = denise_hcounter_new; - if (denise_accurate_mode) { - denise_hcounter_cmp = denise_hcounter_new; - } - denise_cck++; - } -} -static void lts_aga_fm0_dpf1_p4_ihires_dshres_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb0_p4_ihires_dshres_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb0_p4_ihires_dshres_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb1_p4_ihires_dshres_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb1_p4_ihires_dshres_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham0_p4_ihires_dshres_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham0_p4_ihires_dshres_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham1_p4_ihires_dshres_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham1_p4_ihires_dshres_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb0_p4_ihires_dshres_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb0_p4_ihires_dshres_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb1_p4_ihires_dshres_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb1_p4_ihires_dshres_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_n0_p8_ihires_dshres_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_n0_p8_ihires_dshres_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_n1_p8_ihires_dshres_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_n1_p8_ihires_dshres_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_dpf0_p8_ihires_dshres_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_dpf0_p8_ihires_dshres_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_dpf1_p8_ihires_dshres_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_dpf1_p8_ihires_dshres_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb0_p8_ihires_dshres_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb0_p8_ihires_dshres_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb1_p8_ihires_dshres_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb1_p8_ihires_dshres_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham0_p8_ihires_dshres_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham0_p8_ihires_dshres_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham1_p8_ihires_dshres_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham1_p8_ihires_dshres_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb0_p8_ihires_dshres_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb0_p8_ihires_dshres_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb1_p8_ihires_dshres_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb1_p8_ihires_dshres_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_n0_p4_ishres_dshres_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_n0_p4_ishres_dshres_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_n1_p4_ishres_dshres_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_n1_p4_ishres_dshres_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_dpf0_p4_ishres_dshres_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_dpf0_p4_ishres_dshres_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_dpf1_p4_ishres_dshres_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_dpf1_p4_ishres_dshres_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb0_p4_ishres_dshres_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb0_p4_ishres_dshres_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb1_p4_ishres_dshres_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_ehb1_p4_ishres_dshres_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham0_p4_ishres_dshres_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham0_p4_ishres_dshres_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham1_p4_ishres_dshres_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_ham1_p4_ishres_dshres_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb0_p4_ishres_dshres_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb0_p4_ishres_dshres_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb1_p4_ishres_dshres_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_kehb1_p4_ishres_dshres_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_n0_p8_ishres_dshres_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_n0_p8_ishres_dshres_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_n1_p8_ishres_dshres_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_n1_p8_ishres_dshres_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm0_dpf0_p8_ishres_dshres_genlock(void) -{ - lts_null(); + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } static void lts_aga_fm0_dpf0_p8_ishres_dshres_filtered_genlock(void) { @@ -16454,7 +42932,115 @@ static void lts_aga_fm0_dpf0_p8_ishres_dshres_filtered_genlock(void) } static void lts_aga_fm0_dpf1_p8_ishres_dshres_genlock(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 1; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 1; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][1] = dpix_val1; + dtgbuf[h][1] = gpix1; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + dtbuf[h][3] = dpix_val3; + dtgbuf[h][3] = gpix3; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = dtgbuf[h ^ lol][1]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + *gbuf++ = dtgbuf[h ^ lol][3]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } static void lts_aga_fm0_dpf1_p8_ishres_dshres_filtered_genlock(void) { @@ -16462,7 +43048,115 @@ static void lts_aga_fm0_dpf1_p8_ishres_dshres_filtered_genlock(void) } static void lts_aga_fm0_ehb0_p8_ishres_dshres_genlock(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 1; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 1; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][1] = dpix_val1; + dtgbuf[h][1] = gpix1; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + dtbuf[h][3] = dpix_val3; + dtgbuf[h][3] = gpix3; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = dtgbuf[h ^ lol][1]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + *gbuf++ = dtgbuf[h ^ lol][3]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } static void lts_aga_fm0_ehb0_p8_ishres_dshres_filtered_genlock(void) { @@ -16470,7 +43164,115 @@ static void lts_aga_fm0_ehb0_p8_ishres_dshres_filtered_genlock(void) } static void lts_aga_fm0_ehb1_p8_ishres_dshres_genlock(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 1; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 1; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][1] = dpix_val1; + dtgbuf[h][1] = gpix1; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + dtbuf[h][3] = dpix_val3; + dtgbuf[h][3] = gpix3; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = dtgbuf[h ^ lol][1]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + *gbuf++ = dtgbuf[h ^ lol][3]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } static void lts_aga_fm0_ehb1_p8_ishres_dshres_filtered_genlock(void) { @@ -16478,7 +43280,115 @@ static void lts_aga_fm0_ehb1_p8_ishres_dshres_filtered_genlock(void) } static void lts_aga_fm0_ham0_p8_ishres_dshres_genlock(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 1; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 1; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][1] = dpix_val1; + dtgbuf[h][1] = gpix1; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + dtbuf[h][3] = dpix_val3; + dtgbuf[h][3] = gpix3; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = dtgbuf[h ^ lol][1]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + *gbuf++ = dtgbuf[h ^ lol][3]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } static void lts_aga_fm0_ham0_p8_ishres_dshres_filtered_genlock(void) { @@ -16486,7 +43396,115 @@ static void lts_aga_fm0_ham0_p8_ishres_dshres_filtered_genlock(void) } static void lts_aga_fm0_ham1_p8_ishres_dshres_genlock(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 1; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 1; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][1] = dpix_val1; + dtgbuf[h][1] = gpix1; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + dtbuf[h][3] = dpix_val3; + dtgbuf[h][3] = gpix3; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = dtgbuf[h ^ lol][1]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + *gbuf++ = dtgbuf[h ^ lol][3]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } static void lts_aga_fm0_ham1_p8_ishres_dshres_filtered_genlock(void) { @@ -16494,7 +43512,115 @@ static void lts_aga_fm0_ham1_p8_ishres_dshres_filtered_genlock(void) } static void lts_aga_fm0_kehb0_p8_ishres_dshres_genlock(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 1; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 1; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][1] = dpix_val1; + dtgbuf[h][1] = gpix1; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + dtbuf[h][3] = dpix_val3; + dtgbuf[h][3] = gpix3; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = dtgbuf[h ^ lol][1]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + *gbuf++ = dtgbuf[h ^ lol][3]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } static void lts_aga_fm0_kehb0_p8_ishres_dshres_filtered_genlock(void) { @@ -16502,7 +43628,115 @@ static void lts_aga_fm0_kehb0_p8_ishres_dshres_filtered_genlock(void) } static void lts_aga_fm0_kehb1_p8_ishres_dshres_genlock(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 1; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 1; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][1] = dpix_val1; + dtgbuf[h][1] = gpix1; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + dtbuf[h][3] = dpix_val3; + dtgbuf[h][3] = gpix3; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = dtgbuf[h ^ lol][1]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + *gbuf++ = dtgbuf[h ^ lol][3]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } static void lts_aga_fm0_kehb1_p8_ishres_dshres_filtered_genlock(void) { @@ -16510,7 +43744,183 @@ static void lts_aga_fm0_kehb1_p8_ishres_dshres_filtered_genlock(void) } static void lts_aga_fm0_n0_p4_ishres_dshres_spr_genlock(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } + } + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + } + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } + } + internal_pixel_cnt += 1; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + gpix1 = get_genlock_transparency(spix1); + + } + } + dtbuf[h][1] = dpix_val1; + dtgbuf[h][1] = gpix1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + gpix3 = get_genlock_transparency(spix3); + + } + } + dtbuf[h][3] = dpix_val3; + dtgbuf[h][3] = gpix3; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = dtgbuf[h ^ lol][1]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + *gbuf++ = dtgbuf[h ^ lol][3]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } static void lts_aga_fm0_n0_p4_ishres_dshres_spr_filtered_genlock(void) { @@ -16518,7 +43928,183 @@ static void lts_aga_fm0_n0_p4_ishres_dshres_spr_filtered_genlock(void) } static void lts_aga_fm0_n1_p4_ishres_dshres_spr_genlock(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } + } + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + } + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } + } + internal_pixel_cnt += 1; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + gpix1 = get_genlock_transparency(spix1); + + } + } + dtbuf[h][1] = dpix_val1; + dtgbuf[h][1] = gpix1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + gpix3 = get_genlock_transparency(spix3); + + } + } + dtbuf[h][3] = dpix_val3; + dtgbuf[h][3] = gpix3; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = dtgbuf[h ^ lol][1]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + *gbuf++ = dtgbuf[h ^ lol][3]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } static void lts_aga_fm0_n1_p4_ishres_dshres_spr_filtered_genlock(void) { @@ -16526,7 +44112,183 @@ static void lts_aga_fm0_n1_p4_ishres_dshres_spr_filtered_genlock(void) } static void lts_aga_fm0_dpf0_p4_ishres_dshres_spr_genlock(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } + } + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + } + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } + } + internal_pixel_cnt += 1; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + gpix1 = get_genlock_transparency(spix1); + + } + } + dtbuf[h][1] = dpix_val1; + dtgbuf[h][1] = gpix1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + gpix3 = get_genlock_transparency(spix3); + + } + } + dtbuf[h][3] = dpix_val3; + dtgbuf[h][3] = gpix3; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = dtgbuf[h ^ lol][1]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + *gbuf++ = dtgbuf[h ^ lol][3]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } static void lts_aga_fm0_dpf0_p4_ishres_dshres_spr_filtered_genlock(void) { @@ -16534,7 +44296,183 @@ static void lts_aga_fm0_dpf0_p4_ishres_dshres_spr_filtered_genlock(void) } static void lts_aga_fm0_dpf1_p4_ishres_dshres_spr_genlock(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } + } + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + } + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } + } + internal_pixel_cnt += 1; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + gpix1 = get_genlock_transparency(spix1); + + } + } + dtbuf[h][1] = dpix_val1; + dtgbuf[h][1] = gpix1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + gpix3 = get_genlock_transparency(spix3); + + } + } + dtbuf[h][3] = dpix_val3; + dtgbuf[h][3] = gpix3; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = dtgbuf[h ^ lol][1]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + *gbuf++ = dtgbuf[h ^ lol][3]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } static void lts_aga_fm0_dpf1_p4_ishres_dshres_spr_filtered_genlock(void) { @@ -16542,7 +44480,183 @@ static void lts_aga_fm0_dpf1_p4_ishres_dshres_spr_filtered_genlock(void) } static void lts_aga_fm0_ehb0_p4_ishres_dshres_spr_genlock(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } + } + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + } + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } + } + internal_pixel_cnt += 1; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + gpix1 = get_genlock_transparency(spix1); + + } + } + dtbuf[h][1] = dpix_val1; + dtgbuf[h][1] = gpix1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + gpix3 = get_genlock_transparency(spix3); + + } + } + dtbuf[h][3] = dpix_val3; + dtgbuf[h][3] = gpix3; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = dtgbuf[h ^ lol][1]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + *gbuf++ = dtgbuf[h ^ lol][3]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } static void lts_aga_fm0_ehb0_p4_ishres_dshres_spr_filtered_genlock(void) { @@ -16550,7 +44664,183 @@ static void lts_aga_fm0_ehb0_p4_ishres_dshres_spr_filtered_genlock(void) } static void lts_aga_fm0_ehb1_p4_ishres_dshres_spr_genlock(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } + } + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + } + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } + } + internal_pixel_cnt += 1; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + gpix1 = get_genlock_transparency(spix1); + + } + } + dtbuf[h][1] = dpix_val1; + dtgbuf[h][1] = gpix1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + gpix3 = get_genlock_transparency(spix3); + + } + } + dtbuf[h][3] = dpix_val3; + dtgbuf[h][3] = gpix3; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = dtgbuf[h ^ lol][1]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + *gbuf++ = dtgbuf[h ^ lol][3]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } static void lts_aga_fm0_ehb1_p4_ishres_dshres_spr_filtered_genlock(void) { @@ -16558,7 +44848,183 @@ static void lts_aga_fm0_ehb1_p4_ishres_dshres_spr_filtered_genlock(void) } static void lts_aga_fm0_ham0_p4_ishres_dshres_spr_genlock(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } + } + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + } + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } + } + internal_pixel_cnt += 1; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + gpix1 = get_genlock_transparency(spix1); + + } + } + dtbuf[h][1] = dpix_val1; + dtgbuf[h][1] = gpix1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + gpix3 = get_genlock_transparency(spix3); + + } + } + dtbuf[h][3] = dpix_val3; + dtgbuf[h][3] = gpix3; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = dtgbuf[h ^ lol][1]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + *gbuf++ = dtgbuf[h ^ lol][3]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } static void lts_aga_fm0_ham0_p4_ishres_dshres_spr_filtered_genlock(void) { @@ -16566,7 +45032,183 @@ static void lts_aga_fm0_ham0_p4_ishres_dshres_spr_filtered_genlock(void) } static void lts_aga_fm0_ham1_p4_ishres_dshres_spr_genlock(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } + } + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + } + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } + } + internal_pixel_cnt += 1; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + gpix1 = get_genlock_transparency(spix1); + + } + } + dtbuf[h][1] = dpix_val1; + dtgbuf[h][1] = gpix1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + gpix3 = get_genlock_transparency(spix3); + + } + } + dtbuf[h][3] = dpix_val3; + dtgbuf[h][3] = gpix3; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = dtgbuf[h ^ lol][1]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + *gbuf++ = dtgbuf[h ^ lol][3]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } static void lts_aga_fm0_ham1_p4_ishres_dshres_spr_filtered_genlock(void) { @@ -16574,7 +45216,183 @@ static void lts_aga_fm0_ham1_p4_ishres_dshres_spr_filtered_genlock(void) } static void lts_aga_fm0_kehb0_p4_ishres_dshres_spr_genlock(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } + } + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + } + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } + } + internal_pixel_cnt += 1; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + gpix1 = get_genlock_transparency(spix1); + + } + } + dtbuf[h][1] = dpix_val1; + dtgbuf[h][1] = gpix1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + gpix3 = get_genlock_transparency(spix3); + + } + } + dtbuf[h][3] = dpix_val3; + dtgbuf[h][3] = gpix3; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = dtgbuf[h ^ lol][1]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + *gbuf++ = dtgbuf[h ^ lol][3]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } static void lts_aga_fm0_kehb0_p4_ishres_dshres_spr_filtered_genlock(void) { @@ -16582,7 +45400,183 @@ static void lts_aga_fm0_kehb0_p4_ishres_dshres_spr_filtered_genlock(void) } static void lts_aga_fm0_kehb1_p4_ishres_dshres_spr_genlock(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } + } + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + } + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } + } + internal_pixel_cnt += 1; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + gpix1 = get_genlock_transparency(spix1); + + } + } + dtbuf[h][1] = dpix_val1; + dtgbuf[h][1] = gpix1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + gpix3 = get_genlock_transparency(spix3); + + } + } + dtbuf[h][3] = dpix_val3; + dtgbuf[h][3] = gpix3; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = dtgbuf[h ^ lol][1]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + *gbuf++ = dtgbuf[h ^ lol][3]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } static void lts_aga_fm0_kehb1_p4_ishres_dshres_spr_filtered_genlock(void) { @@ -16590,7 +45584,183 @@ static void lts_aga_fm0_kehb1_p4_ishres_dshres_spr_filtered_genlock(void) } static void lts_aga_fm0_n0_p8_ishres_dshres_spr_genlock(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } + } + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + } + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } + } + internal_pixel_cnt += 1; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + gpix1 = get_genlock_transparency(spix1); + + } + } + dtbuf[h][1] = dpix_val1; + dtgbuf[h][1] = gpix1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + gpix3 = get_genlock_transparency(spix3); + + } + } + dtbuf[h][3] = dpix_val3; + dtgbuf[h][3] = gpix3; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = dtgbuf[h ^ lol][1]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + *gbuf++ = dtgbuf[h ^ lol][3]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } static void lts_aga_fm0_n0_p8_ishres_dshres_spr_filtered_genlock(void) { @@ -16598,7 +45768,183 @@ static void lts_aga_fm0_n0_p8_ishres_dshres_spr_filtered_genlock(void) } static void lts_aga_fm0_n1_p8_ishres_dshres_spr_genlock(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } + } + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + } + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } + } + internal_pixel_cnt += 1; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + gpix1 = get_genlock_transparency(spix1); + + } + } + dtbuf[h][1] = dpix_val1; + dtgbuf[h][1] = gpix1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + gpix3 = get_genlock_transparency(spix3); + + } + } + dtbuf[h][3] = dpix_val3; + dtgbuf[h][3] = gpix3; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = dtgbuf[h ^ lol][1]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + *gbuf++ = dtgbuf[h ^ lol][3]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } static void lts_aga_fm0_n1_p8_ishres_dshres_spr_filtered_genlock(void) { @@ -16606,7 +45952,183 @@ static void lts_aga_fm0_n1_p8_ishres_dshres_spr_filtered_genlock(void) } static void lts_aga_fm0_dpf0_p8_ishres_dshres_spr_genlock(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } + } + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + } + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } + } + internal_pixel_cnt += 1; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + gpix1 = get_genlock_transparency(spix1); + + } + } + dtbuf[h][1] = dpix_val1; + dtgbuf[h][1] = gpix1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + gpix3 = get_genlock_transparency(spix3); + + } + } + dtbuf[h][3] = dpix_val3; + dtgbuf[h][3] = gpix3; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = dtgbuf[h ^ lol][1]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + *gbuf++ = dtgbuf[h ^ lol][3]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } static void lts_aga_fm0_dpf0_p8_ishres_dshres_spr_filtered_genlock(void) { @@ -16614,7 +46136,183 @@ static void lts_aga_fm0_dpf0_p8_ishres_dshres_spr_filtered_genlock(void) } static void lts_aga_fm0_dpf1_p8_ishres_dshres_spr_genlock(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } + } + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + } + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } + } + internal_pixel_cnt += 1; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + gpix1 = get_genlock_transparency(spix1); + + } + } + dtbuf[h][1] = dpix_val1; + dtgbuf[h][1] = gpix1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + gpix3 = get_genlock_transparency(spix3); + + } + } + dtbuf[h][3] = dpix_val3; + dtgbuf[h][3] = gpix3; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = dtgbuf[h ^ lol][1]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + *gbuf++ = dtgbuf[h ^ lol][3]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } static void lts_aga_fm0_dpf1_p8_ishres_dshres_spr_filtered_genlock(void) { @@ -16622,7 +46320,183 @@ static void lts_aga_fm0_dpf1_p8_ishres_dshres_spr_filtered_genlock(void) } static void lts_aga_fm0_ehb0_p8_ishres_dshres_spr_genlock(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } + } + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + } + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } + } + internal_pixel_cnt += 1; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + gpix1 = get_genlock_transparency(spix1); + + } + } + dtbuf[h][1] = dpix_val1; + dtgbuf[h][1] = gpix1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + gpix3 = get_genlock_transparency(spix3); + + } + } + dtbuf[h][3] = dpix_val3; + dtgbuf[h][3] = gpix3; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = dtgbuf[h ^ lol][1]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + *gbuf++ = dtgbuf[h ^ lol][3]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } static void lts_aga_fm0_ehb0_p8_ishres_dshres_spr_filtered_genlock(void) { @@ -16630,7 +46504,183 @@ static void lts_aga_fm0_ehb0_p8_ishres_dshres_spr_filtered_genlock(void) } static void lts_aga_fm0_ehb1_p8_ishres_dshres_spr_genlock(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } + } + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + } + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } + } + internal_pixel_cnt += 1; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + gpix1 = get_genlock_transparency(spix1); + + } + } + dtbuf[h][1] = dpix_val1; + dtgbuf[h][1] = gpix1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + gpix3 = get_genlock_transparency(spix3); + + } + } + dtbuf[h][3] = dpix_val3; + dtgbuf[h][3] = gpix3; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = dtgbuf[h ^ lol][1]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + *gbuf++ = dtgbuf[h ^ lol][3]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } static void lts_aga_fm0_ehb1_p8_ishres_dshres_spr_filtered_genlock(void) { @@ -16638,7 +46688,183 @@ static void lts_aga_fm0_ehb1_p8_ishres_dshres_spr_filtered_genlock(void) } static void lts_aga_fm0_ham0_p8_ishres_dshres_spr_genlock(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } + } + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + } + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } + } + internal_pixel_cnt += 1; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + gpix1 = get_genlock_transparency(spix1); + + } + } + dtbuf[h][1] = dpix_val1; + dtgbuf[h][1] = gpix1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + gpix3 = get_genlock_transparency(spix3); + + } + } + dtbuf[h][3] = dpix_val3; + dtgbuf[h][3] = gpix3; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = dtgbuf[h ^ lol][1]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + *gbuf++ = dtgbuf[h ^ lol][3]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } static void lts_aga_fm0_ham0_p8_ishres_dshres_spr_filtered_genlock(void) { @@ -16646,7 +46872,183 @@ static void lts_aga_fm0_ham0_p8_ishres_dshres_spr_filtered_genlock(void) } static void lts_aga_fm0_ham1_p8_ishres_dshres_spr_genlock(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } + } + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + } + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } + } + internal_pixel_cnt += 1; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + gpix1 = get_genlock_transparency(spix1); + + } + } + dtbuf[h][1] = dpix_val1; + dtgbuf[h][1] = gpix1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + gpix3 = get_genlock_transparency(spix3); + + } + } + dtbuf[h][3] = dpix_val3; + dtgbuf[h][3] = gpix3; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = dtgbuf[h ^ lol][1]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + *gbuf++ = dtgbuf[h ^ lol][3]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } static void lts_aga_fm0_ham1_p8_ishres_dshres_spr_filtered_genlock(void) { @@ -16654,7 +47056,183 @@ static void lts_aga_fm0_ham1_p8_ishres_dshres_spr_filtered_genlock(void) } static void lts_aga_fm0_kehb0_p8_ishres_dshres_spr_genlock(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } + } + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + } + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } + } + internal_pixel_cnt += 1; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + gpix1 = get_genlock_transparency(spix1); + + } + } + dtbuf[h][1] = dpix_val1; + dtgbuf[h][1] = gpix1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + gpix3 = get_genlock_transparency(spix3); + + } + } + dtbuf[h][3] = dpix_val3; + dtgbuf[h][3] = gpix3; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = dtgbuf[h ^ lol][1]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + *gbuf++ = dtgbuf[h ^ lol][3]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } static void lts_aga_fm0_kehb0_p8_ishres_dshres_spr_filtered_genlock(void) { @@ -16662,7 +47240,183 @@ static void lts_aga_fm0_kehb0_p8_ishres_dshres_spr_filtered_genlock(void) } static void lts_aga_fm0_kehb1_p8_ishres_dshres_spr_genlock(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } + } + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + } + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } + } + internal_pixel_cnt += 1; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + gpix1 = get_genlock_transparency(spix1); + + } + } + dtbuf[h][1] = dpix_val1; + dtgbuf[h][1] = gpix1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + gpix3 = get_genlock_transparency(spix3); + + } + } + dtbuf[h][3] = dpix_val3; + dtgbuf[h][3] = gpix3; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = dtgbuf[h ^ lol][1]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + *gbuf++ = dtgbuf[h ^ lol][3]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } static void lts_aga_fm0_kehb1_p8_ishres_dshres_spr_filtered_genlock(void) { diff --git a/linetoscr_aga_fm1.cpp b/linetoscr_aga_fm1.cpp index 79553f87..a7cc77ad 100644 --- a/linetoscr_aga_fm1.cpp +++ b/linetoscr_aga_fm1.cpp @@ -293,54 +293,6 @@ static void lts_aga_fm1_dpf1_p2_ilores_dlores_filtered(void) lts_null(); } static void lts_aga_fm1_ehb0_p2_ilores_dlores(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb0_p2_ilores_dlores_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb1_p2_ilores_dlores(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb1_p2_ilores_dlores_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_ham0_p2_ilores_dlores(void) -{ - lts_null(); -} -static void lts_aga_fm1_ham0_p2_ilores_dlores_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_ham1_p2_ilores_dlores(void) -{ - lts_null(); -} -static void lts_aga_fm1_ham1_p2_ilores_dlores_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb0_p2_ilores_dlores(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb0_p2_ilores_dlores_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb1_p2_ilores_dlores(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb1_p2_ilores_dlores_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_n0_p4_ilores_dlores(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -351,25 +303,12 @@ 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; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix0; } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl4(); - } - loaded_pix = getbpl4_32(); - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; @@ -404,11 +343,11 @@ static void lts_aga_fm1_n0_p4_ilores_dlores(void) denise_cck++; } } -static void lts_aga_fm1_n0_p4_ilores_dlores_filtered(void) +static void lts_aga_fm1_ehb0_p2_ilores_dlores_filtered(void) { lts_null(); } -static void lts_aga_fm1_n1_p4_ilores_dlores(void) +static void lts_aga_fm1_ehb1_p2_ilores_dlores(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -419,28 +358,12 @@ 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; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix0; } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl4e(); - } - if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { - copybpl4o(); - } - loaded_pix = getbpl4_32(); - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; @@ -475,11 +398,11 @@ static void lts_aga_fm1_n1_p4_ilores_dlores(void) denise_cck++; } } -static void lts_aga_fm1_n1_p4_ilores_dlores_filtered(void) +static void lts_aga_fm1_ehb1_p2_ilores_dlores_filtered(void) { lts_null(); } -static void lts_aga_fm1_dpf0_p4_ilores_dlores(void) +static void lts_aga_fm1_ham0_p2_ilores_dlores(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -490,30 +413,12 @@ 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; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl4(); - } - loaded_pix = getbpl4_32(); - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; @@ -548,11 +453,11 @@ static void lts_aga_fm1_dpf0_p4_ilores_dlores(void) denise_cck++; } } -static void lts_aga_fm1_dpf0_p4_ilores_dlores_filtered(void) +static void lts_aga_fm1_ham0_p2_ilores_dlores_filtered(void) { lts_null(); } -static void lts_aga_fm1_dpf1_p4_ilores_dlores(void) +static void lts_aga_fm1_ham1_p2_ilores_dlores(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -563,33 +468,12 @@ 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; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; - } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl4e(); } - if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { - copybpl4o(); - } - loaded_pix = getbpl4_32(); - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; @@ -624,59 +508,11 @@ static void lts_aga_fm1_dpf1_p4_ilores_dlores(void) denise_cck++; } } -static void lts_aga_fm1_dpf1_p4_ilores_dlores_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb0_p4_ilores_dlores(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb0_p4_ilores_dlores_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb1_p4_ilores_dlores(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb1_p4_ilores_dlores_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_ham0_p4_ilores_dlores(void) -{ - lts_null(); -} -static void lts_aga_fm1_ham0_p4_ilores_dlores_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_ham1_p4_ilores_dlores(void) -{ - lts_null(); -} -static void lts_aga_fm1_ham1_p4_ilores_dlores_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb0_p4_ilores_dlores(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb0_p4_ilores_dlores_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb1_p4_ilores_dlores(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb1_p4_ilores_dlores_filtered(void) +static void lts_aga_fm1_ham1_p2_ilores_dlores_filtered(void) { lts_null(); } -static void lts_aga_fm1_n0_p6_ilores_dlores(void) +static void lts_aga_fm1_kehb0_p2_ilores_dlores(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -687,25 +523,12 @@ 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; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix0; } - shiftbpl6(); - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl6(); - } - loaded_pix = getbpl6_32(); - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; @@ -740,11 +563,11 @@ static void lts_aga_fm1_n0_p6_ilores_dlores(void) denise_cck++; } } -static void lts_aga_fm1_n0_p6_ilores_dlores_filtered(void) +static void lts_aga_fm1_kehb0_p2_ilores_dlores_filtered(void) { lts_null(); } -static void lts_aga_fm1_n1_p6_ilores_dlores(void) +static void lts_aga_fm1_kehb1_p2_ilores_dlores(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -755,28 +578,12 @@ 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; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix0; - } - shiftbpl6(); - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl6e(); - } - if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { - copybpl6o(); } - loaded_pix = getbpl6_32(); - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; @@ -811,11 +618,11 @@ static void lts_aga_fm1_n1_p6_ilores_dlores(void) denise_cck++; } } -static void lts_aga_fm1_n1_p6_ilores_dlores_filtered(void) +static void lts_aga_fm1_kehb1_p2_ilores_dlores_filtered(void) { lts_null(); } -static void lts_aga_fm1_dpf0_p6_ilores_dlores(void) +static void lts_aga_fm1_n0_p4_ilores_dlores(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -835,20 +642,15 @@ static void lts_aga_fm1_dpf0_p6_ilores_dlores(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix0; } - shiftbpl6(); + shiftbpl4(); if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl6(); + copybpl4(); } - loaded_pix = getbpl6_32(); + loaded_pix = getbpl4_32(); loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { @@ -884,11 +686,11 @@ static void lts_aga_fm1_dpf0_p6_ilores_dlores(void) denise_cck++; } } -static void lts_aga_fm1_dpf0_p6_ilores_dlores_filtered(void) +static void lts_aga_fm1_n0_p4_ilores_dlores_filtered(void) { lts_null(); } -static void lts_aga_fm1_dpf1_p6_ilores_dlores(void) +static void lts_aga_fm1_n1_p4_ilores_dlores(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -908,23 +710,18 @@ static void lts_aga_fm1_dpf1_p6_ilores_dlores(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix0; } - shiftbpl6(); + shiftbpl4(); if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl6e(); + copybpl4e(); } if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { - copybpl6o(); + copybpl4o(); } - loaded_pix = getbpl6_32(); + loaded_pix = getbpl4_32(); loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { @@ -960,11 +757,11 @@ static void lts_aga_fm1_dpf1_p6_ilores_dlores(void) denise_cck++; } } -static void lts_aga_fm1_dpf1_p6_ilores_dlores_filtered(void) +static void lts_aga_fm1_n1_p4_ilores_dlores_filtered(void) { lts_null(); } -static void lts_aga_fm1_ehb0_p6_ilores_dlores(void) +static void lts_aga_fm1_dpf0_p4_ilores_dlores(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -984,21 +781,20 @@ static void lts_aga_fm1_ehb0_p6_ilores_dlores(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - pix0 ^= bplcon4_denise_xor_val; - if (!(pix0 & 0x20)) { - dpix_val0 = denise_colors.acolors[pix0]; - } else { - uae_u32 v = (denise_colors.color_regs_aga[pix0 & 0x1f] >> 1) & 0x7f7f7f; - dpix_val0 = CONVERT_RGB(v); + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; } last_bpl_pix = pix0; } - shiftbpl6(); + shiftbpl4(); if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl6(); + copybpl4(); } - loaded_pix = getbpl6_32(); + loaded_pix = getbpl4_32(); loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { @@ -1034,11 +830,11 @@ static void lts_aga_fm1_ehb0_p6_ilores_dlores(void) denise_cck++; } } -static void lts_aga_fm1_ehb0_p6_ilores_dlores_filtered(void) +static void lts_aga_fm1_dpf0_p4_ilores_dlores_filtered(void) { lts_null(); } -static void lts_aga_fm1_ehb1_p6_ilores_dlores(void) +static void lts_aga_fm1_dpf1_p4_ilores_dlores(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -1058,24 +854,23 @@ static void lts_aga_fm1_ehb1_p6_ilores_dlores(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - pix0 ^= bplcon4_denise_xor_val; - if (!(pix0 & 0x20)) { - dpix_val0 = denise_colors.acolors[pix0]; - } else { - uae_u32 v = (denise_colors.color_regs_aga[pix0 & 0x1f] >> 1) & 0x7f7f7f; - dpix_val0 = CONVERT_RGB(v); + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; } last_bpl_pix = pix0; } - shiftbpl6(); + shiftbpl4(); if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl6e(); + copybpl4e(); } if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { - copybpl6o(); + copybpl4o(); } - loaded_pix = getbpl6_32(); + loaded_pix = getbpl4_32(); loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { @@ -1111,11 +906,11 @@ static void lts_aga_fm1_ehb1_p6_ilores_dlores(void) denise_cck++; } } -static void lts_aga_fm1_ehb1_p6_ilores_dlores_filtered(void) +static void lts_aga_fm1_dpf1_p4_ilores_dlores_filtered(void) { lts_null(); } -static void lts_aga_fm1_ham0_p6_ilores_dlores(void) +static void lts_aga_fm1_ehb0_p4_ilores_dlores(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -1126,25 +921,12 @@ 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; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = decode_ham_pixel_aga(pix0); - } - last_bpl_pix = pix0; - } - shiftbpl6(); - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl6(); } - loaded_pix = getbpl6_32(); - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; @@ -1179,11 +961,11 @@ static void lts_aga_fm1_ham0_p6_ilores_dlores(void) denise_cck++; } } -static void lts_aga_fm1_ham0_p6_ilores_dlores_filtered(void) +static void lts_aga_fm1_ehb0_p4_ilores_dlores_filtered(void) { lts_null(); } -static void lts_aga_fm1_ham1_p6_ilores_dlores(void) +static void lts_aga_fm1_ehb1_p4_ilores_dlores(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -1194,28 +976,67 @@ 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; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = decode_ham_pixel_aga(pix0); + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); } - last_bpl_pix = pix0; + #endif + *buf1++ = t0; + *buf2++ = t0; } - shiftbpl6(); - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl6e(); + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_ehb1_p4_ilores_dlores_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_ham0_p4_ilores_dlores(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; } - if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { - copybpl6o(); + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; } - loaded_pix = getbpl6_32(); - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; @@ -1250,11 +1071,11 @@ static void lts_aga_fm1_ham1_p6_ilores_dlores(void) denise_cck++; } } -static void lts_aga_fm1_ham1_p6_ilores_dlores_filtered(void) +static void lts_aga_fm1_ham0_p4_ilores_dlores_filtered(void) { lts_null(); } -static void lts_aga_fm1_kehb0_p6_ilores_dlores(void) +static void lts_aga_fm1_ham1_p4_ilores_dlores(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -1265,26 +1086,12 @@ 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; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - pix0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[pix0 & 31]; - } - last_bpl_pix = pix0; - } - shiftbpl6(); - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl6(); } - loaded_pix = getbpl6_32(); - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; @@ -1319,11 +1126,11 @@ static void lts_aga_fm1_kehb0_p6_ilores_dlores(void) denise_cck++; } } -static void lts_aga_fm1_kehb0_p6_ilores_dlores_filtered(void) +static void lts_aga_fm1_ham1_p4_ilores_dlores_filtered(void) { lts_null(); } -static void lts_aga_fm1_kehb1_p6_ilores_dlores(void) +static void lts_aga_fm1_kehb0_p4_ilores_dlores(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -1334,29 +1141,67 @@ 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; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - pix0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[pix0 & 31]; + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); } - last_bpl_pix = pix0; + #endif + *buf1++ = t0; + *buf2++ = t0; } - shiftbpl6(); - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl6e(); + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_kehb0_p4_ilores_dlores_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_kehb1_p4_ilores_dlores(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; } - if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { - copybpl6o(); + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; } - loaded_pix = getbpl6_32(); - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; @@ -1391,11 +1236,11 @@ static void lts_aga_fm1_kehb1_p6_ilores_dlores(void) denise_cck++; } } -static void lts_aga_fm1_kehb1_p6_ilores_dlores_filtered(void) +static void lts_aga_fm1_kehb1_p4_ilores_dlores_filtered(void) { lts_null(); } -static void lts_aga_fm1_n0_p8_ilores_dlores(void) +static void lts_aga_fm1_n0_p6_ilores_dlores(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -1419,11 +1264,11 @@ static void lts_aga_fm1_n0_p8_ilores_dlores(void) } last_bpl_pix = pix0; } - shiftbpl8(); + shiftbpl6(); if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8(); + copybpl6(); } - loaded_pix = getbpl8_32(); + loaded_pix = getbpl6_32(); loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { @@ -1459,11 +1304,11 @@ static void lts_aga_fm1_n0_p8_ilores_dlores(void) denise_cck++; } } -static void lts_aga_fm1_n0_p8_ilores_dlores_filtered(void) +static void lts_aga_fm1_n0_p6_ilores_dlores_filtered(void) { lts_null(); } -static void lts_aga_fm1_n1_p8_ilores_dlores(void) +static void lts_aga_fm1_n1_p6_ilores_dlores(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -1487,14 +1332,14 @@ static void lts_aga_fm1_n1_p8_ilores_dlores(void) } last_bpl_pix = pix0; } - shiftbpl8(); + shiftbpl6(); if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8e(); + copybpl6e(); } if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { - copybpl8o(); + copybpl6o(); } - loaded_pix = getbpl8_32(); + loaded_pix = getbpl6_32(); loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { @@ -1530,11 +1375,11 @@ static void lts_aga_fm1_n1_p8_ilores_dlores(void) denise_cck++; } } -static void lts_aga_fm1_n1_p8_ilores_dlores_filtered(void) +static void lts_aga_fm1_n1_p6_ilores_dlores_filtered(void) { lts_null(); } -static void lts_aga_fm1_dpf0_p8_ilores_dlores(void) +static void lts_aga_fm1_dpf0_p6_ilores_dlores(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -1563,11 +1408,11 @@ static void lts_aga_fm1_dpf0_p8_ilores_dlores(void) } last_bpl_pix = pix0; } - shiftbpl8(); + shiftbpl6(); if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8(); + copybpl6(); } - loaded_pix = getbpl8_32(); + loaded_pix = getbpl6_32(); loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { @@ -1603,11 +1448,11 @@ static void lts_aga_fm1_dpf0_p8_ilores_dlores(void) denise_cck++; } } -static void lts_aga_fm1_dpf0_p8_ilores_dlores_filtered(void) +static void lts_aga_fm1_dpf0_p6_ilores_dlores_filtered(void) { lts_null(); } -static void lts_aga_fm1_dpf1_p8_ilores_dlores(void) +static void lts_aga_fm1_dpf1_p6_ilores_dlores(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -1636,14 +1481,14 @@ static void lts_aga_fm1_dpf1_p8_ilores_dlores(void) } last_bpl_pix = pix0; } - shiftbpl8(); + shiftbpl6(); if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8e(); + copybpl6e(); } if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { - copybpl8o(); + copybpl6o(); } - loaded_pix = getbpl8_32(); + loaded_pix = getbpl6_32(); loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { @@ -1679,27 +1524,11 @@ static void lts_aga_fm1_dpf1_p8_ilores_dlores(void) denise_cck++; } } -static void lts_aga_fm1_dpf1_p8_ilores_dlores_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb0_p8_ilores_dlores(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb0_p8_ilores_dlores_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb1_p8_ilores_dlores(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb1_p8_ilores_dlores_filtered(void) +static void lts_aga_fm1_dpf1_p6_ilores_dlores_filtered(void) { lts_null(); } -static void lts_aga_fm1_ham0_p8_ilores_dlores(void) +static void lts_aga_fm1_ehb0_p6_ilores_dlores(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -1719,15 +1548,21 @@ static void lts_aga_fm1_ham0_p8_ilores_dlores(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - dpix_val0 = decode_ham_pixel_aga(pix0); + pix0 ^= bplcon4_denise_xor_val; + if (!(pix0 & 0x20)) { + dpix_val0 = denise_colors.acolors[pix0]; + } else { + uae_u32 v = (denise_colors.color_regs_aga[pix0 & 0x1f] >> 1) & 0x7f7f7f; + dpix_val0 = CONVERT_RGB(v); + } } last_bpl_pix = pix0; } - shiftbpl8(); + shiftbpl6(); if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8(); + copybpl6(); } - loaded_pix = getbpl8_32(); + loaded_pix = getbpl6_32(); loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { @@ -1763,11 +1598,11 @@ static void lts_aga_fm1_ham0_p8_ilores_dlores(void) denise_cck++; } } -static void lts_aga_fm1_ham0_p8_ilores_dlores_filtered(void) +static void lts_aga_fm1_ehb0_p6_ilores_dlores_filtered(void) { lts_null(); } -static void lts_aga_fm1_ham1_p8_ilores_dlores(void) +static void lts_aga_fm1_ehb1_p6_ilores_dlores(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -1787,18 +1622,24 @@ static void lts_aga_fm1_ham1_p8_ilores_dlores(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - dpix_val0 = decode_ham_pixel_aga(pix0); + pix0 ^= bplcon4_denise_xor_val; + if (!(pix0 & 0x20)) { + dpix_val0 = denise_colors.acolors[pix0]; + } else { + uae_u32 v = (denise_colors.color_regs_aga[pix0 & 0x1f] >> 1) & 0x7f7f7f; + dpix_val0 = CONVERT_RGB(v); + } } last_bpl_pix = pix0; } - shiftbpl8(); + shiftbpl6(); if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8e(); + copybpl6e(); } if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { - copybpl8o(); + copybpl6o(); } - loaded_pix = getbpl8_32(); + loaded_pix = getbpl6_32(); loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { @@ -1834,27 +1675,11 @@ static void lts_aga_fm1_ham1_p8_ilores_dlores(void) denise_cck++; } } -static void lts_aga_fm1_ham1_p8_ilores_dlores_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb0_p8_ilores_dlores(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb0_p8_ilores_dlores_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb1_p8_ilores_dlores(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb1_p8_ilores_dlores_filtered(void) +static void lts_aga_fm1_ehb1_p6_ilores_dlores_filtered(void) { lts_null(); } -static void lts_aga_fm1_n0_p2_ilores_dlores_spr(void) +static void lts_aga_fm1_ham0_p6_ilores_dlores(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -1867,7 +1692,6 @@ static void lts_aga_fm1_n0_p2_ilores_dlores_spr(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -1875,32 +1699,18 @@ static void lts_aga_fm1_n0_p2_ilores_dlores_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + dpix_val0 = decode_ham_pixel_aga(pix0); } last_bpl_pix = pix0; } - shiftbpl2(); + shiftbpl6(); if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl2(); - } - loaded_pix = getbpl2_32(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } + copybpl6(); } + loaded_pix = getbpl6_32(); loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - } - } dtbuf[h][0] = dpix_val0; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -1933,11 +1743,11 @@ static void lts_aga_fm1_n0_p2_ilores_dlores_spr(void) denise_cck++; } } -static void lts_aga_fm1_n0_p2_ilores_dlores_spr_filtered(void) +static void lts_aga_fm1_ham0_p6_ilores_dlores_filtered(void) { lts_null(); } -static void lts_aga_fm1_n1_p2_ilores_dlores_spr(void) +static void lts_aga_fm1_ham1_p6_ilores_dlores(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -1950,7 +1760,6 @@ static void lts_aga_fm1_n1_p2_ilores_dlores_spr(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -1958,35 +1767,21 @@ static void lts_aga_fm1_n1_p2_ilores_dlores_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + dpix_val0 = decode_ham_pixel_aga(pix0); } last_bpl_pix = pix0; } - shiftbpl2(); + shiftbpl6(); if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl2e(); + copybpl6e(); } if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { - copybpl2o(); - } - loaded_pix = getbpl2_32(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } + copybpl6o(); } + loaded_pix = getbpl6_32(); loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - } - } dtbuf[h][0] = dpix_val0; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -2019,11 +1814,11 @@ static void lts_aga_fm1_n1_p2_ilores_dlores_spr(void) denise_cck++; } } -static void lts_aga_fm1_n1_p2_ilores_dlores_spr_filtered(void) +static void lts_aga_fm1_ham1_p6_ilores_dlores_filtered(void) { lts_null(); } -static void lts_aga_fm1_dpf0_p2_ilores_dlores_spr(void) +static void lts_aga_fm1_kehb0_p6_ilores_dlores(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -2036,7 +1831,6 @@ static void lts_aga_fm1_dpf0_p2_ilores_dlores_spr(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -2044,37 +1838,19 @@ static void lts_aga_fm1_dpf0_p2_ilores_dlores_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; + pix0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[pix0 & 31]; } last_bpl_pix = pix0; } - shiftbpl2(); + shiftbpl6(); if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl2(); - } - loaded_pix = getbpl2_32(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } + copybpl6(); } + loaded_pix = getbpl6_32(); loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - } - } dtbuf[h][0] = dpix_val0; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -2107,11 +1883,11 @@ static void lts_aga_fm1_dpf0_p2_ilores_dlores_spr(void) denise_cck++; } } -static void lts_aga_fm1_dpf0_p2_ilores_dlores_spr_filtered(void) +static void lts_aga_fm1_kehb0_p6_ilores_dlores_filtered(void) { lts_null(); } -static void lts_aga_fm1_dpf1_p2_ilores_dlores_spr(void) +static void lts_aga_fm1_kehb1_p6_ilores_dlores(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -2124,7 +1900,6 @@ static void lts_aga_fm1_dpf1_p2_ilores_dlores_spr(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -2132,40 +1907,22 @@ static void lts_aga_fm1_dpf1_p2_ilores_dlores_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; + pix0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[pix0 & 31]; } last_bpl_pix = pix0; } - shiftbpl2(); + shiftbpl6(); if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl2e(); + copybpl6e(); } if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { - copybpl2o(); - } - loaded_pix = getbpl2_32(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } + copybpl6o(); } + loaded_pix = getbpl6_32(); loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - } - } dtbuf[h][0] = dpix_val0; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -2198,59 +1955,11 @@ static void lts_aga_fm1_dpf1_p2_ilores_dlores_spr(void) denise_cck++; } } -static void lts_aga_fm1_dpf1_p2_ilores_dlores_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb0_p2_ilores_dlores_spr(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb0_p2_ilores_dlores_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb1_p2_ilores_dlores_spr(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb1_p2_ilores_dlores_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_ham0_p2_ilores_dlores_spr(void) -{ - lts_null(); -} -static void lts_aga_fm1_ham0_p2_ilores_dlores_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_ham1_p2_ilores_dlores_spr(void) -{ - lts_null(); -} -static void lts_aga_fm1_ham1_p2_ilores_dlores_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb0_p2_ilores_dlores_spr(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb0_p2_ilores_dlores_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb1_p2_ilores_dlores_spr(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb1_p2_ilores_dlores_spr_filtered(void) +static void lts_aga_fm1_kehb1_p6_ilores_dlores_filtered(void) { lts_null(); } -static void lts_aga_fm1_n0_p4_ilores_dlores_spr(void) +static void lts_aga_fm1_n0_p8_ilores_dlores(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -2263,7 +1972,6 @@ static void lts_aga_fm1_n0_p4_ilores_dlores_spr(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -2275,28 +1983,14 @@ static void lts_aga_fm1_n0_p4_ilores_dlores_spr(void) } last_bpl_pix = pix0; } - shiftbpl4(); + shiftbpl8(); if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl4(); - } - loaded_pix = getbpl4_32(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } + copybpl8(); } + loaded_pix = getbpl8_32(); loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - } - } dtbuf[h][0] = dpix_val0; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -2329,11 +2023,11 @@ static void lts_aga_fm1_n0_p4_ilores_dlores_spr(void) denise_cck++; } } -static void lts_aga_fm1_n0_p4_ilores_dlores_spr_filtered(void) +static void lts_aga_fm1_n0_p8_ilores_dlores_filtered(void) { lts_null(); } -static void lts_aga_fm1_n1_p4_ilores_dlores_spr(void) +static void lts_aga_fm1_n1_p8_ilores_dlores(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -2346,7 +2040,6 @@ static void lts_aga_fm1_n1_p4_ilores_dlores_spr(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -2358,31 +2051,17 @@ static void lts_aga_fm1_n1_p4_ilores_dlores_spr(void) } last_bpl_pix = pix0; } - shiftbpl4(); + shiftbpl8(); if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl4e(); + copybpl8e(); } if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { - copybpl4o(); - } - loaded_pix = getbpl4_32(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } + copybpl8o(); } + loaded_pix = getbpl8_32(); loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - } - } dtbuf[h][0] = dpix_val0; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -2415,11 +2094,11 @@ static void lts_aga_fm1_n1_p4_ilores_dlores_spr(void) denise_cck++; } } -static void lts_aga_fm1_n1_p4_ilores_dlores_spr_filtered(void) +static void lts_aga_fm1_n1_p8_ilores_dlores_filtered(void) { lts_null(); } -static void lts_aga_fm1_dpf0_p4_ilores_dlores_spr(void) +static void lts_aga_fm1_dpf0_p8_ilores_dlores(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -2432,7 +2111,6 @@ static void lts_aga_fm1_dpf0_p4_ilores_dlores_spr(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -2449,28 +2127,14 @@ static void lts_aga_fm1_dpf0_p4_ilores_dlores_spr(void) } last_bpl_pix = pix0; } - shiftbpl4(); + shiftbpl8(); if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl4(); - } - loaded_pix = getbpl4_32(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } + copybpl8(); } + loaded_pix = getbpl8_32(); loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - } - } dtbuf[h][0] = dpix_val0; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -2503,11 +2167,11 @@ static void lts_aga_fm1_dpf0_p4_ilores_dlores_spr(void) denise_cck++; } } -static void lts_aga_fm1_dpf0_p4_ilores_dlores_spr_filtered(void) +static void lts_aga_fm1_dpf0_p8_ilores_dlores_filtered(void) { lts_null(); } -static void lts_aga_fm1_dpf1_p4_ilores_dlores_spr(void) +static void lts_aga_fm1_dpf1_p8_ilores_dlores(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -2520,7 +2184,6 @@ static void lts_aga_fm1_dpf1_p4_ilores_dlores_spr(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -2537,31 +2200,17 @@ static void lts_aga_fm1_dpf1_p4_ilores_dlores_spr(void) } last_bpl_pix = pix0; } - shiftbpl4(); + shiftbpl8(); if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl4e(); + copybpl8e(); } if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { - copybpl4o(); - } - loaded_pix = getbpl4_32(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } + copybpl8o(); } + loaded_pix = getbpl8_32(); loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - } - } dtbuf[h][0] = dpix_val0; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -2594,59 +2243,11 @@ static void lts_aga_fm1_dpf1_p4_ilores_dlores_spr(void) denise_cck++; } } -static void lts_aga_fm1_dpf1_p4_ilores_dlores_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb0_p4_ilores_dlores_spr(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb0_p4_ilores_dlores_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb1_p4_ilores_dlores_spr(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb1_p4_ilores_dlores_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_ham0_p4_ilores_dlores_spr(void) -{ - lts_null(); -} -static void lts_aga_fm1_ham0_p4_ilores_dlores_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_ham1_p4_ilores_dlores_spr(void) -{ - lts_null(); -} -static void lts_aga_fm1_ham1_p4_ilores_dlores_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb0_p4_ilores_dlores_spr(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb0_p4_ilores_dlores_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb1_p4_ilores_dlores_spr(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb1_p4_ilores_dlores_spr_filtered(void) +static void lts_aga_fm1_dpf1_p8_ilores_dlores_filtered(void) { lts_null(); } -static void lts_aga_fm1_n0_p6_ilores_dlores_spr(void) +static void lts_aga_fm1_ehb0_p8_ilores_dlores(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -2657,42 +2258,14 @@ 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; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix0; } - shiftbpl6(); - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl6(); - } - loaded_pix = getbpl6_32(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } - } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - } - } dtbuf[h][0] = dpix_val0; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -2725,11 +2298,11 @@ static void lts_aga_fm1_n0_p6_ilores_dlores_spr(void) denise_cck++; } } -static void lts_aga_fm1_n0_p6_ilores_dlores_spr_filtered(void) +static void lts_aga_fm1_ehb0_p8_ilores_dlores_filtered(void) { lts_null(); } -static void lts_aga_fm1_n1_p6_ilores_dlores_spr(void) +static void lts_aga_fm1_ehb1_p8_ilores_dlores(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -2740,45 +2313,14 @@ 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; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix0; } - shiftbpl6(); - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl6e(); - } - if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { - copybpl6o(); - } - loaded_pix = getbpl6_32(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } - } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - } - } dtbuf[h][0] = dpix_val0; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -2811,11 +2353,11 @@ static void lts_aga_fm1_n1_p6_ilores_dlores_spr(void) denise_cck++; } } -static void lts_aga_fm1_n1_p6_ilores_dlores_spr_filtered(void) +static void lts_aga_fm1_ehb1_p8_ilores_dlores_filtered(void) { lts_null(); } -static void lts_aga_fm1_dpf0_p6_ilores_dlores_spr(void) +static void lts_aga_fm1_ham0_p8_ilores_dlores(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -2828,7 +2370,6 @@ static void lts_aga_fm1_dpf0_p6_ilores_dlores_spr(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -2836,37 +2377,18 @@ static void lts_aga_fm1_dpf0_p6_ilores_dlores_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; + dpix_val0 = decode_ham_pixel_aga(pix0); } last_bpl_pix = pix0; } - shiftbpl6(); + shiftbpl8(); if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl6(); - } - loaded_pix = getbpl6_32(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } + copybpl8(); } + loaded_pix = getbpl8_32(); loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - } - } dtbuf[h][0] = dpix_val0; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -2899,11 +2421,11 @@ static void lts_aga_fm1_dpf0_p6_ilores_dlores_spr(void) denise_cck++; } } -static void lts_aga_fm1_dpf0_p6_ilores_dlores_spr_filtered(void) +static void lts_aga_fm1_ham0_p8_ilores_dlores_filtered(void) { lts_null(); } -static void lts_aga_fm1_dpf1_p6_ilores_dlores_spr(void) +static void lts_aga_fm1_ham1_p8_ilores_dlores(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -2916,7 +2438,6 @@ static void lts_aga_fm1_dpf1_p6_ilores_dlores_spr(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -2924,40 +2445,21 @@ static void lts_aga_fm1_dpf1_p6_ilores_dlores_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; + dpix_val0 = decode_ham_pixel_aga(pix0); } last_bpl_pix = pix0; } - shiftbpl6(); + shiftbpl8(); if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl6e(); + copybpl8e(); } if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { - copybpl6o(); - } - loaded_pix = getbpl6_32(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } + copybpl8o(); } + loaded_pix = getbpl8_32(); loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - } - } dtbuf[h][0] = dpix_val0; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -2990,11 +2492,11 @@ static void lts_aga_fm1_dpf1_p6_ilores_dlores_spr(void) denise_cck++; } } -static void lts_aga_fm1_dpf1_p6_ilores_dlores_spr_filtered(void) +static void lts_aga_fm1_ham1_p8_ilores_dlores_filtered(void) { lts_null(); } -static void lts_aga_fm1_ehb0_p6_ilores_dlores_spr(void) +static void lts_aga_fm1_kehb0_p8_ilores_dlores(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -3005,48 +2507,14 @@ 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; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - pix0 ^= bplcon4_denise_xor_val; - if (!(pix0 & 0x20)) { - dpix_val0 = denise_colors.acolors[pix0]; - } else { - uae_u32 v = (denise_colors.color_regs_aga[pix0 & 0x1f] >> 1) & 0x7f7f7f; - dpix_val0 = CONVERT_RGB(v); - } - } - last_bpl_pix = pix0; - } - shiftbpl6(); - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl6(); - } - loaded_pix = getbpl6_32(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - } - } dtbuf[h][0] = dpix_val0; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -3079,11 +2547,66 @@ static void lts_aga_fm1_ehb0_p6_ilores_dlores_spr(void) denise_cck++; } } -static void lts_aga_fm1_ehb0_p6_ilores_dlores_spr_filtered(void) +static void lts_aga_fm1_kehb0_p8_ilores_dlores_filtered(void) { lts_null(); } -static void lts_aga_fm1_ehb1_p6_ilores_dlores_spr(void) +static void lts_aga_fm1_kehb1_p8_ilores_dlores(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_kehb1_p8_ilores_dlores_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_n0_p2_ilores_dlores_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -3104,24 +2627,15 @@ static void lts_aga_fm1_ehb1_p6_ilores_dlores_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - pix0 ^= bplcon4_denise_xor_val; - if (!(pix0 & 0x20)) { - dpix_val0 = denise_colors.acolors[pix0]; - } else { - uae_u32 v = (denise_colors.color_regs_aga[pix0 & 0x1f] >> 1) & 0x7f7f7f; - dpix_val0 = CONVERT_RGB(v); - } + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix0; } - shiftbpl6(); + shiftbpl2(); if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl6e(); - } - if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { - copybpl6o(); + copybpl2(); } - loaded_pix = getbpl6_32(); + loaded_pix = getbpl2_32(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -3171,11 +2685,11 @@ static void lts_aga_fm1_ehb1_p6_ilores_dlores_spr(void) denise_cck++; } } -static void lts_aga_fm1_ehb1_p6_ilores_dlores_spr_filtered(void) +static void lts_aga_fm1_n0_p2_ilores_dlores_spr_filtered(void) { lts_null(); } -static void lts_aga_fm1_ham0_p6_ilores_dlores_spr(void) +static void lts_aga_fm1_n1_p2_ilores_dlores_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -3196,15 +2710,18 @@ static void lts_aga_fm1_ham0_p6_ilores_dlores_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - dpix_val0 = decode_ham_pixel_aga(pix0); + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix0; } - shiftbpl6(); + shiftbpl2(); if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl6(); + copybpl2e(); } - loaded_pix = getbpl6_32(); + if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { + copybpl2o(); + } + loaded_pix = getbpl2_32(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -3254,11 +2771,11 @@ static void lts_aga_fm1_ham0_p6_ilores_dlores_spr(void) denise_cck++; } } -static void lts_aga_fm1_ham0_p6_ilores_dlores_spr_filtered(void) +static void lts_aga_fm1_n1_p2_ilores_dlores_spr_filtered(void) { lts_null(); } -static void lts_aga_fm1_ham1_p6_ilores_dlores_spr(void) +static void lts_aga_fm1_dpf0_p2_ilores_dlores_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -3279,18 +2796,20 @@ static void lts_aga_fm1_ham1_p6_ilores_dlores_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - dpix_val0 = decode_ham_pixel_aga(pix0); + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; } last_bpl_pix = pix0; } - shiftbpl6(); + shiftbpl2(); if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl6e(); - } - if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { - copybpl6o(); + copybpl2(); } - loaded_pix = getbpl6_32(); + loaded_pix = getbpl2_32(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -3340,11 +2859,11 @@ static void lts_aga_fm1_ham1_p6_ilores_dlores_spr(void) denise_cck++; } } -static void lts_aga_fm1_ham1_p6_ilores_dlores_spr_filtered(void) +static void lts_aga_fm1_dpf0_p2_ilores_dlores_spr_filtered(void) { lts_null(); } -static void lts_aga_fm1_kehb0_p6_ilores_dlores_spr(void) +static void lts_aga_fm1_dpf1_p2_ilores_dlores_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -3365,16 +2884,23 @@ static void lts_aga_fm1_kehb0_p6_ilores_dlores_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - pix0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[pix0 & 31]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; } last_bpl_pix = pix0; } - shiftbpl6(); + shiftbpl2(); if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl6(); + copybpl2e(); } - loaded_pix = getbpl6_32(); + if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { + copybpl2o(); + } + loaded_pix = getbpl2_32(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -3424,11 +2950,11 @@ static void lts_aga_fm1_kehb0_p6_ilores_dlores_spr(void) denise_cck++; } } -static void lts_aga_fm1_kehb0_p6_ilores_dlores_spr_filtered(void) +static void lts_aga_fm1_dpf1_p2_ilores_dlores_spr_filtered(void) { lts_null(); } -static void lts_aga_fm1_kehb1_p6_ilores_dlores_spr(void) +static void lts_aga_fm1_ehb0_p2_ilores_dlores_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -3439,29 +2965,13 @@ 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; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - pix0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[pix0 & 31]; - } - last_bpl_pix = pix0; } - shiftbpl6(); - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl6e(); - } - if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { - copybpl6o(); - } - loaded_pix = getbpl6_32(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -3470,7 +2980,6 @@ static void lts_aga_fm1_kehb1_p6_ilores_dlores_spr(void) sv0 = svt; } } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { @@ -3511,11 +3020,11 @@ static void lts_aga_fm1_kehb1_p6_ilores_dlores_spr(void) denise_cck++; } } -static void lts_aga_fm1_kehb1_p6_ilores_dlores_spr_filtered(void) +static void lts_aga_fm1_ehb0_p2_ilores_dlores_spr_filtered(void) { lts_null(); } -static void lts_aga_fm1_n0_p8_ilores_dlores_spr(void) +static void lts_aga_fm1_ehb1_p2_ilores_dlores_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -3526,25 +3035,13 @@ 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; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix0; - } - shiftbpl8(); - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8(); } - loaded_pix = getbpl8_32(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -3553,7 +3050,6 @@ static void lts_aga_fm1_n0_p8_ilores_dlores_spr(void) sv0 = svt; } } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { @@ -3594,11 +3090,11 @@ static void lts_aga_fm1_n0_p8_ilores_dlores_spr(void) denise_cck++; } } -static void lts_aga_fm1_n0_p8_ilores_dlores_spr_filtered(void) +static void lts_aga_fm1_ehb1_p2_ilores_dlores_spr_filtered(void) { lts_null(); } -static void lts_aga_fm1_n1_p8_ilores_dlores_spr(void) +static void lts_aga_fm1_ham0_p2_ilores_dlores_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -3609,28 +3105,13 @@ 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; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix0; - } - shiftbpl8(); - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8e(); } - if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { - copybpl8o(); - } - loaded_pix = getbpl8_32(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -3639,7 +3120,6 @@ static void lts_aga_fm1_n1_p8_ilores_dlores_spr(void) sv0 = svt; } } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { @@ -3680,11 +3160,11 @@ static void lts_aga_fm1_n1_p8_ilores_dlores_spr(void) denise_cck++; } } -static void lts_aga_fm1_n1_p8_ilores_dlores_spr_filtered(void) +static void lts_aga_fm1_ham0_p2_ilores_dlores_spr_filtered(void) { lts_null(); } -static void lts_aga_fm1_dpf0_p8_ilores_dlores_spr(void) +static void lts_aga_fm1_ham1_p2_ilores_dlores_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -3695,30 +3175,13 @@ 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; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; } - shiftbpl8(); - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8(); - } - loaded_pix = getbpl8_32(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -3727,7 +3190,6 @@ static void lts_aga_fm1_dpf0_p8_ilores_dlores_spr(void) sv0 = svt; } } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { @@ -3768,11 +3230,11 @@ static void lts_aga_fm1_dpf0_p8_ilores_dlores_spr(void) denise_cck++; } } -static void lts_aga_fm1_dpf0_p8_ilores_dlores_spr_filtered(void) +static void lts_aga_fm1_ham1_p2_ilores_dlores_spr_filtered(void) { lts_null(); } -static void lts_aga_fm1_dpf1_p8_ilores_dlores_spr(void) +static void lts_aga_fm1_kehb0_p2_ilores_dlores_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -3783,33 +3245,13 @@ 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; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; } - shiftbpl8(); - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8e(); - } - if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { - copybpl8o(); - } - loaded_pix = getbpl8_32(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -3818,7 +3260,6 @@ static void lts_aga_fm1_dpf1_p8_ilores_dlores_spr(void) sv0 = svt; } } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { @@ -3859,27 +3300,11 @@ static void lts_aga_fm1_dpf1_p8_ilores_dlores_spr(void) denise_cck++; } } -static void lts_aga_fm1_dpf1_p8_ilores_dlores_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb0_p8_ilores_dlores_spr(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb0_p8_ilores_dlores_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb1_p8_ilores_dlores_spr(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb1_p8_ilores_dlores_spr_filtered(void) +static void lts_aga_fm1_kehb0_p2_ilores_dlores_spr_filtered(void) { lts_null(); } -static void lts_aga_fm1_ham0_p8_ilores_dlores_spr(void) +static void lts_aga_fm1_kehb1_p2_ilores_dlores_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -3890,25 +3315,13 @@ 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; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = decode_ham_pixel_aga(pix0); - } - last_bpl_pix = pix0; - } - shiftbpl8(); - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8(); } - loaded_pix = getbpl8_32(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -3917,7 +3330,6 @@ static void lts_aga_fm1_ham0_p8_ilores_dlores_spr(void) sv0 = svt; } } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { @@ -3958,11 +3370,11 @@ static void lts_aga_fm1_ham0_p8_ilores_dlores_spr(void) denise_cck++; } } -static void lts_aga_fm1_ham0_p8_ilores_dlores_spr_filtered(void) +static void lts_aga_fm1_kehb1_p2_ilores_dlores_spr_filtered(void) { lts_null(); } -static void lts_aga_fm1_ham1_p8_ilores_dlores_spr(void) +static void lts_aga_fm1_n0_p4_ilores_dlores_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -3983,18 +3395,15 @@ static void lts_aga_fm1_ham1_p8_ilores_dlores_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - dpix_val0 = decode_ham_pixel_aga(pix0); + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix0; } - shiftbpl8(); + shiftbpl4(); if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8e(); - } - if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { - copybpl8o(); + copybpl4(); } - loaded_pix = getbpl8_32(); + loaded_pix = getbpl4_32(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -4044,27 +3453,11 @@ static void lts_aga_fm1_ham1_p8_ilores_dlores_spr(void) denise_cck++; } } -static void lts_aga_fm1_ham1_p8_ilores_dlores_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb0_p8_ilores_dlores_spr(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb0_p8_ilores_dlores_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb1_p8_ilores_dlores_spr(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb1_p8_ilores_dlores_spr_filtered(void) +static void lts_aga_fm1_n0_p4_ilores_dlores_spr_filtered(void) { lts_null(); } -static void lts_aga_fm1_n0_p2_ihires_dlores(void) +static void lts_aga_fm1_n1_p4_ilores_dlores_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -4077,6 +3470,7 @@ static void lts_aga_fm1_n0_p2_ihires_dlores(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -4088,15 +3482,31 @@ static void lts_aga_fm1_n0_p2_ihires_dlores(void) } last_bpl_pix = pix0; } - shiftbpl2(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl2(); + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl4e(); + } + if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { + copybpl4o(); + } + loaded_pix = getbpl4_32(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } } - loaded_pix = getbpl2_32(); loaded_pixs[0] = loaded_pix; - shiftbpl2(); internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } dtbuf[h][0] = dpix_val0; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -4129,7 +3539,11 @@ static void lts_aga_fm1_n0_p2_ihires_dlores(void) denise_cck++; } } -static void lts_aga_fm1_n0_p2_ihires_dlores_filtered(void) +static void lts_aga_fm1_n1_p4_ilores_dlores_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_dpf0_p4_ilores_dlores_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -4142,6 +3556,7 @@ static void lts_aga_fm1_n0_p2_ihires_dlores_filtered(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -4149,36 +3564,37 @@ static void lts_aga_fm1_n0_p2_ihires_dlores_filtered(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; } last_bpl_pix = pix0; } - shiftbpl2(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl2(); + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl4(); } - loaded_pix = getbpl2_32(); - loaded_pixs[0] = loaded_pix; - uae_u8 pix1 = 0; - uae_u32 dpix_val1 = BLANK_COLOR; - if (!denise_blank_active) { - dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; + loaded_pix = getbpl4_32(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; } - last_bpl_pix = pix1; - } - shiftbpl2(); - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl2(); } - loaded_pix = getbpl2_32(); - loaded_pixs[1] = loaded_pix; + loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } dtbuf[h][0] = dpix_val0; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -4211,7 +3627,11 @@ static void lts_aga_fm1_n0_p2_ihires_dlores_filtered(void) denise_cck++; } } -static void lts_aga_fm1_n1_p2_ihires_dlores(void) +static void lts_aga_fm1_dpf0_p4_ilores_dlores_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_dpf1_p4_ilores_dlores_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -4224,6 +3644,7 @@ static void lts_aga_fm1_n1_p2_ihires_dlores(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -4231,22 +3652,40 @@ static void lts_aga_fm1_n1_p2_ihires_dlores(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; } last_bpl_pix = pix0; } - shiftbpl2(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl2e(); + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl4e(); } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl2o(); + if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { + copybpl4o(); + } + loaded_pix = getbpl4_32(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } } - loaded_pix = getbpl2_32(); loaded_pixs[0] = loaded_pix; - shiftbpl2(); internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } dtbuf[h][0] = dpix_val0; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -4279,7 +3718,11 @@ static void lts_aga_fm1_n1_p2_ihires_dlores(void) denise_cck++; } } -static void lts_aga_fm1_n1_p2_ihires_dlores_filtered(void) +static void lts_aga_fm1_dpf1_p4_ilores_dlores_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_ehb0_p4_ilores_dlores_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -4290,51 +3733,29 @@ 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; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix0; - } - shiftbpl2(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl2e(); - } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl2o(); } - loaded_pix = getbpl2_32(); - loaded_pixs[0] = loaded_pix; - uae_u8 pix1 = 0; - uae_u32 dpix_val1 = BLANK_COLOR; - if (!denise_blank_active) { - dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; } - last_bpl_pix = pix1; - } - shiftbpl2(); - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl2e(); - } - if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { - copybpl2o(); } - loaded_pix = getbpl2_32(); - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } dtbuf[h][0] = dpix_val0; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -4367,7 +3788,11 @@ static void lts_aga_fm1_n1_p2_ihires_dlores_filtered(void) denise_cck++; } } -static void lts_aga_fm1_dpf0_p2_ihires_dlores(void) +static void lts_aga_fm1_ehb0_p4_ilores_dlores_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_ehb1_p4_ilores_dlores_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -4378,33 +3803,29 @@ 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; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; } - shiftbpl2(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl2(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } } - loaded_pix = getbpl2_32(); - loaded_pixs[0] = loaded_pix; - shiftbpl2(); internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } dtbuf[h][0] = dpix_val0; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -4437,7 +3858,11 @@ static void lts_aga_fm1_dpf0_p2_ihires_dlores(void) denise_cck++; } } -static void lts_aga_fm1_dpf0_p2_ihires_dlores_filtered(void) +static void lts_aga_fm1_ehb1_p4_ilores_dlores_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_ham0_p4_ilores_dlores_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -4448,55 +3873,29 @@ 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; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; - } - shiftbpl2(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl2(); } - loaded_pix = getbpl2_32(); - loaded_pixs[0] = loaded_pix; - uae_u8 pix1 = 0; - uae_u32 dpix_val1 = BLANK_COLOR; - if (!denise_blank_active) { - dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - if (dpf_lookup_no[pix1]) { - val1 += dblpfofs[bpldualpf2of]; - } - val1 ^= bplcon4_denise_xor_val; - dpix_val1 = denise_colors.acolors[val1]; + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; } - last_bpl_pix = pix1; - } - shiftbpl2(); - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl2(); } - loaded_pix = getbpl2_32(); - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } dtbuf[h][0] = dpix_val0; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -4529,7 +3928,11 @@ static void lts_aga_fm1_dpf0_p2_ihires_dlores_filtered(void) denise_cck++; } } -static void lts_aga_fm1_dpf1_p2_ihires_dlores(void) +static void lts_aga_fm1_ham0_p4_ilores_dlores_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_ham1_p4_ilores_dlores_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -4540,36 +3943,29 @@ 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; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; - } - shiftbpl2(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl2e(); } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl2o(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } } - loaded_pix = getbpl2_32(); - loaded_pixs[0] = loaded_pix; - shiftbpl2(); internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } dtbuf[h][0] = dpix_val0; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -4602,7 +3998,11 @@ static void lts_aga_fm1_dpf1_p2_ihires_dlores(void) denise_cck++; } } -static void lts_aga_fm1_dpf1_p2_ihires_dlores_filtered(void) +static void lts_aga_fm1_ham1_p4_ilores_dlores_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_kehb0_p4_ilores_dlores_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -4613,61 +4013,29 @@ 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; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; - } - shiftbpl2(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl2e(); - } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl2o(); } - loaded_pix = getbpl2_32(); - loaded_pixs[0] = loaded_pix; - uae_u8 pix1 = 0; - uae_u32 dpix_val1 = BLANK_COLOR; - if (!denise_blank_active) { - dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - if (dpf_lookup_no[pix1]) { - val1 += dblpfofs[bpldualpf2of]; - } - val1 ^= bplcon4_denise_xor_val; - dpix_val1 = denise_colors.acolors[val1]; + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; } - last_bpl_pix = pix1; - } - shiftbpl2(); - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl2e(); - } - if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { - copybpl2o(); } - loaded_pix = getbpl2_32(); - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } dtbuf[h][0] = dpix_val0; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -4700,55 +4068,11 @@ static void lts_aga_fm1_dpf1_p2_ihires_dlores_filtered(void) denise_cck++; } } -static void lts_aga_fm1_ehb0_p2_ihires_dlores(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb0_p2_ihires_dlores_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb1_p2_ihires_dlores(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb1_p2_ihires_dlores_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_ham0_p2_ihires_dlores(void) -{ - lts_null(); -} -static void lts_aga_fm1_ham0_p2_ihires_dlores_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_ham1_p2_ihires_dlores(void) -{ - lts_null(); -} -static void lts_aga_fm1_ham1_p2_ihires_dlores_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb0_p2_ihires_dlores(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb0_p2_ihires_dlores_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb1_p2_ihires_dlores(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb1_p2_ihires_dlores_filtered(void) +static void lts_aga_fm1_kehb0_p4_ilores_dlores_spr_filtered(void) { lts_null(); } -static void lts_aga_fm1_n0_p4_ihires_dlores(void) +static void lts_aga_fm1_kehb1_p4_ilores_dlores_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -4759,28 +4083,29 @@ 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; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix0; } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } } - loaded_pix = getbpl4_32(); - loaded_pixs[0] = loaded_pix; - shiftbpl4(); internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } dtbuf[h][0] = dpix_val0; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -4813,7 +4138,11 @@ static void lts_aga_fm1_n0_p4_ihires_dlores(void) denise_cck++; } } -static void lts_aga_fm1_n0_p4_ihires_dlores_filtered(void) +static void lts_aga_fm1_kehb1_p4_ilores_dlores_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_n0_p6_ilores_dlores_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -4826,6 +4155,7 @@ static void lts_aga_fm1_n0_p4_ihires_dlores_filtered(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -4837,32 +4167,28 @@ static void lts_aga_fm1_n0_p4_ihires_dlores_filtered(void) } last_bpl_pix = pix0; } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4(); + shiftbpl6(); + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl6(); + } + loaded_pix = getbpl6_32(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } } - loaded_pix = getbpl4_32(); loaded_pixs[0] = loaded_pix; - uae_u8 pix1 = 0; - uae_u32 dpix_val1 = BLANK_COLOR; - if (!denise_blank_active) { - dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix1; - } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4(); - } - loaded_pix = getbpl4_32(); - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } dtbuf[h][0] = dpix_val0; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -4895,7 +4221,11 @@ static void lts_aga_fm1_n0_p4_ihires_dlores_filtered(void) denise_cck++; } } -static void lts_aga_fm1_n1_p4_ihires_dlores(void) +static void lts_aga_fm1_n0_p6_ilores_dlores_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_n1_p6_ilores_dlores_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -4908,6 +4238,7 @@ static void lts_aga_fm1_n1_p4_ihires_dlores(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -4919,18 +4250,31 @@ static void lts_aga_fm1_n1_p4_ihires_dlores(void) } last_bpl_pix = pix0; } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4e(); + shiftbpl6(); + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl6e(); } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl4o(); + if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { + copybpl6o(); + } + loaded_pix = getbpl6_32(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } } - loaded_pix = getbpl4_32(); loaded_pixs[0] = loaded_pix; - shiftbpl4(); internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } dtbuf[h][0] = dpix_val0; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -4963,7 +4307,11 @@ static void lts_aga_fm1_n1_p4_ihires_dlores(void) denise_cck++; } } -static void lts_aga_fm1_n1_p4_ihires_dlores_filtered(void) +static void lts_aga_fm1_n1_p6_ilores_dlores_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_dpf0_p6_ilores_dlores_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -4976,6 +4324,7 @@ static void lts_aga_fm1_n1_p4_ihires_dlores_filtered(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -4983,42 +4332,37 @@ static void lts_aga_fm1_n1_p4_ihires_dlores_filtered(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; } last_bpl_pix = pix0; } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4e(); - } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl4o(); + shiftbpl6(); + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl6(); } - loaded_pix = getbpl4_32(); - loaded_pixs[0] = loaded_pix; - uae_u8 pix1 = 0; - uae_u32 dpix_val1 = BLANK_COLOR; - if (!denise_blank_active) { - dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; + loaded_pix = getbpl6_32(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; } - last_bpl_pix = pix1; - } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4e(); - } - if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { - copybpl4o(); } - loaded_pix = getbpl4_32(); - loaded_pixs[1] = loaded_pix; + loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } dtbuf[h][0] = dpix_val0; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -5051,7 +4395,11 @@ static void lts_aga_fm1_n1_p4_ihires_dlores_filtered(void) denise_cck++; } } -static void lts_aga_fm1_dpf0_p4_ihires_dlores(void) +static void lts_aga_fm1_dpf0_p6_ilores_dlores_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_dpf1_p6_ilores_dlores_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -5064,6 +4412,7 @@ static void lts_aga_fm1_dpf0_p4_ihires_dlores(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -5080,15 +4429,31 @@ static void lts_aga_fm1_dpf0_p4_ihires_dlores(void) } last_bpl_pix = pix0; } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4(); + shiftbpl6(); + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl6e(); + } + if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { + copybpl6o(); + } + loaded_pix = getbpl6_32(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } } - loaded_pix = getbpl4_32(); loaded_pixs[0] = loaded_pix; - shiftbpl4(); internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } dtbuf[h][0] = dpix_val0; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -5121,7 +4486,11 @@ static void lts_aga_fm1_dpf0_p4_ihires_dlores(void) denise_cck++; } } -static void lts_aga_fm1_dpf0_p4_ihires_dlores_filtered(void) +static void lts_aga_fm1_dpf1_p6_ilores_dlores_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_ehb0_p6_ilores_dlores_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -5134,6 +4503,7 @@ static void lts_aga_fm1_dpf0_p4_ihires_dlores_filtered(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -5141,46 +4511,38 @@ static void lts_aga_fm1_dpf0_p4_ihires_dlores_filtered(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; + pix0 ^= bplcon4_denise_xor_val; + if (!(pix0 & 0x20)) { + dpix_val0 = denise_colors.acolors[pix0]; + } else { + uae_u32 v = (denise_colors.color_regs_aga[pix0 & 0x1f] >> 1) & 0x7f7f7f; + dpix_val0 = CONVERT_RGB(v); } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; } last_bpl_pix = pix0; } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4(); + shiftbpl6(); + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl6(); } - loaded_pix = getbpl4_32(); - loaded_pixs[0] = loaded_pix; - uae_u8 pix1 = 0; - uae_u32 dpix_val1 = BLANK_COLOR; - if (!denise_blank_active) { - dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - if (dpf_lookup_no[pix1]) { - val1 += dblpfofs[bpldualpf2of]; - } - val1 ^= bplcon4_denise_xor_val; - dpix_val1 = denise_colors.acolors[val1]; + loaded_pix = getbpl6_32(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; } - last_bpl_pix = pix1; } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4(); - } - loaded_pix = getbpl4_32(); - loaded_pixs[1] = loaded_pix; + loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } dtbuf[h][0] = dpix_val0; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -5213,7 +4575,11 @@ static void lts_aga_fm1_dpf0_p4_ihires_dlores_filtered(void) denise_cck++; } } -static void lts_aga_fm1_dpf1_p4_ihires_dlores(void) +static void lts_aga_fm1_ehb0_p6_ilores_dlores_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_ehb1_p6_ilores_dlores_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -5226,6 +4592,7 @@ static void lts_aga_fm1_dpf1_p4_ihires_dlores(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -5233,27 +4600,41 @@ static void lts_aga_fm1_dpf1_p4_ihires_dlores(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; + pix0 ^= bplcon4_denise_xor_val; + if (!(pix0 & 0x20)) { + dpix_val0 = denise_colors.acolors[pix0]; + } else { + uae_u32 v = (denise_colors.color_regs_aga[pix0 & 0x1f] >> 1) & 0x7f7f7f; + dpix_val0 = CONVERT_RGB(v); } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; } last_bpl_pix = pix0; } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4e(); + shiftbpl6(); + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl6e(); } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl4o(); + if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { + copybpl6o(); + } + loaded_pix = getbpl6_32(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } } - loaded_pix = getbpl4_32(); loaded_pixs[0] = loaded_pix; - shiftbpl4(); internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } dtbuf[h][0] = dpix_val0; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -5286,7 +4667,11 @@ static void lts_aga_fm1_dpf1_p4_ihires_dlores(void) denise_cck++; } } -static void lts_aga_fm1_dpf1_p4_ihires_dlores_filtered(void) +static void lts_aga_fm1_ehb1_p6_ilores_dlores_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_ham0_p6_ilores_dlores_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -5299,6 +4684,7 @@ static void lts_aga_fm1_dpf1_p4_ihires_dlores_filtered(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -5306,52 +4692,32 @@ static void lts_aga_fm1_dpf1_p4_ihires_dlores_filtered(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; + dpix_val0 = decode_ham_pixel_aga(pix0); } last_bpl_pix = pix0; } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4e(); - } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl4o(); + shiftbpl6(); + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl6(); } - loaded_pix = getbpl4_32(); - loaded_pixs[0] = loaded_pix; - uae_u8 pix1 = 0; - uae_u32 dpix_val1 = BLANK_COLOR; - if (!denise_blank_active) { - dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - if (dpf_lookup_no[pix1]) { - val1 += dblpfofs[bpldualpf2of]; - } - val1 ^= bplcon4_denise_xor_val; - dpix_val1 = denise_colors.acolors[val1]; + loaded_pix = getbpl6_32(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; } - last_bpl_pix = pix1; - } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4e(); - } - if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { - copybpl4o(); } - loaded_pix = getbpl4_32(); - loaded_pixs[1] = loaded_pix; + loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } dtbuf[h][0] = dpix_val0; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -5384,55 +4750,11 @@ static void lts_aga_fm1_dpf1_p4_ihires_dlores_filtered(void) denise_cck++; } } -static void lts_aga_fm1_ehb0_p4_ihires_dlores(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb0_p4_ihires_dlores_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb1_p4_ihires_dlores(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb1_p4_ihires_dlores_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_ham0_p4_ihires_dlores(void) -{ - lts_null(); -} -static void lts_aga_fm1_ham0_p4_ihires_dlores_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_ham1_p4_ihires_dlores(void) -{ - lts_null(); -} -static void lts_aga_fm1_ham1_p4_ihires_dlores_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb0_p4_ihires_dlores(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb0_p4_ihires_dlores_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb1_p4_ihires_dlores(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb1_p4_ihires_dlores_filtered(void) +static void lts_aga_fm1_ham0_p6_ilores_dlores_spr_filtered(void) { lts_null(); } -static void lts_aga_fm1_n0_p6_ihires_dlores(void) +static void lts_aga_fm1_ham1_p6_ilores_dlores_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -5445,6 +4767,7 @@ static void lts_aga_fm1_n0_p6_ihires_dlores(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -5452,19 +4775,35 @@ static void lts_aga_fm1_n0_p6_ihires_dlores(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + dpix_val0 = decode_ham_pixel_aga(pix0); } last_bpl_pix = pix0; } shiftbpl6(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6(); + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl6e(); + } + if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { + copybpl6o(); } loaded_pix = getbpl6_32(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } loaded_pixs[0] = loaded_pix; - shiftbpl6(); internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } dtbuf[h][0] = dpix_val0; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -5497,7 +4836,11 @@ static void lts_aga_fm1_n0_p6_ihires_dlores(void) denise_cck++; } } -static void lts_aga_fm1_n0_p6_ihires_dlores_filtered(void) +static void lts_aga_fm1_ham1_p6_ilores_dlores_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_kehb0_p6_ilores_dlores_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -5510,6 +4853,7 @@ static void lts_aga_fm1_n0_p6_ihires_dlores_filtered(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -5517,36 +4861,33 @@ static void lts_aga_fm1_n0_p6_ihires_dlores_filtered(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + pix0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[pix0 & 31]; } last_bpl_pix = pix0; } shiftbpl6(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { copybpl6(); } loaded_pix = getbpl6_32(); - loaded_pixs[0] = loaded_pix; - uae_u8 pix1 = 0; - uae_u32 dpix_val1 = BLANK_COLOR; - if (!denise_blank_active) { - dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; } - last_bpl_pix = pix1; - } - shiftbpl6(); - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6(); } - loaded_pix = getbpl6_32(); - loaded_pixs[1] = loaded_pix; + loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } dtbuf[h][0] = dpix_val0; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -5579,7 +4920,11 @@ static void lts_aga_fm1_n0_p6_ihires_dlores_filtered(void) denise_cck++; } } -static void lts_aga_fm1_n1_p6_ihires_dlores(void) +static void lts_aga_fm1_kehb0_p6_ilores_dlores_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_kehb1_p6_ilores_dlores_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -5592,6 +4937,7 @@ static void lts_aga_fm1_n1_p6_ihires_dlores(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -5599,22 +4945,36 @@ static void lts_aga_fm1_n1_p6_ihires_dlores(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + pix0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[pix0 & 31]; } last_bpl_pix = pix0; } shiftbpl6(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { copybpl6e(); } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { copybpl6o(); } loaded_pix = getbpl6_32(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } loaded_pixs[0] = loaded_pix; - shiftbpl6(); internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } dtbuf[h][0] = dpix_val0; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -5647,7 +5007,11 @@ static void lts_aga_fm1_n1_p6_ihires_dlores(void) denise_cck++; } } -static void lts_aga_fm1_n1_p6_ihires_dlores_filtered(void) +static void lts_aga_fm1_kehb1_p6_ilores_dlores_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_n0_p8_ilores_dlores_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -5660,6 +5024,7 @@ static void lts_aga_fm1_n1_p6_ihires_dlores_filtered(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -5671,38 +5036,28 @@ static void lts_aga_fm1_n1_p6_ihires_dlores_filtered(void) } last_bpl_pix = pix0; } - shiftbpl6(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6e(); - } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl6o(); + shiftbpl8(); + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8(); } - loaded_pix = getbpl6_32(); - loaded_pixs[0] = loaded_pix; - uae_u8 pix1 = 0; - uae_u32 dpix_val1 = BLANK_COLOR; - if (!denise_blank_active) { - dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; + loaded_pix = getbpl8_32(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; } - last_bpl_pix = pix1; - } - shiftbpl6(); - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6e(); } - if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { - copybpl6o(); - } - loaded_pix = getbpl6_32(); - loaded_pixs[1] = loaded_pix; + loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } dtbuf[h][0] = dpix_val0; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -5735,9 +5090,13 @@ static void lts_aga_fm1_n1_p6_ihires_dlores_filtered(void) denise_cck++; } } -static void lts_aga_fm1_dpf0_p6_ihires_dlores(void) +static void lts_aga_fm1_n0_p8_ilores_dlores_spr_filtered(void) { - while (denise_cck < denise_endcycle) { + lts_null(); +} +static void lts_aga_fm1_n1_p8_ilores_dlores_spr(void) +{ + while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); if (lts_changed) return; for (int h = 0; h < 2; h++) { @@ -5748,6 +5107,7 @@ static void lts_aga_fm1_dpf0_p6_ihires_dlores(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -5755,24 +5115,35 @@ static void lts_aga_fm1_dpf0_p6_ihires_dlores(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix0; } - shiftbpl6(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6(); + shiftbpl8(); + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8e(); + } + if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { + copybpl8o(); + } + loaded_pix = getbpl8_32(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } } - loaded_pix = getbpl6_32(); loaded_pixs[0] = loaded_pix; - shiftbpl6(); internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } dtbuf[h][0] = dpix_val0; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -5805,7 +5176,11 @@ static void lts_aga_fm1_dpf0_p6_ihires_dlores(void) denise_cck++; } } -static void lts_aga_fm1_dpf0_p6_ihires_dlores_filtered(void) +static void lts_aga_fm1_n1_p8_ilores_dlores_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_dpf0_p8_ilores_dlores_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -5818,6 +5193,7 @@ static void lts_aga_fm1_dpf0_p6_ihires_dlores_filtered(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -5834,37 +5210,28 @@ static void lts_aga_fm1_dpf0_p6_ihires_dlores_filtered(void) } last_bpl_pix = pix0; } - shiftbpl6(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6(); + shiftbpl8(); + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8(); } - loaded_pix = getbpl6_32(); - loaded_pixs[0] = loaded_pix; - uae_u8 pix1 = 0; - uae_u32 dpix_val1 = BLANK_COLOR; - if (!denise_blank_active) { - dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - if (dpf_lookup_no[pix1]) { - val1 += dblpfofs[bpldualpf2of]; - } - val1 ^= bplcon4_denise_xor_val; - dpix_val1 = denise_colors.acolors[val1]; + loaded_pix = getbpl8_32(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; } - last_bpl_pix = pix1; - } - shiftbpl6(); - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6(); } - loaded_pix = getbpl6_32(); - loaded_pixs[1] = loaded_pix; + loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } dtbuf[h][0] = dpix_val0; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -5897,7 +5264,11 @@ static void lts_aga_fm1_dpf0_p6_ihires_dlores_filtered(void) denise_cck++; } } -static void lts_aga_fm1_dpf1_p6_ihires_dlores(void) +static void lts_aga_fm1_dpf0_p8_ilores_dlores_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_dpf1_p8_ilores_dlores_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -5910,6 +5281,7 @@ static void lts_aga_fm1_dpf1_p6_ihires_dlores(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -5926,18 +5298,31 @@ static void lts_aga_fm1_dpf1_p6_ihires_dlores(void) } last_bpl_pix = pix0; } - shiftbpl6(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6e(); + shiftbpl8(); + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8e(); } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl6o(); + if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { + copybpl8o(); + } + loaded_pix = getbpl8_32(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } } - loaded_pix = getbpl6_32(); loaded_pixs[0] = loaded_pix; - shiftbpl6(); internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } dtbuf[h][0] = dpix_val0; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -5970,7 +5355,11 @@ static void lts_aga_fm1_dpf1_p6_ihires_dlores(void) denise_cck++; } } -static void lts_aga_fm1_dpf1_p6_ihires_dlores_filtered(void) +static void lts_aga_fm1_dpf1_p8_ilores_dlores_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_ehb0_p8_ilores_dlores_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -5981,61 +5370,29 @@ 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; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; - } - shiftbpl6(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6e(); - } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl6o(); } - loaded_pix = getbpl6_32(); - loaded_pixs[0] = loaded_pix; - uae_u8 pix1 = 0; - uae_u32 dpix_val1 = BLANK_COLOR; - if (!denise_blank_active) { - dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - if (dpf_lookup_no[pix1]) { - val1 += dblpfofs[bpldualpf2of]; - } - val1 ^= bplcon4_denise_xor_val; - dpix_val1 = denise_colors.acolors[val1]; + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; } - last_bpl_pix = pix1; - } - shiftbpl6(); - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6e(); - } - if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { - copybpl6o(); } - loaded_pix = getbpl6_32(); - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } dtbuf[h][0] = dpix_val0; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -6068,7 +5425,11 @@ static void lts_aga_fm1_dpf1_p6_ihires_dlores_filtered(void) denise_cck++; } } -static void lts_aga_fm1_ehb0_p6_ihires_dlores(void) +static void lts_aga_fm1_ehb0_p8_ilores_dlores_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_ehb1_p8_ilores_dlores_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -6079,34 +5440,29 @@ 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; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - pix0 ^= bplcon4_denise_xor_val; - if (!(pix0 & 0x20)) { - dpix_val0 = denise_colors.acolors[pix0]; - } else { - uae_u32 v = (denise_colors.color_regs_aga[pix0 & 0x1f] >> 1) & 0x7f7f7f; - dpix_val0 = CONVERT_RGB(v); - } - } - last_bpl_pix = pix0; } - shiftbpl6(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } } - loaded_pix = getbpl6_32(); - loaded_pixs[0] = loaded_pix; - shiftbpl6(); internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } dtbuf[h][0] = dpix_val0; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -6139,7 +5495,11 @@ static void lts_aga_fm1_ehb0_p6_ihires_dlores(void) denise_cck++; } } -static void lts_aga_fm1_ehb0_p6_ihires_dlores_filtered(void) +static void lts_aga_fm1_ehb1_p8_ilores_dlores_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_ham0_p8_ilores_dlores_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -6152,6 +5512,7 @@ static void lts_aga_fm1_ehb0_p6_ihires_dlores_filtered(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -6159,48 +5520,32 @@ static void lts_aga_fm1_ehb0_p6_ihires_dlores_filtered(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - pix0 ^= bplcon4_denise_xor_val; - if (!(pix0 & 0x20)) { - dpix_val0 = denise_colors.acolors[pix0]; - } else { - uae_u32 v = (denise_colors.color_regs_aga[pix0 & 0x1f] >> 1) & 0x7f7f7f; - dpix_val0 = CONVERT_RGB(v); - } + dpix_val0 = decode_ham_pixel_aga(pix0); } last_bpl_pix = pix0; } - shiftbpl6(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6(); + shiftbpl8(); + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8(); } - loaded_pix = getbpl6_32(); - loaded_pixs[0] = loaded_pix; - uae_u8 pix1 = 0; - uae_u32 dpix_val1 = BLANK_COLOR; - if (!denise_blank_active) { - dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - pix1 ^= bplcon4_denise_xor_val; - if (!(pix1 & 0x20)) { - dpix_val1 = denise_colors.acolors[pix1]; - } else { - uae_u32 v = (denise_colors.color_regs_aga[pix1 & 0x1f] >> 1) & 0x7f7f7f; - dpix_val1 = CONVERT_RGB(v); - } + loaded_pix = getbpl8_32(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; } - last_bpl_pix = pix1; - } - shiftbpl6(); - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6(); } - loaded_pix = getbpl6_32(); - loaded_pixs[1] = loaded_pix; + loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } dtbuf[h][0] = dpix_val0; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -6233,7 +5578,11 @@ static void lts_aga_fm1_ehb0_p6_ihires_dlores_filtered(void) denise_cck++; } } -static void lts_aga_fm1_ehb1_p6_ihires_dlores(void) +static void lts_aga_fm1_ham0_p8_ilores_dlores_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_ham1_p8_ilores_dlores_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -6246,6 +5595,7 @@ static void lts_aga_fm1_ehb1_p6_ihires_dlores(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -6253,28 +5603,35 @@ static void lts_aga_fm1_ehb1_p6_ihires_dlores(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - pix0 ^= bplcon4_denise_xor_val; - if (!(pix0 & 0x20)) { - dpix_val0 = denise_colors.acolors[pix0]; - } else { - uae_u32 v = (denise_colors.color_regs_aga[pix0 & 0x1f] >> 1) & 0x7f7f7f; - dpix_val0 = CONVERT_RGB(v); - } + dpix_val0 = decode_ham_pixel_aga(pix0); } last_bpl_pix = pix0; } - shiftbpl6(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6e(); + shiftbpl8(); + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8e(); } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl6o(); + if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { + copybpl8o(); + } + loaded_pix = getbpl8_32(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } } - loaded_pix = getbpl6_32(); loaded_pixs[0] = loaded_pix; - shiftbpl6(); internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } dtbuf[h][0] = dpix_val0; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -6307,7 +5664,11 @@ static void lts_aga_fm1_ehb1_p6_ihires_dlores(void) denise_cck++; } } -static void lts_aga_fm1_ehb1_p6_ihires_dlores_filtered(void) +static void lts_aga_fm1_ham1_p8_ilores_dlores_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_kehb0_p8_ilores_dlores_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -6318,63 +5679,29 @@ 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; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - pix0 ^= bplcon4_denise_xor_val; - if (!(pix0 & 0x20)) { - dpix_val0 = denise_colors.acolors[pix0]; - } else { - uae_u32 v = (denise_colors.color_regs_aga[pix0 & 0x1f] >> 1) & 0x7f7f7f; - dpix_val0 = CONVERT_RGB(v); - } - } - last_bpl_pix = pix0; - } - shiftbpl6(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6e(); - } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl6o(); } - loaded_pix = getbpl6_32(); - loaded_pixs[0] = loaded_pix; - uae_u8 pix1 = 0; - uae_u32 dpix_val1 = BLANK_COLOR; - if (!denise_blank_active) { - dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - pix1 ^= bplcon4_denise_xor_val; - if (!(pix1 & 0x20)) { - dpix_val1 = denise_colors.acolors[pix1]; - } else { - uae_u32 v = (denise_colors.color_regs_aga[pix1 & 0x1f] >> 1) & 0x7f7f7f; - dpix_val1 = CONVERT_RGB(v); - } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; } - last_bpl_pix = pix1; - } - shiftbpl6(); - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6e(); - } - if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { - copybpl6o(); } - loaded_pix = getbpl6_32(); - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } dtbuf[h][0] = dpix_val0; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -6407,7 +5734,11 @@ static void lts_aga_fm1_ehb1_p6_ihires_dlores_filtered(void) denise_cck++; } } -static void lts_aga_fm1_ham0_p6_ihires_dlores(void) +static void lts_aga_fm1_kehb0_p8_ilores_dlores_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_kehb1_p8_ilores_dlores_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -6418,43 +5749,29 @@ 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; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = decode_ham_pixel_aga(pix0); - } - last_bpl_pix = pix0; - } - shiftbpl6(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6(); } - loaded_pix = getbpl6_32(); - loaded_pixs[0] = loaded_pix; - uae_u8 pix1 = 0; - uae_u32 dpix_val1 = BLANK_COLOR; - if (!denise_blank_active) { - dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - decode_ham_pixel_aga(pix1); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; } - last_bpl_pix = pix1; - } - shiftbpl6(); - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6(); } - loaded_pix = getbpl6_32(); - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } dtbuf[h][0] = dpix_val0; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -6487,7 +5804,11 @@ static void lts_aga_fm1_ham0_p6_ihires_dlores(void) denise_cck++; } } -static void lts_aga_fm1_ham0_p6_ihires_dlores_filtered(void) +static void lts_aga_fm1_kehb1_p8_ilores_dlores_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_n0_p2_ihires_dlores(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -6507,36 +5828,19 @@ static void lts_aga_fm1_ham0_p6_ihires_dlores_filtered(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - dpix_val0 = decode_ham_pixel_aga(pix0); + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix0; } - shiftbpl6(); + shiftbpl2(); if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6(); + copybpl2(); } - loaded_pix = getbpl6_32(); + loaded_pix = getbpl2_32(); loaded_pixs[0] = loaded_pix; - uae_u8 pix1 = 0; - uae_u32 dpix_val1 = BLANK_COLOR; - if (!denise_blank_active) { - dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - dpix_val1 = decode_ham_pixel_aga(pix1); - } - last_bpl_pix = pix1; - } - shiftbpl6(); - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6(); - } - loaded_pix = getbpl6_32(); - loaded_pixs[1] = loaded_pix; + shiftbpl2(); internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - dpix_val0 = filter_pixel(dpix_val0, dpix_val1); dtbuf[h][0] = dpix_val0; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -6569,7 +5873,7 @@ static void lts_aga_fm1_ham0_p6_ihires_dlores_filtered(void) denise_cck++; } } -static void lts_aga_fm1_ham1_p6_ihires_dlores(void) +static void lts_aga_fm1_n0_p2_ihires_dlores_filtered(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -6589,18 +5893,15 @@ static void lts_aga_fm1_ham1_p6_ihires_dlores(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - dpix_val0 = decode_ham_pixel_aga(pix0); + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix0; } - shiftbpl6(); + shiftbpl2(); if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6e(); - } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl6o(); + copybpl2(); } - loaded_pix = getbpl6_32(); + loaded_pix = getbpl2_32(); loaded_pixs[0] = loaded_pix; uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; @@ -6608,21 +5909,20 @@ static void lts_aga_fm1_ham1_p6_ihires_dlores(void) dpix_val1 = bordercolor; if (denise_hdiw && bpl1dat_trigger) { pix1 = loaded_pixs[1]; - decode_ham_pixel_aga(pix1); + clxdat |= bplcoltable[pix1]; + dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix1; } - shiftbpl6(); + shiftbpl2(); if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6e(); - } - if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { - copybpl6o(); + copybpl2(); } - loaded_pix = getbpl6_32(); + loaded_pix = getbpl2_32(); loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); dtbuf[h][0] = dpix_val0; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -6655,7 +5955,7 @@ static void lts_aga_fm1_ham1_p6_ihires_dlores(void) denise_cck++; } } -static void lts_aga_fm1_ham1_p6_ihires_dlores_filtered(void) +static void lts_aga_fm1_n1_p2_ihires_dlores(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -6675,42 +5975,22 @@ static void lts_aga_fm1_ham1_p6_ihires_dlores_filtered(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - dpix_val0 = decode_ham_pixel_aga(pix0); + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix0; } - shiftbpl6(); + shiftbpl2(); if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6e(); + copybpl2e(); } if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl6o(); + copybpl2o(); } - loaded_pix = getbpl6_32(); + loaded_pix = getbpl2_32(); loaded_pixs[0] = loaded_pix; - uae_u8 pix1 = 0; - uae_u32 dpix_val1 = BLANK_COLOR; - if (!denise_blank_active) { - dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - dpix_val1 = decode_ham_pixel_aga(pix1); - } - last_bpl_pix = pix1; - } - shiftbpl6(); - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6e(); - } - if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { - copybpl6o(); - } - loaded_pix = getbpl6_32(); - loaded_pixs[1] = loaded_pix; + shiftbpl2(); internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - dpix_val0 = filter_pixel(dpix_val0, dpix_val1); dtbuf[h][0] = dpix_val0; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -6743,7 +6023,7 @@ static void lts_aga_fm1_ham1_p6_ihires_dlores_filtered(void) denise_cck++; } } -static void lts_aga_fm1_kehb0_p6_ihires_dlores(void) +static void lts_aga_fm1_n1_p2_ihires_dlores_filtered(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -6763,82 +6043,18 @@ static void lts_aga_fm1_kehb0_p6_ihires_dlores(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - pix0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[pix0 & 31]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix0; } - shiftbpl6(); + shiftbpl2(); if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6(); - } - loaded_pix = getbpl6_32(); - loaded_pixs[0] = loaded_pix; - shiftbpl6(); - internal_pixel_cnt += 4; - if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - dtbuf[h][0] = dpix_val0; - uae_u32 t0 = dtbuf[h ^ lol][0]; - #ifdef DEBUGGER - if (decode_specials_debug) { - t0 = decode_denise_specials_debug(t0, cnt + 0); - } - #endif - *buf1++ = t0; - *buf2++ = t0; - } - sprites_hidden = sprites_hidden2; - #ifdef DEBUGGER - *debug_dma_dhpos_odd = denise_hcounter; - #endif - denise_hcounter_cmp++; - denise_hcounter_cmp &= 511; - denise_hcounter++; - denise_hcounter &= 511; - denise_hcounter_next++; - denise_hcounter_next &= 511; - } - denise_pixtotal++; - if (denise_pixtotal == 0) { - internal_pixel_start_cnt = internal_pixel_cnt; - } - denise_hcounter = denise_hcounter_new; - if (denise_accurate_mode) { - denise_hcounter_cmp = denise_hcounter_new; - } - denise_cck++; - } -} -static void lts_aga_fm1_kehb0_p6_ihires_dlores_filtered(void) -{ - while (denise_cck < denise_endcycle) { - do_denise_cck(denise_linecnt, denise_startpos, denise_cck); - if (lts_changed) return; - for (int h = 0; h < 2; h++) { - if (h) { - denise_hcounter_next = denise_hcounter_new; - } - int cnt = denise_hcounter << 2; - int cnt_next = denise_hcounter_next << 2; - int cmp = denise_hcounter_cmp << 2; - if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; - uae_u8 pix0 = 0; - uae_u32 dpix_val0 = BLANK_COLOR; - if (!denise_blank_active) { - dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - pix0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[pix0 & 31]; - } - last_bpl_pix = pix0; + copybpl2e(); } - shiftbpl6(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6(); + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl2o(); } - loaded_pix = getbpl6_32(); + loaded_pix = getbpl2_32(); loaded_pixs[0] = loaded_pix; uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; @@ -6847,16 +6063,18 @@ static void lts_aga_fm1_kehb0_p6_ihires_dlores_filtered(void) if (denise_hdiw && bpl1dat_trigger) { pix1 = loaded_pixs[1]; clxdat |= bplcoltable[pix1]; - pix1 ^= bplcon4_denise_xor_val; - dpix_val1 = denise_colors.acolors[pix1 & 31]; + dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix1; } - shiftbpl6(); + shiftbpl2(); if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6(); + copybpl2e(); } - loaded_pix = getbpl6_32(); + if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { + copybpl2o(); + } + loaded_pix = getbpl2_32(); loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { @@ -6893,7 +6111,7 @@ static void lts_aga_fm1_kehb0_p6_ihires_dlores_filtered(void) denise_cck++; } } -static void lts_aga_fm1_kehb1_p6_ihires_dlores(void) +static void lts_aga_fm1_dpf0_p2_ihires_dlores(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -6913,21 +6131,22 @@ static void lts_aga_fm1_kehb1_p6_ihires_dlores(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - pix0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[pix0 & 31]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; } last_bpl_pix = pix0; } - shiftbpl6(); + shiftbpl2(); if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6e(); - } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl6o(); + copybpl2(); } - loaded_pix = getbpl6_32(); + loaded_pix = getbpl2_32(); loaded_pixs[0] = loaded_pix; - shiftbpl6(); + shiftbpl2(); internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; @@ -6962,7 +6181,7 @@ static void lts_aga_fm1_kehb1_p6_ihires_dlores(void) denise_cck++; } } -static void lts_aga_fm1_kehb1_p6_ihires_dlores_filtered(void) +static void lts_aga_fm1_dpf0_p2_ihires_dlores_filtered(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -6982,19 +6201,20 @@ static void lts_aga_fm1_kehb1_p6_ihires_dlores_filtered(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - pix0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[pix0 & 31]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; } last_bpl_pix = pix0; } - shiftbpl6(); + shiftbpl2(); if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6e(); - } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl6o(); + copybpl2(); } - loaded_pix = getbpl6_32(); + loaded_pix = getbpl2_32(); loaded_pixs[0] = loaded_pix; uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; @@ -7003,19 +6223,20 @@ static void lts_aga_fm1_kehb1_p6_ihires_dlores_filtered(void) if (denise_hdiw && bpl1dat_trigger) { pix1 = loaded_pixs[1]; clxdat |= bplcoltable[pix1]; - pix1 ^= bplcon4_denise_xor_val; - dpix_val1 = denise_colors.acolors[pix1 & 31]; + uae_u8 val1 = dpf_lookup[pix1]; + if (dpf_lookup_no[pix1]) { + val1 += dblpfofs[bpldualpf2of]; + } + val1 ^= bplcon4_denise_xor_val; + dpix_val1 = denise_colors.acolors[val1]; } last_bpl_pix = pix1; } - shiftbpl6(); + shiftbpl2(); if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6e(); - } - if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { - copybpl6o(); + copybpl2(); } - loaded_pix = getbpl6_32(); + loaded_pix = getbpl2_32(); loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { @@ -7052,7 +6273,7 @@ static void lts_aga_fm1_kehb1_p6_ihires_dlores_filtered(void) denise_cck++; } } -static void lts_aga_fm1_n0_p8_ihires_dlores(void) +static void lts_aga_fm1_dpf1_p2_ihires_dlores(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -7072,17 +6293,25 @@ static void lts_aga_fm1_n0_p8_ihires_dlores(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; } last_bpl_pix = pix0; } - shiftbpl8(); + shiftbpl2(); if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8(); + copybpl2e(); } - loaded_pix = getbpl8_32(); + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl2o(); + } + loaded_pix = getbpl2_32(); loaded_pixs[0] = loaded_pix; - shiftbpl8(); + shiftbpl2(); internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; @@ -7117,7 +6346,7 @@ static void lts_aga_fm1_n0_p8_ihires_dlores(void) denise_cck++; } } -static void lts_aga_fm1_n0_p8_ihires_dlores_filtered(void) +static void lts_aga_fm1_dpf1_p2_ihires_dlores_filtered(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -7137,15 +6366,23 @@ static void lts_aga_fm1_n0_p8_ihires_dlores_filtered(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; } last_bpl_pix = pix0; } - shiftbpl8(); + shiftbpl2(); if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8(); + copybpl2e(); } - loaded_pix = getbpl8_32(); + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl2o(); + } + loaded_pix = getbpl2_32(); loaded_pixs[0] = loaded_pix; uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; @@ -7154,15 +6391,23 @@ static void lts_aga_fm1_n0_p8_ihires_dlores_filtered(void) if (denise_hdiw && bpl1dat_trigger) { pix1 = loaded_pixs[1]; clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; + uae_u8 val1 = dpf_lookup[pix1]; + if (dpf_lookup_no[pix1]) { + val1 += dblpfofs[bpldualpf2of]; + } + val1 ^= bplcon4_denise_xor_val; + dpix_val1 = denise_colors.acolors[val1]; } last_bpl_pix = pix1; } - shiftbpl8(); + shiftbpl2(); if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8(); + copybpl2e(); } - loaded_pix = getbpl8_32(); + if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { + copybpl2o(); + } + loaded_pix = getbpl2_32(); loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { @@ -7199,7 +6444,7 @@ static void lts_aga_fm1_n0_p8_ihires_dlores_filtered(void) denise_cck++; } } -static void lts_aga_fm1_n1_p8_ihires_dlores(void) +static void lts_aga_fm1_ehb0_p2_ihires_dlores(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -7210,29 +6455,12 @@ 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; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix0; } - shiftbpl8(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e(); - } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o(); - } - loaded_pix = getbpl8_32(); - loaded_pixs[0] = loaded_pix; - shiftbpl8(); internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; @@ -7267,7 +6495,7 @@ static void lts_aga_fm1_n1_p8_ihires_dlores(void) denise_cck++; } } -static void lts_aga_fm1_n1_p8_ihires_dlores_filtered(void) +static void lts_aga_fm1_ehb0_p2_ihires_dlores_filtered(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -7278,48 +6506,17 @@ 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; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix0; - } - shiftbpl8(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e(); - } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o(); } - loaded_pix = getbpl8_32(); - loaded_pixs[0] = loaded_pix; uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix1; } - shiftbpl8(); - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e(); - } - if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o(); - } - loaded_pix = getbpl8_32(); - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dpix_val0 = filter_pixel(dpix_val0, dpix_val1); @@ -7355,7 +6552,7 @@ static void lts_aga_fm1_n1_p8_ihires_dlores_filtered(void) denise_cck++; } } -static void lts_aga_fm1_dpf0_p8_ihires_dlores(void) +static void lts_aga_fm1_ehb1_p2_ihires_dlores(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -7366,31 +6563,12 @@ 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; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; - } - shiftbpl8(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8(); } - loaded_pix = getbpl8_32(); - loaded_pixs[0] = loaded_pix; - shiftbpl8(); internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; @@ -7425,7 +6603,7 @@ static void lts_aga_fm1_dpf0_p8_ihires_dlores(void) denise_cck++; } } -static void lts_aga_fm1_dpf0_p8_ihires_dlores_filtered(void) +static void lts_aga_fm1_ehb1_p2_ihires_dlores_filtered(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -7436,52 +6614,17 @@ 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; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; - } - shiftbpl8(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8(); } - loaded_pix = getbpl8_32(); - loaded_pixs[0] = loaded_pix; uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - if (dpf_lookup_no[pix1]) { - val1 += dblpfofs[bpldualpf2of]; - } - val1 ^= bplcon4_denise_xor_val; - dpix_val1 = denise_colors.acolors[val1]; - } - last_bpl_pix = pix1; - } - shiftbpl8(); - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8(); } - loaded_pix = getbpl8_32(); - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dpix_val0 = filter_pixel(dpix_val0, dpix_val1); @@ -7517,7 +6660,7 @@ static void lts_aga_fm1_dpf0_p8_ihires_dlores_filtered(void) denise_cck++; } } -static void lts_aga_fm1_dpf1_p8_ihires_dlores(void) +static void lts_aga_fm1_ham0_p2_ihires_dlores(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -7528,34 +6671,17 @@ 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; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; } - shiftbpl8(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e(); - } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o(); + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; } - loaded_pix = getbpl8_32(); - loaded_pixs[0] = loaded_pix; - shiftbpl8(); internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; @@ -7590,7 +6716,7 @@ static void lts_aga_fm1_dpf1_p8_ihires_dlores(void) denise_cck++; } } -static void lts_aga_fm1_dpf1_p8_ihires_dlores_filtered(void) +static void lts_aga_fm1_ham0_p2_ihires_dlores_filtered(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -7601,58 +6727,17 @@ 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; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; - } - shiftbpl8(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e(); - } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o(); } - loaded_pix = getbpl8_32(); - loaded_pixs[0] = loaded_pix; uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - if (dpf_lookup_no[pix1]) { - val1 += dblpfofs[bpldualpf2of]; - } - val1 ^= bplcon4_denise_xor_val; - dpix_val1 = denise_colors.acolors[val1]; - } - last_bpl_pix = pix1; - } - shiftbpl8(); - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e(); - } - if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o(); } - loaded_pix = getbpl8_32(); - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dpix_val0 = filter_pixel(dpix_val0, dpix_val1); @@ -7688,23 +6773,7 @@ static void lts_aga_fm1_dpf1_p8_ihires_dlores_filtered(void) denise_cck++; } } -static void lts_aga_fm1_ehb0_p8_ihires_dlores(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb0_p8_ihires_dlores_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb1_p8_ihires_dlores(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb1_p8_ihires_dlores_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_ham0_p8_ihires_dlores(void) +static void lts_aga_fm1_ham1_p2_ihires_dlores(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -7715,41 +6784,17 @@ 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; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = decode_ham_pixel_aga(pix0); - } - last_bpl_pix = pix0; - } - shiftbpl8(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8(); } - loaded_pix = getbpl8_32(); - loaded_pixs[0] = loaded_pix; uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - decode_ham_pixel_aga(pix1); - } - last_bpl_pix = pix1; - } - shiftbpl8(); - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8(); } - loaded_pix = getbpl8_32(); - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; @@ -7784,7 +6829,7 @@ static void lts_aga_fm1_ham0_p8_ihires_dlores(void) denise_cck++; } } -static void lts_aga_fm1_ham0_p8_ihires_dlores_filtered(void) +static void lts_aga_fm1_ham1_p2_ihires_dlores_filtered(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -7795,42 +6840,17 @@ 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; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = decode_ham_pixel_aga(pix0); - } - last_bpl_pix = pix0; - } - shiftbpl8(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8(); } - loaded_pix = getbpl8_32(); - loaded_pixs[0] = loaded_pix; uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - dpix_val1 = decode_ham_pixel_aga(pix1); - } - last_bpl_pix = pix1; - } - shiftbpl8(); - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8(); } - loaded_pix = getbpl8_32(); - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dpix_val0 = filter_pixel(dpix_val0, dpix_val1); @@ -7866,7 +6886,7 @@ static void lts_aga_fm1_ham0_p8_ihires_dlores_filtered(void) denise_cck++; } } -static void lts_aga_fm1_ham1_p8_ihires_dlores(void) +static void lts_aga_fm1_kehb0_p2_ihires_dlores(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -7877,47 +6897,12 @@ 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; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = decode_ham_pixel_aga(pix0); - } - last_bpl_pix = pix0; - } - shiftbpl8(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e(); - } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o(); - } - loaded_pix = getbpl8_32(); - loaded_pixs[0] = loaded_pix; - uae_u8 pix1 = 0; - uae_u32 dpix_val1 = BLANK_COLOR; - if (!denise_blank_active) { - dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - decode_ham_pixel_aga(pix1); - } - last_bpl_pix = pix1; - } - shiftbpl8(); - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e(); - } - if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o(); } - loaded_pix = getbpl8_32(); - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; @@ -7952,7 +6937,7 @@ static void lts_aga_fm1_ham1_p8_ihires_dlores(void) denise_cck++; } } -static void lts_aga_fm1_ham1_p8_ihires_dlores_filtered(void) +static void lts_aga_fm1_kehb0_p2_ihires_dlores_filtered(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -7963,48 +6948,17 @@ 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; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = decode_ham_pixel_aga(pix0); - } - last_bpl_pix = pix0; - } - shiftbpl8(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e(); - } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o(); } - loaded_pix = getbpl8_32(); - loaded_pixs[0] = loaded_pix; uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - dpix_val1 = decode_ham_pixel_aga(pix1); - } - last_bpl_pix = pix1; - } - shiftbpl8(); - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e(); - } - if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o(); } - loaded_pix = getbpl8_32(); - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dpix_val0 = filter_pixel(dpix_val0, dpix_val1); @@ -8040,23 +6994,7 @@ static void lts_aga_fm1_ham1_p8_ihires_dlores_filtered(void) denise_cck++; } } -static void lts_aga_fm1_kehb0_p8_ihires_dlores(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb0_p8_ihires_dlores_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb1_p8_ihires_dlores(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb1_p8_ihires_dlores_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_n0_p2_ihires_dlores_spr(void) +static void lts_aga_fm1_kehb1_p2_ihires_dlores(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -8067,43 +7005,14 @@ 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; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix0; - } - shiftbpl2(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl2(); - } - loaded_pix = getbpl2_32(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } } - loaded_pixs[0] = loaded_pix; - shiftbpl2(); internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - } - } dtbuf[h][0] = dpix_val0; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -8136,7 +7045,7 @@ static void lts_aga_fm1_n0_p2_ihires_dlores_spr(void) denise_cck++; } } -static void lts_aga_fm1_n0_p2_ihires_dlores_spr_filtered(void) +static void lts_aga_fm1_kehb1_p2_ihires_dlores_filtered(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -8147,60 +7056,19 @@ 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; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix0; - } - shiftbpl2(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl2(); - } - loaded_pix = getbpl2_32(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } } - loaded_pixs[0] = loaded_pix; uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix1; } - shiftbpl2(); - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl2(); - } - loaded_pix = getbpl2_32(); - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - dpix_val1 = dpix_val0; - } - } dpix_val0 = filter_pixel(dpix_val0, dpix_val1); dtbuf[h][0] = dpix_val0; uae_u32 t0 = dtbuf[h ^ lol][0]; @@ -8234,7 +7102,7 @@ static void lts_aga_fm1_n0_p2_ihires_dlores_spr_filtered(void) denise_cck++; } } -static void lts_aga_fm1_n1_p2_ihires_dlores_spr(void) +static void lts_aga_fm1_n0_p4_ihires_dlores(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -8247,7 +7115,6 @@ static void lts_aga_fm1_n1_p2_ihires_dlores_spr(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -8259,32 +7126,15 @@ static void lts_aga_fm1_n1_p2_ihires_dlores_spr(void) } last_bpl_pix = pix0; } - shiftbpl2(); + shiftbpl4(); if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl2e(); - } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl2o(); - } - loaded_pix = getbpl2_32(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } + copybpl4(); } + loaded_pix = getbpl4_32(); loaded_pixs[0] = loaded_pix; - shiftbpl2(); + shiftbpl4(); internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - } - } dtbuf[h][0] = dpix_val0; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -8317,7 +7167,7 @@ static void lts_aga_fm1_n1_p2_ihires_dlores_spr(void) denise_cck++; } } -static void lts_aga_fm1_n1_p2_ihires_dlores_spr_filtered(void) +static void lts_aga_fm1_n0_p4_ihires_dlores_filtered(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -8330,7 +7180,6 @@ static void lts_aga_fm1_n1_p2_ihires_dlores_spr_filtered(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -8342,22 +7191,11 @@ static void lts_aga_fm1_n1_p2_ihires_dlores_spr_filtered(void) } last_bpl_pix = pix0; } - shiftbpl2(); + shiftbpl4(); if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl2e(); - } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl2o(); - } - loaded_pix = getbpl2_32(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } + copybpl4(); } + loaded_pix = getbpl4_32(); loaded_pixs[0] = loaded_pix; uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; @@ -8370,24 +7208,14 @@ static void lts_aga_fm1_n1_p2_ihires_dlores_spr_filtered(void) } last_bpl_pix = pix1; } - shiftbpl2(); + shiftbpl4(); if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl2e(); - } - if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { - copybpl2o(); + copybpl4(); } - loaded_pix = getbpl2_32(); + loaded_pix = getbpl4_32(); loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - dpix_val1 = dpix_val0; - } - } dpix_val0 = filter_pixel(dpix_val0, dpix_val1); dtbuf[h][0] = dpix_val0; uae_u32 t0 = dtbuf[h ^ lol][0]; @@ -8421,7 +7249,7 @@ static void lts_aga_fm1_n1_p2_ihires_dlores_spr_filtered(void) denise_cck++; } } -static void lts_aga_fm1_dpf0_p2_ihires_dlores_spr(void) +static void lts_aga_fm1_n1_p4_ihires_dlores(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -8434,7 +7262,6 @@ static void lts_aga_fm1_dpf0_p2_ihires_dlores_spr(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -8442,38 +7269,22 @@ static void lts_aga_fm1_dpf0_p2_ihires_dlores_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix0; } - shiftbpl2(); + shiftbpl4(); if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl2(); + copybpl4e(); } - loaded_pix = getbpl2_32(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl4o(); } + loaded_pix = getbpl4_32(); loaded_pixs[0] = loaded_pix; - shiftbpl2(); + shiftbpl4(); internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - } - } dtbuf[h][0] = dpix_val0; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -8506,7 +7317,7 @@ static void lts_aga_fm1_dpf0_p2_ihires_dlores_spr(void) denise_cck++; } } -static void lts_aga_fm1_dpf0_p2_ihires_dlores_spr_filtered(void) +static void lts_aga_fm1_n1_p4_ihires_dlores_filtered(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -8519,7 +7330,6 @@ static void lts_aga_fm1_dpf0_p2_ihires_dlores_spr_filtered(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -8527,28 +7337,18 @@ static void lts_aga_fm1_dpf0_p2_ihires_dlores_spr_filtered(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix0; } - shiftbpl2(); + shiftbpl4(); if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl2(); + copybpl4e(); } - loaded_pix = getbpl2_32(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl4o(); } + loaded_pix = getbpl4_32(); loaded_pixs[0] = loaded_pix; uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; @@ -8557,30 +7357,21 @@ static void lts_aga_fm1_dpf0_p2_ihires_dlores_spr_filtered(void) if (denise_hdiw && bpl1dat_trigger) { pix1 = loaded_pixs[1]; clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - if (dpf_lookup_no[pix1]) { - val1 += dblpfofs[bpldualpf2of]; - } - val1 ^= bplcon4_denise_xor_val; - dpix_val1 = denise_colors.acolors[val1]; + dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix1; } - shiftbpl2(); + shiftbpl4(); if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl2(); + copybpl4e(); } - loaded_pix = getbpl2_32(); + if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { + copybpl4o(); + } + loaded_pix = getbpl4_32(); loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - dpix_val1 = dpix_val0; - } - } dpix_val0 = filter_pixel(dpix_val0, dpix_val1); dtbuf[h][0] = dpix_val0; uae_u32 t0 = dtbuf[h ^ lol][0]; @@ -8614,7 +7405,7 @@ static void lts_aga_fm1_dpf0_p2_ihires_dlores_spr_filtered(void) denise_cck++; } } -static void lts_aga_fm1_dpf1_p2_ihires_dlores_spr(void) +static void lts_aga_fm1_dpf0_p4_ihires_dlores(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -8627,7 +7418,6 @@ static void lts_aga_fm1_dpf1_p2_ihires_dlores_spr(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -8644,32 +7434,15 @@ static void lts_aga_fm1_dpf1_p2_ihires_dlores_spr(void) } last_bpl_pix = pix0; } - shiftbpl2(); + shiftbpl4(); if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl2e(); - } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl2o(); - } - loaded_pix = getbpl2_32(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } + copybpl4(); } + loaded_pix = getbpl4_32(); loaded_pixs[0] = loaded_pix; - shiftbpl2(); + shiftbpl4(); internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - } - } dtbuf[h][0] = dpix_val0; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -8702,7 +7475,7 @@ static void lts_aga_fm1_dpf1_p2_ihires_dlores_spr(void) denise_cck++; } } -static void lts_aga_fm1_dpf1_p2_ihires_dlores_spr_filtered(void) +static void lts_aga_fm1_dpf0_p4_ihires_dlores_filtered(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -8715,7 +7488,6 @@ static void lts_aga_fm1_dpf1_p2_ihires_dlores_spr_filtered(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -8732,22 +7504,11 @@ static void lts_aga_fm1_dpf1_p2_ihires_dlores_spr_filtered(void) } last_bpl_pix = pix0; } - shiftbpl2(); + shiftbpl4(); if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl2e(); - } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl2o(); - } - loaded_pix = getbpl2_32(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } + copybpl4(); } + loaded_pix = getbpl4_32(); loaded_pixs[0] = loaded_pix; uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; @@ -8765,24 +7526,14 @@ static void lts_aga_fm1_dpf1_p2_ihires_dlores_spr_filtered(void) } last_bpl_pix = pix1; } - shiftbpl2(); + shiftbpl4(); if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl2e(); - } - if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { - copybpl2o(); + copybpl4(); } - loaded_pix = getbpl2_32(); + loaded_pix = getbpl4_32(); loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - dpix_val1 = dpix_val0; - } - } dpix_val0 = filter_pixel(dpix_val0, dpix_val1); dtbuf[h][0] = dpix_val0; uae_u32 t0 = dtbuf[h ^ lol][0]; @@ -8816,55 +7567,7 @@ static void lts_aga_fm1_dpf1_p2_ihires_dlores_spr_filtered(void) denise_cck++; } } -static void lts_aga_fm1_ehb0_p2_ihires_dlores_spr(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb0_p2_ihires_dlores_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb1_p2_ihires_dlores_spr(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb1_p2_ihires_dlores_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_ham0_p2_ihires_dlores_spr(void) -{ - lts_null(); -} -static void lts_aga_fm1_ham0_p2_ihires_dlores_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_ham1_p2_ihires_dlores_spr(void) -{ - lts_null(); -} -static void lts_aga_fm1_ham1_p2_ihires_dlores_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb0_p2_ihires_dlores_spr(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb0_p2_ihires_dlores_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb1_p2_ihires_dlores_spr(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb1_p2_ihires_dlores_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_n0_p4_ihires_dlores_spr(void) +static void lts_aga_fm1_dpf1_p4_ihires_dlores(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -8877,7 +7580,6 @@ static void lts_aga_fm1_n0_p4_ihires_dlores_spr(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -8885,33 +7587,27 @@ static void lts_aga_fm1_n0_p4_ihires_dlores_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; } last_bpl_pix = pix0; } shiftbpl4(); if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4(); + copybpl4e(); } - loaded_pix = getbpl4_32(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl4o(); } + loaded_pix = getbpl4_32(); loaded_pixs[0] = loaded_pix; shiftbpl4(); internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - } - } dtbuf[h][0] = dpix_val0; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -8944,7 +7640,7 @@ static void lts_aga_fm1_n0_p4_ihires_dlores_spr(void) denise_cck++; } } -static void lts_aga_fm1_n0_p4_ihires_dlores_spr_filtered(void) +static void lts_aga_fm1_dpf1_p4_ihires_dlores_filtered(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -8957,7 +7653,6 @@ static void lts_aga_fm1_n0_p4_ihires_dlores_spr_filtered(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -8965,23 +7660,23 @@ static void lts_aga_fm1_n0_p4_ihires_dlores_spr_filtered(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; } last_bpl_pix = pix0; } shiftbpl4(); if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4(); + copybpl4e(); } - loaded_pix = getbpl4_32(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl4o(); } + loaded_pix = getbpl4_32(); loaded_pixs[0] = loaded_pix; uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; @@ -8990,25 +7685,26 @@ static void lts_aga_fm1_n0_p4_ihires_dlores_spr_filtered(void) if (denise_hdiw && bpl1dat_trigger) { pix1 = loaded_pixs[1]; clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; + uae_u8 val1 = dpf_lookup[pix1]; + if (dpf_lookup_no[pix1]) { + val1 += dblpfofs[bpldualpf2of]; + } + val1 ^= bplcon4_denise_xor_val; + dpix_val1 = denise_colors.acolors[val1]; } last_bpl_pix = pix1; } shiftbpl4(); if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4(); + copybpl4e(); + } + if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { + copybpl4o(); } loaded_pix = getbpl4_32(); loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - dpix_val1 = dpix_val0; - } - } dpix_val0 = filter_pixel(dpix_val0, dpix_val1); dtbuf[h][0] = dpix_val0; uae_u32 t0 = dtbuf[h ^ lol][0]; @@ -9042,7 +7738,7 @@ static void lts_aga_fm1_n0_p4_ihires_dlores_spr_filtered(void) denise_cck++; } } -static void lts_aga_fm1_n1_p4_ihires_dlores_spr(void) +static void lts_aga_fm1_ehb0_p4_ihires_dlores(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -9053,46 +7749,14 @@ 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; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix0; - } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4e(); - } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl4o(); - } - loaded_pix = getbpl4_32(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } } - loaded_pixs[0] = loaded_pix; - shiftbpl4(); internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - } - } dtbuf[h][0] = dpix_val0; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -9125,7 +7789,7 @@ static void lts_aga_fm1_n1_p4_ihires_dlores_spr(void) denise_cck++; } } -static void lts_aga_fm1_n1_p4_ihires_dlores_spr_filtered(void) +static void lts_aga_fm1_ehb0_p4_ihires_dlores_filtered(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -9136,66 +7800,19 @@ 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; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix0; - } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4e(); - } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl4o(); } - loaded_pix = getbpl4_32(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } - } - loaded_pixs[0] = loaded_pix; uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix1; } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4e(); - } - if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { - copybpl4o(); - } - loaded_pix = getbpl4_32(); - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - dpix_val1 = dpix_val0; - } - } dpix_val0 = filter_pixel(dpix_val0, dpix_val1); dtbuf[h][0] = dpix_val0; uae_u32 t0 = dtbuf[h ^ lol][0]; @@ -9229,7 +7846,7 @@ static void lts_aga_fm1_n1_p4_ihires_dlores_spr_filtered(void) denise_cck++; } } -static void lts_aga_fm1_dpf0_p4_ihires_dlores_spr(void) +static void lts_aga_fm1_ehb1_p4_ihires_dlores(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -9240,48 +7857,14 @@ 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; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; - } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4(); - } - loaded_pix = getbpl4_32(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } } - loaded_pixs[0] = loaded_pix; - shiftbpl4(); internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - } - } dtbuf[h][0] = dpix_val0; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -9314,7 +7897,7 @@ static void lts_aga_fm1_dpf0_p4_ihires_dlores_spr(void) denise_cck++; } } -static void lts_aga_fm1_dpf0_p4_ihires_dlores_spr_filtered(void) +static void lts_aga_fm1_ehb1_p4_ihires_dlores_filtered(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -9325,70 +7908,19 @@ 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; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; - } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4(); - } - loaded_pix = getbpl4_32(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } } - loaded_pixs[0] = loaded_pix; uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - if (dpf_lookup_no[pix1]) { - val1 += dblpfofs[bpldualpf2of]; - } - val1 ^= bplcon4_denise_xor_val; - dpix_val1 = denise_colors.acolors[val1]; - } - last_bpl_pix = pix1; - } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4(); } - loaded_pix = getbpl4_32(); - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - dpix_val1 = dpix_val0; - } - } dpix_val0 = filter_pixel(dpix_val0, dpix_val1); dtbuf[h][0] = dpix_val0; uae_u32 t0 = dtbuf[h ^ lol][0]; @@ -9422,7 +7954,7 @@ static void lts_aga_fm1_dpf0_p4_ihires_dlores_spr_filtered(void) denise_cck++; } } -static void lts_aga_fm1_dpf1_p4_ihires_dlores_spr(void) +static void lts_aga_fm1_ham0_p4_ihires_dlores(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -9433,51 +7965,19 @@ 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; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4e(); - } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl4o(); - } - loaded_pix = getbpl4_32(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; } - loaded_pixs[0] = loaded_pix; - shiftbpl4(); internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - } - } dtbuf[h][0] = dpix_val0; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -9510,7 +8010,7 @@ static void lts_aga_fm1_dpf1_p4_ihires_dlores_spr(void) denise_cck++; } } -static void lts_aga_fm1_dpf1_p4_ihires_dlores_spr_filtered(void) +static void lts_aga_fm1_ham0_p4_ihires_dlores_filtered(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -9521,76 +8021,19 @@ 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; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; - } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4e(); - } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl4o(); - } - loaded_pix = getbpl4_32(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } } - loaded_pixs[0] = loaded_pix; uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - if (dpf_lookup_no[pix1]) { - val1 += dblpfofs[bpldualpf2of]; - } - val1 ^= bplcon4_denise_xor_val; - dpix_val1 = denise_colors.acolors[val1]; - } - last_bpl_pix = pix1; - } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4e(); - } - if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { - copybpl4o(); } - loaded_pix = getbpl4_32(); - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - dpix_val1 = dpix_val0; - } - } dpix_val0 = filter_pixel(dpix_val0, dpix_val1); dtbuf[h][0] = dpix_val0; uae_u32 t0 = dtbuf[h ^ lol][0]; @@ -9624,55 +8067,7 @@ static void lts_aga_fm1_dpf1_p4_ihires_dlores_spr_filtered(void) denise_cck++; } } -static void lts_aga_fm1_ehb0_p4_ihires_dlores_spr(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb0_p4_ihires_dlores_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb1_p4_ihires_dlores_spr(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb1_p4_ihires_dlores_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_ham0_p4_ihires_dlores_spr(void) -{ - lts_null(); -} -static void lts_aga_fm1_ham0_p4_ihires_dlores_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_ham1_p4_ihires_dlores_spr(void) -{ - lts_null(); -} -static void lts_aga_fm1_ham1_p4_ihires_dlores_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb0_p4_ihires_dlores_spr(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb0_p4_ihires_dlores_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb1_p4_ihires_dlores_spr(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb1_p4_ihires_dlores_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_n0_p6_ihires_dlores_spr(void) +static void lts_aga_fm1_ham1_p4_ihires_dlores(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -9683,43 +8078,19 @@ 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; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix0; } - shiftbpl6(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6(); + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; } - loaded_pix = getbpl6_32(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } - } - loaded_pixs[0] = loaded_pix; - shiftbpl6(); internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - } - } dtbuf[h][0] = dpix_val0; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -9752,7 +8123,7 @@ static void lts_aga_fm1_n0_p6_ihires_dlores_spr(void) denise_cck++; } } -static void lts_aga_fm1_n0_p6_ihires_dlores_spr_filtered(void) +static void lts_aga_fm1_ham1_p4_ihires_dlores_filtered(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -9763,60 +8134,19 @@ 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; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix0; - } - shiftbpl6(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6(); - } - loaded_pix = getbpl6_32(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } } - loaded_pixs[0] = loaded_pix; uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix1; - } - shiftbpl6(); - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6(); } - loaded_pix = getbpl6_32(); - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - dpix_val1 = dpix_val0; - } - } dpix_val0 = filter_pixel(dpix_val0, dpix_val1); dtbuf[h][0] = dpix_val0; uae_u32 t0 = dtbuf[h ^ lol][0]; @@ -9850,7 +8180,7 @@ static void lts_aga_fm1_n0_p6_ihires_dlores_spr_filtered(void) denise_cck++; } } -static void lts_aga_fm1_n1_p6_ihires_dlores_spr(void) +static void lts_aga_fm1_kehb0_p4_ihires_dlores(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -9861,46 +8191,71 @@ 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; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); } - last_bpl_pix = pix0; + #endif + *buf1++ = t0; + *buf2++ = t0; } - shiftbpl6(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6e(); + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_kehb0_p4_ihires_dlores_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl6o(); + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; } - loaded_pix = getbpl6_32(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; } - loaded_pixs[0] = loaded_pix; - shiftbpl6(); internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - } - } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); dtbuf[h][0] = dpix_val0; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -9933,7 +8288,7 @@ static void lts_aga_fm1_n1_p6_ihires_dlores_spr(void) denise_cck++; } } -static void lts_aga_fm1_n1_p6_ihires_dlores_spr_filtered(void) +static void lts_aga_fm1_kehb1_p4_ihires_dlores(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -9944,66 +8299,70 @@ 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; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix0; } - shiftbpl6(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6e(); + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_kehb1_p4_ihires_dlores_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; } - loaded_pix = getbpl6_32(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; } - loaded_pixs[0] = loaded_pix; uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix1; - } - shiftbpl6(); - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6e(); } - if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { - copybpl6o(); - } - loaded_pix = getbpl6_32(); - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - dpix_val1 = dpix_val0; - } - } dpix_val0 = filter_pixel(dpix_val0, dpix_val1); dtbuf[h][0] = dpix_val0; uae_u32 t0 = dtbuf[h ^ lol][0]; @@ -10037,7 +8396,7 @@ static void lts_aga_fm1_n1_p6_ihires_dlores_spr_filtered(void) denise_cck++; } } -static void lts_aga_fm1_dpf0_p6_ihires_dlores_spr(void) +static void lts_aga_fm1_n0_p6_ihires_dlores(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -10050,7 +8409,6 @@ static void lts_aga_fm1_dpf0_p6_ihires_dlores_spr(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -10058,12 +8416,7 @@ static void lts_aga_fm1_dpf0_p6_ihires_dlores_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix0; } @@ -10072,24 +8425,10 @@ static void lts_aga_fm1_dpf0_p6_ihires_dlores_spr(void) copybpl6(); } loaded_pix = getbpl6_32(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } - } loaded_pixs[0] = loaded_pix; shiftbpl6(); internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - } - } dtbuf[h][0] = dpix_val0; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -10122,7 +8461,7 @@ static void lts_aga_fm1_dpf0_p6_ihires_dlores_spr(void) denise_cck++; } } -static void lts_aga_fm1_dpf0_p6_ihires_dlores_spr_filtered(void) +static void lts_aga_fm1_n0_p6_ihires_dlores_filtered(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -10135,7 +8474,6 @@ static void lts_aga_fm1_dpf0_p6_ihires_dlores_spr_filtered(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -10143,12 +8481,7 @@ static void lts_aga_fm1_dpf0_p6_ihires_dlores_spr_filtered(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix0; } @@ -10157,14 +8490,6 @@ static void lts_aga_fm1_dpf0_p6_ihires_dlores_spr_filtered(void) copybpl6(); } loaded_pix = getbpl6_32(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } - } loaded_pixs[0] = loaded_pix; uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; @@ -10173,12 +8498,7 @@ static void lts_aga_fm1_dpf0_p6_ihires_dlores_spr_filtered(void) if (denise_hdiw && bpl1dat_trigger) { pix1 = loaded_pixs[1]; clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - if (dpf_lookup_no[pix1]) { - val1 += dblpfofs[bpldualpf2of]; - } - val1 ^= bplcon4_denise_xor_val; - dpix_val1 = denise_colors.acolors[val1]; + dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix1; } @@ -10190,13 +8510,6 @@ static void lts_aga_fm1_dpf0_p6_ihires_dlores_spr_filtered(void) loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - dpix_val1 = dpix_val0; - } - } dpix_val0 = filter_pixel(dpix_val0, dpix_val1); dtbuf[h][0] = dpix_val0; uae_u32 t0 = dtbuf[h ^ lol][0]; @@ -10230,7 +8543,7 @@ static void lts_aga_fm1_dpf0_p6_ihires_dlores_spr_filtered(void) denise_cck++; } } -static void lts_aga_fm1_dpf1_p6_ihires_dlores_spr(void) +static void lts_aga_fm1_n1_p6_ihires_dlores(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -10243,7 +8556,6 @@ static void lts_aga_fm1_dpf1_p6_ihires_dlores_spr(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -10251,12 +8563,7 @@ static void lts_aga_fm1_dpf1_p6_ihires_dlores_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix0; } @@ -10268,24 +8575,10 @@ static void lts_aga_fm1_dpf1_p6_ihires_dlores_spr(void) copybpl6o(); } loaded_pix = getbpl6_32(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } - } loaded_pixs[0] = loaded_pix; shiftbpl6(); internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - } - } dtbuf[h][0] = dpix_val0; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -10318,7 +8611,7 @@ static void lts_aga_fm1_dpf1_p6_ihires_dlores_spr(void) denise_cck++; } } -static void lts_aga_fm1_dpf1_p6_ihires_dlores_spr_filtered(void) +static void lts_aga_fm1_n1_p6_ihires_dlores_filtered(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -10331,7 +8624,6 @@ static void lts_aga_fm1_dpf1_p6_ihires_dlores_spr_filtered(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -10339,12 +8631,7 @@ static void lts_aga_fm1_dpf1_p6_ihires_dlores_spr_filtered(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix0; } @@ -10356,14 +8643,6 @@ static void lts_aga_fm1_dpf1_p6_ihires_dlores_spr_filtered(void) copybpl6o(); } loaded_pix = getbpl6_32(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } - } loaded_pixs[0] = loaded_pix; uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; @@ -10372,12 +8651,7 @@ static void lts_aga_fm1_dpf1_p6_ihires_dlores_spr_filtered(void) if (denise_hdiw && bpl1dat_trigger) { pix1 = loaded_pixs[1]; clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - if (dpf_lookup_no[pix1]) { - val1 += dblpfofs[bpldualpf2of]; - } - val1 ^= bplcon4_denise_xor_val; - dpix_val1 = denise_colors.acolors[val1]; + dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix1; } @@ -10392,13 +8666,6 @@ static void lts_aga_fm1_dpf1_p6_ihires_dlores_spr_filtered(void) loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - dpix_val1 = dpix_val0; - } - } dpix_val0 = filter_pixel(dpix_val0, dpix_val1); dtbuf[h][0] = dpix_val0; uae_u32 t0 = dtbuf[h ^ lol][0]; @@ -10432,7 +8699,7 @@ static void lts_aga_fm1_dpf1_p6_ihires_dlores_spr_filtered(void) denise_cck++; } } -static void lts_aga_fm1_ehb0_p6_ihires_dlores_spr(void) +static void lts_aga_fm1_dpf0_p6_ihires_dlores(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -10445,7 +8712,6 @@ static void lts_aga_fm1_ehb0_p6_ihires_dlores_spr(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -10453,13 +8719,12 @@ static void lts_aga_fm1_ehb0_p6_ihires_dlores_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - pix0 ^= bplcon4_denise_xor_val; - if (!(pix0 & 0x20)) { - dpix_val0 = denise_colors.acolors[pix0]; - } else { - uae_u32 v = (denise_colors.color_regs_aga[pix0 & 0x1f] >> 1) & 0x7f7f7f; - dpix_val0 = CONVERT_RGB(v); + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; } last_bpl_pix = pix0; } @@ -10468,24 +8733,10 @@ static void lts_aga_fm1_ehb0_p6_ihires_dlores_spr(void) copybpl6(); } loaded_pix = getbpl6_32(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } - } loaded_pixs[0] = loaded_pix; shiftbpl6(); internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - } - } dtbuf[h][0] = dpix_val0; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -10518,7 +8769,7 @@ static void lts_aga_fm1_ehb0_p6_ihires_dlores_spr(void) denise_cck++; } } -static void lts_aga_fm1_ehb0_p6_ihires_dlores_spr_filtered(void) +static void lts_aga_fm1_dpf0_p6_ihires_dlores_filtered(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -10531,7 +8782,6 @@ static void lts_aga_fm1_ehb0_p6_ihires_dlores_spr_filtered(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -10539,13 +8789,12 @@ static void lts_aga_fm1_ehb0_p6_ihires_dlores_spr_filtered(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - pix0 ^= bplcon4_denise_xor_val; - if (!(pix0 & 0x20)) { - dpix_val0 = denise_colors.acolors[pix0]; - } else { - uae_u32 v = (denise_colors.color_regs_aga[pix0 & 0x1f] >> 1) & 0x7f7f7f; - dpix_val0 = CONVERT_RGB(v); + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; } last_bpl_pix = pix0; } @@ -10554,14 +8803,6 @@ static void lts_aga_fm1_ehb0_p6_ihires_dlores_spr_filtered(void) copybpl6(); } loaded_pix = getbpl6_32(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } - } loaded_pixs[0] = loaded_pix; uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; @@ -10570,13 +8811,12 @@ static void lts_aga_fm1_ehb0_p6_ihires_dlores_spr_filtered(void) if (denise_hdiw && bpl1dat_trigger) { pix1 = loaded_pixs[1]; clxdat |= bplcoltable[pix1]; - pix1 ^= bplcon4_denise_xor_val; - if (!(pix1 & 0x20)) { - dpix_val1 = denise_colors.acolors[pix1]; - } else { - uae_u32 v = (denise_colors.color_regs_aga[pix1 & 0x1f] >> 1) & 0x7f7f7f; - dpix_val1 = CONVERT_RGB(v); + uae_u8 val1 = dpf_lookup[pix1]; + if (dpf_lookup_no[pix1]) { + val1 += dblpfofs[bpldualpf2of]; } + val1 ^= bplcon4_denise_xor_val; + dpix_val1 = denise_colors.acolors[val1]; } last_bpl_pix = pix1; } @@ -10588,13 +8828,6 @@ static void lts_aga_fm1_ehb0_p6_ihires_dlores_spr_filtered(void) loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - dpix_val1 = dpix_val0; - } - } dpix_val0 = filter_pixel(dpix_val0, dpix_val1); dtbuf[h][0] = dpix_val0; uae_u32 t0 = dtbuf[h ^ lol][0]; @@ -10628,7 +8861,7 @@ static void lts_aga_fm1_ehb0_p6_ihires_dlores_spr_filtered(void) denise_cck++; } } -static void lts_aga_fm1_ehb1_p6_ihires_dlores_spr(void) +static void lts_aga_fm1_dpf1_p6_ihires_dlores(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -10641,7 +8874,6 @@ static void lts_aga_fm1_ehb1_p6_ihires_dlores_spr(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -10649,13 +8881,12 @@ static void lts_aga_fm1_ehb1_p6_ihires_dlores_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - pix0 ^= bplcon4_denise_xor_val; - if (!(pix0 & 0x20)) { - dpix_val0 = denise_colors.acolors[pix0]; - } else { - uae_u32 v = (denise_colors.color_regs_aga[pix0 & 0x1f] >> 1) & 0x7f7f7f; - dpix_val0 = CONVERT_RGB(v); + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; } last_bpl_pix = pix0; } @@ -10667,24 +8898,10 @@ static void lts_aga_fm1_ehb1_p6_ihires_dlores_spr(void) copybpl6o(); } loaded_pix = getbpl6_32(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } - } loaded_pixs[0] = loaded_pix; shiftbpl6(); internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - } - } dtbuf[h][0] = dpix_val0; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -10717,7 +8934,7 @@ static void lts_aga_fm1_ehb1_p6_ihires_dlores_spr(void) denise_cck++; } } -static void lts_aga_fm1_ehb1_p6_ihires_dlores_spr_filtered(void) +static void lts_aga_fm1_dpf1_p6_ihires_dlores_filtered(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -10730,7 +8947,6 @@ static void lts_aga_fm1_ehb1_p6_ihires_dlores_spr_filtered(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -10738,13 +8954,12 @@ static void lts_aga_fm1_ehb1_p6_ihires_dlores_spr_filtered(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - pix0 ^= bplcon4_denise_xor_val; - if (!(pix0 & 0x20)) { - dpix_val0 = denise_colors.acolors[pix0]; - } else { - uae_u32 v = (denise_colors.color_regs_aga[pix0 & 0x1f] >> 1) & 0x7f7f7f; - dpix_val0 = CONVERT_RGB(v); + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; } last_bpl_pix = pix0; } @@ -10756,14 +8971,6 @@ static void lts_aga_fm1_ehb1_p6_ihires_dlores_spr_filtered(void) copybpl6o(); } loaded_pix = getbpl6_32(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } - } loaded_pixs[0] = loaded_pix; uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; @@ -10772,13 +8979,12 @@ static void lts_aga_fm1_ehb1_p6_ihires_dlores_spr_filtered(void) if (denise_hdiw && bpl1dat_trigger) { pix1 = loaded_pixs[1]; clxdat |= bplcoltable[pix1]; - pix1 ^= bplcon4_denise_xor_val; - if (!(pix1 & 0x20)) { - dpix_val1 = denise_colors.acolors[pix1]; - } else { - uae_u32 v = (denise_colors.color_regs_aga[pix1 & 0x1f] >> 1) & 0x7f7f7f; - dpix_val1 = CONVERT_RGB(v); + uae_u8 val1 = dpf_lookup[pix1]; + if (dpf_lookup_no[pix1]) { + val1 += dblpfofs[bpldualpf2of]; } + val1 ^= bplcon4_denise_xor_val; + dpix_val1 = denise_colors.acolors[val1]; } last_bpl_pix = pix1; } @@ -10793,13 +8999,6 @@ static void lts_aga_fm1_ehb1_p6_ihires_dlores_spr_filtered(void) loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - dpix_val1 = dpix_val0; - } - } dpix_val0 = filter_pixel(dpix_val0, dpix_val1); dtbuf[h][0] = dpix_val0; uae_u32 t0 = dtbuf[h ^ lol][0]; @@ -10833,7 +9032,7 @@ static void lts_aga_fm1_ehb1_p6_ihires_dlores_spr_filtered(void) denise_cck++; } } -static void lts_aga_fm1_ham0_p6_ihires_dlores_spr(void) +static void lts_aga_fm1_ehb0_p6_ihires_dlores(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -10846,7 +9045,6 @@ static void lts_aga_fm1_ham0_p6_ihires_dlores_spr(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -10854,7 +9052,13 @@ static void lts_aga_fm1_ham0_p6_ihires_dlores_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - dpix_val0 = decode_ham_pixel_aga(pix0); + pix0 ^= bplcon4_denise_xor_val; + if (!(pix0 & 0x20)) { + dpix_val0 = denise_colors.acolors[pix0]; + } else { + uae_u32 v = (denise_colors.color_regs_aga[pix0 & 0x1f] >> 1) & 0x7f7f7f; + dpix_val0 = CONVERT_RGB(v); + } } last_bpl_pix = pix0; } @@ -10863,39 +9067,10 @@ static void lts_aga_fm1_ham0_p6_ihires_dlores_spr(void) copybpl6(); } loaded_pix = getbpl6_32(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } - } loaded_pixs[0] = loaded_pix; - uae_u8 pix1 = 0; - uae_u32 dpix_val1 = BLANK_COLOR; - if (!denise_blank_active) { - dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - decode_ham_pixel_aga(pix1); - } - last_bpl_pix = pix1; - } shiftbpl6(); - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6(); - } - loaded_pix = getbpl6_32(); - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - } - } dtbuf[h][0] = dpix_val0; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -10928,7 +9103,7 @@ static void lts_aga_fm1_ham0_p6_ihires_dlores_spr(void) denise_cck++; } } -static void lts_aga_fm1_ham0_p6_ihires_dlores_spr_filtered(void) +static void lts_aga_fm1_ehb0_p6_ihires_dlores_filtered(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -10941,7 +9116,6 @@ static void lts_aga_fm1_ham0_p6_ihires_dlores_spr_filtered(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -10949,7 +9123,13 @@ static void lts_aga_fm1_ham0_p6_ihires_dlores_spr_filtered(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - dpix_val0 = decode_ham_pixel_aga(pix0); + pix0 ^= bplcon4_denise_xor_val; + if (!(pix0 & 0x20)) { + dpix_val0 = denise_colors.acolors[pix0]; + } else { + uae_u32 v = (denise_colors.color_regs_aga[pix0 & 0x1f] >> 1) & 0x7f7f7f; + dpix_val0 = CONVERT_RGB(v); + } } last_bpl_pix = pix0; } @@ -10958,14 +9138,6 @@ static void lts_aga_fm1_ham0_p6_ihires_dlores_spr_filtered(void) copybpl6(); } loaded_pix = getbpl6_32(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } - } loaded_pixs[0] = loaded_pix; uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; @@ -10974,7 +9146,13 @@ static void lts_aga_fm1_ham0_p6_ihires_dlores_spr_filtered(void) if (denise_hdiw && bpl1dat_trigger) { pix1 = loaded_pixs[1]; clxdat |= bplcoltable[pix1]; - dpix_val1 = decode_ham_pixel_aga(pix1); + pix1 ^= bplcon4_denise_xor_val; + if (!(pix1 & 0x20)) { + dpix_val1 = denise_colors.acolors[pix1]; + } else { + uae_u32 v = (denise_colors.color_regs_aga[pix1 & 0x1f] >> 1) & 0x7f7f7f; + dpix_val1 = CONVERT_RGB(v); + } } last_bpl_pix = pix1; } @@ -10986,13 +9164,6 @@ static void lts_aga_fm1_ham0_p6_ihires_dlores_spr_filtered(void) loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - dpix_val1 = dpix_val0; - } - } dpix_val0 = filter_pixel(dpix_val0, dpix_val1); dtbuf[h][0] = dpix_val0; uae_u32 t0 = dtbuf[h ^ lol][0]; @@ -11026,7 +9197,7 @@ static void lts_aga_fm1_ham0_p6_ihires_dlores_spr_filtered(void) denise_cck++; } } -static void lts_aga_fm1_ham1_p6_ihires_dlores_spr(void) +static void lts_aga_fm1_ehb1_p6_ihires_dlores(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -11039,7 +9210,6 @@ static void lts_aga_fm1_ham1_p6_ihires_dlores_spr(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -11047,7 +9217,13 @@ static void lts_aga_fm1_ham1_p6_ihires_dlores_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - dpix_val0 = decode_ham_pixel_aga(pix0); + pix0 ^= bplcon4_denise_xor_val; + if (!(pix0 & 0x20)) { + dpix_val0 = denise_colors.acolors[pix0]; + } else { + uae_u32 v = (denise_colors.color_regs_aga[pix0 & 0x1f] >> 1) & 0x7f7f7f; + dpix_val0 = CONVERT_RGB(v); + } } last_bpl_pix = pix0; } @@ -11059,42 +9235,10 @@ static void lts_aga_fm1_ham1_p6_ihires_dlores_spr(void) copybpl6o(); } loaded_pix = getbpl6_32(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } - } loaded_pixs[0] = loaded_pix; - uae_u8 pix1 = 0; - uae_u32 dpix_val1 = BLANK_COLOR; - if (!denise_blank_active) { - dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - decode_ham_pixel_aga(pix1); - } - last_bpl_pix = pix1; - } shiftbpl6(); - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6e(); - } - if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { - copybpl6o(); - } - loaded_pix = getbpl6_32(); - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - } - } dtbuf[h][0] = dpix_val0; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -11127,7 +9271,7 @@ static void lts_aga_fm1_ham1_p6_ihires_dlores_spr(void) denise_cck++; } } -static void lts_aga_fm1_ham1_p6_ihires_dlores_spr_filtered(void) +static void lts_aga_fm1_ehb1_p6_ihires_dlores_filtered(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -11140,7 +9284,6 @@ static void lts_aga_fm1_ham1_p6_ihires_dlores_spr_filtered(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -11148,7 +9291,13 @@ static void lts_aga_fm1_ham1_p6_ihires_dlores_spr_filtered(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - dpix_val0 = decode_ham_pixel_aga(pix0); + pix0 ^= bplcon4_denise_xor_val; + if (!(pix0 & 0x20)) { + dpix_val0 = denise_colors.acolors[pix0]; + } else { + uae_u32 v = (denise_colors.color_regs_aga[pix0 & 0x1f] >> 1) & 0x7f7f7f; + dpix_val0 = CONVERT_RGB(v); + } } last_bpl_pix = pix0; } @@ -11160,14 +9309,6 @@ static void lts_aga_fm1_ham1_p6_ihires_dlores_spr_filtered(void) copybpl6o(); } loaded_pix = getbpl6_32(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } - } loaded_pixs[0] = loaded_pix; uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; @@ -11176,7 +9317,13 @@ static void lts_aga_fm1_ham1_p6_ihires_dlores_spr_filtered(void) if (denise_hdiw && bpl1dat_trigger) { pix1 = loaded_pixs[1]; clxdat |= bplcoltable[pix1]; - dpix_val1 = decode_ham_pixel_aga(pix1); + pix1 ^= bplcon4_denise_xor_val; + if (!(pix1 & 0x20)) { + dpix_val1 = denise_colors.acolors[pix1]; + } else { + uae_u32 v = (denise_colors.color_regs_aga[pix1 & 0x1f] >> 1) & 0x7f7f7f; + dpix_val1 = CONVERT_RGB(v); + } } last_bpl_pix = pix1; } @@ -11191,13 +9338,6 @@ static void lts_aga_fm1_ham1_p6_ihires_dlores_spr_filtered(void) loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - dpix_val1 = dpix_val0; - } - } dpix_val0 = filter_pixel(dpix_val0, dpix_val1); dtbuf[h][0] = dpix_val0; uae_u32 t0 = dtbuf[h ^ lol][0]; @@ -11231,7 +9371,7 @@ static void lts_aga_fm1_ham1_p6_ihires_dlores_spr_filtered(void) denise_cck++; } } -static void lts_aga_fm1_kehb0_p6_ihires_dlores_spr(void) +static void lts_aga_fm1_ham0_p6_ihires_dlores(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -11244,7 +9384,6 @@ static void lts_aga_fm1_kehb0_p6_ihires_dlores_spr(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -11252,8 +9391,7 @@ static void lts_aga_fm1_kehb0_p6_ihires_dlores_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - pix0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[pix0 & 31]; + dpix_val0 = decode_ham_pixel_aga(pix0); } last_bpl_pix = pix0; } @@ -11262,24 +9400,25 @@ static void lts_aga_fm1_kehb0_p6_ihires_dlores_spr(void) copybpl6(); } loaded_pix = getbpl6_32(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; + loaded_pixs[0] = loaded_pix; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + decode_ham_pixel_aga(pix1); } + last_bpl_pix = pix1; } - loaded_pixs[0] = loaded_pix; shiftbpl6(); + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6(); + } + loaded_pix = getbpl6_32(); + loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - } - } dtbuf[h][0] = dpix_val0; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -11312,7 +9451,7 @@ static void lts_aga_fm1_kehb0_p6_ihires_dlores_spr(void) denise_cck++; } } -static void lts_aga_fm1_kehb0_p6_ihires_dlores_spr_filtered(void) +static void lts_aga_fm1_ham0_p6_ihires_dlores_filtered(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -11325,7 +9464,6 @@ static void lts_aga_fm1_kehb0_p6_ihires_dlores_spr_filtered(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -11333,8 +9471,7 @@ static void lts_aga_fm1_kehb0_p6_ihires_dlores_spr_filtered(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - pix0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[pix0 & 31]; + dpix_val0 = decode_ham_pixel_aga(pix0); } last_bpl_pix = pix0; } @@ -11343,14 +9480,6 @@ static void lts_aga_fm1_kehb0_p6_ihires_dlores_spr_filtered(void) copybpl6(); } loaded_pix = getbpl6_32(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } - } loaded_pixs[0] = loaded_pix; uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; @@ -11359,8 +9488,7 @@ static void lts_aga_fm1_kehb0_p6_ihires_dlores_spr_filtered(void) if (denise_hdiw && bpl1dat_trigger) { pix1 = loaded_pixs[1]; clxdat |= bplcoltable[pix1]; - pix1 ^= bplcon4_denise_xor_val; - dpix_val1 = denise_colors.acolors[pix1 & 31]; + dpix_val1 = decode_ham_pixel_aga(pix1); } last_bpl_pix = pix1; } @@ -11372,13 +9500,6 @@ static void lts_aga_fm1_kehb0_p6_ihires_dlores_spr_filtered(void) loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - dpix_val1 = dpix_val0; - } - } dpix_val0 = filter_pixel(dpix_val0, dpix_val1); dtbuf[h][0] = dpix_val0; uae_u32 t0 = dtbuf[h ^ lol][0]; @@ -11412,7 +9533,7 @@ static void lts_aga_fm1_kehb0_p6_ihires_dlores_spr_filtered(void) denise_cck++; } } -static void lts_aga_fm1_kehb1_p6_ihires_dlores_spr(void) +static void lts_aga_fm1_ham1_p6_ihires_dlores(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -11425,7 +9546,6 @@ static void lts_aga_fm1_kehb1_p6_ihires_dlores_spr(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -11433,8 +9553,7 @@ static void lts_aga_fm1_kehb1_p6_ihires_dlores_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - pix0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[pix0 & 31]; + dpix_val0 = decode_ham_pixel_aga(pix0); } last_bpl_pix = pix0; } @@ -11446,24 +9565,28 @@ static void lts_aga_fm1_kehb1_p6_ihires_dlores_spr(void) copybpl6o(); } loaded_pix = getbpl6_32(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; + loaded_pixs[0] = loaded_pix; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + decode_ham_pixel_aga(pix1); } + last_bpl_pix = pix1; } - loaded_pixs[0] = loaded_pix; shiftbpl6(); + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6e(); + } + if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { + copybpl6o(); + } + loaded_pix = getbpl6_32(); + loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - } - } dtbuf[h][0] = dpix_val0; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -11496,7 +9619,7 @@ static void lts_aga_fm1_kehb1_p6_ihires_dlores_spr(void) denise_cck++; } } -static void lts_aga_fm1_kehb1_p6_ihires_dlores_spr_filtered(void) +static void lts_aga_fm1_ham1_p6_ihires_dlores_filtered(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -11509,7 +9632,6 @@ static void lts_aga_fm1_kehb1_p6_ihires_dlores_spr_filtered(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -11517,8 +9639,7 @@ static void lts_aga_fm1_kehb1_p6_ihires_dlores_spr_filtered(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - pix0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[pix0 & 31]; + dpix_val0 = decode_ham_pixel_aga(pix0); } last_bpl_pix = pix0; } @@ -11530,14 +9651,6 @@ static void lts_aga_fm1_kehb1_p6_ihires_dlores_spr_filtered(void) copybpl6o(); } loaded_pix = getbpl6_32(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } - } loaded_pixs[0] = loaded_pix; uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; @@ -11546,8 +9659,7 @@ static void lts_aga_fm1_kehb1_p6_ihires_dlores_spr_filtered(void) if (denise_hdiw && bpl1dat_trigger) { pix1 = loaded_pixs[1]; clxdat |= bplcoltable[pix1]; - pix1 ^= bplcon4_denise_xor_val; - dpix_val1 = denise_colors.acolors[pix1 & 31]; + dpix_val1 = decode_ham_pixel_aga(pix1); } last_bpl_pix = pix1; } @@ -11562,13 +9674,6 @@ static void lts_aga_fm1_kehb1_p6_ihires_dlores_spr_filtered(void) loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - dpix_val1 = dpix_val0; - } - } dpix_val0 = filter_pixel(dpix_val0, dpix_val1); dtbuf[h][0] = dpix_val0; uae_u32 t0 = dtbuf[h ^ lol][0]; @@ -11602,7 +9707,7 @@ static void lts_aga_fm1_kehb1_p6_ihires_dlores_spr_filtered(void) denise_cck++; } } -static void lts_aga_fm1_n0_p8_ihires_dlores_spr(void) +static void lts_aga_fm1_kehb0_p6_ihires_dlores(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -11615,7 +9720,6 @@ static void lts_aga_fm1_n0_p8_ihires_dlores_spr(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -11623,33 +9727,20 @@ static void lts_aga_fm1_n0_p8_ihires_dlores_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + pix0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[pix0 & 31]; } last_bpl_pix = pix0; } - shiftbpl8(); + shiftbpl6(); if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8(); - } - loaded_pix = getbpl8_32(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } + copybpl6(); } + loaded_pix = getbpl6_32(); loaded_pixs[0] = loaded_pix; - shiftbpl8(); + shiftbpl6(); internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - } - } dtbuf[h][0] = dpix_val0; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -11682,7 +9773,7 @@ static void lts_aga_fm1_n0_p8_ihires_dlores_spr(void) denise_cck++; } } -static void lts_aga_fm1_n0_p8_ihires_dlores_spr_filtered(void) +static void lts_aga_fm1_kehb0_p6_ihires_dlores_filtered(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -11695,7 +9786,6 @@ static void lts_aga_fm1_n0_p8_ihires_dlores_spr_filtered(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -11703,23 +9793,16 @@ static void lts_aga_fm1_n0_p8_ihires_dlores_spr_filtered(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + pix0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[pix0 & 31]; } last_bpl_pix = pix0; } - shiftbpl8(); + shiftbpl6(); if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8(); - } - loaded_pix = getbpl8_32(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } + copybpl6(); } + loaded_pix = getbpl6_32(); loaded_pixs[0] = loaded_pix; uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; @@ -11728,25 +9811,19 @@ static void lts_aga_fm1_n0_p8_ihires_dlores_spr_filtered(void) if (denise_hdiw && bpl1dat_trigger) { pix1 = loaded_pixs[1]; clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; + pix1 ^= bplcon4_denise_xor_val; + dpix_val1 = denise_colors.acolors[pix1 & 31]; } last_bpl_pix = pix1; } - shiftbpl8(); + shiftbpl6(); if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8(); + copybpl6(); } - loaded_pix = getbpl8_32(); + loaded_pix = getbpl6_32(); loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - dpix_val1 = dpix_val0; - } - } dpix_val0 = filter_pixel(dpix_val0, dpix_val1); dtbuf[h][0] = dpix_val0; uae_u32 t0 = dtbuf[h ^ lol][0]; @@ -11780,7 +9857,7 @@ static void lts_aga_fm1_n0_p8_ihires_dlores_spr_filtered(void) denise_cck++; } } -static void lts_aga_fm1_n1_p8_ihires_dlores_spr(void) +static void lts_aga_fm1_kehb1_p6_ihires_dlores(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -11793,7 +9870,6 @@ static void lts_aga_fm1_n1_p8_ihires_dlores_spr(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -11801,36 +9877,23 @@ static void lts_aga_fm1_n1_p8_ihires_dlores_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + pix0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[pix0 & 31]; } last_bpl_pix = pix0; } - shiftbpl8(); + shiftbpl6(); if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e(); + copybpl6e(); } if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o(); - } - loaded_pix = getbpl8_32(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } + copybpl6o(); } + loaded_pix = getbpl6_32(); loaded_pixs[0] = loaded_pix; - shiftbpl8(); + shiftbpl6(); internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - } - } dtbuf[h][0] = dpix_val0; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -11863,7 +9926,7 @@ static void lts_aga_fm1_n1_p8_ihires_dlores_spr(void) denise_cck++; } } -static void lts_aga_fm1_n1_p8_ihires_dlores_spr_filtered(void) +static void lts_aga_fm1_kehb1_p6_ihires_dlores_filtered(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -11876,7 +9939,6 @@ static void lts_aga_fm1_n1_p8_ihires_dlores_spr_filtered(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -11884,26 +9946,19 @@ static void lts_aga_fm1_n1_p8_ihires_dlores_spr_filtered(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + pix0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[pix0 & 31]; } last_bpl_pix = pix0; } - shiftbpl8(); + shiftbpl6(); if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e(); + copybpl6e(); } if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o(); - } - loaded_pix = getbpl8_32(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } + copybpl6o(); } + loaded_pix = getbpl6_32(); loaded_pixs[0] = loaded_pix; uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; @@ -11912,28 +9967,22 @@ static void lts_aga_fm1_n1_p8_ihires_dlores_spr_filtered(void) if (denise_hdiw && bpl1dat_trigger) { pix1 = loaded_pixs[1]; clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; + pix1 ^= bplcon4_denise_xor_val; + dpix_val1 = denise_colors.acolors[pix1 & 31]; } last_bpl_pix = pix1; } - shiftbpl8(); + shiftbpl6(); if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e(); + copybpl6e(); } if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o(); + copybpl6o(); } - loaded_pix = getbpl8_32(); + loaded_pix = getbpl6_32(); loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - dpix_val1 = dpix_val0; - } - } dpix_val0 = filter_pixel(dpix_val0, dpix_val1); dtbuf[h][0] = dpix_val0; uae_u32 t0 = dtbuf[h ^ lol][0]; @@ -11967,7 +10016,7 @@ static void lts_aga_fm1_n1_p8_ihires_dlores_spr_filtered(void) denise_cck++; } } -static void lts_aga_fm1_dpf0_p8_ihires_dlores_spr(void) +static void lts_aga_fm1_n0_p8_ihires_dlores(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -11980,7 +10029,6 @@ static void lts_aga_fm1_dpf0_p8_ihires_dlores_spr(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -11988,12 +10036,7 @@ static void lts_aga_fm1_dpf0_p8_ihires_dlores_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix0; } @@ -12002,24 +10045,10 @@ static void lts_aga_fm1_dpf0_p8_ihires_dlores_spr(void) copybpl8(); } loaded_pix = getbpl8_32(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } - } loaded_pixs[0] = loaded_pix; shiftbpl8(); internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - } - } dtbuf[h][0] = dpix_val0; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -12052,7 +10081,7 @@ static void lts_aga_fm1_dpf0_p8_ihires_dlores_spr(void) denise_cck++; } } -static void lts_aga_fm1_dpf0_p8_ihires_dlores_spr_filtered(void) +static void lts_aga_fm1_n0_p8_ihires_dlores_filtered(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -12065,7 +10094,6 @@ static void lts_aga_fm1_dpf0_p8_ihires_dlores_spr_filtered(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -12073,12 +10101,7 @@ static void lts_aga_fm1_dpf0_p8_ihires_dlores_spr_filtered(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix0; } @@ -12087,14 +10110,6 @@ static void lts_aga_fm1_dpf0_p8_ihires_dlores_spr_filtered(void) copybpl8(); } loaded_pix = getbpl8_32(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } - } loaded_pixs[0] = loaded_pix; uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; @@ -12103,12 +10118,7 @@ static void lts_aga_fm1_dpf0_p8_ihires_dlores_spr_filtered(void) if (denise_hdiw && bpl1dat_trigger) { pix1 = loaded_pixs[1]; clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - if (dpf_lookup_no[pix1]) { - val1 += dblpfofs[bpldualpf2of]; - } - val1 ^= bplcon4_denise_xor_val; - dpix_val1 = denise_colors.acolors[val1]; + dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix1; } @@ -12120,13 +10130,6 @@ static void lts_aga_fm1_dpf0_p8_ihires_dlores_spr_filtered(void) loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - dpix_val1 = dpix_val0; - } - } dpix_val0 = filter_pixel(dpix_val0, dpix_val1); dtbuf[h][0] = dpix_val0; uae_u32 t0 = dtbuf[h ^ lol][0]; @@ -12160,7 +10163,7 @@ static void lts_aga_fm1_dpf0_p8_ihires_dlores_spr_filtered(void) denise_cck++; } } -static void lts_aga_fm1_dpf1_p8_ihires_dlores_spr(void) +static void lts_aga_fm1_n1_p8_ihires_dlores(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -12173,7 +10176,6 @@ static void lts_aga_fm1_dpf1_p8_ihires_dlores_spr(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -12181,12 +10183,7 @@ static void lts_aga_fm1_dpf1_p8_ihires_dlores_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix0; } @@ -12198,24 +10195,98 @@ static void lts_aga_fm1_dpf1_p8_ihires_dlores_spr(void) copybpl8o(); } loaded_pix = getbpl8_32(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; + loaded_pixs[0] = loaded_pix; + shiftbpl8(); + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); } + #endif + *buf1++ = t0; + *buf2++ = t0; } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_n1_p8_ihires_dlores_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix0; + } + shiftbpl8(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8e(); + } + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o(); + } + loaded_pix = getbpl8_32(); loaded_pixs[0] = loaded_pix; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix1; + } shiftbpl8(); + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8e(); + } + if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o(); + } + loaded_pix = getbpl8_32(); + loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - } - } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); dtbuf[h][0] = dpix_val0; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -12248,7 +10319,7 @@ static void lts_aga_fm1_dpf1_p8_ihires_dlores_spr(void) denise_cck++; } } -static void lts_aga_fm1_dpf1_p8_ihires_dlores_spr_filtered(void) +static void lts_aga_fm1_dpf0_p8_ihires_dlores(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -12261,7 +10332,6 @@ static void lts_aga_fm1_dpf1_p8_ihires_dlores_spr_filtered(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -12280,20 +10350,79 @@ static void lts_aga_fm1_dpf1_p8_ihires_dlores_spr_filtered(void) } shiftbpl8(); if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e(); - } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o(); + copybpl8(); } loaded_pix = getbpl8_32(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; + loaded_pixs[0] = loaded_pix; + shiftbpl8(); + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_dpf0_p8_ihires_dlores_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; } + last_bpl_pix = pix0; + } + shiftbpl8(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8(); } + loaded_pix = getbpl8_32(); loaded_pixs[0] = loaded_pix; uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; @@ -12313,22 +10442,12 @@ static void lts_aga_fm1_dpf1_p8_ihires_dlores_spr_filtered(void) } shiftbpl8(); if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e(); - } - if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o(); + copybpl8(); } loaded_pix = getbpl8_32(); loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - dpix_val1 = dpix_val0; - } - } dpix_val0 = filter_pixel(dpix_val0, dpix_val1); dtbuf[h][0] = dpix_val0; uae_u32 t0 = dtbuf[h ^ lol][0]; @@ -12362,23 +10481,7 @@ static void lts_aga_fm1_dpf1_p8_ihires_dlores_spr_filtered(void) denise_cck++; } } -static void lts_aga_fm1_ehb0_p8_ihires_dlores_spr(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb0_p8_ihires_dlores_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb1_p8_ihires_dlores_spr(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb1_p8_ihires_dlores_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_ham0_p8_ihires_dlores_spr(void) +static void lts_aga_fm1_dpf1_p8_ihires_dlores(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -12391,7 +10494,6 @@ static void lts_aga_fm1_ham0_p8_ihires_dlores_spr(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -12399,23 +10501,96 @@ static void lts_aga_fm1_ham0_p8_ihires_dlores_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - dpix_val0 = decode_ham_pixel_aga(pix0); + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; } last_bpl_pix = pix0; } shiftbpl8(); if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8(); + copybpl8e(); + } + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o(); } loaded_pix = getbpl8_32(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; + loaded_pixs[0] = loaded_pix; + shiftbpl8(); + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_dpf1_p8_ihires_dlores_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; } + last_bpl_pix = pix0; + } + shiftbpl8(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8e(); + } + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o(); } + loaded_pix = getbpl8_32(); loaded_pixs[0] = loaded_pix; uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; @@ -12423,24 +10598,187 @@ static void lts_aga_fm1_ham0_p8_ihires_dlores_spr(void) dpix_val1 = bordercolor; if (denise_hdiw && bpl1dat_trigger) { pix1 = loaded_pixs[1]; - decode_ham_pixel_aga(pix1); + clxdat |= bplcoltable[pix1]; + uae_u8 val1 = dpf_lookup[pix1]; + if (dpf_lookup_no[pix1]) { + val1 += dblpfofs[bpldualpf2of]; + } + val1 ^= bplcon4_denise_xor_val; + dpix_val1 = denise_colors.acolors[val1]; } last_bpl_pix = pix1; } shiftbpl8(); if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8(); + copybpl8e(); + } + if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o(); } loaded_pix = getbpl8_32(); loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_ehb0_p8_ihires_dlores(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_ehb0_p8_ihires_dlores_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_ehb1_p8_ihires_dlores(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -12473,7 +10811,64 @@ static void lts_aga_fm1_ham0_p8_ihires_dlores_spr(void) denise_cck++; } } -static void lts_aga_fm1_ham0_p8_ihires_dlores_spr_filtered(void) +static void lts_aga_fm1_ehb1_p8_ihires_dlores_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_ham0_p8_ihires_dlores(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -12486,7 +10881,6 @@ static void lts_aga_fm1_ham0_p8_ihires_dlores_spr_filtered(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -12503,14 +10897,6 @@ static void lts_aga_fm1_ham0_p8_ihires_dlores_spr_filtered(void) copybpl8(); } loaded_pix = getbpl8_32(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } - } loaded_pixs[0] = loaded_pix; uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; @@ -12518,8 +10904,7 @@ static void lts_aga_fm1_ham0_p8_ihires_dlores_spr_filtered(void) dpix_val1 = bordercolor; if (denise_hdiw && bpl1dat_trigger) { pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - dpix_val1 = decode_ham_pixel_aga(pix1); + decode_ham_pixel_aga(pix1); } last_bpl_pix = pix1; } @@ -12531,14 +10916,6 @@ static void lts_aga_fm1_ham0_p8_ihires_dlores_spr_filtered(void) loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - dpix_val1 = dpix_val0; - } - } - dpix_val0 = filter_pixel(dpix_val0, dpix_val1); dtbuf[h][0] = dpix_val0; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -12571,7 +10948,7 @@ static void lts_aga_fm1_ham0_p8_ihires_dlores_spr_filtered(void) denise_cck++; } } -static void lts_aga_fm1_ham1_p8_ihires_dlores_spr(void) +static void lts_aga_fm1_ham0_p8_ihires_dlores_filtered(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -12584,7 +10961,6 @@ static void lts_aga_fm1_ham1_p8_ihires_dlores_spr(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -12598,20 +10974,9 @@ static void lts_aga_fm1_ham1_p8_ihires_dlores_spr(void) } shiftbpl8(); if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e(); - } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o(); + copybpl8(); } loaded_pix = getbpl8_32(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } - } loaded_pixs[0] = loaded_pix; uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; @@ -12619,27 +10984,20 @@ static void lts_aga_fm1_ham1_p8_ihires_dlores_spr(void) dpix_val1 = bordercolor; if (denise_hdiw && bpl1dat_trigger) { pix1 = loaded_pixs[1]; - decode_ham_pixel_aga(pix1); + clxdat |= bplcoltable[pix1]; + dpix_val1 = decode_ham_pixel_aga(pix1); } last_bpl_pix = pix1; } shiftbpl8(); if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e(); - } - if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o(); + copybpl8(); } loaded_pix = getbpl8_32(); loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - } - } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); dtbuf[h][0] = dpix_val0; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -12672,7 +11030,7 @@ static void lts_aga_fm1_ham1_p8_ihires_dlores_spr(void) denise_cck++; } } -static void lts_aga_fm1_ham1_p8_ihires_dlores_spr_filtered(void) +static void lts_aga_fm1_ham1_p8_ihires_dlores(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -12685,7 +11043,6 @@ static void lts_aga_fm1_ham1_p8_ihires_dlores_spr_filtered(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -12705,14 +11062,6 @@ static void lts_aga_fm1_ham1_p8_ihires_dlores_spr_filtered(void) copybpl8o(); } loaded_pix = getbpl8_32(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } - } loaded_pixs[0] = loaded_pix; uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; @@ -12720,8 +11069,7 @@ static void lts_aga_fm1_ham1_p8_ihires_dlores_spr_filtered(void) dpix_val1 = bordercolor; if (denise_hdiw && bpl1dat_trigger) { pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - dpix_val1 = decode_ham_pixel_aga(pix1); + decode_ham_pixel_aga(pix1); } last_bpl_pix = pix1; } @@ -12736,14 +11084,6 @@ static void lts_aga_fm1_ham1_p8_ihires_dlores_spr_filtered(void) loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - dpix_val1 = dpix_val0; - } - } - dpix_val0 = filter_pixel(dpix_val0, dpix_val1); dtbuf[h][0] = dpix_val0; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -12776,663 +11116,40831 @@ static void lts_aga_fm1_ham1_p8_ihires_dlores_spr_filtered(void) denise_cck++; } } -static void lts_aga_fm1_kehb0_p8_ihires_dlores_spr(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb0_p8_ihires_dlores_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb1_p8_ihires_dlores_spr(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb1_p8_ihires_dlores_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_n0_p2_ishres_dlores(void) -{ - lts_null(); -} -static void lts_aga_fm1_n0_p2_ishres_dlores_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_n1_p2_ishres_dlores(void) -{ - lts_null(); -} -static void lts_aga_fm1_n1_p2_ishres_dlores_filtered(void) +static void lts_aga_fm1_ham1_p8_ihires_dlores_filtered(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = decode_ham_pixel_aga(pix0); + } + last_bpl_pix = pix0; + } + shiftbpl8(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8e(); + } + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o(); + } + loaded_pix = getbpl8_32(); + loaded_pixs[0] = loaded_pix; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + dpix_val1 = decode_ham_pixel_aga(pix1); + } + last_bpl_pix = pix1; + } + shiftbpl8(); + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8e(); + } + if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o(); + } + loaded_pix = getbpl8_32(); + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm1_dpf0_p2_ishres_dlores(void) +static void lts_aga_fm1_kehb0_p8_ihires_dlores(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm1_dpf0_p2_ishres_dlores_filtered(void) +static void lts_aga_fm1_kehb0_p8_ihires_dlores_filtered(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm1_dpf1_p2_ishres_dlores(void) +static void lts_aga_fm1_kehb1_p8_ihires_dlores(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm1_dpf1_p2_ishres_dlores_filtered(void) +static void lts_aga_fm1_kehb1_p8_ihires_dlores_filtered(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm1_ehb0_p2_ishres_dlores(void) +static void lts_aga_fm1_n0_p2_ihires_dlores_spr(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix0; + } + shiftbpl2(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl2(); + } + loaded_pix = getbpl2_32(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + shiftbpl2(); + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm1_ehb0_p2_ishres_dlores_filtered(void) +static void lts_aga_fm1_n0_p2_ihires_dlores_spr_filtered(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix0; + } + shiftbpl2(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl2(); + } + loaded_pix = getbpl2_32(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix1; + } + shiftbpl2(); + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl2(); + } + loaded_pix = getbpl2_32(); + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm1_ehb1_p2_ishres_dlores(void) +static void lts_aga_fm1_n1_p2_ihires_dlores_spr(void) { - lts_null(); -} -static void lts_aga_fm1_ehb1_p2_ishres_dlores_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_ham0_p2_ishres_dlores(void) -{ - lts_null(); -} -static void lts_aga_fm1_ham0_p2_ishres_dlores_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_ham1_p2_ishres_dlores(void) -{ - lts_null(); -} -static void lts_aga_fm1_ham1_p2_ishres_dlores_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb0_p2_ishres_dlores(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb0_p2_ishres_dlores_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb1_p2_ishres_dlores(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb1_p2_ishres_dlores_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_n0_p4_ishres_dlores(void) -{ - lts_null(); -} -static void lts_aga_fm1_n0_p4_ishres_dlores_filtered(void) -{ - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix0; + } + shiftbpl2(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl2e(); + } + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl2o(); + } + loaded_pix = getbpl2_32(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + shiftbpl2(); + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm1_n1_p4_ishres_dlores(void) +static void lts_aga_fm1_n1_p2_ihires_dlores_spr_filtered(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix0; + } + shiftbpl2(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl2e(); + } + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl2o(); + } + loaded_pix = getbpl2_32(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix1; + } + shiftbpl2(); + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl2e(); + } + if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { + copybpl2o(); + } + loaded_pix = getbpl2_32(); + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm1_n1_p4_ishres_dlores_filtered(void) +static void lts_aga_fm1_dpf0_p2_ihires_dlores_spr(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + shiftbpl2(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl2(); + } + loaded_pix = getbpl2_32(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + shiftbpl2(); + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm1_dpf0_p4_ishres_dlores(void) +static void lts_aga_fm1_dpf0_p2_ihires_dlores_spr_filtered(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + shiftbpl2(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl2(); + } + loaded_pix = getbpl2_32(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + uae_u8 val1 = dpf_lookup[pix1]; + if (dpf_lookup_no[pix1]) { + val1 += dblpfofs[bpldualpf2of]; + } + val1 ^= bplcon4_denise_xor_val; + dpix_val1 = denise_colors.acolors[val1]; + } + last_bpl_pix = pix1; + } + shiftbpl2(); + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl2(); + } + loaded_pix = getbpl2_32(); + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm1_dpf0_p4_ishres_dlores_filtered(void) +static void lts_aga_fm1_dpf1_p2_ihires_dlores_spr(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + shiftbpl2(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl2e(); + } + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl2o(); + } + loaded_pix = getbpl2_32(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + shiftbpl2(); + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm1_dpf1_p4_ishres_dlores(void) +static void lts_aga_fm1_dpf1_p2_ihires_dlores_spr_filtered(void) { - lts_null(); -} -static void lts_aga_fm1_dpf1_p4_ishres_dlores_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb0_p4_ishres_dlores(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb0_p4_ishres_dlores_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb1_p4_ishres_dlores(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb1_p4_ishres_dlores_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_ham0_p4_ishres_dlores(void) -{ - lts_null(); -} -static void lts_aga_fm1_ham0_p4_ishres_dlores_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_ham1_p4_ishres_dlores(void) -{ - lts_null(); -} -static void lts_aga_fm1_ham1_p4_ishres_dlores_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb0_p4_ishres_dlores(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb0_p4_ishres_dlores_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb1_p4_ishres_dlores(void) -{ - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + shiftbpl2(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl2e(); + } + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl2o(); + } + loaded_pix = getbpl2_32(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + uae_u8 val1 = dpf_lookup[pix1]; + if (dpf_lookup_no[pix1]) { + val1 += dblpfofs[bpldualpf2of]; + } + val1 ^= bplcon4_denise_xor_val; + dpix_val1 = denise_colors.acolors[val1]; + } + last_bpl_pix = pix1; + } + shiftbpl2(); + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl2e(); + } + if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { + copybpl2o(); + } + loaded_pix = getbpl2_32(); + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm1_kehb1_p4_ishres_dlores_filtered(void) +static void lts_aga_fm1_ehb0_p2_ihires_dlores_spr(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm1_n0_p6_ishres_dlores(void) +static void lts_aga_fm1_ehb0_p2_ihires_dlores_spr_filtered(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm1_n0_p6_ishres_dlores_filtered(void) +static void lts_aga_fm1_ehb1_p2_ihires_dlores_spr(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm1_n1_p6_ishres_dlores(void) +static void lts_aga_fm1_ehb1_p2_ihires_dlores_spr_filtered(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm1_n1_p6_ishres_dlores_filtered(void) +static void lts_aga_fm1_ham0_p2_ihires_dlores_spr(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm1_dpf0_p6_ishres_dlores(void) +static void lts_aga_fm1_ham0_p2_ihires_dlores_spr_filtered(void) { - lts_null(); -} -static void lts_aga_fm1_dpf0_p6_ishres_dlores_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_dpf1_p6_ishres_dlores(void) -{ - lts_null(); -} -static void lts_aga_fm1_dpf1_p6_ishres_dlores_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb0_p6_ishres_dlores(void) -{ - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm1_ehb0_p6_ishres_dlores_filtered(void) +static void lts_aga_fm1_ham1_p2_ihires_dlores_spr(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm1_ehb1_p6_ishres_dlores(void) +static void lts_aga_fm1_ham1_p2_ihires_dlores_spr_filtered(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm1_ehb1_p6_ishres_dlores_filtered(void) +static void lts_aga_fm1_kehb0_p2_ihires_dlores_spr(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm1_ham0_p6_ishres_dlores(void) +static void lts_aga_fm1_kehb0_p2_ihires_dlores_spr_filtered(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm1_ham0_p6_ishres_dlores_filtered(void) +static void lts_aga_fm1_kehb1_p2_ihires_dlores_spr(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm1_ham1_p6_ishres_dlores(void) +static void lts_aga_fm1_kehb1_p2_ihires_dlores_spr_filtered(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm1_ham1_p6_ishres_dlores_filtered(void) +static void lts_aga_fm1_n0_p4_ihires_dlores_spr(void) { - lts_null(); -} -static void lts_aga_fm1_kehb0_p6_ishres_dlores(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb0_p6_ishres_dlores_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb1_p6_ishres_dlores(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb1_p6_ishres_dlores_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_n0_p8_ishres_dlores(void) -{ - lts_null(); -} -static void lts_aga_fm1_n0_p8_ishres_dlores_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_n1_p8_ishres_dlores(void) -{ - lts_null(); -} -static void lts_aga_fm1_n1_p8_ishres_dlores_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_dpf0_p8_ishres_dlores(void) -{ - lts_null(); -} -static void lts_aga_fm1_dpf0_p8_ishres_dlores_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_dpf1_p8_ishres_dlores(void) -{ - lts_null(); -} -static void lts_aga_fm1_dpf1_p8_ishres_dlores_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb0_p8_ishres_dlores(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb0_p8_ishres_dlores_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb1_p8_ishres_dlores(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb1_p8_ishres_dlores_filtered(void) -{ - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix0; + } + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4(); + } + loaded_pix = getbpl4_32(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + shiftbpl4(); + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm1_ham0_p8_ishres_dlores(void) +static void lts_aga_fm1_n0_p4_ihires_dlores_spr_filtered(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix0; + } + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4(); + } + loaded_pix = getbpl4_32(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix1; + } + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4(); + } + loaded_pix = getbpl4_32(); + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm1_ham0_p8_ishres_dlores_filtered(void) +static void lts_aga_fm1_n1_p4_ihires_dlores_spr(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix0; + } + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4e(); + } + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl4o(); + } + loaded_pix = getbpl4_32(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + shiftbpl4(); + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm1_ham1_p8_ishres_dlores(void) +static void lts_aga_fm1_n1_p4_ihires_dlores_spr_filtered(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix0; + } + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4e(); + } + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl4o(); + } + loaded_pix = getbpl4_32(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix1; + } + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4e(); + } + if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { + copybpl4o(); + } + loaded_pix = getbpl4_32(); + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm1_ham1_p8_ishres_dlores_filtered(void) +static void lts_aga_fm1_dpf0_p4_ihires_dlores_spr(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4(); + } + loaded_pix = getbpl4_32(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + shiftbpl4(); + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm1_kehb0_p8_ishres_dlores(void) +static void lts_aga_fm1_dpf0_p4_ihires_dlores_spr_filtered(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4(); + } + loaded_pix = getbpl4_32(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + uae_u8 val1 = dpf_lookup[pix1]; + if (dpf_lookup_no[pix1]) { + val1 += dblpfofs[bpldualpf2of]; + } + val1 ^= bplcon4_denise_xor_val; + dpix_val1 = denise_colors.acolors[val1]; + } + last_bpl_pix = pix1; + } + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4(); + } + loaded_pix = getbpl4_32(); + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm1_kehb0_p8_ishres_dlores_filtered(void) +static void lts_aga_fm1_dpf1_p4_ihires_dlores_spr(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4e(); + } + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl4o(); + } + loaded_pix = getbpl4_32(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + shiftbpl4(); + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm1_kehb1_p8_ishres_dlores(void) +static void lts_aga_fm1_dpf1_p4_ihires_dlores_spr_filtered(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4e(); + } + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl4o(); + } + loaded_pix = getbpl4_32(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + uae_u8 val1 = dpf_lookup[pix1]; + if (dpf_lookup_no[pix1]) { + val1 += dblpfofs[bpldualpf2of]; + } + val1 ^= bplcon4_denise_xor_val; + dpix_val1 = denise_colors.acolors[val1]; + } + last_bpl_pix = pix1; + } + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4e(); + } + if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { + copybpl4o(); + } + loaded_pix = getbpl4_32(); + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm1_kehb1_p8_ishres_dlores_filtered(void) +static void lts_aga_fm1_ehb0_p4_ihires_dlores_spr(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm1_n0_p2_ishres_dlores_spr(void) +static void lts_aga_fm1_ehb0_p4_ihires_dlores_spr_filtered(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm1_n0_p2_ishres_dlores_spr_filtered(void) +static void lts_aga_fm1_ehb1_p4_ihires_dlores_spr(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm1_n1_p2_ishres_dlores_spr(void) -{ - lts_null(); -} -static void lts_aga_fm1_n1_p2_ishres_dlores_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_dpf0_p2_ishres_dlores_spr(void) +static void lts_aga_fm1_ehb1_p4_ihires_dlores_spr_filtered(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm1_dpf0_p2_ishres_dlores_spr_filtered(void) +static void lts_aga_fm1_ham0_p4_ihires_dlores_spr(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm1_dpf1_p2_ishres_dlores_spr(void) +static void lts_aga_fm1_ham0_p4_ihires_dlores_spr_filtered(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm1_dpf1_p2_ishres_dlores_spr_filtered(void) +static void lts_aga_fm1_ham1_p4_ihires_dlores_spr(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm1_ehb0_p2_ishres_dlores_spr(void) +static void lts_aga_fm1_ham1_p4_ihires_dlores_spr_filtered(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm1_ehb0_p2_ishres_dlores_spr_filtered(void) +static void lts_aga_fm1_kehb0_p4_ihires_dlores_spr(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm1_ehb1_p2_ishres_dlores_spr(void) +static void lts_aga_fm1_kehb0_p4_ihires_dlores_spr_filtered(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm1_ehb1_p2_ishres_dlores_spr_filtered(void) +static void lts_aga_fm1_kehb1_p4_ihires_dlores_spr(void) { - lts_null(); -} -static void lts_aga_fm1_ham0_p2_ishres_dlores_spr(void) -{ - lts_null(); -} -static void lts_aga_fm1_ham0_p2_ishres_dlores_spr_filtered(void) -{ - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm1_ham1_p2_ishres_dlores_spr(void) +static void lts_aga_fm1_kehb1_p4_ihires_dlores_spr_filtered(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm1_ham1_p2_ishres_dlores_spr_filtered(void) +static void lts_aga_fm1_n0_p6_ihires_dlores_spr(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix0; + } + shiftbpl6(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6(); + } + loaded_pix = getbpl6_32(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + shiftbpl6(); + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm1_kehb0_p2_ishres_dlores_spr(void) +static void lts_aga_fm1_n0_p6_ihires_dlores_spr_filtered(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix0; + } + shiftbpl6(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6(); + } + loaded_pix = getbpl6_32(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix1; + } + shiftbpl6(); + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6(); + } + loaded_pix = getbpl6_32(); + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm1_kehb0_p2_ishres_dlores_spr_filtered(void) +static void lts_aga_fm1_n1_p6_ihires_dlores_spr(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix0; + } + shiftbpl6(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6e(); + } + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl6o(); + } + loaded_pix = getbpl6_32(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + shiftbpl6(); + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm1_kehb1_p2_ishres_dlores_spr(void) +static void lts_aga_fm1_n1_p6_ihires_dlores_spr_filtered(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix0; + } + shiftbpl6(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6e(); + } + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl6o(); + } + loaded_pix = getbpl6_32(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix1; + } + shiftbpl6(); + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6e(); + } + if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { + copybpl6o(); + } + loaded_pix = getbpl6_32(); + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm1_kehb1_p2_ishres_dlores_spr_filtered(void) +static void lts_aga_fm1_dpf0_p6_ihires_dlores_spr(void) { - lts_null(); -} -static void lts_aga_fm1_n0_p4_ishres_dlores_spr(void) -{ - lts_null(); -} -static void lts_aga_fm1_n0_p4_ishres_dlores_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_n1_p4_ishres_dlores_spr(void) -{ - lts_null(); -} -static void lts_aga_fm1_n1_p4_ishres_dlores_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_dpf0_p4_ishres_dlores_spr(void) -{ - lts_null(); -} -static void lts_aga_fm1_dpf0_p4_ishres_dlores_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_dpf1_p4_ishres_dlores_spr(void) -{ - lts_null(); -} -static void lts_aga_fm1_dpf1_p4_ishres_dlores_spr_filtered(void) -{ - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + shiftbpl6(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6(); + } + loaded_pix = getbpl6_32(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + shiftbpl6(); + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm1_ehb0_p4_ishres_dlores_spr(void) +static void lts_aga_fm1_dpf0_p6_ihires_dlores_spr_filtered(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + shiftbpl6(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6(); + } + loaded_pix = getbpl6_32(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + uae_u8 val1 = dpf_lookup[pix1]; + if (dpf_lookup_no[pix1]) { + val1 += dblpfofs[bpldualpf2of]; + } + val1 ^= bplcon4_denise_xor_val; + dpix_val1 = denise_colors.acolors[val1]; + } + last_bpl_pix = pix1; + } + shiftbpl6(); + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6(); + } + loaded_pix = getbpl6_32(); + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm1_ehb0_p4_ishres_dlores_spr_filtered(void) +static void lts_aga_fm1_dpf1_p6_ihires_dlores_spr(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + shiftbpl6(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6e(); + } + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl6o(); + } + loaded_pix = getbpl6_32(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + shiftbpl6(); + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm1_ehb1_p4_ishres_dlores_spr(void) +static void lts_aga_fm1_dpf1_p6_ihires_dlores_spr_filtered(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + shiftbpl6(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6e(); + } + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl6o(); + } + loaded_pix = getbpl6_32(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + uae_u8 val1 = dpf_lookup[pix1]; + if (dpf_lookup_no[pix1]) { + val1 += dblpfofs[bpldualpf2of]; + } + val1 ^= bplcon4_denise_xor_val; + dpix_val1 = denise_colors.acolors[val1]; + } + last_bpl_pix = pix1; + } + shiftbpl6(); + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6e(); + } + if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { + copybpl6o(); + } + loaded_pix = getbpl6_32(); + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm1_ehb1_p4_ishres_dlores_spr_filtered(void) +static void lts_aga_fm1_ehb0_p6_ihires_dlores_spr(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + pix0 ^= bplcon4_denise_xor_val; + if (!(pix0 & 0x20)) { + dpix_val0 = denise_colors.acolors[pix0]; + } else { + uae_u32 v = (denise_colors.color_regs_aga[pix0 & 0x1f] >> 1) & 0x7f7f7f; + dpix_val0 = CONVERT_RGB(v); + } + } + last_bpl_pix = pix0; + } + shiftbpl6(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6(); + } + loaded_pix = getbpl6_32(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + shiftbpl6(); + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm1_ham0_p4_ishres_dlores_spr(void) +static void lts_aga_fm1_ehb0_p6_ihires_dlores_spr_filtered(void) { - lts_null(); -} -static void lts_aga_fm1_ham0_p4_ishres_dlores_spr_filtered(void) -{ - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + pix0 ^= bplcon4_denise_xor_val; + if (!(pix0 & 0x20)) { + dpix_val0 = denise_colors.acolors[pix0]; + } else { + uae_u32 v = (denise_colors.color_regs_aga[pix0 & 0x1f] >> 1) & 0x7f7f7f; + dpix_val0 = CONVERT_RGB(v); + } + } + last_bpl_pix = pix0; + } + shiftbpl6(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6(); + } + loaded_pix = getbpl6_32(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + pix1 ^= bplcon4_denise_xor_val; + if (!(pix1 & 0x20)) { + dpix_val1 = denise_colors.acolors[pix1]; + } else { + uae_u32 v = (denise_colors.color_regs_aga[pix1 & 0x1f] >> 1) & 0x7f7f7f; + dpix_val1 = CONVERT_RGB(v); + } + } + last_bpl_pix = pix1; + } + shiftbpl6(); + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6(); + } + loaded_pix = getbpl6_32(); + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm1_ham1_p4_ishres_dlores_spr(void) +static void lts_aga_fm1_ehb1_p6_ihires_dlores_spr(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + pix0 ^= bplcon4_denise_xor_val; + if (!(pix0 & 0x20)) { + dpix_val0 = denise_colors.acolors[pix0]; + } else { + uae_u32 v = (denise_colors.color_regs_aga[pix0 & 0x1f] >> 1) & 0x7f7f7f; + dpix_val0 = CONVERT_RGB(v); + } + } + last_bpl_pix = pix0; + } + shiftbpl6(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6e(); + } + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl6o(); + } + loaded_pix = getbpl6_32(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + shiftbpl6(); + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm1_ham1_p4_ishres_dlores_spr_filtered(void) +static void lts_aga_fm1_ehb1_p6_ihires_dlores_spr_filtered(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + pix0 ^= bplcon4_denise_xor_val; + if (!(pix0 & 0x20)) { + dpix_val0 = denise_colors.acolors[pix0]; + } else { + uae_u32 v = (denise_colors.color_regs_aga[pix0 & 0x1f] >> 1) & 0x7f7f7f; + dpix_val0 = CONVERT_RGB(v); + } + } + last_bpl_pix = pix0; + } + shiftbpl6(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6e(); + } + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl6o(); + } + loaded_pix = getbpl6_32(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + pix1 ^= bplcon4_denise_xor_val; + if (!(pix1 & 0x20)) { + dpix_val1 = denise_colors.acolors[pix1]; + } else { + uae_u32 v = (denise_colors.color_regs_aga[pix1 & 0x1f] >> 1) & 0x7f7f7f; + dpix_val1 = CONVERT_RGB(v); + } + } + last_bpl_pix = pix1; + } + shiftbpl6(); + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6e(); + } + if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { + copybpl6o(); + } + loaded_pix = getbpl6_32(); + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm1_kehb0_p4_ishres_dlores_spr(void) +static void lts_aga_fm1_ham0_p6_ihires_dlores_spr(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = decode_ham_pixel_aga(pix0); + } + last_bpl_pix = pix0; + } + shiftbpl6(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6(); + } + loaded_pix = getbpl6_32(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + decode_ham_pixel_aga(pix1); + } + last_bpl_pix = pix1; + } + shiftbpl6(); + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6(); + } + loaded_pix = getbpl6_32(); + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm1_kehb0_p4_ishres_dlores_spr_filtered(void) +static void lts_aga_fm1_ham0_p6_ihires_dlores_spr_filtered(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = decode_ham_pixel_aga(pix0); + } + last_bpl_pix = pix0; + } + shiftbpl6(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6(); + } + loaded_pix = getbpl6_32(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + dpix_val1 = decode_ham_pixel_aga(pix1); + } + last_bpl_pix = pix1; + } + shiftbpl6(); + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6(); + } + loaded_pix = getbpl6_32(); + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm1_kehb1_p4_ishres_dlores_spr(void) +static void lts_aga_fm1_ham1_p6_ihires_dlores_spr(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = decode_ham_pixel_aga(pix0); + } + last_bpl_pix = pix0; + } + shiftbpl6(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6e(); + } + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl6o(); + } + loaded_pix = getbpl6_32(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + decode_ham_pixel_aga(pix1); + } + last_bpl_pix = pix1; + } + shiftbpl6(); + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6e(); + } + if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { + copybpl6o(); + } + loaded_pix = getbpl6_32(); + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_ham1_p6_ihires_dlores_spr_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = decode_ham_pixel_aga(pix0); + } + last_bpl_pix = pix0; + } + shiftbpl6(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6e(); + } + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl6o(); + } + loaded_pix = getbpl6_32(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + dpix_val1 = decode_ham_pixel_aga(pix1); + } + last_bpl_pix = pix1; + } + shiftbpl6(); + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6e(); + } + if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { + copybpl6o(); + } + loaded_pix = getbpl6_32(); + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_kehb0_p6_ihires_dlores_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + pix0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[pix0 & 31]; + } + last_bpl_pix = pix0; + } + shiftbpl6(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6(); + } + loaded_pix = getbpl6_32(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + shiftbpl6(); + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_kehb0_p6_ihires_dlores_spr_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + pix0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[pix0 & 31]; + } + last_bpl_pix = pix0; + } + shiftbpl6(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6(); + } + loaded_pix = getbpl6_32(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + pix1 ^= bplcon4_denise_xor_val; + dpix_val1 = denise_colors.acolors[pix1 & 31]; + } + last_bpl_pix = pix1; + } + shiftbpl6(); + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6(); + } + loaded_pix = getbpl6_32(); + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_kehb1_p6_ihires_dlores_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + pix0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[pix0 & 31]; + } + last_bpl_pix = pix0; + } + shiftbpl6(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6e(); + } + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl6o(); + } + loaded_pix = getbpl6_32(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + shiftbpl6(); + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_kehb1_p6_ihires_dlores_spr_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + pix0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[pix0 & 31]; + } + last_bpl_pix = pix0; + } + shiftbpl6(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6e(); + } + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl6o(); + } + loaded_pix = getbpl6_32(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + pix1 ^= bplcon4_denise_xor_val; + dpix_val1 = denise_colors.acolors[pix1 & 31]; + } + last_bpl_pix = pix1; + } + shiftbpl6(); + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6e(); + } + if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { + copybpl6o(); + } + loaded_pix = getbpl6_32(); + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_n0_p8_ihires_dlores_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix0; + } + shiftbpl8(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8(); + } + loaded_pix = getbpl8_32(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + shiftbpl8(); + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_n0_p8_ihires_dlores_spr_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix0; + } + shiftbpl8(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8(); + } + loaded_pix = getbpl8_32(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix1; + } + shiftbpl8(); + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8(); + } + loaded_pix = getbpl8_32(); + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_n1_p8_ihires_dlores_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix0; + } + shiftbpl8(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8e(); + } + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o(); + } + loaded_pix = getbpl8_32(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + shiftbpl8(); + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_n1_p8_ihires_dlores_spr_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix0; + } + shiftbpl8(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8e(); + } + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o(); + } + loaded_pix = getbpl8_32(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix1; + } + shiftbpl8(); + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8e(); + } + if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o(); + } + loaded_pix = getbpl8_32(); + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_dpf0_p8_ihires_dlores_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + shiftbpl8(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8(); + } + loaded_pix = getbpl8_32(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + shiftbpl8(); + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_dpf0_p8_ihires_dlores_spr_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + shiftbpl8(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8(); + } + loaded_pix = getbpl8_32(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + uae_u8 val1 = dpf_lookup[pix1]; + if (dpf_lookup_no[pix1]) { + val1 += dblpfofs[bpldualpf2of]; + } + val1 ^= bplcon4_denise_xor_val; + dpix_val1 = denise_colors.acolors[val1]; + } + last_bpl_pix = pix1; + } + shiftbpl8(); + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8(); + } + loaded_pix = getbpl8_32(); + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_dpf1_p8_ihires_dlores_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + shiftbpl8(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8e(); + } + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o(); + } + loaded_pix = getbpl8_32(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + shiftbpl8(); + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_dpf1_p8_ihires_dlores_spr_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + shiftbpl8(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8e(); + } + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o(); + } + loaded_pix = getbpl8_32(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + uae_u8 val1 = dpf_lookup[pix1]; + if (dpf_lookup_no[pix1]) { + val1 += dblpfofs[bpldualpf2of]; + } + val1 ^= bplcon4_denise_xor_val; + dpix_val1 = denise_colors.acolors[val1]; + } + last_bpl_pix = pix1; + } + shiftbpl8(); + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8e(); + } + if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o(); + } + loaded_pix = getbpl8_32(); + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_ehb0_p8_ihires_dlores_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_ehb0_p8_ihires_dlores_spr_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_ehb1_p8_ihires_dlores_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_ehb1_p8_ihires_dlores_spr_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_ham0_p8_ihires_dlores_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = decode_ham_pixel_aga(pix0); + } + last_bpl_pix = pix0; + } + shiftbpl8(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8(); + } + loaded_pix = getbpl8_32(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + decode_ham_pixel_aga(pix1); + } + last_bpl_pix = pix1; + } + shiftbpl8(); + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8(); + } + loaded_pix = getbpl8_32(); + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_ham0_p8_ihires_dlores_spr_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = decode_ham_pixel_aga(pix0); + } + last_bpl_pix = pix0; + } + shiftbpl8(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8(); + } + loaded_pix = getbpl8_32(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + dpix_val1 = decode_ham_pixel_aga(pix1); + } + last_bpl_pix = pix1; + } + shiftbpl8(); + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8(); + } + loaded_pix = getbpl8_32(); + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_ham1_p8_ihires_dlores_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = decode_ham_pixel_aga(pix0); + } + last_bpl_pix = pix0; + } + shiftbpl8(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8e(); + } + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o(); + } + loaded_pix = getbpl8_32(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + decode_ham_pixel_aga(pix1); + } + last_bpl_pix = pix1; + } + shiftbpl8(); + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8e(); + } + if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o(); + } + loaded_pix = getbpl8_32(); + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_ham1_p8_ihires_dlores_spr_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = decode_ham_pixel_aga(pix0); + } + last_bpl_pix = pix0; + } + shiftbpl8(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8e(); + } + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o(); + } + loaded_pix = getbpl8_32(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + dpix_val1 = decode_ham_pixel_aga(pix1); + } + last_bpl_pix = pix1; + } + shiftbpl8(); + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8e(); + } + if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o(); + } + loaded_pix = getbpl8_32(); + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_kehb0_p8_ihires_dlores_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_kehb0_p8_ihires_dlores_spr_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_kehb1_p8_ihires_dlores_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_kehb1_p8_ihires_dlores_spr_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_n0_p2_ishres_dlores(void) +{ + lts_null(); +} +static void lts_aga_fm1_n0_p2_ishres_dlores_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_n1_p2_ishres_dlores(void) +{ + lts_null(); +} +static void lts_aga_fm1_n1_p2_ishres_dlores_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_dpf0_p2_ishres_dlores(void) +{ + lts_null(); +} +static void lts_aga_fm1_dpf0_p2_ishres_dlores_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_dpf1_p2_ishres_dlores(void) +{ + lts_null(); +} +static void lts_aga_fm1_dpf1_p2_ishres_dlores_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_ehb0_p2_ishres_dlores(void) +{ + lts_null(); +} +static void lts_aga_fm1_ehb0_p2_ishres_dlores_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_ehb1_p2_ishres_dlores(void) +{ + lts_null(); +} +static void lts_aga_fm1_ehb1_p2_ishres_dlores_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_ham0_p2_ishres_dlores(void) +{ + lts_null(); +} +static void lts_aga_fm1_ham0_p2_ishres_dlores_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_ham1_p2_ishres_dlores(void) +{ + lts_null(); +} +static void lts_aga_fm1_ham1_p2_ishres_dlores_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_kehb0_p2_ishres_dlores(void) +{ + lts_null(); +} +static void lts_aga_fm1_kehb0_p2_ishres_dlores_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_kehb1_p2_ishres_dlores(void) +{ + lts_null(); +} +static void lts_aga_fm1_kehb1_p2_ishres_dlores_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_n0_p4_ishres_dlores(void) +{ + lts_null(); +} +static void lts_aga_fm1_n0_p4_ishres_dlores_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_n1_p4_ishres_dlores(void) +{ + lts_null(); +} +static void lts_aga_fm1_n1_p4_ishres_dlores_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_dpf0_p4_ishres_dlores(void) +{ + lts_null(); +} +static void lts_aga_fm1_dpf0_p4_ishres_dlores_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_dpf1_p4_ishres_dlores(void) +{ + lts_null(); +} +static void lts_aga_fm1_dpf1_p4_ishres_dlores_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_ehb0_p4_ishres_dlores(void) +{ + lts_null(); +} +static void lts_aga_fm1_ehb0_p4_ishres_dlores_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_ehb1_p4_ishres_dlores(void) +{ + lts_null(); +} +static void lts_aga_fm1_ehb1_p4_ishres_dlores_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_ham0_p4_ishres_dlores(void) +{ + lts_null(); +} +static void lts_aga_fm1_ham0_p4_ishres_dlores_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_ham1_p4_ishres_dlores(void) +{ + lts_null(); +} +static void lts_aga_fm1_ham1_p4_ishres_dlores_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_kehb0_p4_ishres_dlores(void) +{ + lts_null(); +} +static void lts_aga_fm1_kehb0_p4_ishres_dlores_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_kehb1_p4_ishres_dlores(void) +{ + lts_null(); +} +static void lts_aga_fm1_kehb1_p4_ishres_dlores_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_n0_p6_ishres_dlores(void) +{ + lts_null(); +} +static void lts_aga_fm1_n0_p6_ishres_dlores_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_n1_p6_ishres_dlores(void) +{ + lts_null(); +} +static void lts_aga_fm1_n1_p6_ishres_dlores_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_dpf0_p6_ishres_dlores(void) +{ + lts_null(); +} +static void lts_aga_fm1_dpf0_p6_ishres_dlores_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_dpf1_p6_ishres_dlores(void) +{ + lts_null(); +} +static void lts_aga_fm1_dpf1_p6_ishres_dlores_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_ehb0_p6_ishres_dlores(void) +{ + lts_null(); +} +static void lts_aga_fm1_ehb0_p6_ishres_dlores_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_ehb1_p6_ishres_dlores(void) +{ + lts_null(); +} +static void lts_aga_fm1_ehb1_p6_ishres_dlores_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_ham0_p6_ishres_dlores(void) +{ + lts_null(); +} +static void lts_aga_fm1_ham0_p6_ishres_dlores_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_ham1_p6_ishres_dlores(void) +{ + lts_null(); +} +static void lts_aga_fm1_ham1_p6_ishres_dlores_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_kehb0_p6_ishres_dlores(void) +{ + lts_null(); +} +static void lts_aga_fm1_kehb0_p6_ishres_dlores_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_kehb1_p6_ishres_dlores(void) +{ + lts_null(); +} +static void lts_aga_fm1_kehb1_p6_ishres_dlores_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_n0_p8_ishres_dlores(void) +{ + lts_null(); +} +static void lts_aga_fm1_n0_p8_ishres_dlores_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_n1_p8_ishres_dlores(void) +{ + lts_null(); +} +static void lts_aga_fm1_n1_p8_ishres_dlores_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_dpf0_p8_ishres_dlores(void) +{ + lts_null(); +} +static void lts_aga_fm1_dpf0_p8_ishres_dlores_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_dpf1_p8_ishres_dlores(void) +{ + lts_null(); +} +static void lts_aga_fm1_dpf1_p8_ishres_dlores_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_ehb0_p8_ishres_dlores(void) +{ + lts_null(); +} +static void lts_aga_fm1_ehb0_p8_ishres_dlores_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_ehb1_p8_ishres_dlores(void) +{ + lts_null(); +} +static void lts_aga_fm1_ehb1_p8_ishres_dlores_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_ham0_p8_ishres_dlores(void) +{ + lts_null(); +} +static void lts_aga_fm1_ham0_p8_ishres_dlores_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_ham1_p8_ishres_dlores(void) +{ + lts_null(); +} +static void lts_aga_fm1_ham1_p8_ishres_dlores_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_kehb0_p8_ishres_dlores(void) +{ + lts_null(); +} +static void lts_aga_fm1_kehb0_p8_ishres_dlores_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_kehb1_p8_ishres_dlores(void) +{ + lts_null(); +} +static void lts_aga_fm1_kehb1_p8_ishres_dlores_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_n0_p2_ishres_dlores_spr(void) +{ + lts_null(); +} +static void lts_aga_fm1_n0_p2_ishres_dlores_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_n1_p2_ishres_dlores_spr(void) +{ + lts_null(); +} +static void lts_aga_fm1_n1_p2_ishres_dlores_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_dpf0_p2_ishres_dlores_spr(void) +{ + lts_null(); +} +static void lts_aga_fm1_dpf0_p2_ishres_dlores_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_dpf1_p2_ishres_dlores_spr(void) +{ + lts_null(); +} +static void lts_aga_fm1_dpf1_p2_ishres_dlores_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_ehb0_p2_ishres_dlores_spr(void) +{ + lts_null(); +} +static void lts_aga_fm1_ehb0_p2_ishres_dlores_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_ehb1_p2_ishres_dlores_spr(void) +{ + lts_null(); +} +static void lts_aga_fm1_ehb1_p2_ishres_dlores_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_ham0_p2_ishres_dlores_spr(void) +{ + lts_null(); +} +static void lts_aga_fm1_ham0_p2_ishres_dlores_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_ham1_p2_ishres_dlores_spr(void) +{ + lts_null(); +} +static void lts_aga_fm1_ham1_p2_ishres_dlores_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_kehb0_p2_ishres_dlores_spr(void) +{ + lts_null(); +} +static void lts_aga_fm1_kehb0_p2_ishres_dlores_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_kehb1_p2_ishres_dlores_spr(void) +{ + lts_null(); +} +static void lts_aga_fm1_kehb1_p2_ishres_dlores_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_n0_p4_ishres_dlores_spr(void) +{ + lts_null(); +} +static void lts_aga_fm1_n0_p4_ishres_dlores_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_n1_p4_ishres_dlores_spr(void) +{ + lts_null(); +} +static void lts_aga_fm1_n1_p4_ishres_dlores_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_dpf0_p4_ishres_dlores_spr(void) +{ + lts_null(); +} +static void lts_aga_fm1_dpf0_p4_ishres_dlores_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_dpf1_p4_ishres_dlores_spr(void) +{ + lts_null(); +} +static void lts_aga_fm1_dpf1_p4_ishres_dlores_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_ehb0_p4_ishres_dlores_spr(void) +{ + lts_null(); +} +static void lts_aga_fm1_ehb0_p4_ishres_dlores_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_ehb1_p4_ishres_dlores_spr(void) +{ + lts_null(); +} +static void lts_aga_fm1_ehb1_p4_ishres_dlores_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_ham0_p4_ishres_dlores_spr(void) +{ + lts_null(); +} +static void lts_aga_fm1_ham0_p4_ishres_dlores_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_ham1_p4_ishres_dlores_spr(void) +{ + lts_null(); +} +static void lts_aga_fm1_ham1_p4_ishres_dlores_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_kehb0_p4_ishres_dlores_spr(void) +{ + lts_null(); +} +static void lts_aga_fm1_kehb0_p4_ishres_dlores_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_kehb1_p4_ishres_dlores_spr(void) +{ + lts_null(); +} +static void lts_aga_fm1_kehb1_p4_ishres_dlores_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_n0_p6_ishres_dlores_spr(void) +{ + lts_null(); +} +static void lts_aga_fm1_n0_p6_ishres_dlores_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_n1_p6_ishres_dlores_spr(void) +{ + lts_null(); +} +static void lts_aga_fm1_n1_p6_ishres_dlores_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_dpf0_p6_ishres_dlores_spr(void) +{ + lts_null(); +} +static void lts_aga_fm1_dpf0_p6_ishres_dlores_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_dpf1_p6_ishres_dlores_spr(void) +{ + lts_null(); +} +static void lts_aga_fm1_dpf1_p6_ishres_dlores_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_ehb0_p6_ishres_dlores_spr(void) +{ + lts_null(); +} +static void lts_aga_fm1_ehb0_p6_ishres_dlores_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_ehb1_p6_ishres_dlores_spr(void) +{ + lts_null(); +} +static void lts_aga_fm1_ehb1_p6_ishres_dlores_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_ham0_p6_ishres_dlores_spr(void) +{ + lts_null(); +} +static void lts_aga_fm1_ham0_p6_ishres_dlores_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_ham1_p6_ishres_dlores_spr(void) +{ + lts_null(); +} +static void lts_aga_fm1_ham1_p6_ishres_dlores_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_kehb0_p6_ishres_dlores_spr(void) +{ + lts_null(); +} +static void lts_aga_fm1_kehb0_p6_ishres_dlores_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_kehb1_p6_ishres_dlores_spr(void) +{ + lts_null(); +} +static void lts_aga_fm1_kehb1_p6_ishres_dlores_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_n0_p8_ishres_dlores_spr(void) +{ + lts_null(); +} +static void lts_aga_fm1_n0_p8_ishres_dlores_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_n1_p8_ishres_dlores_spr(void) +{ + lts_null(); +} +static void lts_aga_fm1_n1_p8_ishres_dlores_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_dpf0_p8_ishres_dlores_spr(void) +{ + lts_null(); +} +static void lts_aga_fm1_dpf0_p8_ishres_dlores_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_dpf1_p8_ishres_dlores_spr(void) +{ + lts_null(); +} +static void lts_aga_fm1_dpf1_p8_ishres_dlores_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_ehb0_p8_ishres_dlores_spr(void) +{ + lts_null(); +} +static void lts_aga_fm1_ehb0_p8_ishres_dlores_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_ehb1_p8_ishres_dlores_spr(void) +{ + lts_null(); +} +static void lts_aga_fm1_ehb1_p8_ishres_dlores_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_ham0_p8_ishres_dlores_spr(void) +{ + lts_null(); +} +static void lts_aga_fm1_ham0_p8_ishres_dlores_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_ham1_p8_ishres_dlores_spr(void) +{ + lts_null(); +} +static void lts_aga_fm1_ham1_p8_ishres_dlores_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_kehb0_p8_ishres_dlores_spr(void) +{ + lts_null(); +} +static void lts_aga_fm1_kehb0_p8_ishres_dlores_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_kehb1_p8_ishres_dlores_spr(void) +{ + lts_null(); +} +static void lts_aga_fm1_kehb1_p8_ishres_dlores_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_n0_p2_ilores_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl2(); + loaded_pix = getbpl2_32(); + } + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl2(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl2_32(); + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl2(); + loaded_pix = getbpl2_32(); + } + if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { + copybpl2(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl2_32(); + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_n0_p2_ilores_dhires_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_n1_p2_ilores_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl2e(); + loaded_pix = getbpl2_32(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl2o(); + loaded_pix = getbpl2_32(); + } + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl2e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl2_32(); + } + if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { + copybpl2o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl2_32(); + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl2e(); + loaded_pix = getbpl2_32(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl2o(); + loaded_pix = getbpl2_32(); + } + if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { + copybpl2e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl2_32(); + } + if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) { + copybpl2o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl2_32(); + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_n1_p2_ilores_dhires_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_dpf0_p2_ilores_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl2(); + loaded_pix = getbpl2_32(); + } + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl2(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl2_32(); + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl2(); + loaded_pix = getbpl2_32(); + } + if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { + copybpl2(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl2_32(); + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_dpf0_p2_ilores_dhires_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_dpf1_p2_ilores_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl2e(); + loaded_pix = getbpl2_32(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl2o(); + loaded_pix = getbpl2_32(); + } + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl2e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl2_32(); + } + if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { + copybpl2o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl2_32(); + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl2e(); + loaded_pix = getbpl2_32(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl2o(); + loaded_pix = getbpl2_32(); + } + if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { + copybpl2e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl2_32(); + } + if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) { + copybpl2o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl2_32(); + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_dpf1_p2_ilores_dhires_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_ehb0_p2_ilores_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_ehb0_p2_ilores_dhires_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_ehb1_p2_ilores_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_ehb1_p2_ilores_dhires_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_ham0_p2_ilores_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_ham0_p2_ilores_dhires_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_ham1_p2_ilores_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_ham1_p2_ilores_dhires_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_kehb0_p2_ilores_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_kehb0_p2_ilores_dhires_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_kehb1_p2_ilores_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_kehb1_p2_ilores_dhires_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_n0_p4_ilores_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4(); + loaded_pix = getbpl4_32(); + } + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl4(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4_32(); + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4(); + loaded_pix = getbpl4_32(); + } + if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { + copybpl4(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4_32(); + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_n0_p4_ilores_dhires_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_n1_p4_ilores_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4e(); + loaded_pix = getbpl4_32(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl4o(); + loaded_pix = getbpl4_32(); + } + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl4e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4_32(); + } + if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { + copybpl4o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl4_32(); + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4e(); + loaded_pix = getbpl4_32(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl4o(); + loaded_pix = getbpl4_32(); + } + if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { + copybpl4e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4_32(); + } + if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) { + copybpl4o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl4_32(); + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_n1_p4_ilores_dhires_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_dpf0_p4_ilores_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4(); + loaded_pix = getbpl4_32(); + } + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl4(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4_32(); + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4(); + loaded_pix = getbpl4_32(); + } + if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { + copybpl4(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4_32(); + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_dpf0_p4_ilores_dhires_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_dpf1_p4_ilores_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4e(); + loaded_pix = getbpl4_32(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl4o(); + loaded_pix = getbpl4_32(); + } + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl4e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4_32(); + } + if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { + copybpl4o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl4_32(); + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4e(); + loaded_pix = getbpl4_32(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl4o(); + loaded_pix = getbpl4_32(); + } + if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { + copybpl4e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4_32(); + } + if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) { + copybpl4o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl4_32(); + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_dpf1_p4_ilores_dhires_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_ehb0_p4_ilores_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_ehb0_p4_ilores_dhires_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_ehb1_p4_ilores_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_ehb1_p4_ilores_dhires_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_ham0_p4_ilores_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_ham0_p4_ilores_dhires_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_ham1_p4_ilores_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_ham1_p4_ilores_dhires_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_kehb0_p4_ilores_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_kehb0_p4_ilores_dhires_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_kehb1_p4_ilores_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_kehb1_p4_ilores_dhires_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_n0_p6_ilores_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6(); + loaded_pix = getbpl6_32(); + } + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl6(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6_32(); + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6(); + loaded_pix = getbpl6_32(); + } + if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { + copybpl6(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6_32(); + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_n0_p6_ilores_dhires_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_n1_p6_ilores_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6e(); + loaded_pix = getbpl6_32(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl6o(); + loaded_pix = getbpl6_32(); + } + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl6e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6_32(); + } + if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { + copybpl6o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl6_32(); + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6e(); + loaded_pix = getbpl6_32(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl6o(); + loaded_pix = getbpl6_32(); + } + if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { + copybpl6e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6_32(); + } + if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) { + copybpl6o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl6_32(); + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_n1_p6_ilores_dhires_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_dpf0_p6_ilores_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6(); + loaded_pix = getbpl6_32(); + } + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl6(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6_32(); + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6(); + loaded_pix = getbpl6_32(); + } + if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { + copybpl6(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6_32(); + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_dpf0_p6_ilores_dhires_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_dpf1_p6_ilores_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6e(); + loaded_pix = getbpl6_32(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl6o(); + loaded_pix = getbpl6_32(); + } + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl6e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6_32(); + } + if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { + copybpl6o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl6_32(); + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6e(); + loaded_pix = getbpl6_32(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl6o(); + loaded_pix = getbpl6_32(); + } + if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { + copybpl6e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6_32(); + } + if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) { + copybpl6o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl6_32(); + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_dpf1_p6_ilores_dhires_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_ehb0_p6_ilores_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + pix0 ^= bplcon4_denise_xor_val; + if (!(pix0 & 0x20)) { + dpix_val0 = denise_colors.acolors[pix0]; + } else { + uae_u32 v = (denise_colors.color_regs_aga[pix0 & 0x1f] >> 1) & 0x7f7f7f; + dpix_val0 = CONVERT_RGB(v); + } + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6(); + loaded_pix = getbpl6_32(); + } + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl6(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6_32(); + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + pix2 ^= bplcon4_denise_xor_val; + if (!(pix2 & 0x20)) { + dpix_val2 = denise_colors.acolors[pix2]; + } else { + uae_u32 v = (denise_colors.color_regs_aga[pix2 & 0x1f] >> 1) & 0x7f7f7f; + dpix_val2 = CONVERT_RGB(v); + } + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6(); + loaded_pix = getbpl6_32(); + } + if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { + copybpl6(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6_32(); + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_ehb0_p6_ilores_dhires_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_ehb1_p6_ilores_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + pix0 ^= bplcon4_denise_xor_val; + if (!(pix0 & 0x20)) { + dpix_val0 = denise_colors.acolors[pix0]; + } else { + uae_u32 v = (denise_colors.color_regs_aga[pix0 & 0x1f] >> 1) & 0x7f7f7f; + dpix_val0 = CONVERT_RGB(v); + } + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6e(); + loaded_pix = getbpl6_32(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl6o(); + loaded_pix = getbpl6_32(); + } + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl6e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6_32(); + } + if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { + copybpl6o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl6_32(); + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + pix2 ^= bplcon4_denise_xor_val; + if (!(pix2 & 0x20)) { + dpix_val2 = denise_colors.acolors[pix2]; + } else { + uae_u32 v = (denise_colors.color_regs_aga[pix2 & 0x1f] >> 1) & 0x7f7f7f; + dpix_val2 = CONVERT_RGB(v); + } + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6e(); + loaded_pix = getbpl6_32(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl6o(); + loaded_pix = getbpl6_32(); + } + if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { + copybpl6e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6_32(); + } + if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) { + copybpl6o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl6_32(); + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_ehb1_p6_ilores_dhires_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_ham0_p6_ilores_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = decode_ham_pixel_aga(pix0); + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6(); + loaded_pix = getbpl6_32(); + } + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl6(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6_32(); + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = decode_ham_pixel_aga(pix2); + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6(); + loaded_pix = getbpl6_32(); + } + if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { + copybpl6(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6_32(); + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_ham0_p6_ilores_dhires_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_ham1_p6_ilores_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = decode_ham_pixel_aga(pix0); + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6e(); + loaded_pix = getbpl6_32(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl6o(); + loaded_pix = getbpl6_32(); + } + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl6e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6_32(); + } + if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { + copybpl6o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl6_32(); + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = decode_ham_pixel_aga(pix2); + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6e(); + loaded_pix = getbpl6_32(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl6o(); + loaded_pix = getbpl6_32(); + } + if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { + copybpl6e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6_32(); + } + if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) { + copybpl6o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl6_32(); + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_ham1_p6_ilores_dhires_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_kehb0_p6_ilores_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + pix0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[pix0 & 31]; + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6(); + loaded_pix = getbpl6_32(); + } + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl6(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6_32(); + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + pix2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[pix2 & 31]; + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6(); + loaded_pix = getbpl6_32(); + } + if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { + copybpl6(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6_32(); + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_kehb0_p6_ilores_dhires_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_kehb1_p6_ilores_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + pix0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[pix0 & 31]; + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6e(); + loaded_pix = getbpl6_32(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl6o(); + loaded_pix = getbpl6_32(); + } + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl6e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6_32(); + } + if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { + copybpl6o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl6_32(); + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + pix2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[pix2 & 31]; + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6e(); + loaded_pix = getbpl6_32(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl6o(); + loaded_pix = getbpl6_32(); + } + if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { + copybpl6e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6_32(); + } + if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) { + copybpl6o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl6_32(); + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_kehb1_p6_ilores_dhires_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_n0_p8_ilores_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8(); + loaded_pix = getbpl8_32(); + } + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8_32(); + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8(); + loaded_pix = getbpl8_32(); + } + if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8_32(); + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_n0_p8_ilores_dhires_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_n1_p8_ilores_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8e(); + loaded_pix = getbpl8_32(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl8o(); + loaded_pix = getbpl8_32(); + } + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8_32(); + } + if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { + copybpl8o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl8_32(); + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8e(); + loaded_pix = getbpl8_32(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl8o(); + loaded_pix = getbpl8_32(); + } + if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8_32(); + } + if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) { + copybpl8o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl8_32(); + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_n1_p8_ilores_dhires_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_dpf0_p8_ilores_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8(); + loaded_pix = getbpl8_32(); + } + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8_32(); + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8(); + loaded_pix = getbpl8_32(); + } + if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8_32(); + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_dpf0_p8_ilores_dhires_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_dpf1_p8_ilores_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8e(); + loaded_pix = getbpl8_32(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl8o(); + loaded_pix = getbpl8_32(); + } + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8_32(); + } + if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { + copybpl8o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl8_32(); + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8e(); + loaded_pix = getbpl8_32(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl8o(); + loaded_pix = getbpl8_32(); + } + if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8_32(); + } + if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) { + copybpl8o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl8_32(); + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_dpf1_p8_ilores_dhires_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_ehb0_p8_ilores_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_ehb0_p8_ilores_dhires_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_ehb1_p8_ilores_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_ehb1_p8_ilores_dhires_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_ham0_p8_ilores_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = decode_ham_pixel_aga(pix0); + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8(); + loaded_pix = getbpl8_32(); + } + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8_32(); + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = decode_ham_pixel_aga(pix2); + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8(); + loaded_pix = getbpl8_32(); + } + if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8_32(); + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_ham0_p8_ilores_dhires_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_ham1_p8_ilores_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = decode_ham_pixel_aga(pix0); + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8e(); + loaded_pix = getbpl8_32(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl8o(); + loaded_pix = getbpl8_32(); + } + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8_32(); + } + if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { + copybpl8o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl8_32(); + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = decode_ham_pixel_aga(pix2); + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8e(); + loaded_pix = getbpl8_32(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl8o(); + loaded_pix = getbpl8_32(); + } + if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8_32(); + } + if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) { + copybpl8o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl8_32(); + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_ham1_p8_ilores_dhires_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_kehb0_p8_ilores_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_kehb0_p8_ilores_dhires_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_kehb1_p8_ilores_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_kehb1_p8_ilores_dhires_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_n0_p2_ilores_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl2(); + loaded_pix = getbpl2_32(); + } + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl2(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl2_32(); + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl2(); + loaded_pix = getbpl2_32(); + } + if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { + copybpl2(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl2_32(); + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_n0_p2_ilores_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_n1_p2_ilores_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl2e(); + loaded_pix = getbpl2_32(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl2o(); + loaded_pix = getbpl2_32(); + } + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl2e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl2_32(); + } + if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { + copybpl2o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl2_32(); + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl2e(); + loaded_pix = getbpl2_32(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl2o(); + loaded_pix = getbpl2_32(); + } + if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { + copybpl2e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl2_32(); + } + if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) { + copybpl2o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl2_32(); + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_n1_p2_ilores_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_dpf0_p2_ilores_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl2(); + loaded_pix = getbpl2_32(); + } + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl2(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl2_32(); + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl2(); + loaded_pix = getbpl2_32(); + } + if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { + copybpl2(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl2_32(); + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_dpf0_p2_ilores_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_dpf1_p2_ilores_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl2e(); + loaded_pix = getbpl2_32(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl2o(); + loaded_pix = getbpl2_32(); + } + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl2e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl2_32(); + } + if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { + copybpl2o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl2_32(); + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl2e(); + loaded_pix = getbpl2_32(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl2o(); + loaded_pix = getbpl2_32(); + } + if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { + copybpl2e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl2_32(); + } + if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) { + copybpl2o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl2_32(); + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_dpf1_p2_ilores_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_ehb0_p2_ilores_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_ehb0_p2_ilores_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_ehb1_p2_ilores_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_ehb1_p2_ilores_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_ham0_p2_ilores_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_ham0_p2_ilores_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_ham1_p2_ilores_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_ham1_p2_ilores_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_kehb0_p2_ilores_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_kehb0_p2_ilores_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_kehb1_p2_ilores_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_kehb1_p2_ilores_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_n0_p4_ilores_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4(); + loaded_pix = getbpl4_32(); + } + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl4(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4_32(); + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4(); + loaded_pix = getbpl4_32(); + } + if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { + copybpl4(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4_32(); + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_n0_p4_ilores_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_n1_p4_ilores_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4e(); + loaded_pix = getbpl4_32(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl4o(); + loaded_pix = getbpl4_32(); + } + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl4e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4_32(); + } + if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { + copybpl4o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl4_32(); + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4e(); + loaded_pix = getbpl4_32(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl4o(); + loaded_pix = getbpl4_32(); + } + if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { + copybpl4e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4_32(); + } + if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) { + copybpl4o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl4_32(); + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_n1_p4_ilores_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_dpf0_p4_ilores_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4(); + loaded_pix = getbpl4_32(); + } + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl4(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4_32(); + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4(); + loaded_pix = getbpl4_32(); + } + if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { + copybpl4(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4_32(); + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_dpf0_p4_ilores_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_dpf1_p4_ilores_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4e(); + loaded_pix = getbpl4_32(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl4o(); + loaded_pix = getbpl4_32(); + } + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl4e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4_32(); + } + if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { + copybpl4o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl4_32(); + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4e(); + loaded_pix = getbpl4_32(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl4o(); + loaded_pix = getbpl4_32(); + } + if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { + copybpl4e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4_32(); + } + if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) { + copybpl4o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl4_32(); + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_dpf1_p4_ilores_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_ehb0_p4_ilores_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_ehb0_p4_ilores_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_ehb1_p4_ilores_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_ehb1_p4_ilores_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_ham0_p4_ilores_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_ham0_p4_ilores_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_ham1_p4_ilores_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_ham1_p4_ilores_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_kehb0_p4_ilores_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_kehb0_p4_ilores_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_kehb1_p4_ilores_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_kehb1_p4_ilores_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_n0_p6_ilores_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6(); + loaded_pix = getbpl6_32(); + } + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl6(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6_32(); + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6(); + loaded_pix = getbpl6_32(); + } + if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { + copybpl6(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6_32(); + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_n0_p6_ilores_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_n1_p6_ilores_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6e(); + loaded_pix = getbpl6_32(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl6o(); + loaded_pix = getbpl6_32(); + } + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl6e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6_32(); + } + if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { + copybpl6o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl6_32(); + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6e(); + loaded_pix = getbpl6_32(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl6o(); + loaded_pix = getbpl6_32(); + } + if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { + copybpl6e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6_32(); + } + if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) { + copybpl6o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl6_32(); + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_n1_p6_ilores_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_dpf0_p6_ilores_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6(); + loaded_pix = getbpl6_32(); + } + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl6(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6_32(); + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6(); + loaded_pix = getbpl6_32(); + } + if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { + copybpl6(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6_32(); + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_dpf0_p6_ilores_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_dpf1_p6_ilores_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6e(); + loaded_pix = getbpl6_32(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl6o(); + loaded_pix = getbpl6_32(); + } + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl6e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6_32(); + } + if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { + copybpl6o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl6_32(); + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6e(); + loaded_pix = getbpl6_32(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl6o(); + loaded_pix = getbpl6_32(); + } + if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { + copybpl6e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6_32(); + } + if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) { + copybpl6o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl6_32(); + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_dpf1_p6_ilores_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_ehb0_p6_ilores_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + pix0 ^= bplcon4_denise_xor_val; + if (!(pix0 & 0x20)) { + dpix_val0 = denise_colors.acolors[pix0]; + } else { + uae_u32 v = (denise_colors.color_regs_aga[pix0 & 0x1f] >> 1) & 0x7f7f7f; + dpix_val0 = CONVERT_RGB(v); + } + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6(); + loaded_pix = getbpl6_32(); + } + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl6(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6_32(); + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + pix2 ^= bplcon4_denise_xor_val; + if (!(pix2 & 0x20)) { + dpix_val2 = denise_colors.acolors[pix2]; + } else { + uae_u32 v = (denise_colors.color_regs_aga[pix2 & 0x1f] >> 1) & 0x7f7f7f; + dpix_val2 = CONVERT_RGB(v); + } + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6(); + loaded_pix = getbpl6_32(); + } + if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { + copybpl6(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6_32(); + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_ehb0_p6_ilores_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_ehb1_p6_ilores_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + pix0 ^= bplcon4_denise_xor_val; + if (!(pix0 & 0x20)) { + dpix_val0 = denise_colors.acolors[pix0]; + } else { + uae_u32 v = (denise_colors.color_regs_aga[pix0 & 0x1f] >> 1) & 0x7f7f7f; + dpix_val0 = CONVERT_RGB(v); + } + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6e(); + loaded_pix = getbpl6_32(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl6o(); + loaded_pix = getbpl6_32(); + } + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl6e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6_32(); + } + if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { + copybpl6o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl6_32(); + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + pix2 ^= bplcon4_denise_xor_val; + if (!(pix2 & 0x20)) { + dpix_val2 = denise_colors.acolors[pix2]; + } else { + uae_u32 v = (denise_colors.color_regs_aga[pix2 & 0x1f] >> 1) & 0x7f7f7f; + dpix_val2 = CONVERT_RGB(v); + } + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6e(); + loaded_pix = getbpl6_32(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl6o(); + loaded_pix = getbpl6_32(); + } + if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { + copybpl6e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6_32(); + } + if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) { + copybpl6o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl6_32(); + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_ehb1_p6_ilores_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_ham0_p6_ilores_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = decode_ham_pixel_aga(pix0); + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6(); + loaded_pix = getbpl6_32(); + } + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl6(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6_32(); + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = decode_ham_pixel_aga(pix2); + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6(); + loaded_pix = getbpl6_32(); + } + if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { + copybpl6(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6_32(); + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_ham0_p6_ilores_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_ham1_p6_ilores_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = decode_ham_pixel_aga(pix0); + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6e(); + loaded_pix = getbpl6_32(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl6o(); + loaded_pix = getbpl6_32(); + } + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl6e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6_32(); + } + if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { + copybpl6o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl6_32(); + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = decode_ham_pixel_aga(pix2); + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6e(); + loaded_pix = getbpl6_32(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl6o(); + loaded_pix = getbpl6_32(); + } + if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { + copybpl6e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6_32(); + } + if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) { + copybpl6o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl6_32(); + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_ham1_p6_ilores_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_kehb0_p6_ilores_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + pix0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[pix0 & 31]; + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6(); + loaded_pix = getbpl6_32(); + } + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl6(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6_32(); + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + pix2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[pix2 & 31]; + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6(); + loaded_pix = getbpl6_32(); + } + if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { + copybpl6(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6_32(); + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_kehb0_p6_ilores_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_kehb1_p6_ilores_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + pix0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[pix0 & 31]; + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6e(); + loaded_pix = getbpl6_32(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl6o(); + loaded_pix = getbpl6_32(); + } + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl6e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6_32(); + } + if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { + copybpl6o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl6_32(); + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + pix2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[pix2 & 31]; + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6e(); + loaded_pix = getbpl6_32(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl6o(); + loaded_pix = getbpl6_32(); + } + if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { + copybpl6e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6_32(); + } + if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) { + copybpl6o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl6_32(); + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_kehb1_p6_ilores_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_n0_p8_ilores_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8(); + loaded_pix = getbpl8_32(); + } + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8_32(); + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8(); + loaded_pix = getbpl8_32(); + } + if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8_32(); + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_n0_p8_ilores_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_n1_p8_ilores_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8e(); + loaded_pix = getbpl8_32(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl8o(); + loaded_pix = getbpl8_32(); + } + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8_32(); + } + if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { + copybpl8o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl8_32(); + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8e(); + loaded_pix = getbpl8_32(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl8o(); + loaded_pix = getbpl8_32(); + } + if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8_32(); + } + if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) { + copybpl8o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl8_32(); + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_n1_p8_ilores_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_dpf0_p8_ilores_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8(); + loaded_pix = getbpl8_32(); + } + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8_32(); + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8(); + loaded_pix = getbpl8_32(); + } + if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8_32(); + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_dpf0_p8_ilores_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_dpf1_p8_ilores_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8e(); + loaded_pix = getbpl8_32(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl8o(); + loaded_pix = getbpl8_32(); + } + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8_32(); + } + if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { + copybpl8o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl8_32(); + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8e(); + loaded_pix = getbpl8_32(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl8o(); + loaded_pix = getbpl8_32(); + } + if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8_32(); + } + if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) { + copybpl8o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl8_32(); + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_dpf1_p8_ilores_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_ehb0_p8_ilores_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_ehb0_p8_ilores_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_ehb1_p8_ilores_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_ehb1_p8_ilores_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_ham0_p8_ilores_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = decode_ham_pixel_aga(pix0); + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8(); + loaded_pix = getbpl8_32(); + } + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8_32(); + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = decode_ham_pixel_aga(pix2); + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8(); + loaded_pix = getbpl8_32(); + } + if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8_32(); + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_ham0_p8_ilores_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_ham1_p8_ilores_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = decode_ham_pixel_aga(pix0); + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8e(); + loaded_pix = getbpl8_32(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl8o(); + loaded_pix = getbpl8_32(); + } + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8_32(); + } + if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { + copybpl8o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl8_32(); + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = decode_ham_pixel_aga(pix2); + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8e(); + loaded_pix = getbpl8_32(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl8o(); + loaded_pix = getbpl8_32(); + } + if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8_32(); + } + if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) { + copybpl8o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl8_32(); + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_ham1_p8_ilores_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_kehb0_p8_ilores_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_kehb0_p8_ilores_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_kehb1_p8_ilores_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_kehb1_p8_ilores_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_n0_p2_ihires_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix0; + } + shiftbpl2(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl2(); + } + loaded_pix = getbpl2_32(); + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix2; + } + shiftbpl2(); + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl2(); + } + loaded_pix = getbpl2_32(); + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_n0_p2_ihires_dhires_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_n1_p2_ihires_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix0; + } + shiftbpl2(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl2e(); + } + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl2o(); + } + loaded_pix = getbpl2_32(); + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix2; + } + shiftbpl2(); + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl2e(); + } + if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { + copybpl2o(); + } + loaded_pix = getbpl2_32(); + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_n1_p2_ihires_dhires_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_dpf0_p2_ihires_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + shiftbpl2(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl2(); + } + loaded_pix = getbpl2_32(); + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; + } + last_bpl_pix = pix2; + } + shiftbpl2(); + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl2(); + } + loaded_pix = getbpl2_32(); + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_dpf0_p2_ihires_dhires_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_dpf1_p2_ihires_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + shiftbpl2(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl2e(); + } + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl2o(); + } + loaded_pix = getbpl2_32(); + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; + } + last_bpl_pix = pix2; + } + shiftbpl2(); + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl2e(); + } + if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { + copybpl2o(); + } + loaded_pix = getbpl2_32(); + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_dpf1_p2_ihires_dhires_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_ehb0_p2_ihires_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_ehb0_p2_ihires_dhires_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_ehb1_p2_ihires_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_ehb1_p2_ihires_dhires_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_ham0_p2_ihires_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_ham0_p2_ihires_dhires_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_ham1_p2_ihires_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_ham1_p2_ihires_dhires_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_kehb0_p2_ihires_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_kehb0_p2_ihires_dhires_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_kehb1_p2_ihires_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_kehb1_p2_ihires_dhires_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_n0_p4_ihires_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix0; + } + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4(); + } + loaded_pix = getbpl4_32(); + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix2; + } + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4(); + } + loaded_pix = getbpl4_32(); + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_n0_p4_ihires_dhires_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_n1_p4_ihires_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix0; + } + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4e(); + } + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl4o(); + } + loaded_pix = getbpl4_32(); + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix2; + } + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4e(); + } + if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { + copybpl4o(); + } + loaded_pix = getbpl4_32(); + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_n1_p4_ihires_dhires_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_dpf0_p4_ihires_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4(); + } + loaded_pix = getbpl4_32(); + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; + } + last_bpl_pix = pix2; + } + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4(); + } + loaded_pix = getbpl4_32(); + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_dpf0_p4_ihires_dhires_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_dpf1_p4_ihires_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4e(); + } + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl4o(); + } + loaded_pix = getbpl4_32(); + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; + } + last_bpl_pix = pix2; + } + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4e(); + } + if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { + copybpl4o(); + } + loaded_pix = getbpl4_32(); + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_dpf1_p4_ihires_dhires_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_ehb0_p4_ihires_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_ehb0_p4_ihires_dhires_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_ehb1_p4_ihires_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_ehb1_p4_ihires_dhires_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_ham0_p4_ihires_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_ham0_p4_ihires_dhires_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_ham1_p4_ihires_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_ham1_p4_ihires_dhires_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_kehb0_p4_ihires_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_kehb0_p4_ihires_dhires_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_kehb1_p4_ihires_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_kehb1_p4_ihires_dhires_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_n0_p6_ihires_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix0; + } + shiftbpl6(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6(); + } + loaded_pix = getbpl6_32(); + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix2; + } + shiftbpl6(); + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6(); + } + loaded_pix = getbpl6_32(); + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_n0_p6_ihires_dhires_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_n1_p6_ihires_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix0; + } + shiftbpl6(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6e(); + } + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl6o(); + } + loaded_pix = getbpl6_32(); + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix2; + } + shiftbpl6(); + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6e(); + } + if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { + copybpl6o(); + } + loaded_pix = getbpl6_32(); + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_n1_p6_ihires_dhires_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_dpf0_p6_ihires_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + shiftbpl6(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6(); + } + loaded_pix = getbpl6_32(); + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; + } + last_bpl_pix = pix2; + } + shiftbpl6(); + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6(); + } + loaded_pix = getbpl6_32(); + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_dpf0_p6_ihires_dhires_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_dpf1_p6_ihires_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + shiftbpl6(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6e(); + } + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl6o(); + } + loaded_pix = getbpl6_32(); + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; + } + last_bpl_pix = pix2; + } + shiftbpl6(); + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6e(); + } + if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { + copybpl6o(); + } + loaded_pix = getbpl6_32(); + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_dpf1_p6_ihires_dhires_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_ehb0_p6_ihires_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + pix0 ^= bplcon4_denise_xor_val; + if (!(pix0 & 0x20)) { + dpix_val0 = denise_colors.acolors[pix0]; + } else { + uae_u32 v = (denise_colors.color_regs_aga[pix0 & 0x1f] >> 1) & 0x7f7f7f; + dpix_val0 = CONVERT_RGB(v); + } + } + last_bpl_pix = pix0; + } + shiftbpl6(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6(); + } + loaded_pix = getbpl6_32(); + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + pix2 ^= bplcon4_denise_xor_val; + if (!(pix2 & 0x20)) { + dpix_val2 = denise_colors.acolors[pix2]; + } else { + uae_u32 v = (denise_colors.color_regs_aga[pix2 & 0x1f] >> 1) & 0x7f7f7f; + dpix_val2 = CONVERT_RGB(v); + } + } + last_bpl_pix = pix2; + } + shiftbpl6(); + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6(); + } + loaded_pix = getbpl6_32(); + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_ehb0_p6_ihires_dhires_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_ehb1_p6_ihires_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + pix0 ^= bplcon4_denise_xor_val; + if (!(pix0 & 0x20)) { + dpix_val0 = denise_colors.acolors[pix0]; + } else { + uae_u32 v = (denise_colors.color_regs_aga[pix0 & 0x1f] >> 1) & 0x7f7f7f; + dpix_val0 = CONVERT_RGB(v); + } + } + last_bpl_pix = pix0; + } + shiftbpl6(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6e(); + } + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl6o(); + } + loaded_pix = getbpl6_32(); + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + pix2 ^= bplcon4_denise_xor_val; + if (!(pix2 & 0x20)) { + dpix_val2 = denise_colors.acolors[pix2]; + } else { + uae_u32 v = (denise_colors.color_regs_aga[pix2 & 0x1f] >> 1) & 0x7f7f7f; + dpix_val2 = CONVERT_RGB(v); + } + } + last_bpl_pix = pix2; + } + shiftbpl6(); + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6e(); + } + if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { + copybpl6o(); + } + loaded_pix = getbpl6_32(); + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_ehb1_p6_ihires_dhires_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_ham0_p6_ihires_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = decode_ham_pixel_aga(pix0); + } + last_bpl_pix = pix0; + } + shiftbpl6(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6(); + } + loaded_pix = getbpl6_32(); + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = decode_ham_pixel_aga(pix2); + } + last_bpl_pix = pix2; + } + shiftbpl6(); + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6(); + } + loaded_pix = getbpl6_32(); + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_ham0_p6_ihires_dhires_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_ham1_p6_ihires_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = decode_ham_pixel_aga(pix0); + } + last_bpl_pix = pix0; + } + shiftbpl6(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6e(); + } + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl6o(); + } + loaded_pix = getbpl6_32(); + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = decode_ham_pixel_aga(pix2); + } + last_bpl_pix = pix2; + } + shiftbpl6(); + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6e(); + } + if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { + copybpl6o(); + } + loaded_pix = getbpl6_32(); + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_ham1_p6_ihires_dhires_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_kehb0_p6_ihires_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + pix0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[pix0 & 31]; + } + last_bpl_pix = pix0; + } + shiftbpl6(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6(); + } + loaded_pix = getbpl6_32(); + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + pix2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[pix2 & 31]; + } + last_bpl_pix = pix2; + } + shiftbpl6(); + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6(); + } + loaded_pix = getbpl6_32(); + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_kehb0_p6_ihires_dhires_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_kehb1_p6_ihires_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + pix0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[pix0 & 31]; + } + last_bpl_pix = pix0; + } + shiftbpl6(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6e(); + } + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl6o(); + } + loaded_pix = getbpl6_32(); + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + pix2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[pix2 & 31]; + } + last_bpl_pix = pix2; + } + shiftbpl6(); + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6e(); + } + if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { + copybpl6o(); + } + loaded_pix = getbpl6_32(); + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_kehb1_p6_ihires_dhires_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_n0_p8_ihires_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix0; + } + shiftbpl8(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8(); + } + loaded_pix = getbpl8_32(); + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix2; + } + shiftbpl8(); + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8(); + } + loaded_pix = getbpl8_32(); + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_n0_p8_ihires_dhires_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_n1_p8_ihires_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix0; + } + shiftbpl8(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8e(); + } + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o(); + } + loaded_pix = getbpl8_32(); + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix2; + } + shiftbpl8(); + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8e(); + } + if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o(); + } + loaded_pix = getbpl8_32(); + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_n1_p8_ihires_dhires_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_dpf0_p8_ihires_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + shiftbpl8(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8(); + } + loaded_pix = getbpl8_32(); + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; + } + last_bpl_pix = pix2; + } + shiftbpl8(); + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8(); + } + loaded_pix = getbpl8_32(); + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_dpf0_p8_ihires_dhires_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_dpf1_p8_ihires_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + shiftbpl8(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8e(); + } + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o(); + } + loaded_pix = getbpl8_32(); + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; + } + last_bpl_pix = pix2; + } + shiftbpl8(); + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8e(); + } + if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o(); + } + loaded_pix = getbpl8_32(); + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_dpf1_p8_ihires_dhires_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_ehb0_p8_ihires_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_ehb0_p8_ihires_dhires_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_ehb1_p8_ihires_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_ehb1_p8_ihires_dhires_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_ham0_p8_ihires_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = decode_ham_pixel_aga(pix0); + } + last_bpl_pix = pix0; + } + shiftbpl8(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8(); + } + loaded_pix = getbpl8_32(); + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = decode_ham_pixel_aga(pix2); + } + last_bpl_pix = pix2; + } + shiftbpl8(); + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8(); + } + loaded_pix = getbpl8_32(); + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_ham0_p8_ihires_dhires_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_ham1_p8_ihires_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = decode_ham_pixel_aga(pix0); + } + last_bpl_pix = pix0; + } + shiftbpl8(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8e(); + } + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o(); + } + loaded_pix = getbpl8_32(); + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = decode_ham_pixel_aga(pix2); + } + last_bpl_pix = pix2; + } + shiftbpl8(); + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8e(); + } + if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o(); + } + loaded_pix = getbpl8_32(); + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_ham1_p8_ihires_dhires_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_kehb0_p8_ihires_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_kehb0_p8_ihires_dhires_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_kehb1_p8_ihires_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_kehb1_p8_ihires_dhires_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_n0_p2_ihires_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix0; + } + shiftbpl2(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl2(); + } + loaded_pix = getbpl2_32(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix2; + } + shiftbpl2(); + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl2(); + } + loaded_pix = getbpl2_32(); + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_n0_p2_ihires_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_n1_p2_ihires_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix0; + } + shiftbpl2(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl2e(); + } + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl2o(); + } + loaded_pix = getbpl2_32(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix2; + } + shiftbpl2(); + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl2e(); + } + if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { + copybpl2o(); + } + loaded_pix = getbpl2_32(); + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_n1_p2_ihires_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_dpf0_p2_ihires_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + shiftbpl2(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl2(); + } + loaded_pix = getbpl2_32(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; + } + last_bpl_pix = pix2; + } + shiftbpl2(); + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl2(); + } + loaded_pix = getbpl2_32(); + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_dpf0_p2_ihires_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_dpf1_p2_ihires_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + shiftbpl2(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl2e(); + } + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl2o(); + } + loaded_pix = getbpl2_32(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; + } + last_bpl_pix = pix2; + } + shiftbpl2(); + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl2e(); + } + if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { + copybpl2o(); + } + loaded_pix = getbpl2_32(); + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_dpf1_p2_ihires_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_ehb0_p2_ihires_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_ehb0_p2_ihires_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_ehb1_p2_ihires_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_ehb1_p2_ihires_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_ham0_p2_ihires_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_ham0_p2_ihires_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_ham1_p2_ihires_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_ham1_p2_ihires_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_kehb0_p2_ihires_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_kehb0_p2_ihires_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_kehb1_p2_ihires_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_kehb1_p2_ihires_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_n0_p4_ihires_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix0; + } + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4(); + } + loaded_pix = getbpl4_32(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix2; + } + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4(); + } + loaded_pix = getbpl4_32(); + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_n0_p4_ihires_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_n1_p4_ihires_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix0; + } + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4e(); + } + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl4o(); + } + loaded_pix = getbpl4_32(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix2; + } + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4e(); + } + if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { + copybpl4o(); + } + loaded_pix = getbpl4_32(); + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_n1_p4_ihires_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_dpf0_p4_ihires_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4(); + } + loaded_pix = getbpl4_32(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; + } + last_bpl_pix = pix2; + } + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4(); + } + loaded_pix = getbpl4_32(); + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_dpf0_p4_ihires_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_dpf1_p4_ihires_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4e(); + } + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl4o(); + } + loaded_pix = getbpl4_32(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; + } + last_bpl_pix = pix2; + } + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4e(); + } + if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { + copybpl4o(); + } + loaded_pix = getbpl4_32(); + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_dpf1_p4_ihires_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_ehb0_p4_ihires_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_ehb0_p4_ihires_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_ehb1_p4_ihires_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_ehb1_p4_ihires_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_ham0_p4_ihires_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_ham0_p4_ihires_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_ham1_p4_ihires_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_ham1_p4_ihires_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_kehb0_p4_ihires_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_kehb0_p4_ihires_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_kehb1_p4_ihires_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_kehb1_p4_ihires_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_n0_p6_ihires_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix0; + } + shiftbpl6(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6(); + } + loaded_pix = getbpl6_32(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix2; + } + shiftbpl6(); + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6(); + } + loaded_pix = getbpl6_32(); + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_n0_p6_ihires_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_n1_p6_ihires_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix0; + } + shiftbpl6(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6e(); + } + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl6o(); + } + loaded_pix = getbpl6_32(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix2; + } + shiftbpl6(); + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6e(); + } + if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { + copybpl6o(); + } + loaded_pix = getbpl6_32(); + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_n1_p6_ihires_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_dpf0_p6_ihires_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + shiftbpl6(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6(); + } + loaded_pix = getbpl6_32(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; + } + last_bpl_pix = pix2; + } + shiftbpl6(); + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6(); + } + loaded_pix = getbpl6_32(); + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_dpf0_p6_ihires_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_dpf1_p6_ihires_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + shiftbpl6(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6e(); + } + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl6o(); + } + loaded_pix = getbpl6_32(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; + } + last_bpl_pix = pix2; + } + shiftbpl6(); + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6e(); + } + if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { + copybpl6o(); + } + loaded_pix = getbpl6_32(); + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_dpf1_p6_ihires_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_ehb0_p6_ihires_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + pix0 ^= bplcon4_denise_xor_val; + if (!(pix0 & 0x20)) { + dpix_val0 = denise_colors.acolors[pix0]; + } else { + uae_u32 v = (denise_colors.color_regs_aga[pix0 & 0x1f] >> 1) & 0x7f7f7f; + dpix_val0 = CONVERT_RGB(v); + } + } + last_bpl_pix = pix0; + } + shiftbpl6(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6(); + } + loaded_pix = getbpl6_32(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + pix2 ^= bplcon4_denise_xor_val; + if (!(pix2 & 0x20)) { + dpix_val2 = denise_colors.acolors[pix2]; + } else { + uae_u32 v = (denise_colors.color_regs_aga[pix2 & 0x1f] >> 1) & 0x7f7f7f; + dpix_val2 = CONVERT_RGB(v); + } + } + last_bpl_pix = pix2; + } + shiftbpl6(); + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6(); + } + loaded_pix = getbpl6_32(); + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_ehb0_p6_ihires_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_ehb1_p6_ihires_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + pix0 ^= bplcon4_denise_xor_val; + if (!(pix0 & 0x20)) { + dpix_val0 = denise_colors.acolors[pix0]; + } else { + uae_u32 v = (denise_colors.color_regs_aga[pix0 & 0x1f] >> 1) & 0x7f7f7f; + dpix_val0 = CONVERT_RGB(v); + } + } + last_bpl_pix = pix0; + } + shiftbpl6(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6e(); + } + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl6o(); + } + loaded_pix = getbpl6_32(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + pix2 ^= bplcon4_denise_xor_val; + if (!(pix2 & 0x20)) { + dpix_val2 = denise_colors.acolors[pix2]; + } else { + uae_u32 v = (denise_colors.color_regs_aga[pix2 & 0x1f] >> 1) & 0x7f7f7f; + dpix_val2 = CONVERT_RGB(v); + } + } + last_bpl_pix = pix2; + } + shiftbpl6(); + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6e(); + } + if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { + copybpl6o(); + } + loaded_pix = getbpl6_32(); + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_ehb1_p6_ihires_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_ham0_p6_ihires_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = decode_ham_pixel_aga(pix0); + } + last_bpl_pix = pix0; + } + shiftbpl6(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6(); + } + loaded_pix = getbpl6_32(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = decode_ham_pixel_aga(pix2); + } + last_bpl_pix = pix2; + } + shiftbpl6(); + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6(); + } + loaded_pix = getbpl6_32(); + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_ham0_p6_ihires_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_ham1_p6_ihires_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = decode_ham_pixel_aga(pix0); + } + last_bpl_pix = pix0; + } + shiftbpl6(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6e(); + } + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl6o(); + } + loaded_pix = getbpl6_32(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = decode_ham_pixel_aga(pix2); + } + last_bpl_pix = pix2; + } + shiftbpl6(); + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6e(); + } + if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { + copybpl6o(); + } + loaded_pix = getbpl6_32(); + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_ham1_p6_ihires_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_kehb0_p6_ihires_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + pix0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[pix0 & 31]; + } + last_bpl_pix = pix0; + } + shiftbpl6(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6(); + } + loaded_pix = getbpl6_32(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + pix2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[pix2 & 31]; + } + last_bpl_pix = pix2; + } + shiftbpl6(); + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6(); + } + loaded_pix = getbpl6_32(); + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_kehb0_p6_ihires_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_kehb1_p6_ihires_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + pix0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[pix0 & 31]; + } + last_bpl_pix = pix0; + } + shiftbpl6(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6e(); + } + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl6o(); + } + loaded_pix = getbpl6_32(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + pix2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[pix2 & 31]; + } + last_bpl_pix = pix2; + } + shiftbpl6(); + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6e(); + } + if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { + copybpl6o(); + } + loaded_pix = getbpl6_32(); + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_kehb1_p6_ihires_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_n0_p8_ihires_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix0; + } + shiftbpl8(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8(); + } + loaded_pix = getbpl8_32(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix2; + } + shiftbpl8(); + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8(); + } + loaded_pix = getbpl8_32(); + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_n0_p8_ihires_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_n1_p8_ihires_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix0; + } + shiftbpl8(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8e(); + } + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o(); + } + loaded_pix = getbpl8_32(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix2; + } + shiftbpl8(); + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8e(); + } + if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o(); + } + loaded_pix = getbpl8_32(); + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_n1_p8_ihires_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_dpf0_p8_ihires_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + shiftbpl8(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8(); + } + loaded_pix = getbpl8_32(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; + } + last_bpl_pix = pix2; + } + shiftbpl8(); + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8(); + } + loaded_pix = getbpl8_32(); + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_dpf0_p8_ihires_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_dpf1_p8_ihires_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + shiftbpl8(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8e(); + } + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o(); + } + loaded_pix = getbpl8_32(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; + } + last_bpl_pix = pix2; + } + shiftbpl8(); + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8e(); + } + if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o(); + } + loaded_pix = getbpl8_32(); + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_dpf1_p8_ihires_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_ehb0_p8_ihires_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_ehb0_p8_ihires_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_ehb1_p8_ihires_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_ehb1_p8_ihires_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_ham0_p8_ihires_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = decode_ham_pixel_aga(pix0); + } + last_bpl_pix = pix0; + } + shiftbpl8(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8(); + } + loaded_pix = getbpl8_32(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = decode_ham_pixel_aga(pix2); + } + last_bpl_pix = pix2; + } + shiftbpl8(); + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8(); + } + loaded_pix = getbpl8_32(); + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_ham0_p8_ihires_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_ham1_p8_ihires_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = decode_ham_pixel_aga(pix0); + } + last_bpl_pix = pix0; + } + shiftbpl8(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8e(); + } + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o(); + } + loaded_pix = getbpl8_32(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = decode_ham_pixel_aga(pix2); + } + last_bpl_pix = pix2; + } + shiftbpl8(); + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8e(); + } + if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o(); + } + loaded_pix = getbpl8_32(); + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_ham1_p8_ihires_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_kehb0_p8_ihires_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_kehb0_p8_ihires_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_kehb1_p8_ihires_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_kehb1_p8_ihires_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_n0_p2_ishres_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix0; + } + shiftbpl2(); + if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { + copybpl2(); + } + loaded_pix = getbpl2_32(); + loaded_pixs[0] = loaded_pix; + shiftbpl2(); + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix2; + } + shiftbpl2(); + if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { + copybpl2(); + } + loaded_pix = getbpl2_32(); + loaded_pixs[2] = loaded_pix; + shiftbpl2(); + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_n0_p2_ishres_dhires_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix0; + } + shiftbpl2(); + if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { + copybpl2(); + } + loaded_pix = getbpl2_32(); + loaded_pixs[0] = loaded_pix; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix1; + } + shiftbpl2(); + if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { + copybpl2(); + } + loaded_pix = getbpl2_32(); + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix2; + } + shiftbpl2(); + if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { + copybpl2(); + } + loaded_pix = getbpl2_32(); + loaded_pixs[2] = loaded_pix; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix3; + } + shiftbpl2(); + if (bpldat_copy[0] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[0]) { + copybpl2(); + } + loaded_pix = getbpl2_32(); + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_n1_p2_ishres_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix0; + } + shiftbpl2(); + if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { + copybpl2e(); + } + if (bpldat_copy[1] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[1]) { + copybpl2o(); + } + loaded_pix = getbpl2_32(); + loaded_pixs[0] = loaded_pix; + shiftbpl2(); + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix2; + } + shiftbpl2(); + if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { + copybpl2e(); + } + if (bpldat_copy[1] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[1]) { + copybpl2o(); + } + loaded_pix = getbpl2_32(); + loaded_pixs[2] = loaded_pix; + shiftbpl2(); + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_n1_p2_ishres_dhires_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix0; + } + shiftbpl2(); + if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { + copybpl2e(); + } + if (bpldat_copy[1] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[1]) { + copybpl2o(); + } + loaded_pix = getbpl2_32(); + loaded_pixs[0] = loaded_pix; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix1; + } + shiftbpl2(); + if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { + copybpl2e(); + } + if (bpldat_copy[1] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[1]) { + copybpl2o(); + } + loaded_pix = getbpl2_32(); + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix2; + } + shiftbpl2(); + if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { + copybpl2e(); + } + if (bpldat_copy[1] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[1]) { + copybpl2o(); + } + loaded_pix = getbpl2_32(); + loaded_pixs[2] = loaded_pix; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix3; + } + shiftbpl2(); + if (bpldat_copy[0] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[0]) { + copybpl2e(); + } + if (bpldat_copy[1] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[1]) { + copybpl2o(); + } + loaded_pix = getbpl2_32(); + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_dpf0_p2_ishres_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + shiftbpl2(); + if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { + copybpl2(); + } + loaded_pix = getbpl2_32(); + loaded_pixs[0] = loaded_pix; + shiftbpl2(); + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; + } + last_bpl_pix = pix2; + } + shiftbpl2(); + if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { + copybpl2(); + } + loaded_pix = getbpl2_32(); + loaded_pixs[2] = loaded_pix; + shiftbpl2(); + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_dpf0_p2_ishres_dhires_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + shiftbpl2(); + if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { + copybpl2(); + } + loaded_pix = getbpl2_32(); + loaded_pixs[0] = loaded_pix; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + uae_u8 val1 = dpf_lookup[pix1]; + if (dpf_lookup_no[pix1]) { + val1 += dblpfofs[bpldualpf2of]; + } + val1 ^= bplcon4_denise_xor_val; + dpix_val1 = denise_colors.acolors[val1]; + } + last_bpl_pix = pix1; + } + shiftbpl2(); + if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { + copybpl2(); + } + loaded_pix = getbpl2_32(); + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; + } + last_bpl_pix = pix2; + } + shiftbpl2(); + if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { + copybpl2(); + } + loaded_pix = getbpl2_32(); + loaded_pixs[2] = loaded_pix; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + uae_u8 val3 = dpf_lookup[pix3]; + if (dpf_lookup_no[pix3]) { + val3 += dblpfofs[bpldualpf2of]; + } + val3 ^= bplcon4_denise_xor_val; + dpix_val3 = denise_colors.acolors[val3]; + } + last_bpl_pix = pix3; + } + shiftbpl2(); + if (bpldat_copy[0] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[0]) { + copybpl2(); + } + loaded_pix = getbpl2_32(); + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_dpf1_p2_ishres_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + shiftbpl2(); + if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { + copybpl2e(); + } + if (bpldat_copy[1] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[1]) { + copybpl2o(); + } + loaded_pix = getbpl2_32(); + loaded_pixs[0] = loaded_pix; + shiftbpl2(); + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; + } + last_bpl_pix = pix2; + } + shiftbpl2(); + if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { + copybpl2e(); + } + if (bpldat_copy[1] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[1]) { + copybpl2o(); + } + loaded_pix = getbpl2_32(); + loaded_pixs[2] = loaded_pix; + shiftbpl2(); + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_dpf1_p2_ishres_dhires_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + shiftbpl2(); + if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { + copybpl2e(); + } + if (bpldat_copy[1] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[1]) { + copybpl2o(); + } + loaded_pix = getbpl2_32(); + loaded_pixs[0] = loaded_pix; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + uae_u8 val1 = dpf_lookup[pix1]; + if (dpf_lookup_no[pix1]) { + val1 += dblpfofs[bpldualpf2of]; + } + val1 ^= bplcon4_denise_xor_val; + dpix_val1 = denise_colors.acolors[val1]; + } + last_bpl_pix = pix1; + } + shiftbpl2(); + if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { + copybpl2e(); + } + if (bpldat_copy[1] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[1]) { + copybpl2o(); + } + loaded_pix = getbpl2_32(); + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; + } + last_bpl_pix = pix2; + } + shiftbpl2(); + if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { + copybpl2e(); + } + if (bpldat_copy[1] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[1]) { + copybpl2o(); + } + loaded_pix = getbpl2_32(); + loaded_pixs[2] = loaded_pix; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + uae_u8 val3 = dpf_lookup[pix3]; + if (dpf_lookup_no[pix3]) { + val3 += dblpfofs[bpldualpf2of]; + } + val3 ^= bplcon4_denise_xor_val; + dpix_val3 = denise_colors.acolors[val3]; + } + last_bpl_pix = pix3; + } + shiftbpl2(); + if (bpldat_copy[0] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[0]) { + copybpl2e(); + } + if (bpldat_copy[1] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[1]) { + copybpl2o(); + } + loaded_pix = getbpl2_32(); + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_ehb0_p2_ishres_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_ehb0_p2_ishres_dhires_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_ehb1_p2_ishres_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_ehb1_p2_ishres_dhires_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_ham0_p2_ishres_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_ham0_p2_ishres_dhires_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_ham1_p2_ishres_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_ham1_p2_ishres_dhires_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_kehb0_p2_ishres_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_kehb0_p2_ishres_dhires_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_kehb1_p2_ishres_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_kehb1_p2_ishres_dhires_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_n0_p4_ishres_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix0; + } + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4(); + } + loaded_pix = getbpl4_32(); + loaded_pixs[0] = loaded_pix; + shiftbpl4(); + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix2; + } + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4(); + } + loaded_pix = getbpl4_32(); + loaded_pixs[2] = loaded_pix; + shiftbpl4(); + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_n0_p4_ishres_dhires_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix0; + } + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4(); + } + loaded_pix = getbpl4_32(); + loaded_pixs[0] = loaded_pix; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix1; + } + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4(); + } + loaded_pix = getbpl4_32(); + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix2; + } + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4(); + } + loaded_pix = getbpl4_32(); + loaded_pixs[2] = loaded_pix; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix3; + } + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4(); + } + loaded_pix = getbpl4_32(); + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_n1_p4_ishres_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix0; + } + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4e(); + } + if (bpldat_copy[1] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[1]) { + copybpl4o(); + } + loaded_pix = getbpl4_32(); + loaded_pixs[0] = loaded_pix; + shiftbpl4(); + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix2; + } + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4e(); + } + if (bpldat_copy[1] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[1]) { + copybpl4o(); + } + loaded_pix = getbpl4_32(); + loaded_pixs[2] = loaded_pix; + shiftbpl4(); + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_n1_p4_ishres_dhires_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix0; + } + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4e(); + } + if (bpldat_copy[1] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[1]) { + copybpl4o(); + } + loaded_pix = getbpl4_32(); + loaded_pixs[0] = loaded_pix; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix1; + } + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4e(); + } + if (bpldat_copy[1] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[1]) { + copybpl4o(); + } + loaded_pix = getbpl4_32(); + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix2; + } + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4e(); + } + if (bpldat_copy[1] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[1]) { + copybpl4o(); + } + loaded_pix = getbpl4_32(); + loaded_pixs[2] = loaded_pix; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix3; + } + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4e(); + } + if (bpldat_copy[1] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[1]) { + copybpl4o(); + } + loaded_pix = getbpl4_32(); + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_dpf0_p4_ishres_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4(); + } + loaded_pix = getbpl4_32(); + loaded_pixs[0] = loaded_pix; + shiftbpl4(); + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; + } + last_bpl_pix = pix2; + } + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4(); + } + loaded_pix = getbpl4_32(); + loaded_pixs[2] = loaded_pix; + shiftbpl4(); + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_dpf0_p4_ishres_dhires_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4(); + } + loaded_pix = getbpl4_32(); + loaded_pixs[0] = loaded_pix; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + uae_u8 val1 = dpf_lookup[pix1]; + if (dpf_lookup_no[pix1]) { + val1 += dblpfofs[bpldualpf2of]; + } + val1 ^= bplcon4_denise_xor_val; + dpix_val1 = denise_colors.acolors[val1]; + } + last_bpl_pix = pix1; + } + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4(); + } + loaded_pix = getbpl4_32(); + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; + } + last_bpl_pix = pix2; + } + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4(); + } + loaded_pix = getbpl4_32(); + loaded_pixs[2] = loaded_pix; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + uae_u8 val3 = dpf_lookup[pix3]; + if (dpf_lookup_no[pix3]) { + val3 += dblpfofs[bpldualpf2of]; + } + val3 ^= bplcon4_denise_xor_val; + dpix_val3 = denise_colors.acolors[val3]; + } + last_bpl_pix = pix3; + } + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4(); + } + loaded_pix = getbpl4_32(); + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_dpf1_p4_ishres_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4e(); + } + if (bpldat_copy[1] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[1]) { + copybpl4o(); + } + loaded_pix = getbpl4_32(); + loaded_pixs[0] = loaded_pix; + shiftbpl4(); + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; + } + last_bpl_pix = pix2; + } + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4e(); + } + if (bpldat_copy[1] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[1]) { + copybpl4o(); + } + loaded_pix = getbpl4_32(); + loaded_pixs[2] = loaded_pix; + shiftbpl4(); + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_dpf1_p4_ishres_dhires_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4e(); + } + if (bpldat_copy[1] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[1]) { + copybpl4o(); + } + loaded_pix = getbpl4_32(); + loaded_pixs[0] = loaded_pix; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + uae_u8 val1 = dpf_lookup[pix1]; + if (dpf_lookup_no[pix1]) { + val1 += dblpfofs[bpldualpf2of]; + } + val1 ^= bplcon4_denise_xor_val; + dpix_val1 = denise_colors.acolors[val1]; + } + last_bpl_pix = pix1; + } + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4e(); + } + if (bpldat_copy[1] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[1]) { + copybpl4o(); + } + loaded_pix = getbpl4_32(); + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; + } + last_bpl_pix = pix2; + } + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4e(); + } + if (bpldat_copy[1] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[1]) { + copybpl4o(); + } + loaded_pix = getbpl4_32(); + loaded_pixs[2] = loaded_pix; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + uae_u8 val3 = dpf_lookup[pix3]; + if (dpf_lookup_no[pix3]) { + val3 += dblpfofs[bpldualpf2of]; + } + val3 ^= bplcon4_denise_xor_val; + dpix_val3 = denise_colors.acolors[val3]; + } + last_bpl_pix = pix3; + } + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4e(); + } + if (bpldat_copy[1] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[1]) { + copybpl4o(); + } + loaded_pix = getbpl4_32(); + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_ehb0_p4_ishres_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_ehb0_p4_ishres_dhires_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_ehb1_p4_ishres_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_ehb1_p4_ishres_dhires_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_ham0_p4_ishres_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_ham0_p4_ishres_dhires_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_ham1_p4_ishres_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_ham1_p4_ishres_dhires_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_kehb0_p4_ishres_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_kehb0_p4_ishres_dhires_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_kehb1_p4_ishres_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_kehb1_p4_ishres_dhires_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_n0_p6_ishres_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_n0_p6_ishres_dhires_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_n1_p6_ishres_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_n1_p6_ishres_dhires_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_dpf0_p6_ishres_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_dpf0_p6_ishres_dhires_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_dpf1_p6_ishres_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_dpf1_p6_ishres_dhires_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_ehb0_p6_ishres_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_ehb0_p6_ishres_dhires_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_ehb1_p6_ishres_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_ehb1_p6_ishres_dhires_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_ham0_p6_ishres_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_ham0_p6_ishres_dhires_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_ham1_p6_ishres_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_ham1_p6_ishres_dhires_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_kehb0_p6_ishres_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_kehb0_p6_ishres_dhires_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_kehb1_p6_ishres_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_kehb1_p6_ishres_dhires_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_n0_p8_ishres_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_n0_p8_ishres_dhires_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_n1_p8_ishres_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_n1_p8_ishres_dhires_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_dpf0_p8_ishres_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_dpf0_p8_ishres_dhires_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_dpf1_p8_ishres_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_dpf1_p8_ishres_dhires_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_ehb0_p8_ishres_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_ehb0_p8_ishres_dhires_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_ehb1_p8_ishres_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_ehb1_p8_ishres_dhires_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_ham0_p8_ishres_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_ham0_p8_ishres_dhires_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_ham1_p8_ishres_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_ham1_p8_ishres_dhires_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_kehb0_p8_ishres_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_kehb0_p8_ishres_dhires_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_kehb1_p8_ishres_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_kehb1_p8_ishres_dhires_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_n0_p2_ishres_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix0; + } + shiftbpl2(); + if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { + copybpl2(); + } + loaded_pix = getbpl2_32(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + shiftbpl2(); + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix2; + } + shiftbpl2(); + if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { + copybpl2(); + } + loaded_pix = getbpl2_32(); + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + shiftbpl2(); + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_n0_p2_ishres_dhires_spr_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix0; + } + shiftbpl2(); + if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { + copybpl2(); + } + loaded_pix = getbpl2_32(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix1; + } + shiftbpl2(); + if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { + copybpl2(); + } + loaded_pix = getbpl2_32(); + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix2; + } + shiftbpl2(); + if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { + copybpl2(); + } + loaded_pix = getbpl2_32(); + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix3; + } + shiftbpl2(); + if (bpldat_copy[0] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[0]) { + copybpl2(); + } + loaded_pix = getbpl2_32(); + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + dpix_val3 = dpix_val2; + } + } + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_n1_p2_ishres_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix0; + } + shiftbpl2(); + if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { + copybpl2e(); + } + if (bpldat_copy[1] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[1]) { + copybpl2o(); + } + loaded_pix = getbpl2_32(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + shiftbpl2(); + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix2; + } + shiftbpl2(); + if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { + copybpl2e(); + } + if (bpldat_copy[1] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[1]) { + copybpl2o(); + } + loaded_pix = getbpl2_32(); + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + shiftbpl2(); + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_n1_p2_ishres_dhires_spr_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix0; + } + shiftbpl2(); + if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { + copybpl2e(); + } + if (bpldat_copy[1] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[1]) { + copybpl2o(); + } + loaded_pix = getbpl2_32(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix1; + } + shiftbpl2(); + if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { + copybpl2e(); + } + if (bpldat_copy[1] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[1]) { + copybpl2o(); + } + loaded_pix = getbpl2_32(); + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix2; + } + shiftbpl2(); + if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { + copybpl2e(); + } + if (bpldat_copy[1] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[1]) { + copybpl2o(); + } + loaded_pix = getbpl2_32(); + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix3; + } + shiftbpl2(); + if (bpldat_copy[0] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[0]) { + copybpl2e(); + } + if (bpldat_copy[1] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[1]) { + copybpl2o(); + } + loaded_pix = getbpl2_32(); + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + dpix_val3 = dpix_val2; + } + } + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_dpf0_p2_ishres_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + shiftbpl2(); + if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { + copybpl2(); + } + loaded_pix = getbpl2_32(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + shiftbpl2(); + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; + } + last_bpl_pix = pix2; + } + shiftbpl2(); + if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { + copybpl2(); + } + loaded_pix = getbpl2_32(); + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + shiftbpl2(); + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_dpf0_p2_ishres_dhires_spr_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + shiftbpl2(); + if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { + copybpl2(); + } + loaded_pix = getbpl2_32(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + uae_u8 val1 = dpf_lookup[pix1]; + if (dpf_lookup_no[pix1]) { + val1 += dblpfofs[bpldualpf2of]; + } + val1 ^= bplcon4_denise_xor_val; + dpix_val1 = denise_colors.acolors[val1]; + } + last_bpl_pix = pix1; + } + shiftbpl2(); + if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { + copybpl2(); + } + loaded_pix = getbpl2_32(); + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; + } + last_bpl_pix = pix2; + } + shiftbpl2(); + if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { + copybpl2(); + } + loaded_pix = getbpl2_32(); + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + uae_u8 val3 = dpf_lookup[pix3]; + if (dpf_lookup_no[pix3]) { + val3 += dblpfofs[bpldualpf2of]; + } + val3 ^= bplcon4_denise_xor_val; + dpix_val3 = denise_colors.acolors[val3]; + } + last_bpl_pix = pix3; + } + shiftbpl2(); + if (bpldat_copy[0] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[0]) { + copybpl2(); + } + loaded_pix = getbpl2_32(); + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + dpix_val3 = dpix_val2; + } + } + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_dpf1_p2_ishres_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + shiftbpl2(); + if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { + copybpl2e(); + } + if (bpldat_copy[1] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[1]) { + copybpl2o(); + } + loaded_pix = getbpl2_32(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + shiftbpl2(); + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; + } + last_bpl_pix = pix2; + } + shiftbpl2(); + if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { + copybpl2e(); + } + if (bpldat_copy[1] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[1]) { + copybpl2o(); + } + loaded_pix = getbpl2_32(); + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + shiftbpl2(); + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_dpf1_p2_ishres_dhires_spr_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + shiftbpl2(); + if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { + copybpl2e(); + } + if (bpldat_copy[1] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[1]) { + copybpl2o(); + } + loaded_pix = getbpl2_32(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + uae_u8 val1 = dpf_lookup[pix1]; + if (dpf_lookup_no[pix1]) { + val1 += dblpfofs[bpldualpf2of]; + } + val1 ^= bplcon4_denise_xor_val; + dpix_val1 = denise_colors.acolors[val1]; + } + last_bpl_pix = pix1; + } + shiftbpl2(); + if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { + copybpl2e(); + } + if (bpldat_copy[1] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[1]) { + copybpl2o(); + } + loaded_pix = getbpl2_32(); + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; + } + last_bpl_pix = pix2; + } + shiftbpl2(); + if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { + copybpl2e(); + } + if (bpldat_copy[1] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[1]) { + copybpl2o(); + } + loaded_pix = getbpl2_32(); + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + uae_u8 val3 = dpf_lookup[pix3]; + if (dpf_lookup_no[pix3]) { + val3 += dblpfofs[bpldualpf2of]; + } + val3 ^= bplcon4_denise_xor_val; + dpix_val3 = denise_colors.acolors[val3]; + } + last_bpl_pix = pix3; + } + shiftbpl2(); + if (bpldat_copy[0] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[0]) { + copybpl2e(); + } + if (bpldat_copy[1] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[1]) { + copybpl2o(); + } + loaded_pix = getbpl2_32(); + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + dpix_val3 = dpix_val2; + } + } + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_ehb0_p2_ishres_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_ehb0_p2_ishres_dhires_spr_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + dpix_val3 = dpix_val2; + } + } + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_ehb1_p2_ishres_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_ehb1_p2_ishres_dhires_spr_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + dpix_val3 = dpix_val2; + } + } + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_ham0_p2_ishres_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_ham0_p2_ishres_dhires_spr_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + dpix_val3 = dpix_val2; + } + } + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_ham1_p2_ishres_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_ham1_p2_ishres_dhires_spr_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + dpix_val3 = dpix_val2; + } + } + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_kehb0_p2_ishres_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_kehb0_p2_ishres_dhires_spr_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + dpix_val3 = dpix_val2; + } + } + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_kehb1_p2_ishres_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_kehb1_p2_ishres_dhires_spr_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + dpix_val3 = dpix_val2; + } + } + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_n0_p4_ishres_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix0; + } + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4(); + } + loaded_pix = getbpl4_32(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + shiftbpl4(); + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix2; + } + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4(); + } + loaded_pix = getbpl4_32(); + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + shiftbpl4(); + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_n0_p4_ishres_dhires_spr_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix0; + } + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4(); + } + loaded_pix = getbpl4_32(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix1; + } + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4(); + } + loaded_pix = getbpl4_32(); + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix2; + } + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4(); + } + loaded_pix = getbpl4_32(); + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix3; + } + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4(); + } + loaded_pix = getbpl4_32(); + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + dpix_val3 = dpix_val2; + } + } + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_n1_p4_ishres_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix0; + } + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4e(); + } + if (bpldat_copy[1] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[1]) { + copybpl4o(); + } + loaded_pix = getbpl4_32(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + shiftbpl4(); + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix2; + } + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4e(); + } + if (bpldat_copy[1] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[1]) { + copybpl4o(); + } + loaded_pix = getbpl4_32(); + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + shiftbpl4(); + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_n1_p4_ishres_dhires_spr_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix0; + } + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4e(); + } + if (bpldat_copy[1] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[1]) { + copybpl4o(); + } + loaded_pix = getbpl4_32(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix1; + } + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4e(); + } + if (bpldat_copy[1] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[1]) { + copybpl4o(); + } + loaded_pix = getbpl4_32(); + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix2; + } + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4e(); + } + if (bpldat_copy[1] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[1]) { + copybpl4o(); + } + loaded_pix = getbpl4_32(); + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix3; + } + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4e(); + } + if (bpldat_copy[1] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[1]) { + copybpl4o(); + } + loaded_pix = getbpl4_32(); + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + dpix_val3 = dpix_val2; + } + } + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_dpf0_p4_ishres_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4(); + } + loaded_pix = getbpl4_32(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + shiftbpl4(); + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; + } + last_bpl_pix = pix2; + } + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4(); + } + loaded_pix = getbpl4_32(); + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + shiftbpl4(); + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_dpf0_p4_ishres_dhires_spr_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4(); + } + loaded_pix = getbpl4_32(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + uae_u8 val1 = dpf_lookup[pix1]; + if (dpf_lookup_no[pix1]) { + val1 += dblpfofs[bpldualpf2of]; + } + val1 ^= bplcon4_denise_xor_val; + dpix_val1 = denise_colors.acolors[val1]; + } + last_bpl_pix = pix1; + } + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4(); + } + loaded_pix = getbpl4_32(); + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; + } + last_bpl_pix = pix2; + } + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4(); + } + loaded_pix = getbpl4_32(); + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + uae_u8 val3 = dpf_lookup[pix3]; + if (dpf_lookup_no[pix3]) { + val3 += dblpfofs[bpldualpf2of]; + } + val3 ^= bplcon4_denise_xor_val; + dpix_val3 = denise_colors.acolors[val3]; + } + last_bpl_pix = pix3; + } + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4(); + } + loaded_pix = getbpl4_32(); + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + dpix_val3 = dpix_val2; + } + } + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_dpf1_p4_ishres_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4e(); + } + if (bpldat_copy[1] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[1]) { + copybpl4o(); + } + loaded_pix = getbpl4_32(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + shiftbpl4(); + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; + } + last_bpl_pix = pix2; + } + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4e(); + } + if (bpldat_copy[1] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[1]) { + copybpl4o(); + } + loaded_pix = getbpl4_32(); + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + shiftbpl4(); + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_dpf1_p4_ishres_dhires_spr_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4e(); + } + if (bpldat_copy[1] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[1]) { + copybpl4o(); + } + loaded_pix = getbpl4_32(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + uae_u8 val1 = dpf_lookup[pix1]; + if (dpf_lookup_no[pix1]) { + val1 += dblpfofs[bpldualpf2of]; + } + val1 ^= bplcon4_denise_xor_val; + dpix_val1 = denise_colors.acolors[val1]; + } + last_bpl_pix = pix1; + } + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4e(); + } + if (bpldat_copy[1] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[1]) { + copybpl4o(); + } + loaded_pix = getbpl4_32(); + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; + } + last_bpl_pix = pix2; + } + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4e(); + } + if (bpldat_copy[1] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[1]) { + copybpl4o(); + } + loaded_pix = getbpl4_32(); + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + uae_u8 val3 = dpf_lookup[pix3]; + if (dpf_lookup_no[pix3]) { + val3 += dblpfofs[bpldualpf2of]; + } + val3 ^= bplcon4_denise_xor_val; + dpix_val3 = denise_colors.acolors[val3]; + } + last_bpl_pix = pix3; + } + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4e(); + } + if (bpldat_copy[1] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[1]) { + copybpl4o(); + } + loaded_pix = getbpl4_32(); + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + dpix_val3 = dpix_val2; + } + } + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_ehb0_p4_ishres_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_ehb0_p4_ishres_dhires_spr_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + dpix_val3 = dpix_val2; + } + } + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_ehb1_p4_ishres_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_ehb1_p4_ishres_dhires_spr_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + dpix_val3 = dpix_val2; + } + } + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm1_kehb1_p4_ishres_dlores_spr_filtered(void) +static void lts_aga_fm1_ham0_p4_ishres_dhires_spr(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_ham0_p4_ishres_dhires_spr_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + dpix_val3 = dpix_val2; + } + } + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_ham1_p4_ishres_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_ham1_p4_ishres_dhires_spr_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + dpix_val3 = dpix_val2; + } + } + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm1_n0_p6_ishres_dlores_spr(void) +static void lts_aga_fm1_kehb0_p4_ishres_dhires_spr(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm1_n0_p6_ishres_dlores_spr_filtered(void) +static void lts_aga_fm1_kehb0_p4_ishres_dhires_spr_filtered(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + dpix_val3 = dpix_val2; + } + } + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm1_n1_p6_ishres_dlores_spr(void) +static void lts_aga_fm1_kehb1_p4_ishres_dhires_spr(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm1_n1_p6_ishres_dlores_spr_filtered(void) +static void lts_aga_fm1_kehb1_p4_ishres_dhires_spr_filtered(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + dpix_val3 = dpix_val2; + } + } + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm1_dpf0_p6_ishres_dlores_spr(void) +static void lts_aga_fm1_n0_p6_ishres_dhires_spr(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm1_dpf0_p6_ishres_dlores_spr_filtered(void) +static void lts_aga_fm1_n0_p6_ishres_dhires_spr_filtered(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + dpix_val3 = dpix_val2; + } + } + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm1_dpf1_p6_ishres_dlores_spr(void) +static void lts_aga_fm1_n1_p6_ishres_dhires_spr(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm1_dpf1_p6_ishres_dlores_spr_filtered(void) +static void lts_aga_fm1_n1_p6_ishres_dhires_spr_filtered(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + dpix_val3 = dpix_val2; + } + } + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm1_ehb0_p6_ishres_dlores_spr(void) +static void lts_aga_fm1_dpf0_p6_ishres_dhires_spr(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm1_ehb0_p6_ishres_dlores_spr_filtered(void) +static void lts_aga_fm1_dpf0_p6_ishres_dhires_spr_filtered(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + dpix_val3 = dpix_val2; + } + } + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm1_ehb1_p6_ishres_dlores_spr(void) +static void lts_aga_fm1_dpf1_p6_ishres_dhires_spr(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm1_ehb1_p6_ishres_dlores_spr_filtered(void) +static void lts_aga_fm1_dpf1_p6_ishres_dhires_spr_filtered(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + dpix_val3 = dpix_val2; + } + } + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm1_ham0_p6_ishres_dlores_spr(void) +static void lts_aga_fm1_ehb0_p6_ishres_dhires_spr(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm1_ham0_p6_ishres_dlores_spr_filtered(void) +static void lts_aga_fm1_ehb0_p6_ishres_dhires_spr_filtered(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + dpix_val3 = dpix_val2; + } + } + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm1_ham1_p6_ishres_dlores_spr(void) +static void lts_aga_fm1_ehb1_p6_ishres_dhires_spr(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm1_ham1_p6_ishres_dlores_spr_filtered(void) +static void lts_aga_fm1_ehb1_p6_ishres_dhires_spr_filtered(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + dpix_val3 = dpix_val2; + } + } + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm1_kehb0_p6_ishres_dlores_spr(void) +static void lts_aga_fm1_ham0_p6_ishres_dhires_spr(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm1_kehb0_p6_ishres_dlores_spr_filtered(void) +static void lts_aga_fm1_ham0_p6_ishres_dhires_spr_filtered(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + dpix_val3 = dpix_val2; + } + } + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm1_kehb1_p6_ishres_dlores_spr(void) +static void lts_aga_fm1_ham1_p6_ishres_dhires_spr(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm1_kehb1_p6_ishres_dlores_spr_filtered(void) +static void lts_aga_fm1_ham1_p6_ishres_dhires_spr_filtered(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + dpix_val3 = dpix_val2; + } + } + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm1_n0_p8_ishres_dlores_spr(void) +static void lts_aga_fm1_kehb0_p6_ishres_dhires_spr(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm1_n0_p8_ishres_dlores_spr_filtered(void) +static void lts_aga_fm1_kehb0_p6_ishres_dhires_spr_filtered(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + dpix_val3 = dpix_val2; + } + } + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm1_n1_p8_ishres_dlores_spr(void) +static void lts_aga_fm1_kehb1_p6_ishres_dhires_spr(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm1_n1_p8_ishres_dlores_spr_filtered(void) +static void lts_aga_fm1_kehb1_p6_ishres_dhires_spr_filtered(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + dpix_val3 = dpix_val2; + } + } + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm1_dpf0_p8_ishres_dlores_spr(void) +static void lts_aga_fm1_n0_p8_ishres_dhires_spr(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm1_dpf0_p8_ishres_dlores_spr_filtered(void) +static void lts_aga_fm1_n0_p8_ishres_dhires_spr_filtered(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + dpix_val3 = dpix_val2; + } + } + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm1_dpf1_p8_ishres_dlores_spr(void) +static void lts_aga_fm1_n1_p8_ishres_dhires_spr(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm1_dpf1_p8_ishres_dlores_spr_filtered(void) +static void lts_aga_fm1_n1_p8_ishres_dhires_spr_filtered(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + dpix_val3 = dpix_val2; + } + } + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm1_ehb0_p8_ishres_dlores_spr(void) +static void lts_aga_fm1_dpf0_p8_ishres_dhires_spr(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm1_ehb0_p8_ishres_dlores_spr_filtered(void) +static void lts_aga_fm1_dpf0_p8_ishres_dhires_spr_filtered(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + dpix_val3 = dpix_val2; + } + } + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm1_ehb1_p8_ishres_dlores_spr(void) +static void lts_aga_fm1_dpf1_p8_ishres_dhires_spr(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm1_ehb1_p8_ishres_dlores_spr_filtered(void) +static void lts_aga_fm1_dpf1_p8_ishres_dhires_spr_filtered(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + dpix_val3 = dpix_val2; + } + } + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm1_ham0_p8_ishres_dlores_spr(void) +static void lts_aga_fm1_ehb0_p8_ishres_dhires_spr(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm1_ham0_p8_ishres_dlores_spr_filtered(void) +static void lts_aga_fm1_ehb0_p8_ishres_dhires_spr_filtered(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + dpix_val3 = dpix_val2; + } + } + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm1_ham1_p8_ishres_dlores_spr(void) +static void lts_aga_fm1_ehb1_p8_ishres_dhires_spr(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm1_ham1_p8_ishres_dlores_spr_filtered(void) +static void lts_aga_fm1_ehb1_p8_ishres_dhires_spr_filtered(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + dpix_val3 = dpix_val2; + } + } + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm1_kehb0_p8_ishres_dlores_spr(void) +static void lts_aga_fm1_ham0_p8_ishres_dhires_spr(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm1_kehb0_p8_ishres_dlores_spr_filtered(void) +static void lts_aga_fm1_ham0_p8_ishres_dhires_spr_filtered(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + dpix_val3 = dpix_val2; + } + } + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm1_kehb1_p8_ishres_dlores_spr(void) +static void lts_aga_fm1_ham1_p8_ishres_dhires_spr(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm1_kehb1_p8_ishres_dlores_spr_filtered(void) +static void lts_aga_fm1_ham1_p8_ishres_dhires_spr_filtered(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + dpix_val3 = dpix_val2; + } + } + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm1_n0_p2_ilores_dhires(void) +static void lts_aga_fm1_kehb0_p8_ishres_dhires_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -13443,58 +51951,51 @@ 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; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix0; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl2(); - loaded_pix = getbpl2_32(); - } - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl2(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl2_32(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl2(); - loaded_pix = getbpl2_32(); } - if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { - copybpl2(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl2_32(); + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } } - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } dtbuf[h][2] = dpix_val2; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -13535,11 +52036,7 @@ static void lts_aga_fm1_n0_p2_ilores_dhires(void) denise_cck++; } } -static void lts_aga_fm1_n0_p2_ilores_dhires_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_n1_p2_ilores_dhires(void) +static void lts_aga_fm1_kehb0_p8_ishres_dhires_spr_filtered(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -13550,80 +52047,65 @@ 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; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl2e(); - loaded_pix = getbpl2_32(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl2o(); - loaded_pix = getbpl2_32(); } - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl2e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl2_32(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } } - if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { - copybpl2o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl2_32(); + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl2e(); - loaded_pix = getbpl2_32(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl2o(); - loaded_pix = getbpl2_32(); } - if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { - copybpl2e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl2_32(); + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } } - if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) { - copybpl2o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl2_32(); + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; } - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + dpix_val3 = dpix_val2; + } + } + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); dtbuf[h][2] = dpix_val2; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -13664,11 +52146,7 @@ static void lts_aga_fm1_n1_p2_ilores_dhires(void) denise_cck++; } } -static void lts_aga_fm1_n1_p2_ilores_dhires_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_dpf0_p2_ilores_dhires(void) +static void lts_aga_fm1_kehb1_p8_ishres_dhires_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -13679,68 +52157,51 @@ 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; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl2(); - loaded_pix = getbpl2_32(); } - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl2(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl2_32(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl2(); - loaded_pix = getbpl2_32(); } - if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { - copybpl2(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl2_32(); + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } } - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } dtbuf[h][2] = dpix_val2; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -13781,11 +52242,7 @@ static void lts_aga_fm1_dpf0_p2_ilores_dhires(void) denise_cck++; } } -static void lts_aga_fm1_dpf0_p2_ilores_dhires_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_dpf1_p2_ilores_dhires(void) +static void lts_aga_fm1_kehb1_p8_ishres_dhires_spr_filtered(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -13796,90 +52253,65 @@ 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; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl2e(); - loaded_pix = getbpl2_32(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl2o(); - loaded_pix = getbpl2_32(); } - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl2e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl2_32(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } } - if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { - copybpl2o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl2_32(); + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl2e(); - loaded_pix = getbpl2_32(); } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl2o(); - loaded_pix = getbpl2_32(); - } - if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { - copybpl2e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl2_32(); + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } } - if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) { - copybpl2o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl2_32(); + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; } - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + dpix_val3 = dpix_val2; + } + } + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); dtbuf[h][2] = dpix_val2; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -13920,59 +52352,7 @@ static void lts_aga_fm1_dpf1_p2_ilores_dhires(void) denise_cck++; } } -static void lts_aga_fm1_dpf1_p2_ilores_dhires_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb0_p2_ilores_dhires(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb0_p2_ilores_dhires_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb1_p2_ilores_dhires(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb1_p2_ilores_dhires_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_ham0_p2_ilores_dhires(void) -{ - lts_null(); -} -static void lts_aga_fm1_ham0_p2_ilores_dhires_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_ham1_p2_ilores_dhires(void) -{ - lts_null(); -} -static void lts_aga_fm1_ham1_p2_ilores_dhires_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb0_p2_ilores_dhires(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb0_p2_ilores_dhires_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb1_p2_ilores_dhires(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb1_p2_ilores_dhires_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_n0_p4_ilores_dhires(void) +static void lts_aga_fm1_n0_p2_ilores_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -13996,19 +52376,43 @@ static void lts_aga_fm1_n0_p4_ilores_dhires(void) } last_bpl_pix = pix0; } - bplshiftcnt[0] += 2; + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl2(); + loaded_pix = getbpl2_32(); + } + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl2(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl2_32(); + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix1; + } + bplshiftcnt[0] += 1; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl4(); - loaded_pix = getbpl4_32(); + shiftbpl2(); + loaded_pix = getbpl2_32(); } - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl4(); + if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { + copybpl2(); bplshiftcnt[0] = 0; - loaded_pix = getbpl4_32(); + loaded_pix = getbpl2_32(); } - loaded_pixs[0] = loaded_pix; - internal_pixel_cnt += 2; + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { @@ -14020,22 +52424,48 @@ static void lts_aga_fm1_n0_p4_ilores_dhires(void) } last_bpl_pix = pix2; } - bplshiftcnt[0] += 2; + bplshiftcnt[0] += 1; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl4(); - loaded_pix = getbpl4_32(); + shiftbpl2(); + loaded_pix = getbpl2_32(); } if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { - copybpl4(); + copybpl2(); bplshiftcnt[0] = 0; - loaded_pix = getbpl4_32(); + loaded_pix = getbpl2_32(); } loaded_pixs[2] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix3; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl2(); + loaded_pix = getbpl2_32(); + } + if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { + copybpl2(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl2_32(); + } + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -14044,6 +52474,14 @@ static void lts_aga_fm1_n0_p4_ilores_dhires(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -14052,6 +52490,14 @@ static void lts_aga_fm1_n0_p4_ilores_dhires(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -14075,11 +52521,11 @@ static void lts_aga_fm1_n0_p4_ilores_dhires(void) denise_cck++; } } -static void lts_aga_fm1_n0_p4_ilores_dhires_filtered(void) +static void lts_aga_fm1_n0_p2_ilores_dshres_filtered(void) { lts_null(); } -static void lts_aga_fm1_n1_p4_ilores_dhires(void) +static void lts_aga_fm1_n1_p2_ilores_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -14103,30 +52549,65 @@ static void lts_aga_fm1_n1_p4_ilores_dhires(void) } last_bpl_pix = pix0; } - bplshiftcnt[0] += 2; + bplshiftcnt[0] += 1; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl4e(); - loaded_pix = getbpl4_32(); + shiftbpl2e(); + loaded_pix = getbpl2_32(); } - bplshiftcnt[1] += 2; + bplshiftcnt[1] += 1; if (bplshiftcnt[1] >= 4) { bplshiftcnt[1] = 0; - shiftbpl4o(); - loaded_pix = getbpl4_32(); + shiftbpl2o(); + loaded_pix = getbpl2_32(); } if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl4e(); + copybpl2e(); bplshiftcnt[0] = 0; - loaded_pix = getbpl4_32(); + loaded_pix = getbpl2_32(); } if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { - copybpl4o(); + copybpl2o(); bplshiftcnt[1] = 0; - loaded_pix = getbpl4_32(); + loaded_pix = getbpl2_32(); } loaded_pixs[0] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix1; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl2e(); + loaded_pix = getbpl2_32(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl2o(); + loaded_pix = getbpl2_32(); + } + if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { + copybpl2e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl2_32(); + } + if (bpldat_copy[1] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) { + copybpl2o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl2_32(); + } + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { @@ -14138,33 +52619,70 @@ static void lts_aga_fm1_n1_p4_ilores_dhires(void) } last_bpl_pix = pix2; } - bplshiftcnt[0] += 2; + bplshiftcnt[0] += 1; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl4e(); - loaded_pix = getbpl4_32(); + shiftbpl2e(); + loaded_pix = getbpl2_32(); } - bplshiftcnt[1] += 2; + bplshiftcnt[1] += 1; if (bplshiftcnt[1] >= 4) { bplshiftcnt[1] = 0; - shiftbpl4o(); - loaded_pix = getbpl4_32(); + shiftbpl2o(); + loaded_pix = getbpl2_32(); } if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { - copybpl4e(); + copybpl2e(); bplshiftcnt[0] = 0; - loaded_pix = getbpl4_32(); + loaded_pix = getbpl2_32(); } if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) { - copybpl4o(); + copybpl2o(); bplshiftcnt[1] = 0; - loaded_pix = getbpl4_32(); + loaded_pix = getbpl2_32(); } loaded_pixs[2] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix3; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl2e(); + loaded_pix = getbpl2_32(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl2o(); + loaded_pix = getbpl2_32(); + } + if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { + copybpl2e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl2_32(); + } + if (bpldat_copy[1] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[1]) { + copybpl2o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl2_32(); + } + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -14173,6 +52691,14 @@ static void lts_aga_fm1_n1_p4_ilores_dhires(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -14181,6 +52707,14 @@ static void lts_aga_fm1_n1_p4_ilores_dhires(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -14204,11 +52738,11 @@ static void lts_aga_fm1_n1_p4_ilores_dhires(void) denise_cck++; } } -static void lts_aga_fm1_n1_p4_ilores_dhires_filtered(void) +static void lts_aga_fm1_n1_p2_ilores_dshres_filtered(void) { lts_null(); } -static void lts_aga_fm1_dpf0_p4_ilores_dhires(void) +static void lts_aga_fm1_dpf0_p2_ilores_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -14237,19 +52771,48 @@ static void lts_aga_fm1_dpf0_p4_ilores_dhires(void) } last_bpl_pix = pix0; } - bplshiftcnt[0] += 2; + bplshiftcnt[0] += 1; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl4(); - loaded_pix = getbpl4_32(); + shiftbpl2(); + loaded_pix = getbpl2_32(); } if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl4(); + copybpl2(); bplshiftcnt[0] = 0; - loaded_pix = getbpl4_32(); + loaded_pix = getbpl2_32(); } loaded_pixs[0] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + uae_u8 val1 = dpf_lookup[pix1]; + if (dpf_lookup_no[pix1]) { + val1 += dblpfofs[bpldualpf2of]; + } + val1 ^= bplcon4_denise_xor_val; + dpix_val1 = denise_colors.acolors[val1]; + } + last_bpl_pix = pix1; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl2(); + loaded_pix = getbpl2_32(); + } + if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { + copybpl2(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl2_32(); + } + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { @@ -14266,22 +52829,53 @@ static void lts_aga_fm1_dpf0_p4_ilores_dhires(void) } last_bpl_pix = pix2; } - bplshiftcnt[0] += 2; + bplshiftcnt[0] += 1; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl4(); - loaded_pix = getbpl4_32(); + shiftbpl2(); + loaded_pix = getbpl2_32(); } if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { - copybpl4(); + copybpl2(); bplshiftcnt[0] = 0; - loaded_pix = getbpl4_32(); + loaded_pix = getbpl2_32(); } loaded_pixs[2] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + uae_u8 val3 = dpf_lookup[pix3]; + if (dpf_lookup_no[pix3]) { + val3 += dblpfofs[bpldualpf2of]; + } + val3 ^= bplcon4_denise_xor_val; + dpix_val3 = denise_colors.acolors[val3]; + } + last_bpl_pix = pix3; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl2(); + loaded_pix = getbpl2_32(); + } + if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { + copybpl2(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl2_32(); + } + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -14290,6 +52884,14 @@ static void lts_aga_fm1_dpf0_p4_ilores_dhires(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -14298,6 +52900,14 @@ static void lts_aga_fm1_dpf0_p4_ilores_dhires(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -14321,11 +52931,11 @@ static void lts_aga_fm1_dpf0_p4_ilores_dhires(void) denise_cck++; } } -static void lts_aga_fm1_dpf0_p4_ilores_dhires_filtered(void) +static void lts_aga_fm1_dpf0_p2_ilores_dshres_filtered(void) { lts_null(); } -static void lts_aga_fm1_dpf1_p4_ilores_dhires(void) +static void lts_aga_fm1_dpf1_p2_ilores_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -14354,30 +52964,70 @@ static void lts_aga_fm1_dpf1_p4_ilores_dhires(void) } last_bpl_pix = pix0; } - bplshiftcnt[0] += 2; + bplshiftcnt[0] += 1; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl4e(); - loaded_pix = getbpl4_32(); + shiftbpl2e(); + loaded_pix = getbpl2_32(); } - bplshiftcnt[1] += 2; + bplshiftcnt[1] += 1; if (bplshiftcnt[1] >= 4) { bplshiftcnt[1] = 0; - shiftbpl4o(); - loaded_pix = getbpl4_32(); + shiftbpl2o(); + loaded_pix = getbpl2_32(); } if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl4e(); + copybpl2e(); bplshiftcnt[0] = 0; - loaded_pix = getbpl4_32(); + loaded_pix = getbpl2_32(); } if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { - copybpl4o(); + copybpl2o(); bplshiftcnt[1] = 0; - loaded_pix = getbpl4_32(); + loaded_pix = getbpl2_32(); } loaded_pixs[0] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + uae_u8 val1 = dpf_lookup[pix1]; + if (dpf_lookup_no[pix1]) { + val1 += dblpfofs[bpldualpf2of]; + } + val1 ^= bplcon4_denise_xor_val; + dpix_val1 = denise_colors.acolors[val1]; + } + last_bpl_pix = pix1; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl2e(); + loaded_pix = getbpl2_32(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl2o(); + loaded_pix = getbpl2_32(); + } + if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { + copybpl2e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl2_32(); + } + if (bpldat_copy[1] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) { + copybpl2o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl2_32(); + } + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { @@ -14394,33 +53044,75 @@ static void lts_aga_fm1_dpf1_p4_ilores_dhires(void) } last_bpl_pix = pix2; } - bplshiftcnt[0] += 2; + bplshiftcnt[0] += 1; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl4e(); - loaded_pix = getbpl4_32(); + shiftbpl2e(); + loaded_pix = getbpl2_32(); } - bplshiftcnt[1] += 2; + bplshiftcnt[1] += 1; if (bplshiftcnt[1] >= 4) { bplshiftcnt[1] = 0; - shiftbpl4o(); - loaded_pix = getbpl4_32(); + shiftbpl2o(); + loaded_pix = getbpl2_32(); } if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { - copybpl4e(); + copybpl2e(); bplshiftcnt[0] = 0; - loaded_pix = getbpl4_32(); + loaded_pix = getbpl2_32(); } if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) { - copybpl4o(); + copybpl2o(); bplshiftcnt[1] = 0; - loaded_pix = getbpl4_32(); + loaded_pix = getbpl2_32(); } loaded_pixs[2] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + uae_u8 val3 = dpf_lookup[pix3]; + if (dpf_lookup_no[pix3]) { + val3 += dblpfofs[bpldualpf2of]; + } + val3 ^= bplcon4_denise_xor_val; + dpix_val3 = denise_colors.acolors[val3]; + } + last_bpl_pix = pix3; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl2e(); + loaded_pix = getbpl2_32(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl2o(); + loaded_pix = getbpl2_32(); + } + if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { + copybpl2e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl2_32(); + } + if (bpldat_copy[1] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[1]) { + copybpl2o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl2_32(); + } + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -14429,6 +53121,14 @@ static void lts_aga_fm1_dpf1_p4_ilores_dhires(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -14437,6 +53137,14 @@ static void lts_aga_fm1_dpf1_p4_ilores_dhires(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -14451,68 +53159,20 @@ static void lts_aga_fm1_dpf1_p4_ilores_dhires(void) } denise_pixtotal++; if (denise_pixtotal == 0) { - internal_pixel_start_cnt = internal_pixel_cnt; - } - denise_hcounter = denise_hcounter_new; - if (denise_accurate_mode) { - denise_hcounter_cmp = denise_hcounter_new; - } - denise_cck++; - } -} -static void lts_aga_fm1_dpf1_p4_ilores_dhires_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb0_p4_ilores_dhires(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb0_p4_ilores_dhires_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb1_p4_ilores_dhires(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb1_p4_ilores_dhires_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_ham0_p4_ilores_dhires(void) -{ - lts_null(); -} -static void lts_aga_fm1_ham0_p4_ilores_dhires_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_ham1_p4_ilores_dhires(void) -{ - lts_null(); -} -static void lts_aga_fm1_ham1_p4_ilores_dhires_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb0_p4_ilores_dhires(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb0_p4_ilores_dhires_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb1_p4_ilores_dhires(void) -{ - lts_null(); + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm1_kehb1_p4_ilores_dhires_filtered(void) +static void lts_aga_fm1_dpf1_p2_ilores_dshres_filtered(void) { lts_null(); } -static void lts_aga_fm1_n0_p6_ilores_dhires(void) +static void lts_aga_fm1_ehb0_p2_ilores_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -14523,59 +53183,36 @@ 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; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6(); - loaded_pix = getbpl6_32(); } - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl6(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6_32(); + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; } - loaded_pixs[0] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6(); - loaded_pix = getbpl6_32(); } - if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { - copybpl6(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6_32(); + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; } - loaded_pixs[2] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -14584,6 +53221,14 @@ static void lts_aga_fm1_n0_p6_ilores_dhires(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -14592,6 +53237,14 @@ static void lts_aga_fm1_n0_p6_ilores_dhires(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -14615,11 +53268,11 @@ static void lts_aga_fm1_n0_p6_ilores_dhires(void) denise_cck++; } } -static void lts_aga_fm1_n0_p6_ilores_dhires_filtered(void) +static void lts_aga_fm1_ehb0_p2_ilores_dshres_filtered(void) { lts_null(); } -static void lts_aga_fm1_n1_p6_ilores_dhires(void) +static void lts_aga_fm1_ehb1_p2_ilores_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -14630,81 +53283,36 @@ 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; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6e(); - loaded_pix = getbpl6_32(); } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl6o(); - loaded_pix = getbpl6_32(); - } - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl6e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6_32(); - } - if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { - copybpl6o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl6_32(); + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; } - loaded_pixs[0] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6e(); - loaded_pix = getbpl6_32(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl6o(); - loaded_pix = getbpl6_32(); - } - if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { - copybpl6e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6_32(); } - if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) { - copybpl6o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl6_32(); + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; } - loaded_pixs[2] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -14713,6 +53321,14 @@ static void lts_aga_fm1_n1_p6_ilores_dhires(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -14721,6 +53337,14 @@ static void lts_aga_fm1_n1_p6_ilores_dhires(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -14744,11 +53368,11 @@ static void lts_aga_fm1_n1_p6_ilores_dhires(void) denise_cck++; } } -static void lts_aga_fm1_n1_p6_ilores_dhires_filtered(void) +static void lts_aga_fm1_ehb1_p2_ilores_dshres_filtered(void) { lts_null(); } -static void lts_aga_fm1_dpf0_p6_ilores_dhires(void) +static void lts_aga_fm1_ham0_p2_ilores_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -14759,69 +53383,36 @@ 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; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6(); - loaded_pix = getbpl6_32(); } - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl6(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6_32(); + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; } - loaded_pixs[0] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6(); - loaded_pix = getbpl6_32(); } - if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { - copybpl6(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6_32(); + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; } - loaded_pixs[2] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -14830,6 +53421,14 @@ static void lts_aga_fm1_dpf0_p6_ilores_dhires(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -14838,6 +53437,14 @@ static void lts_aga_fm1_dpf0_p6_ilores_dhires(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -14861,11 +53468,11 @@ static void lts_aga_fm1_dpf0_p6_ilores_dhires(void) denise_cck++; } } -static void lts_aga_fm1_dpf0_p6_ilores_dhires_filtered(void) +static void lts_aga_fm1_ham0_p2_ilores_dshres_filtered(void) { lts_null(); } -static void lts_aga_fm1_dpf1_p6_ilores_dhires(void) +static void lts_aga_fm1_ham1_p2_ilores_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -14876,91 +53483,36 @@ 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; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6e(); - loaded_pix = getbpl6_32(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl6o(); - loaded_pix = getbpl6_32(); - } - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl6e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6_32(); } - if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { - copybpl6o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl6_32(); + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; } - loaded_pixs[0] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6e(); - loaded_pix = getbpl6_32(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl6o(); - loaded_pix = getbpl6_32(); - } - if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { - copybpl6e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6_32(); } - if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) { - copybpl6o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl6_32(); + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; } - loaded_pixs[2] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -14969,6 +53521,14 @@ static void lts_aga_fm1_dpf1_p6_ilores_dhires(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -14977,6 +53537,14 @@ static void lts_aga_fm1_dpf1_p6_ilores_dhires(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -15000,11 +53568,11 @@ static void lts_aga_fm1_dpf1_p6_ilores_dhires(void) denise_cck++; } } -static void lts_aga_fm1_dpf1_p6_ilores_dhires_filtered(void) +static void lts_aga_fm1_ham1_p2_ilores_dshres_filtered(void) { lts_null(); } -static void lts_aga_fm1_ehb0_p6_ilores_dhires(void) +static void lts_aga_fm1_kehb0_p2_ilores_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -15015,71 +53583,36 @@ 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; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - pix0 ^= bplcon4_denise_xor_val; - if (!(pix0 & 0x20)) { - dpix_val0 = denise_colors.acolors[pix0]; - } else { - uae_u32 v = (denise_colors.color_regs_aga[pix0 & 0x1f] >> 1) & 0x7f7f7f; - dpix_val0 = CONVERT_RGB(v); - } - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6(); - loaded_pix = getbpl6_32(); } - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl6(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6_32(); + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; } - loaded_pixs[0] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - pix2 ^= bplcon4_denise_xor_val; - if (!(pix2 & 0x20)) { - dpix_val2 = denise_colors.acolors[pix2]; - } else { - uae_u32 v = (denise_colors.color_regs_aga[pix2 & 0x1f] >> 1) & 0x7f7f7f; - dpix_val2 = CONVERT_RGB(v); - } - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6(); - loaded_pix = getbpl6_32(); } - if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { - copybpl6(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6_32(); + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; } - loaded_pixs[2] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -15088,6 +53621,14 @@ static void lts_aga_fm1_ehb0_p6_ilores_dhires(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -15096,6 +53637,14 @@ static void lts_aga_fm1_ehb0_p6_ilores_dhires(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -15119,11 +53668,11 @@ static void lts_aga_fm1_ehb0_p6_ilores_dhires(void) denise_cck++; } } -static void lts_aga_fm1_ehb0_p6_ilores_dhires_filtered(void) +static void lts_aga_fm1_kehb0_p2_ilores_dshres_filtered(void) { lts_null(); } -static void lts_aga_fm1_ehb1_p6_ilores_dhires(void) +static void lts_aga_fm1_kehb1_p2_ilores_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -15134,93 +53683,36 @@ 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; - if (!denise_blank_active) { - dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - pix0 ^= bplcon4_denise_xor_val; - if (!(pix0 & 0x20)) { - dpix_val0 = denise_colors.acolors[pix0]; - } else { - uae_u32 v = (denise_colors.color_regs_aga[pix0 & 0x1f] >> 1) & 0x7f7f7f; - dpix_val0 = CONVERT_RGB(v); - } - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6e(); - loaded_pix = getbpl6_32(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl6o(); - loaded_pix = getbpl6_32(); - } - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl6e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6_32(); - } - if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { - copybpl6o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl6_32(); - } - loaded_pixs[0] = loaded_pix; - internal_pixel_cnt += 2; - uae_u8 pix2 = 0; - uae_u32 dpix_val2 = BLANK_COLOR; - if (!denise_blank_active) { - dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - pix2 ^= bplcon4_denise_xor_val; - if (!(pix2 & 0x20)) { - dpix_val2 = denise_colors.acolors[pix2]; - } else { - uae_u32 v = (denise_colors.color_regs_aga[pix2 & 0x1f] >> 1) & 0x7f7f7f; - dpix_val2 = CONVERT_RGB(v); - } - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6e(); - loaded_pix = getbpl6_32(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl6o(); - loaded_pix = getbpl6_32(); + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; } - if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { - copybpl6e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6_32(); + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; } - if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) { - copybpl6o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl6_32(); + internal_pixel_cnt += 1; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; } - loaded_pixs[2] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -15229,6 +53721,14 @@ static void lts_aga_fm1_ehb1_p6_ilores_dhires(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -15237,6 +53737,14 @@ static void lts_aga_fm1_ehb1_p6_ilores_dhires(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -15260,11 +53768,11 @@ static void lts_aga_fm1_ehb1_p6_ilores_dhires(void) denise_cck++; } } -static void lts_aga_fm1_ehb1_p6_ilores_dhires_filtered(void) +static void lts_aga_fm1_kehb1_p2_ilores_dshres_filtered(void) { lts_null(); } -static void lts_aga_fm1_ham0_p6_ilores_dhires(void) +static void lts_aga_fm1_n0_p4_ilores_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -15284,23 +53792,47 @@ static void lts_aga_fm1_ham0_p6_ilores_dhires(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - dpix_val0 = decode_ham_pixel_aga(pix0); + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix0; } - bplshiftcnt[0] += 2; + bplshiftcnt[0] += 1; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl6(); - loaded_pix = getbpl6_32(); + shiftbpl4(); + loaded_pix = getbpl4_32(); } if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl6(); + copybpl4(); bplshiftcnt[0] = 0; - loaded_pix = getbpl6_32(); + loaded_pix = getbpl4_32(); } loaded_pixs[0] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix1; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4(); + loaded_pix = getbpl4_32(); + } + if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { + copybpl4(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4_32(); + } + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { @@ -15308,26 +53840,52 @@ static void lts_aga_fm1_ham0_p6_ilores_dhires(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - dpix_val2 = decode_ham_pixel_aga(pix2); + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix2; } - bplshiftcnt[0] += 2; + bplshiftcnt[0] += 1; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl6(); - loaded_pix = getbpl6_32(); + shiftbpl4(); + loaded_pix = getbpl4_32(); } if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { - copybpl6(); + copybpl4(); bplshiftcnt[0] = 0; - loaded_pix = getbpl6_32(); + loaded_pix = getbpl4_32(); } loaded_pixs[2] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix3; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4(); + loaded_pix = getbpl4_32(); + } + if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { + copybpl4(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4_32(); + } + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -15336,6 +53894,14 @@ static void lts_aga_fm1_ham0_p6_ilores_dhires(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -15344,6 +53910,14 @@ static void lts_aga_fm1_ham0_p6_ilores_dhires(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -15367,11 +53941,11 @@ static void lts_aga_fm1_ham0_p6_ilores_dhires(void) denise_cck++; } } -static void lts_aga_fm1_ham0_p6_ilores_dhires_filtered(void) +static void lts_aga_fm1_n0_p4_ilores_dshres_filtered(void) { lts_null(); } -static void lts_aga_fm1_ham1_p6_ilores_dhires(void) +static void lts_aga_fm1_n1_p4_ilores_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -15391,34 +53965,69 @@ static void lts_aga_fm1_ham1_p6_ilores_dhires(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - dpix_val0 = decode_ham_pixel_aga(pix0); + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix0; } - bplshiftcnt[0] += 2; + bplshiftcnt[0] += 1; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl6e(); - loaded_pix = getbpl6_32(); + shiftbpl4e(); + loaded_pix = getbpl4_32(); } - bplshiftcnt[1] += 2; + bplshiftcnt[1] += 1; if (bplshiftcnt[1] >= 4) { bplshiftcnt[1] = 0; - shiftbpl6o(); - loaded_pix = getbpl6_32(); + shiftbpl4o(); + loaded_pix = getbpl4_32(); } if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl6e(); + copybpl4e(); bplshiftcnt[0] = 0; - loaded_pix = getbpl6_32(); + loaded_pix = getbpl4_32(); } if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { - copybpl6o(); + copybpl4o(); bplshiftcnt[1] = 0; - loaded_pix = getbpl6_32(); + loaded_pix = getbpl4_32(); } loaded_pixs[0] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix1; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4e(); + loaded_pix = getbpl4_32(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl4o(); + loaded_pix = getbpl4_32(); + } + if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { + copybpl4e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4_32(); + } + if (bpldat_copy[1] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) { + copybpl4o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl4_32(); + } + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { @@ -15426,37 +54035,74 @@ static void lts_aga_fm1_ham1_p6_ilores_dhires(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - dpix_val2 = decode_ham_pixel_aga(pix2); + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix2; } - bplshiftcnt[0] += 2; + bplshiftcnt[0] += 1; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl6e(); - loaded_pix = getbpl6_32(); + shiftbpl4e(); + loaded_pix = getbpl4_32(); } - bplshiftcnt[1] += 2; + bplshiftcnt[1] += 1; if (bplshiftcnt[1] >= 4) { bplshiftcnt[1] = 0; - shiftbpl6o(); - loaded_pix = getbpl6_32(); + shiftbpl4o(); + loaded_pix = getbpl4_32(); } if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { - copybpl6e(); + copybpl4e(); bplshiftcnt[0] = 0; - loaded_pix = getbpl6_32(); + loaded_pix = getbpl4_32(); } if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) { - copybpl6o(); + copybpl4o(); bplshiftcnt[1] = 0; - loaded_pix = getbpl6_32(); + loaded_pix = getbpl4_32(); } loaded_pixs[2] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix3; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4e(); + loaded_pix = getbpl4_32(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl4o(); + loaded_pix = getbpl4_32(); + } + if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { + copybpl4e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4_32(); + } + if (bpldat_copy[1] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[1]) { + copybpl4o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl4_32(); + } + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -15465,6 +54111,14 @@ static void lts_aga_fm1_ham1_p6_ilores_dhires(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -15473,6 +54127,14 @@ static void lts_aga_fm1_ham1_p6_ilores_dhires(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -15496,11 +54158,11 @@ static void lts_aga_fm1_ham1_p6_ilores_dhires(void) denise_cck++; } } -static void lts_aga_fm1_ham1_p6_ilores_dhires_filtered(void) +static void lts_aga_fm1_n1_p4_ilores_dshres_filtered(void) { lts_null(); } -static void lts_aga_fm1_kehb0_p6_ilores_dhires(void) +static void lts_aga_fm1_dpf0_p4_ilores_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -15520,24 +54182,57 @@ static void lts_aga_fm1_kehb0_p6_ilores_dhires(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - pix0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[pix0 & 31]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; } last_bpl_pix = pix0; } - bplshiftcnt[0] += 2; + bplshiftcnt[0] += 1; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl6(); - loaded_pix = getbpl6_32(); + shiftbpl4(); + loaded_pix = getbpl4_32(); } if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl6(); + copybpl4(); bplshiftcnt[0] = 0; - loaded_pix = getbpl6_32(); + loaded_pix = getbpl4_32(); } loaded_pixs[0] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + uae_u8 val1 = dpf_lookup[pix1]; + if (dpf_lookup_no[pix1]) { + val1 += dblpfofs[bpldualpf2of]; + } + val1 ^= bplcon4_denise_xor_val; + dpix_val1 = denise_colors.acolors[val1]; + } + last_bpl_pix = pix1; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4(); + loaded_pix = getbpl4_32(); + } + if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { + copybpl4(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4_32(); + } + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { @@ -15545,27 +54240,62 @@ static void lts_aga_fm1_kehb0_p6_ilores_dhires(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - pix2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[pix2 & 31]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; } last_bpl_pix = pix2; } - bplshiftcnt[0] += 2; + bplshiftcnt[0] += 1; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl6(); - loaded_pix = getbpl6_32(); + shiftbpl4(); + loaded_pix = getbpl4_32(); } if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { - copybpl6(); + copybpl4(); bplshiftcnt[0] = 0; - loaded_pix = getbpl6_32(); + loaded_pix = getbpl4_32(); } loaded_pixs[2] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + uae_u8 val3 = dpf_lookup[pix3]; + if (dpf_lookup_no[pix3]) { + val3 += dblpfofs[bpldualpf2of]; + } + val3 ^= bplcon4_denise_xor_val; + dpix_val3 = denise_colors.acolors[val3]; + } + last_bpl_pix = pix3; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4(); + loaded_pix = getbpl4_32(); + } + if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { + copybpl4(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4_32(); + } + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -15574,6 +54304,14 @@ static void lts_aga_fm1_kehb0_p6_ilores_dhires(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -15582,6 +54320,14 @@ static void lts_aga_fm1_kehb0_p6_ilores_dhires(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -15605,11 +54351,11 @@ static void lts_aga_fm1_kehb0_p6_ilores_dhires(void) denise_cck++; } } -static void lts_aga_fm1_kehb0_p6_ilores_dhires_filtered(void) +static void lts_aga_fm1_dpf0_p4_ilores_dshres_filtered(void) { lts_null(); } -static void lts_aga_fm1_kehb1_p6_ilores_dhires(void) +static void lts_aga_fm1_dpf1_p4_ilores_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -15629,74 +54375,164 @@ static void lts_aga_fm1_kehb1_p6_ilores_dhires(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - pix0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[pix0 & 31]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; } last_bpl_pix = pix0; } - bplshiftcnt[0] += 2; + bplshiftcnt[0] += 1; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl6e(); - loaded_pix = getbpl6_32(); + shiftbpl4e(); + loaded_pix = getbpl4_32(); } - bplshiftcnt[1] += 2; + bplshiftcnt[1] += 1; if (bplshiftcnt[1] >= 4) { bplshiftcnt[1] = 0; - shiftbpl6o(); - loaded_pix = getbpl6_32(); + shiftbpl4o(); + loaded_pix = getbpl4_32(); } if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl6e(); + copybpl4e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4_32(); + } + if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { + copybpl4o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl4_32(); + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + uae_u8 val1 = dpf_lookup[pix1]; + if (dpf_lookup_no[pix1]) { + val1 += dblpfofs[bpldualpf2of]; + } + val1 ^= bplcon4_denise_xor_val; + dpix_val1 = denise_colors.acolors[val1]; + } + last_bpl_pix = pix1; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4e(); + loaded_pix = getbpl4_32(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl4o(); + loaded_pix = getbpl4_32(); + } + if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { + copybpl4e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4_32(); + } + if (bpldat_copy[1] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) { + copybpl4o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl4_32(); + } + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 1; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4e(); + loaded_pix = getbpl4_32(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl4o(); + loaded_pix = getbpl4_32(); + } + if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { + copybpl4e(); bplshiftcnt[0] = 0; - loaded_pix = getbpl6_32(); + loaded_pix = getbpl4_32(); } - if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { - copybpl6o(); + if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) { + copybpl4o(); bplshiftcnt[1] = 0; - loaded_pix = getbpl6_32(); + loaded_pix = getbpl4_32(); } - loaded_pixs[0] = loaded_pix; - internal_pixel_cnt += 2; - uae_u8 pix2 = 0; - uae_u32 dpix_val2 = BLANK_COLOR; + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { - dpix_val2 = bordercolor; + dpix_val3 = bordercolor; if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - pix2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[pix2 & 31]; + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + uae_u8 val3 = dpf_lookup[pix3]; + if (dpf_lookup_no[pix3]) { + val3 += dblpfofs[bpldualpf2of]; + } + val3 ^= bplcon4_denise_xor_val; + dpix_val3 = denise_colors.acolors[val3]; } - last_bpl_pix = pix2; + last_bpl_pix = pix3; } - bplshiftcnt[0] += 2; + bplshiftcnt[0] += 1; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl6e(); - loaded_pix = getbpl6_32(); + shiftbpl4e(); + loaded_pix = getbpl4_32(); } - bplshiftcnt[1] += 2; + bplshiftcnt[1] += 1; if (bplshiftcnt[1] >= 4) { bplshiftcnt[1] = 0; - shiftbpl6o(); - loaded_pix = getbpl6_32(); + shiftbpl4o(); + loaded_pix = getbpl4_32(); } - if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { - copybpl6e(); + if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { + copybpl4e(); bplshiftcnt[0] = 0; - loaded_pix = getbpl6_32(); + loaded_pix = getbpl4_32(); } - if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) { - copybpl6o(); + if (bpldat_copy[1] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[1]) { + copybpl4o(); bplshiftcnt[1] = 0; - loaded_pix = getbpl6_32(); + loaded_pix = getbpl4_32(); } - loaded_pixs[2] = loaded_pix; - internal_pixel_cnt += 2; + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -15705,6 +54541,14 @@ static void lts_aga_fm1_kehb1_p6_ilores_dhires(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -15713,6 +54557,14 @@ static void lts_aga_fm1_kehb1_p6_ilores_dhires(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -15736,11 +54588,11 @@ static void lts_aga_fm1_kehb1_p6_ilores_dhires(void) denise_cck++; } } -static void lts_aga_fm1_kehb1_p6_ilores_dhires_filtered(void) +static void lts_aga_fm1_dpf1_p4_ilores_dshres_filtered(void) { lts_null(); } -static void lts_aga_fm1_n0_p8_ilores_dhires(void) +static void lts_aga_fm1_ehb0_p4_ilores_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -15751,59 +54603,36 @@ 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; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8(); - loaded_pix = getbpl8_32(); } - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_32(); + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; } - loaded_pixs[0] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8(); - loaded_pix = getbpl8_32(); } - if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_32(); + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; } - loaded_pixs[2] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -15812,6 +54641,14 @@ static void lts_aga_fm1_n0_p8_ilores_dhires(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -15820,6 +54657,14 @@ static void lts_aga_fm1_n0_p8_ilores_dhires(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -15843,11 +54688,11 @@ static void lts_aga_fm1_n0_p8_ilores_dhires(void) denise_cck++; } } -static void lts_aga_fm1_n0_p8_ilores_dhires_filtered(void) +static void lts_aga_fm1_ehb0_p4_ilores_dshres_filtered(void) { lts_null(); } -static void lts_aga_fm1_n1_p8_ilores_dhires(void) +static void lts_aga_fm1_ehb1_p4_ilores_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -15858,81 +54703,36 @@ 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; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix0; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8e(); - loaded_pix = getbpl8_32(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl8o(); - loaded_pix = getbpl8_32(); - } - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_32(); - } - if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { - copybpl8o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl8_32(); + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; } - loaded_pixs[0] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8e(); - loaded_pix = getbpl8_32(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl8o(); - loaded_pix = getbpl8_32(); - } - if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_32(); } - if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) { - copybpl8o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl8_32(); + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; } - loaded_pixs[2] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -15941,6 +54741,14 @@ static void lts_aga_fm1_n1_p8_ilores_dhires(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -15949,6 +54757,14 @@ static void lts_aga_fm1_n1_p8_ilores_dhires(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -15972,11 +54788,11 @@ static void lts_aga_fm1_n1_p8_ilores_dhires(void) denise_cck++; } } -static void lts_aga_fm1_n1_p8_ilores_dhires_filtered(void) +static void lts_aga_fm1_ehb1_p4_ilores_dshres_filtered(void) { lts_null(); } -static void lts_aga_fm1_dpf0_p8_ilores_dhires(void) +static void lts_aga_fm1_ham0_p4_ilores_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -15987,69 +54803,36 @@ 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; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8(); - loaded_pix = getbpl8_32(); } - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_32(); + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; } - loaded_pixs[0] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8(); - loaded_pix = getbpl8_32(); } - if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_32(); + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; } - loaded_pixs[2] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -16058,6 +54841,14 @@ static void lts_aga_fm1_dpf0_p8_ilores_dhires(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -16066,6 +54857,14 @@ static void lts_aga_fm1_dpf0_p8_ilores_dhires(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -16089,11 +54888,11 @@ static void lts_aga_fm1_dpf0_p8_ilores_dhires(void) denise_cck++; } } -static void lts_aga_fm1_dpf0_p8_ilores_dhires_filtered(void) +static void lts_aga_fm1_ham0_p4_ilores_dshres_filtered(void) { lts_null(); } -static void lts_aga_fm1_dpf1_p8_ilores_dhires(void) +static void lts_aga_fm1_ham1_p4_ilores_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -16104,91 +54903,36 @@ 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; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8e(); - loaded_pix = getbpl8_32(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl8o(); - loaded_pix = getbpl8_32(); - } - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_32(); } - if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { - copybpl8o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl8_32(); + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; } - loaded_pixs[0] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8e(); - loaded_pix = getbpl8_32(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl8o(); - loaded_pix = getbpl8_32(); - } - if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_32(); } - if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) { - copybpl8o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl8_32(); + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; } - loaded_pixs[2] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -16197,6 +54941,14 @@ static void lts_aga_fm1_dpf1_p8_ilores_dhires(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -16205,6 +54957,14 @@ static void lts_aga_fm1_dpf1_p8_ilores_dhires(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -16228,27 +54988,11 @@ static void lts_aga_fm1_dpf1_p8_ilores_dhires(void) denise_cck++; } } -static void lts_aga_fm1_dpf1_p8_ilores_dhires_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb0_p8_ilores_dhires(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb0_p8_ilores_dhires_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb1_p8_ilores_dhires(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb1_p8_ilores_dhires_filtered(void) +static void lts_aga_fm1_ham1_p4_ilores_dshres_filtered(void) { lts_null(); } -static void lts_aga_fm1_ham0_p8_ilores_dhires(void) +static void lts_aga_fm1_kehb0_p4_ilores_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -16259,59 +55003,36 @@ 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; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = decode_ham_pixel_aga(pix0); - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8(); - loaded_pix = getbpl8_32(); } - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_32(); + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; } - loaded_pixs[0] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = decode_ham_pixel_aga(pix2); - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8(); - loaded_pix = getbpl8_32(); } - if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_32(); + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; } - loaded_pixs[2] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -16320,14 +55041,30 @@ static void lts_aga_fm1_ham0_p8_ilores_dhires(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { - t2 = decode_denise_specials_debug(t2, cnt + 2); + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); } #endif - *buf1++ = t2; - *buf2++ = t2; + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -16351,11 +55088,11 @@ static void lts_aga_fm1_ham0_p8_ilores_dhires(void) denise_cck++; } } -static void lts_aga_fm1_ham0_p8_ilores_dhires_filtered(void) +static void lts_aga_fm1_kehb0_p4_ilores_dshres_filtered(void) { lts_null(); } -static void lts_aga_fm1_ham1_p8_ilores_dhires(void) +static void lts_aga_fm1_kehb1_p4_ilores_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -16366,81 +55103,36 @@ 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; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = decode_ham_pixel_aga(pix0); - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8e(); - loaded_pix = getbpl8_32(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl8o(); - loaded_pix = getbpl8_32(); - } - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_32(); } - if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { - copybpl8o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl8_32(); + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; } - loaded_pixs[0] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = decode_ham_pixel_aga(pix2); - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8e(); - loaded_pix = getbpl8_32(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl8o(); - loaded_pix = getbpl8_32(); - } - if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_32(); } - if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) { - copybpl8o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl8_32(); + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; } - loaded_pixs[2] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -16449,6 +55141,14 @@ static void lts_aga_fm1_ham1_p8_ilores_dhires(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -16457,6 +55157,14 @@ static void lts_aga_fm1_ham1_p8_ilores_dhires(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -16480,27 +55188,11 @@ static void lts_aga_fm1_ham1_p8_ilores_dhires(void) denise_cck++; } } -static void lts_aga_fm1_ham1_p8_ilores_dhires_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb0_p8_ilores_dhires(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb0_p8_ilores_dhires_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb1_p8_ilores_dhires(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb1_p8_ilores_dhires_filtered(void) +static void lts_aga_fm1_kehb1_p4_ilores_dshres_filtered(void) { lts_null(); } -static void lts_aga_fm1_n0_p2_ilores_dhires_spr(void) +static void lts_aga_fm1_n0_p6_ilores_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -16513,7 +55205,6 @@ static void lts_aga_fm1_n0_p2_ilores_dhires_spr(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -16525,28 +55216,43 @@ static void lts_aga_fm1_n0_p2_ilores_dhires_spr(void) } last_bpl_pix = pix0; } - bplshiftcnt[0] += 2; + bplshiftcnt[0] += 1; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl2(); - loaded_pix = getbpl2_32(); + shiftbpl6(); + loaded_pix = getbpl6_32(); } if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl2(); + copybpl6(); bplshiftcnt[0] = 0; - loaded_pix = getbpl2_32(); + loaded_pix = getbpl6_32(); } - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; } + last_bpl_pix = pix1; } - loaded_pixs[0] = loaded_pix; - internal_pixel_cnt += 2; - matchsprites_aga(cnt + 2); + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6(); + loaded_pix = getbpl6_32(); + } + if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { + copybpl6(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6_32(); + } + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { @@ -16558,42 +55264,48 @@ static void lts_aga_fm1_n0_p2_ilores_dhires_spr(void) } last_bpl_pix = pix2; } - bplshiftcnt[0] += 2; + bplshiftcnt[0] += 1; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl2(); - loaded_pix = getbpl2_32(); + shiftbpl6(); + loaded_pix = getbpl6_32(); } if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { - copybpl2(); + copybpl6(); bplshiftcnt[0] = 0; - loaded_pix = getbpl2_32(); + loaded_pix = getbpl6_32(); } - uae_u32 sv2 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv2 = svt; + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; } + last_bpl_pix = pix3; } - loaded_pixs[2] = loaded_pix; - internal_pixel_cnt += 2; + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6(); + loaded_pix = getbpl6_32(); + } + if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { + copybpl6(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6_32(); + } + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - } - } dtbuf[h][0] = dpix_val0; - if (sv2) { - uae_u32 spix2 = denise_render_sprites2(pix2, sv2); - if (spix2) { - dpix_val2 = denise_colors.acolors[spix2]; - } - } + dtbuf[h][1] = dpix_val1; dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -16602,6 +55314,14 @@ static void lts_aga_fm1_n0_p2_ilores_dhires_spr(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -16610,6 +55330,14 @@ static void lts_aga_fm1_n0_p2_ilores_dhires_spr(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -16633,11 +55361,11 @@ static void lts_aga_fm1_n0_p2_ilores_dhires_spr(void) denise_cck++; } } -static void lts_aga_fm1_n0_p2_ilores_dhires_spr_filtered(void) +static void lts_aga_fm1_n0_p6_ilores_dshres_filtered(void) { lts_null(); } -static void lts_aga_fm1_n1_p2_ilores_dhires_spr(void) +static void lts_aga_fm1_n1_p6_ilores_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -16650,7 +55378,6 @@ static void lts_aga_fm1_n1_p2_ilores_dhires_spr(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -16662,39 +55389,65 @@ static void lts_aga_fm1_n1_p2_ilores_dhires_spr(void) } last_bpl_pix = pix0; } - bplshiftcnt[0] += 2; + bplshiftcnt[0] += 1; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl2e(); - loaded_pix = getbpl2_32(); + shiftbpl6e(); + loaded_pix = getbpl6_32(); } - bplshiftcnt[1] += 2; + bplshiftcnt[1] += 1; if (bplshiftcnt[1] >= 4) { bplshiftcnt[1] = 0; - shiftbpl2o(); - loaded_pix = getbpl2_32(); + shiftbpl6o(); + loaded_pix = getbpl6_32(); } if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl2e(); + copybpl6e(); bplshiftcnt[0] = 0; - loaded_pix = getbpl2_32(); + loaded_pix = getbpl6_32(); } if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { - copybpl2o(); + copybpl6o(); bplshiftcnt[1] = 0; - loaded_pix = getbpl2_32(); + loaded_pix = getbpl6_32(); } - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; } + last_bpl_pix = pix1; } - loaded_pixs[0] = loaded_pix; - internal_pixel_cnt += 2; - matchsprites_aga(cnt + 2); + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6e(); + loaded_pix = getbpl6_32(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl6o(); + loaded_pix = getbpl6_32(); + } + if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { + copybpl6e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6_32(); + } + if (bpldat_copy[1] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) { + copybpl6o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl6_32(); + } + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { @@ -16706,53 +55459,70 @@ static void lts_aga_fm1_n1_p2_ilores_dhires_spr(void) } last_bpl_pix = pix2; } - bplshiftcnt[0] += 2; + bplshiftcnt[0] += 1; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl2e(); - loaded_pix = getbpl2_32(); + shiftbpl6e(); + loaded_pix = getbpl6_32(); } - bplshiftcnt[1] += 2; + bplshiftcnt[1] += 1; if (bplshiftcnt[1] >= 4) { bplshiftcnt[1] = 0; - shiftbpl2o(); - loaded_pix = getbpl2_32(); + shiftbpl6o(); + loaded_pix = getbpl6_32(); } if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { - copybpl2e(); + copybpl6e(); bplshiftcnt[0] = 0; - loaded_pix = getbpl2_32(); + loaded_pix = getbpl6_32(); } if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) { - copybpl2o(); + copybpl6o(); bplshiftcnt[1] = 0; - loaded_pix = getbpl2_32(); + loaded_pix = getbpl6_32(); } - uae_u32 sv2 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv2 = svt; + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; } + last_bpl_pix = pix3; } - loaded_pixs[2] = loaded_pix; - internal_pixel_cnt += 2; + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6e(); + loaded_pix = getbpl6_32(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl6o(); + loaded_pix = getbpl6_32(); + } + if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { + copybpl6e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6_32(); + } + if (bpldat_copy[1] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[1]) { + copybpl6o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl6_32(); + } + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - } - } dtbuf[h][0] = dpix_val0; - if (sv2) { - uae_u32 spix2 = denise_render_sprites2(pix2, sv2); - if (spix2) { - dpix_val2 = denise_colors.acolors[spix2]; - } - } + dtbuf[h][1] = dpix_val1; dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -16761,6 +55531,14 @@ static void lts_aga_fm1_n1_p2_ilores_dhires_spr(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -16769,6 +55547,14 @@ static void lts_aga_fm1_n1_p2_ilores_dhires_spr(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -16792,11 +55578,11 @@ static void lts_aga_fm1_n1_p2_ilores_dhires_spr(void) denise_cck++; } } -static void lts_aga_fm1_n1_p2_ilores_dhires_spr_filtered(void) +static void lts_aga_fm1_n1_p6_ilores_dshres_filtered(void) { lts_null(); } -static void lts_aga_fm1_dpf0_p2_ilores_dhires_spr(void) +static void lts_aga_fm1_dpf0_p6_ilores_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -16809,7 +55595,6 @@ static void lts_aga_fm1_dpf0_p2_ilores_dhires_spr(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -16826,28 +55611,48 @@ static void lts_aga_fm1_dpf0_p2_ilores_dhires_spr(void) } last_bpl_pix = pix0; } - bplshiftcnt[0] += 2; + bplshiftcnt[0] += 1; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl2(); - loaded_pix = getbpl2_32(); + shiftbpl6(); + loaded_pix = getbpl6_32(); } if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl2(); + copybpl6(); bplshiftcnt[0] = 0; - loaded_pix = getbpl2_32(); + loaded_pix = getbpl6_32(); } - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + uae_u8 val1 = dpf_lookup[pix1]; + if (dpf_lookup_no[pix1]) { + val1 += dblpfofs[bpldualpf2of]; + } + val1 ^= bplcon4_denise_xor_val; + dpix_val1 = denise_colors.acolors[val1]; } + last_bpl_pix = pix1; } - loaded_pixs[0] = loaded_pix; - internal_pixel_cnt += 2; - matchsprites_aga(cnt + 2); + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6(); + loaded_pix = getbpl6_32(); + } + if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { + copybpl6(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6_32(); + } + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { @@ -16864,42 +55669,53 @@ static void lts_aga_fm1_dpf0_p2_ilores_dhires_spr(void) } last_bpl_pix = pix2; } - bplshiftcnt[0] += 2; + bplshiftcnt[0] += 1; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl2(); - loaded_pix = getbpl2_32(); + shiftbpl6(); + loaded_pix = getbpl6_32(); } if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { - copybpl2(); + copybpl6(); bplshiftcnt[0] = 0; - loaded_pix = getbpl2_32(); - } - uae_u32 sv2 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv2 = svt; - } + loaded_pix = getbpl6_32(); } loaded_pixs[2] = loaded_pix; - internal_pixel_cnt += 2; - if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + uae_u8 val3 = dpf_lookup[pix3]; + if (dpf_lookup_no[pix3]) { + val3 += dblpfofs[bpldualpf2of]; } + val3 ^= bplcon4_denise_xor_val; + dpix_val3 = denise_colors.acolors[val3]; } + last_bpl_pix = pix3; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6(); + loaded_pix = getbpl6_32(); + } + if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { + copybpl6(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6_32(); + } + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 1; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; - if (sv2) { - uae_u32 spix2 = denise_render_sprites2(pix2, sv2); - if (spix2) { - dpix_val2 = denise_colors.acolors[spix2]; - } - } + dtbuf[h][1] = dpix_val1; dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -16908,6 +55724,14 @@ static void lts_aga_fm1_dpf0_p2_ilores_dhires_spr(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -16916,6 +55740,14 @@ static void lts_aga_fm1_dpf0_p2_ilores_dhires_spr(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -16939,11 +55771,11 @@ static void lts_aga_fm1_dpf0_p2_ilores_dhires_spr(void) denise_cck++; } } -static void lts_aga_fm1_dpf0_p2_ilores_dhires_spr_filtered(void) +static void lts_aga_fm1_dpf0_p6_ilores_dshres_filtered(void) { lts_null(); } -static void lts_aga_fm1_dpf1_p2_ilores_dhires_spr(void) +static void lts_aga_fm1_dpf1_p6_ilores_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -16956,7 +55788,6 @@ static void lts_aga_fm1_dpf1_p2_ilores_dhires_spr(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -16973,39 +55804,70 @@ static void lts_aga_fm1_dpf1_p2_ilores_dhires_spr(void) } last_bpl_pix = pix0; } - bplshiftcnt[0] += 2; + bplshiftcnt[0] += 1; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl2e(); - loaded_pix = getbpl2_32(); + shiftbpl6e(); + loaded_pix = getbpl6_32(); } - bplshiftcnt[1] += 2; + bplshiftcnt[1] += 1; if (bplshiftcnt[1] >= 4) { bplshiftcnt[1] = 0; - shiftbpl2o(); - loaded_pix = getbpl2_32(); + shiftbpl6o(); + loaded_pix = getbpl6_32(); } if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl2e(); + copybpl6e(); bplshiftcnt[0] = 0; - loaded_pix = getbpl2_32(); + loaded_pix = getbpl6_32(); } if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { - copybpl2o(); + copybpl6o(); bplshiftcnt[1] = 0; - loaded_pix = getbpl2_32(); + loaded_pix = getbpl6_32(); } - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + uae_u8 val1 = dpf_lookup[pix1]; + if (dpf_lookup_no[pix1]) { + val1 += dblpfofs[bpldualpf2of]; + } + val1 ^= bplcon4_denise_xor_val; + dpix_val1 = denise_colors.acolors[val1]; } + last_bpl_pix = pix1; } - loaded_pixs[0] = loaded_pix; - internal_pixel_cnt += 2; - matchsprites_aga(cnt + 2); + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6e(); + loaded_pix = getbpl6_32(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl6o(); + loaded_pix = getbpl6_32(); + } + if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { + copybpl6e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6_32(); + } + if (bpldat_copy[1] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) { + copybpl6o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl6_32(); + } + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { @@ -17022,53 +55884,75 @@ static void lts_aga_fm1_dpf1_p2_ilores_dhires_spr(void) } last_bpl_pix = pix2; } - bplshiftcnt[0] += 2; + bplshiftcnt[0] += 1; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl2e(); - loaded_pix = getbpl2_32(); + shiftbpl6e(); + loaded_pix = getbpl6_32(); } - bplshiftcnt[1] += 2; + bplshiftcnt[1] += 1; if (bplshiftcnt[1] >= 4) { bplshiftcnt[1] = 0; - shiftbpl2o(); - loaded_pix = getbpl2_32(); + shiftbpl6o(); + loaded_pix = getbpl6_32(); } if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { - copybpl2e(); + copybpl6e(); bplshiftcnt[0] = 0; - loaded_pix = getbpl2_32(); + loaded_pix = getbpl6_32(); } if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) { - copybpl2o(); + copybpl6o(); bplshiftcnt[1] = 0; - loaded_pix = getbpl2_32(); - } - uae_u32 sv2 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv2 = svt; - } + loaded_pix = getbpl6_32(); } loaded_pixs[2] = loaded_pix; - internal_pixel_cnt += 2; - if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + uae_u8 val3 = dpf_lookup[pix3]; + if (dpf_lookup_no[pix3]) { + val3 += dblpfofs[bpldualpf2of]; } + val3 ^= bplcon4_denise_xor_val; + dpix_val3 = denise_colors.acolors[val3]; } + last_bpl_pix = pix3; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6e(); + loaded_pix = getbpl6_32(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl6o(); + loaded_pix = getbpl6_32(); + } + if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { + copybpl6e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6_32(); + } + if (bpldat_copy[1] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[1]) { + copybpl6o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl6_32(); + } + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 1; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; - if (sv2) { - uae_u32 spix2 = denise_render_sprites2(pix2, sv2); - if (spix2) { - dpix_val2 = denise_colors.acolors[spix2]; - } - } + dtbuf[h][1] = dpix_val1; dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -17077,6 +55961,14 @@ static void lts_aga_fm1_dpf1_p2_ilores_dhires_spr(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -17085,6 +55977,14 @@ static void lts_aga_fm1_dpf1_p2_ilores_dhires_spr(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -17108,59 +56008,11 @@ static void lts_aga_fm1_dpf1_p2_ilores_dhires_spr(void) denise_cck++; } } -static void lts_aga_fm1_dpf1_p2_ilores_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb0_p2_ilores_dhires_spr(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb0_p2_ilores_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb1_p2_ilores_dhires_spr(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb1_p2_ilores_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_ham0_p2_ilores_dhires_spr(void) -{ - lts_null(); -} -static void lts_aga_fm1_ham0_p2_ilores_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_ham1_p2_ilores_dhires_spr(void) -{ - lts_null(); -} -static void lts_aga_fm1_ham1_p2_ilores_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb0_p2_ilores_dhires_spr(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb0_p2_ilores_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb1_p2_ilores_dhires_spr(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb1_p2_ilores_dhires_spr_filtered(void) +static void lts_aga_fm1_dpf1_p6_ilores_dshres_filtered(void) { lts_null(); } -static void lts_aga_fm1_n0_p4_ilores_dhires_spr(void) +static void lts_aga_fm1_ehb0_p6_ilores_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -17173,7 +56025,6 @@ static void lts_aga_fm1_n0_p4_ilores_dhires_spr(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -17181,32 +56032,59 @@ static void lts_aga_fm1_n0_p4_ilores_dhires_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + pix0 ^= bplcon4_denise_xor_val; + if (!(pix0 & 0x20)) { + dpix_val0 = denise_colors.acolors[pix0]; + } else { + uae_u32 v = (denise_colors.color_regs_aga[pix0 & 0x1f] >> 1) & 0x7f7f7f; + dpix_val0 = CONVERT_RGB(v); + } } last_bpl_pix = pix0; } - bplshiftcnt[0] += 2; + bplshiftcnt[0] += 1; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl4(); - loaded_pix = getbpl4_32(); + shiftbpl6(); + loaded_pix = getbpl6_32(); } if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl4(); + copybpl6(); bplshiftcnt[0] = 0; - loaded_pix = getbpl4_32(); + loaded_pix = getbpl6_32(); } - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + pix1 ^= bplcon4_denise_xor_val; + if (!(pix1 & 0x20)) { + dpix_val1 = denise_colors.acolors[pix1]; + } else { + uae_u32 v = (denise_colors.color_regs_aga[pix1 & 0x1f] >> 1) & 0x7f7f7f; + dpix_val1 = CONVERT_RGB(v); + } } + last_bpl_pix = pix1; } - loaded_pixs[0] = loaded_pix; - internal_pixel_cnt += 2; - matchsprites_aga(cnt + 2); + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6(); + loaded_pix = getbpl6_32(); + } + if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { + copybpl6(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6_32(); + } + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { @@ -17214,46 +56092,64 @@ static void lts_aga_fm1_n0_p4_ilores_dhires_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + pix2 ^= bplcon4_denise_xor_val; + if (!(pix2 & 0x20)) { + dpix_val2 = denise_colors.acolors[pix2]; + } else { + uae_u32 v = (denise_colors.color_regs_aga[pix2 & 0x1f] >> 1) & 0x7f7f7f; + dpix_val2 = CONVERT_RGB(v); + } } last_bpl_pix = pix2; } - bplshiftcnt[0] += 2; + bplshiftcnt[0] += 1; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl4(); - loaded_pix = getbpl4_32(); + shiftbpl6(); + loaded_pix = getbpl6_32(); } if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { - copybpl4(); + copybpl6(); bplshiftcnt[0] = 0; - loaded_pix = getbpl4_32(); - } - uae_u32 sv2 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv2 = svt; - } + loaded_pix = getbpl6_32(); } loaded_pixs[2] = loaded_pix; - internal_pixel_cnt += 2; - if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + pix3 ^= bplcon4_denise_xor_val; + if (!(pix3 & 0x20)) { + dpix_val3 = denise_colors.acolors[pix3]; + } else { + uae_u32 v = (denise_colors.color_regs_aga[pix3 & 0x1f] >> 1) & 0x7f7f7f; + dpix_val3 = CONVERT_RGB(v); } } + last_bpl_pix = pix3; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6(); + loaded_pix = getbpl6_32(); + } + if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { + copybpl6(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6_32(); + } + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 1; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; - if (sv2) { - uae_u32 spix2 = denise_render_sprites2(pix2, sv2); - if (spix2) { - dpix_val2 = denise_colors.acolors[spix2]; - } - } + dtbuf[h][1] = dpix_val1; dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -17262,6 +56158,14 @@ static void lts_aga_fm1_n0_p4_ilores_dhires_spr(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -17270,6 +56174,14 @@ static void lts_aga_fm1_n0_p4_ilores_dhires_spr(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -17293,11 +56205,11 @@ static void lts_aga_fm1_n0_p4_ilores_dhires_spr(void) denise_cck++; } } -static void lts_aga_fm1_n0_p4_ilores_dhires_spr_filtered(void) +static void lts_aga_fm1_ehb0_p6_ilores_dshres_filtered(void) { lts_null(); } -static void lts_aga_fm1_n1_p4_ilores_dhires_spr(void) +static void lts_aga_fm1_ehb1_p6_ilores_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -17310,7 +56222,6 @@ static void lts_aga_fm1_n1_p4_ilores_dhires_spr(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -17318,43 +56229,81 @@ static void lts_aga_fm1_n1_p4_ilores_dhires_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + pix0 ^= bplcon4_denise_xor_val; + if (!(pix0 & 0x20)) { + dpix_val0 = denise_colors.acolors[pix0]; + } else { + uae_u32 v = (denise_colors.color_regs_aga[pix0 & 0x1f] >> 1) & 0x7f7f7f; + dpix_val0 = CONVERT_RGB(v); + } } last_bpl_pix = pix0; } - bplshiftcnt[0] += 2; + bplshiftcnt[0] += 1; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl4e(); - loaded_pix = getbpl4_32(); + shiftbpl6e(); + loaded_pix = getbpl6_32(); } - bplshiftcnt[1] += 2; + bplshiftcnt[1] += 1; if (bplshiftcnt[1] >= 4) { bplshiftcnt[1] = 0; - shiftbpl4o(); - loaded_pix = getbpl4_32(); + shiftbpl6o(); + loaded_pix = getbpl6_32(); } if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl4e(); + copybpl6e(); bplshiftcnt[0] = 0; - loaded_pix = getbpl4_32(); + loaded_pix = getbpl6_32(); } if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { - copybpl4o(); + copybpl6o(); bplshiftcnt[1] = 0; - loaded_pix = getbpl4_32(); + loaded_pix = getbpl6_32(); } - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + pix1 ^= bplcon4_denise_xor_val; + if (!(pix1 & 0x20)) { + dpix_val1 = denise_colors.acolors[pix1]; + } else { + uae_u32 v = (denise_colors.color_regs_aga[pix1 & 0x1f] >> 1) & 0x7f7f7f; + dpix_val1 = CONVERT_RGB(v); + } } + last_bpl_pix = pix1; } - loaded_pixs[0] = loaded_pix; - internal_pixel_cnt += 2; - matchsprites_aga(cnt + 2); + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6e(); + loaded_pix = getbpl6_32(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl6o(); + loaded_pix = getbpl6_32(); + } + if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { + copybpl6e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6_32(); + } + if (bpldat_copy[1] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) { + copybpl6o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl6_32(); + } + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { @@ -17362,57 +56311,86 @@ static void lts_aga_fm1_n1_p4_ilores_dhires_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + pix2 ^= bplcon4_denise_xor_val; + if (!(pix2 & 0x20)) { + dpix_val2 = denise_colors.acolors[pix2]; + } else { + uae_u32 v = (denise_colors.color_regs_aga[pix2 & 0x1f] >> 1) & 0x7f7f7f; + dpix_val2 = CONVERT_RGB(v); + } + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6e(); + loaded_pix = getbpl6_32(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl6o(); + loaded_pix = getbpl6_32(); + } + if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { + copybpl6e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6_32(); + } + if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) { + copybpl6o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl6_32(); + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + pix3 ^= bplcon4_denise_xor_val; + if (!(pix3 & 0x20)) { + dpix_val3 = denise_colors.acolors[pix3]; + } else { + uae_u32 v = (denise_colors.color_regs_aga[pix3 & 0x1f] >> 1) & 0x7f7f7f; + dpix_val3 = CONVERT_RGB(v); + } } - last_bpl_pix = pix2; + last_bpl_pix = pix3; } - bplshiftcnt[0] += 2; + bplshiftcnt[0] += 1; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl4e(); - loaded_pix = getbpl4_32(); + shiftbpl6e(); + loaded_pix = getbpl6_32(); } - bplshiftcnt[1] += 2; + bplshiftcnt[1] += 1; if (bplshiftcnt[1] >= 4) { bplshiftcnt[1] = 0; - shiftbpl4o(); - loaded_pix = getbpl4_32(); + shiftbpl6o(); + loaded_pix = getbpl6_32(); } - if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { - copybpl4e(); + if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { + copybpl6e(); bplshiftcnt[0] = 0; - loaded_pix = getbpl4_32(); + loaded_pix = getbpl6_32(); } - if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) { - copybpl4o(); + if (bpldat_copy[1] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[1]) { + copybpl6o(); bplshiftcnt[1] = 0; - loaded_pix = getbpl4_32(); - } - uae_u32 sv2 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv2 = svt; - } + loaded_pix = getbpl6_32(); } - loaded_pixs[2] = loaded_pix; - internal_pixel_cnt += 2; + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - } - } dtbuf[h][0] = dpix_val0; - if (sv2) { - uae_u32 spix2 = denise_render_sprites2(pix2, sv2); - if (spix2) { - dpix_val2 = denise_colors.acolors[spix2]; - } - } + dtbuf[h][1] = dpix_val1; dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -17421,6 +56399,14 @@ static void lts_aga_fm1_n1_p4_ilores_dhires_spr(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -17429,6 +56415,14 @@ static void lts_aga_fm1_n1_p4_ilores_dhires_spr(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -17452,11 +56446,11 @@ static void lts_aga_fm1_n1_p4_ilores_dhires_spr(void) denise_cck++; } } -static void lts_aga_fm1_n1_p4_ilores_dhires_spr_filtered(void) +static void lts_aga_fm1_ehb1_p6_ilores_dshres_filtered(void) { lts_null(); } -static void lts_aga_fm1_dpf0_p4_ilores_dhires_spr(void) +static void lts_aga_fm1_ham0_p6_ilores_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -17469,7 +56463,6 @@ static void lts_aga_fm1_dpf0_p4_ilores_dhires_spr(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -17477,37 +56470,47 @@ static void lts_aga_fm1_dpf0_p4_ilores_dhires_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; + dpix_val0 = decode_ham_pixel_aga(pix0); } last_bpl_pix = pix0; } - bplshiftcnt[0] += 2; + bplshiftcnt[0] += 1; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl4(); - loaded_pix = getbpl4_32(); + shiftbpl6(); + loaded_pix = getbpl6_32(); } if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl4(); + copybpl6(); bplshiftcnt[0] = 0; - loaded_pix = getbpl4_32(); + loaded_pix = getbpl6_32(); } - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + dpix_val1 = decode_ham_pixel_aga(pix1); } + last_bpl_pix = pix1; } - loaded_pixs[0] = loaded_pix; - internal_pixel_cnt += 2; - matchsprites_aga(cnt + 2); + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6(); + loaded_pix = getbpl6_32(); + } + if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { + copybpl6(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6_32(); + } + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { @@ -17515,51 +56518,52 @@ static void lts_aga_fm1_dpf0_p4_ilores_dhires_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; + dpix_val2 = decode_ham_pixel_aga(pix2); } last_bpl_pix = pix2; } - bplshiftcnt[0] += 2; + bplshiftcnt[0] += 1; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl4(); - loaded_pix = getbpl4_32(); + shiftbpl6(); + loaded_pix = getbpl6_32(); } if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { - copybpl4(); + copybpl6(); bplshiftcnt[0] = 0; - loaded_pix = getbpl4_32(); + loaded_pix = getbpl6_32(); } - uae_u32 sv2 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv2 = svt; + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + dpix_val3 = decode_ham_pixel_aga(pix3); } + last_bpl_pix = pix3; } - loaded_pixs[2] = loaded_pix; - internal_pixel_cnt += 2; + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6(); + loaded_pix = getbpl6_32(); + } + if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { + copybpl6(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6_32(); + } + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - } - } dtbuf[h][0] = dpix_val0; - if (sv2) { - uae_u32 spix2 = denise_render_sprites2(pix2, sv2); - if (spix2) { - dpix_val2 = denise_colors.acolors[spix2]; - } - } + dtbuf[h][1] = dpix_val1; dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -17568,6 +56572,14 @@ static void lts_aga_fm1_dpf0_p4_ilores_dhires_spr(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -17576,6 +56588,14 @@ static void lts_aga_fm1_dpf0_p4_ilores_dhires_spr(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -17599,11 +56619,11 @@ static void lts_aga_fm1_dpf0_p4_ilores_dhires_spr(void) denise_cck++; } } -static void lts_aga_fm1_dpf0_p4_ilores_dhires_spr_filtered(void) +static void lts_aga_fm1_ham0_p6_ilores_dshres_filtered(void) { lts_null(); } -static void lts_aga_fm1_dpf1_p4_ilores_dhires_spr(void) +static void lts_aga_fm1_ham1_p6_ilores_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -17616,7 +56636,6 @@ static void lts_aga_fm1_dpf1_p4_ilores_dhires_spr(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -17624,48 +56643,69 @@ static void lts_aga_fm1_dpf1_p4_ilores_dhires_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; + dpix_val0 = decode_ham_pixel_aga(pix0); } last_bpl_pix = pix0; } - bplshiftcnt[0] += 2; + bplshiftcnt[0] += 1; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl4e(); - loaded_pix = getbpl4_32(); + shiftbpl6e(); + loaded_pix = getbpl6_32(); } - bplshiftcnt[1] += 2; + bplshiftcnt[1] += 1; if (bplshiftcnt[1] >= 4) { bplshiftcnt[1] = 0; - shiftbpl4o(); - loaded_pix = getbpl4_32(); + shiftbpl6o(); + loaded_pix = getbpl6_32(); } if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl4e(); + copybpl6e(); bplshiftcnt[0] = 0; - loaded_pix = getbpl4_32(); + loaded_pix = getbpl6_32(); } if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { - copybpl4o(); + copybpl6o(); bplshiftcnt[1] = 0; - loaded_pix = getbpl4_32(); + loaded_pix = getbpl6_32(); } - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + dpix_val1 = decode_ham_pixel_aga(pix1); } + last_bpl_pix = pix1; } - loaded_pixs[0] = loaded_pix; - internal_pixel_cnt += 2; - matchsprites_aga(cnt + 2); + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6e(); + loaded_pix = getbpl6_32(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl6o(); + loaded_pix = getbpl6_32(); + } + if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { + copybpl6e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6_32(); + } + if (bpldat_copy[1] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) { + copybpl6o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl6_32(); + } + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { @@ -17673,62 +56713,74 @@ static void lts_aga_fm1_dpf1_p4_ilores_dhires_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; + dpix_val2 = decode_ham_pixel_aga(pix2); } last_bpl_pix = pix2; } - bplshiftcnt[0] += 2; + bplshiftcnt[0] += 1; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl4e(); - loaded_pix = getbpl4_32(); + shiftbpl6e(); + loaded_pix = getbpl6_32(); } - bplshiftcnt[1] += 2; + bplshiftcnt[1] += 1; if (bplshiftcnt[1] >= 4) { bplshiftcnt[1] = 0; - shiftbpl4o(); - loaded_pix = getbpl4_32(); + shiftbpl6o(); + loaded_pix = getbpl6_32(); } if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { - copybpl4e(); + copybpl6e(); bplshiftcnt[0] = 0; - loaded_pix = getbpl4_32(); + loaded_pix = getbpl6_32(); } if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) { - copybpl4o(); + copybpl6o(); bplshiftcnt[1] = 0; - loaded_pix = getbpl4_32(); + loaded_pix = getbpl6_32(); } - uae_u32 sv2 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv2 = svt; + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + dpix_val3 = decode_ham_pixel_aga(pix3); } + last_bpl_pix = pix3; } - loaded_pixs[2] = loaded_pix; - internal_pixel_cnt += 2; + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6e(); + loaded_pix = getbpl6_32(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl6o(); + loaded_pix = getbpl6_32(); + } + if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { + copybpl6e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6_32(); + } + if (bpldat_copy[1] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[1]) { + copybpl6o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl6_32(); + } + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - } - } dtbuf[h][0] = dpix_val0; - if (sv2) { - uae_u32 spix2 = denise_render_sprites2(pix2, sv2); - if (spix2) { - dpix_val2 = denise_colors.acolors[spix2]; - } - } + dtbuf[h][1] = dpix_val1; dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -17737,6 +56789,14 @@ static void lts_aga_fm1_dpf1_p4_ilores_dhires_spr(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -17745,6 +56805,14 @@ static void lts_aga_fm1_dpf1_p4_ilores_dhires_spr(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -17768,59 +56836,11 @@ static void lts_aga_fm1_dpf1_p4_ilores_dhires_spr(void) denise_cck++; } } -static void lts_aga_fm1_dpf1_p4_ilores_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb0_p4_ilores_dhires_spr(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb0_p4_ilores_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb1_p4_ilores_dhires_spr(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb1_p4_ilores_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_ham0_p4_ilores_dhires_spr(void) -{ - lts_null(); -} -static void lts_aga_fm1_ham0_p4_ilores_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_ham1_p4_ilores_dhires_spr(void) -{ - lts_null(); -} -static void lts_aga_fm1_ham1_p4_ilores_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb0_p4_ilores_dhires_spr(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb0_p4_ilores_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb1_p4_ilores_dhires_spr(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb1_p4_ilores_dhires_spr_filtered(void) +static void lts_aga_fm1_ham1_p6_ilores_dshres_filtered(void) { lts_null(); } -static void lts_aga_fm1_n0_p6_ilores_dhires_spr(void) +static void lts_aga_fm1_kehb0_p6_ilores_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -17833,7 +56853,6 @@ static void lts_aga_fm1_n0_p6_ilores_dhires_spr(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -17841,11 +56860,12 @@ static void lts_aga_fm1_n0_p6_ilores_dhires_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + pix0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[pix0 & 31]; } last_bpl_pix = pix0; } - bplshiftcnt[0] += 2; + bplshiftcnt[0] += 1; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; shiftbpl6(); @@ -17856,17 +56876,33 @@ static void lts_aga_fm1_n0_p6_ilores_dhires_spr(void) bplshiftcnt[0] = 0; loaded_pix = getbpl6_32(); } - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + pix1 ^= bplcon4_denise_xor_val; + dpix_val1 = denise_colors.acolors[pix1 & 31]; } + last_bpl_pix = pix1; } - loaded_pixs[0] = loaded_pix; - internal_pixel_cnt += 2; - matchsprites_aga(cnt + 2); + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6(); + loaded_pix = getbpl6_32(); + } + if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { + copybpl6(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6_32(); + } + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { @@ -17874,11 +56910,12 @@ static void lts_aga_fm1_n0_p6_ilores_dhires_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + pix2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[pix2 & 31]; } last_bpl_pix = pix2; } - bplshiftcnt[0] += 2; + bplshiftcnt[0] += 1; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; shiftbpl6(); @@ -17889,31 +56926,38 @@ static void lts_aga_fm1_n0_p6_ilores_dhires_spr(void) bplshiftcnt[0] = 0; loaded_pix = getbpl6_32(); } - uae_u32 sv2 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv2 = svt; + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + pix3 ^= bplcon4_denise_xor_val; + dpix_val3 = denise_colors.acolors[pix3 & 31]; } + last_bpl_pix = pix3; } - loaded_pixs[2] = loaded_pix; - internal_pixel_cnt += 2; + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6(); + loaded_pix = getbpl6_32(); + } + if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { + copybpl6(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6_32(); + } + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - } - } dtbuf[h][0] = dpix_val0; - if (sv2) { - uae_u32 spix2 = denise_render_sprites2(pix2, sv2); - if (spix2) { - dpix_val2 = denise_colors.acolors[spix2]; - } - } + dtbuf[h][1] = dpix_val1; dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -17922,6 +56966,14 @@ static void lts_aga_fm1_n0_p6_ilores_dhires_spr(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -17930,6 +56982,14 @@ static void lts_aga_fm1_n0_p6_ilores_dhires_spr(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -17953,11 +57013,11 @@ static void lts_aga_fm1_n0_p6_ilores_dhires_spr(void) denise_cck++; } } -static void lts_aga_fm1_n0_p6_ilores_dhires_spr_filtered(void) +static void lts_aga_fm1_kehb0_p6_ilores_dshres_filtered(void) { lts_null(); } -static void lts_aga_fm1_n1_p6_ilores_dhires_spr(void) +static void lts_aga_fm1_kehb1_p6_ilores_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -17970,7 +57030,6 @@ static void lts_aga_fm1_n1_p6_ilores_dhires_spr(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -17978,17 +57037,18 @@ static void lts_aga_fm1_n1_p6_ilores_dhires_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + pix0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[pix0 & 31]; } last_bpl_pix = pix0; } - bplshiftcnt[0] += 2; + bplshiftcnt[0] += 1; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; shiftbpl6e(); loaded_pix = getbpl6_32(); } - bplshiftcnt[1] += 2; + bplshiftcnt[1] += 1; if (bplshiftcnt[1] >= 4) { bplshiftcnt[1] = 0; shiftbpl6o(); @@ -18004,17 +57064,44 @@ static void lts_aga_fm1_n1_p6_ilores_dhires_spr(void) bplshiftcnt[1] = 0; loaded_pix = getbpl6_32(); } - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + pix1 ^= bplcon4_denise_xor_val; + dpix_val1 = denise_colors.acolors[pix1 & 31]; } + last_bpl_pix = pix1; } - loaded_pixs[0] = loaded_pix; - internal_pixel_cnt += 2; - matchsprites_aga(cnt + 2); + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6e(); + loaded_pix = getbpl6_32(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl6o(); + loaded_pix = getbpl6_32(); + } + if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { + copybpl6e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6_32(); + } + if (bpldat_copy[1] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) { + copybpl6o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl6_32(); + } + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { @@ -18022,17 +57109,18 @@ static void lts_aga_fm1_n1_p6_ilores_dhires_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + pix2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[pix2 & 31]; } last_bpl_pix = pix2; } - bplshiftcnt[0] += 2; + bplshiftcnt[0] += 1; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; shiftbpl6e(); loaded_pix = getbpl6_32(); } - bplshiftcnt[1] += 2; + bplshiftcnt[1] += 1; if (bplshiftcnt[1] >= 4) { bplshiftcnt[1] = 0; shiftbpl6o(); @@ -18048,31 +57136,49 @@ static void lts_aga_fm1_n1_p6_ilores_dhires_spr(void) bplshiftcnt[1] = 0; loaded_pix = getbpl6_32(); } - uae_u32 sv2 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv2 = svt; + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + pix3 ^= bplcon4_denise_xor_val; + dpix_val3 = denise_colors.acolors[pix3 & 31]; } + last_bpl_pix = pix3; } - loaded_pixs[2] = loaded_pix; - internal_pixel_cnt += 2; + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6e(); + loaded_pix = getbpl6_32(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl6o(); + loaded_pix = getbpl6_32(); + } + if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { + copybpl6e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6_32(); + } + if (bpldat_copy[1] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[1]) { + copybpl6o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl6_32(); + } + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - } - } dtbuf[h][0] = dpix_val0; - if (sv2) { - uae_u32 spix2 = denise_render_sprites2(pix2, sv2); - if (spix2) { - dpix_val2 = denise_colors.acolors[spix2]; - } - } + dtbuf[h][1] = dpix_val1; dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -18081,6 +57187,14 @@ static void lts_aga_fm1_n1_p6_ilores_dhires_spr(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -18089,6 +57203,14 @@ static void lts_aga_fm1_n1_p6_ilores_dhires_spr(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -18112,11 +57234,11 @@ static void lts_aga_fm1_n1_p6_ilores_dhires_spr(void) denise_cck++; } } -static void lts_aga_fm1_n1_p6_ilores_dhires_spr_filtered(void) +static void lts_aga_fm1_kehb1_p6_ilores_dshres_filtered(void) { lts_null(); } -static void lts_aga_fm1_dpf0_p6_ilores_dhires_spr(void) +static void lts_aga_fm1_n0_p8_ilores_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -18129,7 +57251,6 @@ static void lts_aga_fm1_dpf0_p6_ilores_dhires_spr(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -18137,37 +57258,47 @@ static void lts_aga_fm1_dpf0_p6_ilores_dhires_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix0; } - bplshiftcnt[0] += 2; + bplshiftcnt[0] += 1; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl6(); - loaded_pix = getbpl6_32(); + shiftbpl8(); + loaded_pix = getbpl8_32(); } if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl6(); + copybpl8(); bplshiftcnt[0] = 0; - loaded_pix = getbpl6_32(); + loaded_pix = getbpl8_32(); } - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; } + last_bpl_pix = pix1; } - loaded_pixs[0] = loaded_pix; - internal_pixel_cnt += 2; - matchsprites_aga(cnt + 2); + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8(); + loaded_pix = getbpl8_32(); + } + if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8_32(); + } + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { @@ -18175,51 +57306,52 @@ static void lts_aga_fm1_dpf0_p6_ilores_dhires_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix2; } - bplshiftcnt[0] += 2; + bplshiftcnt[0] += 1; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl6(); - loaded_pix = getbpl6_32(); + shiftbpl8(); + loaded_pix = getbpl8_32(); } if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { - copybpl6(); + copybpl8(); bplshiftcnt[0] = 0; - loaded_pix = getbpl6_32(); + loaded_pix = getbpl8_32(); } - uae_u32 sv2 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv2 = svt; + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; } + last_bpl_pix = pix3; } - loaded_pixs[2] = loaded_pix; - internal_pixel_cnt += 2; + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8(); + loaded_pix = getbpl8_32(); + } + if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8_32(); + } + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - } - } dtbuf[h][0] = dpix_val0; - if (sv2) { - uae_u32 spix2 = denise_render_sprites2(pix2, sv2); - if (spix2) { - dpix_val2 = denise_colors.acolors[spix2]; - } - } + dtbuf[h][1] = dpix_val1; dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -18228,6 +57360,14 @@ static void lts_aga_fm1_dpf0_p6_ilores_dhires_spr(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -18236,6 +57376,14 @@ static void lts_aga_fm1_dpf0_p6_ilores_dhires_spr(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -18259,11 +57407,11 @@ static void lts_aga_fm1_dpf0_p6_ilores_dhires_spr(void) denise_cck++; } } -static void lts_aga_fm1_dpf0_p6_ilores_dhires_spr_filtered(void) +static void lts_aga_fm1_n0_p8_ilores_dshres_filtered(void) { lts_null(); } -static void lts_aga_fm1_dpf1_p6_ilores_dhires_spr(void) +static void lts_aga_fm1_n1_p8_ilores_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -18276,7 +57424,6 @@ static void lts_aga_fm1_dpf1_p6_ilores_dhires_spr(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -18284,48 +57431,69 @@ static void lts_aga_fm1_dpf1_p6_ilores_dhires_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix0; } - bplshiftcnt[0] += 2; + bplshiftcnt[0] += 1; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl6e(); - loaded_pix = getbpl6_32(); + shiftbpl8e(); + loaded_pix = getbpl8_32(); } - bplshiftcnt[1] += 2; + bplshiftcnt[1] += 1; if (bplshiftcnt[1] >= 4) { bplshiftcnt[1] = 0; - shiftbpl6o(); - loaded_pix = getbpl6_32(); + shiftbpl8o(); + loaded_pix = getbpl8_32(); } if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl6e(); + copybpl8e(); bplshiftcnt[0] = 0; - loaded_pix = getbpl6_32(); + loaded_pix = getbpl8_32(); } if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { - copybpl6o(); + copybpl8o(); bplshiftcnt[1] = 0; - loaded_pix = getbpl6_32(); + loaded_pix = getbpl8_32(); } - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; } + last_bpl_pix = pix1; } - loaded_pixs[0] = loaded_pix; - internal_pixel_cnt += 2; - matchsprites_aga(cnt + 2); + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8e(); + loaded_pix = getbpl8_32(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl8o(); + loaded_pix = getbpl8_32(); + } + if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8_32(); + } + if (bpldat_copy[1] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) { + copybpl8o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl8_32(); + } + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { @@ -18333,62 +57501,74 @@ static void lts_aga_fm1_dpf1_p6_ilores_dhires_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix2; } - bplshiftcnt[0] += 2; + bplshiftcnt[0] += 1; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl6e(); - loaded_pix = getbpl6_32(); + shiftbpl8e(); + loaded_pix = getbpl8_32(); } - bplshiftcnt[1] += 2; + bplshiftcnt[1] += 1; if (bplshiftcnt[1] >= 4) { bplshiftcnt[1] = 0; - shiftbpl6o(); - loaded_pix = getbpl6_32(); + shiftbpl8o(); + loaded_pix = getbpl8_32(); } if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { - copybpl6e(); + copybpl8e(); bplshiftcnt[0] = 0; - loaded_pix = getbpl6_32(); + loaded_pix = getbpl8_32(); } if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) { - copybpl6o(); + copybpl8o(); bplshiftcnt[1] = 0; - loaded_pix = getbpl6_32(); + loaded_pix = getbpl8_32(); } - uae_u32 sv2 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv2 = svt; + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; } + last_bpl_pix = pix3; } - loaded_pixs[2] = loaded_pix; - internal_pixel_cnt += 2; + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8e(); + loaded_pix = getbpl8_32(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl8o(); + loaded_pix = getbpl8_32(); + } + if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8_32(); + } + if (bpldat_copy[1] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[1]) { + copybpl8o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl8_32(); + } + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - } - } dtbuf[h][0] = dpix_val0; - if (sv2) { - uae_u32 spix2 = denise_render_sprites2(pix2, sv2); - if (spix2) { - dpix_val2 = denise_colors.acolors[spix2]; - } - } + dtbuf[h][1] = dpix_val1; dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -18397,6 +57577,14 @@ static void lts_aga_fm1_dpf1_p6_ilores_dhires_spr(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -18405,6 +57593,14 @@ static void lts_aga_fm1_dpf1_p6_ilores_dhires_spr(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -18428,11 +57624,11 @@ static void lts_aga_fm1_dpf1_p6_ilores_dhires_spr(void) denise_cck++; } } -static void lts_aga_fm1_dpf1_p6_ilores_dhires_spr_filtered(void) +static void lts_aga_fm1_n1_p8_ilores_dshres_filtered(void) { lts_null(); } -static void lts_aga_fm1_ehb0_p6_ilores_dhires_spr(void) +static void lts_aga_fm1_dpf0_p8_ilores_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -18445,46 +57641,64 @@ static void lts_aga_fm1_ehb0_p6_ilores_dhires_spr(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { - dpix_val0 = bordercolor; + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8(); + loaded_pix = getbpl8_32(); + } + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8_32(); + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - pix0 ^= bplcon4_denise_xor_val; - if (!(pix0 & 0x20)) { - dpix_val0 = denise_colors.acolors[pix0]; - } else { - uae_u32 v = (denise_colors.color_regs_aga[pix0 & 0x1f] >> 1) & 0x7f7f7f; - dpix_val0 = CONVERT_RGB(v); + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + uae_u8 val1 = dpf_lookup[pix1]; + if (dpf_lookup_no[pix1]) { + val1 += dblpfofs[bpldualpf2of]; } + val1 ^= bplcon4_denise_xor_val; + dpix_val1 = denise_colors.acolors[val1]; } - last_bpl_pix = pix0; + last_bpl_pix = pix1; } - bplshiftcnt[0] += 2; + bplshiftcnt[0] += 1; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl6(); - loaded_pix = getbpl6_32(); + shiftbpl8(); + loaded_pix = getbpl8_32(); } - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl6(); + if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8(); bplshiftcnt[0] = 0; - loaded_pix = getbpl6_32(); - } - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } + loaded_pix = getbpl8_32(); } - loaded_pixs[0] = loaded_pix; - internal_pixel_cnt += 2; - matchsprites_aga(cnt + 2); + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { @@ -18492,52 +57706,62 @@ static void lts_aga_fm1_ehb0_p6_ilores_dhires_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - pix2 ^= bplcon4_denise_xor_val; - if (!(pix2 & 0x20)) { - dpix_val2 = denise_colors.acolors[pix2]; - } else { - uae_u32 v = (denise_colors.color_regs_aga[pix2 & 0x1f] >> 1) & 0x7f7f7f; - dpix_val2 = CONVERT_RGB(v); + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; } last_bpl_pix = pix2; } - bplshiftcnt[0] += 2; + bplshiftcnt[0] += 1; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl6(); - loaded_pix = getbpl6_32(); + shiftbpl8(); + loaded_pix = getbpl8_32(); } if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { - copybpl6(); + copybpl8(); bplshiftcnt[0] = 0; - loaded_pix = getbpl6_32(); - } - uae_u32 sv2 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv2 = svt; - } + loaded_pix = getbpl8_32(); } loaded_pixs[2] = loaded_pix; - internal_pixel_cnt += 2; - if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + uae_u8 val3 = dpf_lookup[pix3]; + if (dpf_lookup_no[pix3]) { + val3 += dblpfofs[bpldualpf2of]; } + val3 ^= bplcon4_denise_xor_val; + dpix_val3 = denise_colors.acolors[val3]; } + last_bpl_pix = pix3; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8(); + loaded_pix = getbpl8_32(); + } + if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8_32(); + } + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 1; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; - if (sv2) { - uae_u32 spix2 = denise_render_sprites2(pix2, sv2); - if (spix2) { - dpix_val2 = denise_colors.acolors[spix2]; - } - } + dtbuf[h][1] = dpix_val1; dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -18546,6 +57770,14 @@ static void lts_aga_fm1_ehb0_p6_ilores_dhires_spr(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -18554,6 +57786,14 @@ static void lts_aga_fm1_ehb0_p6_ilores_dhires_spr(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -18577,11 +57817,11 @@ static void lts_aga_fm1_ehb0_p6_ilores_dhires_spr(void) denise_cck++; } } -static void lts_aga_fm1_ehb0_p6_ilores_dhires_spr_filtered(void) +static void lts_aga_fm1_dpf0_p8_ilores_dshres_filtered(void) { lts_null(); } -static void lts_aga_fm1_ehb1_p6_ilores_dhires_spr(void) +static void lts_aga_fm1_dpf1_p8_ilores_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -18594,7 +57834,6 @@ static void lts_aga_fm1_ehb1_p6_ilores_dhires_spr(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -18602,49 +57841,79 @@ static void lts_aga_fm1_ehb1_p6_ilores_dhires_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - pix0 ^= bplcon4_denise_xor_val; - if (!(pix0 & 0x20)) { - dpix_val0 = denise_colors.acolors[pix0]; - } else { - uae_u32 v = (denise_colors.color_regs_aga[pix0 & 0x1f] >> 1) & 0x7f7f7f; - dpix_val0 = CONVERT_RGB(v); + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; } last_bpl_pix = pix0; } - bplshiftcnt[0] += 2; + bplshiftcnt[0] += 1; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl6e(); - loaded_pix = getbpl6_32(); + shiftbpl8e(); + loaded_pix = getbpl8_32(); } - bplshiftcnt[1] += 2; + bplshiftcnt[1] += 1; if (bplshiftcnt[1] >= 4) { bplshiftcnt[1] = 0; - shiftbpl6o(); - loaded_pix = getbpl6_32(); + shiftbpl8o(); + loaded_pix = getbpl8_32(); } if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl6e(); + copybpl8e(); bplshiftcnt[0] = 0; - loaded_pix = getbpl6_32(); + loaded_pix = getbpl8_32(); } if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { - copybpl6o(); + copybpl8o(); bplshiftcnt[1] = 0; - loaded_pix = getbpl6_32(); + loaded_pix = getbpl8_32(); } - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + uae_u8 val1 = dpf_lookup[pix1]; + if (dpf_lookup_no[pix1]) { + val1 += dblpfofs[bpldualpf2of]; + } + val1 ^= bplcon4_denise_xor_val; + dpix_val1 = denise_colors.acolors[val1]; } + last_bpl_pix = pix1; } - loaded_pixs[0] = loaded_pix; - internal_pixel_cnt += 2; - matchsprites_aga(cnt + 2); + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8e(); + loaded_pix = getbpl8_32(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl8o(); + loaded_pix = getbpl8_32(); + } + if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8_32(); + } + if (bpldat_copy[1] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) { + copybpl8o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl8_32(); + } + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { @@ -18652,63 +57921,84 @@ static void lts_aga_fm1_ehb1_p6_ilores_dhires_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - pix2 ^= bplcon4_denise_xor_val; - if (!(pix2 & 0x20)) { - dpix_val2 = denise_colors.acolors[pix2]; - } else { - uae_u32 v = (denise_colors.color_regs_aga[pix2 & 0x1f] >> 1) & 0x7f7f7f; - dpix_val2 = CONVERT_RGB(v); + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; } last_bpl_pix = pix2; } - bplshiftcnt[0] += 2; + bplshiftcnt[0] += 1; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl6e(); - loaded_pix = getbpl6_32(); + shiftbpl8e(); + loaded_pix = getbpl8_32(); } - bplshiftcnt[1] += 2; + bplshiftcnt[1] += 1; if (bplshiftcnt[1] >= 4) { bplshiftcnt[1] = 0; - shiftbpl6o(); - loaded_pix = getbpl6_32(); + shiftbpl8o(); + loaded_pix = getbpl8_32(); } if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { - copybpl6e(); + copybpl8e(); bplshiftcnt[0] = 0; - loaded_pix = getbpl6_32(); + loaded_pix = getbpl8_32(); } if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) { - copybpl6o(); + copybpl8o(); bplshiftcnt[1] = 0; - loaded_pix = getbpl6_32(); - } - uae_u32 sv2 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv2 = svt; - } + loaded_pix = getbpl8_32(); } loaded_pixs[2] = loaded_pix; - internal_pixel_cnt += 2; - if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + uae_u8 val3 = dpf_lookup[pix3]; + if (dpf_lookup_no[pix3]) { + val3 += dblpfofs[bpldualpf2of]; } + val3 ^= bplcon4_denise_xor_val; + dpix_val3 = denise_colors.acolors[val3]; } + last_bpl_pix = pix3; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8e(); + loaded_pix = getbpl8_32(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl8o(); + loaded_pix = getbpl8_32(); + } + if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8_32(); + } + if (bpldat_copy[1] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[1]) { + copybpl8o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl8_32(); + } + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 1; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; - if (sv2) { - uae_u32 spix2 = denise_render_sprites2(pix2, sv2); - if (spix2) { - dpix_val2 = denise_colors.acolors[spix2]; - } - } + dtbuf[h][1] = dpix_val1; dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -18717,6 +58007,14 @@ static void lts_aga_fm1_ehb1_p6_ilores_dhires_spr(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -18725,6 +58023,14 @@ static void lts_aga_fm1_ehb1_p6_ilores_dhires_spr(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -18748,11 +58054,11 @@ static void lts_aga_fm1_ehb1_p6_ilores_dhires_spr(void) denise_cck++; } } -static void lts_aga_fm1_ehb1_p6_ilores_dhires_spr_filtered(void) +static void lts_aga_fm1_dpf1_p8_ilores_dshres_filtered(void) { lts_null(); } -static void lts_aga_fm1_ham0_p6_ilores_dhires_spr(void) +static void lts_aga_fm1_ehb0_p8_ilores_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -18763,89 +58069,36 @@ 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; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = decode_ham_pixel_aga(pix0); - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6(); - loaded_pix = getbpl6_32(); } - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl6(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6_32(); - } - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; } - loaded_pixs[0] = loaded_pix; - internal_pixel_cnt += 2; - matchsprites_aga(cnt + 2); + internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = decode_ham_pixel_aga(pix2); - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6(); - loaded_pix = getbpl6_32(); - } - if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { - copybpl6(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6_32(); } - uae_u32 sv2 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv2 = svt; - } + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; } - loaded_pixs[2] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - } - } dtbuf[h][0] = dpix_val0; - if (sv2) { - uae_u32 spix2 = denise_render_sprites2(pix2, sv2); - if (spix2) { - dpix_val2 = denise_colors.acolors[spix2]; - } - } + dtbuf[h][1] = dpix_val1; dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -18854,6 +58107,14 @@ static void lts_aga_fm1_ham0_p6_ilores_dhires_spr(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -18862,6 +58123,14 @@ static void lts_aga_fm1_ham0_p6_ilores_dhires_spr(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -18885,11 +58154,11 @@ static void lts_aga_fm1_ham0_p6_ilores_dhires_spr(void) denise_cck++; } } -static void lts_aga_fm1_ham0_p6_ilores_dhires_spr_filtered(void) +static void lts_aga_fm1_ehb0_p8_ilores_dshres_filtered(void) { lts_null(); } -static void lts_aga_fm1_ham1_p6_ilores_dhires_spr(void) +static void lts_aga_fm1_ehb1_p8_ilores_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -18900,111 +58169,36 @@ 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; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = decode_ham_pixel_aga(pix0); - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6e(); - loaded_pix = getbpl6_32(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl6o(); - loaded_pix = getbpl6_32(); - } - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl6e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6_32(); } - if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { - copybpl6o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl6_32(); - } - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; } - loaded_pixs[0] = loaded_pix; - internal_pixel_cnt += 2; - matchsprites_aga(cnt + 2); + internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = decode_ham_pixel_aga(pix2); - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6e(); - loaded_pix = getbpl6_32(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl6o(); - loaded_pix = getbpl6_32(); - } - if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { - copybpl6e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6_32(); - } - if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) { - copybpl6o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl6_32(); } - uae_u32 sv2 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv2 = svt; - } + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; } - loaded_pixs[2] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - } - } dtbuf[h][0] = dpix_val0; - if (sv2) { - uae_u32 spix2 = denise_render_sprites2(pix2, sv2); - if (spix2) { - dpix_val2 = denise_colors.acolors[spix2]; - } - } + dtbuf[h][1] = dpix_val1; dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -19013,6 +58207,14 @@ static void lts_aga_fm1_ham1_p6_ilores_dhires_spr(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -19021,6 +58223,14 @@ static void lts_aga_fm1_ham1_p6_ilores_dhires_spr(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -19044,11 +58254,11 @@ static void lts_aga_fm1_ham1_p6_ilores_dhires_spr(void) denise_cck++; } } -static void lts_aga_fm1_ham1_p6_ilores_dhires_spr_filtered(void) +static void lts_aga_fm1_ehb1_p8_ilores_dshres_filtered(void) { lts_null(); } -static void lts_aga_fm1_kehb0_p6_ilores_dhires_spr(void) +static void lts_aga_fm1_ham0_p8_ilores_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -19061,7 +58271,6 @@ static void lts_aga_fm1_kehb0_p6_ilores_dhires_spr(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -19069,33 +58278,47 @@ static void lts_aga_fm1_kehb0_p6_ilores_dhires_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - pix0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[pix0 & 31]; + dpix_val0 = decode_ham_pixel_aga(pix0); } last_bpl_pix = pix0; } - bplshiftcnt[0] += 2; + bplshiftcnt[0] += 1; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl6(); - loaded_pix = getbpl6_32(); + shiftbpl8(); + loaded_pix = getbpl8_32(); } if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl6(); + copybpl8(); bplshiftcnt[0] = 0; - loaded_pix = getbpl6_32(); + loaded_pix = getbpl8_32(); } - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + dpix_val1 = decode_ham_pixel_aga(pix1); } + last_bpl_pix = pix1; } - loaded_pixs[0] = loaded_pix; - internal_pixel_cnt += 2; - matchsprites_aga(cnt + 2); + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8(); + loaded_pix = getbpl8_32(); + } + if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8_32(); + } + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { @@ -19103,47 +58326,52 @@ static void lts_aga_fm1_kehb0_p6_ilores_dhires_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - pix2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[pix2 & 31]; + dpix_val2 = decode_ham_pixel_aga(pix2); } last_bpl_pix = pix2; } - bplshiftcnt[0] += 2; + bplshiftcnt[0] += 1; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl6(); - loaded_pix = getbpl6_32(); + shiftbpl8(); + loaded_pix = getbpl8_32(); } if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { - copybpl6(); + copybpl8(); bplshiftcnt[0] = 0; - loaded_pix = getbpl6_32(); + loaded_pix = getbpl8_32(); } - uae_u32 sv2 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv2 = svt; + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + dpix_val3 = decode_ham_pixel_aga(pix3); } + last_bpl_pix = pix3; } - loaded_pixs[2] = loaded_pix; - internal_pixel_cnt += 2; + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8(); + loaded_pix = getbpl8_32(); + } + if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8_32(); + } + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - } - } dtbuf[h][0] = dpix_val0; - if (sv2) { - uae_u32 spix2 = denise_render_sprites2(pix2, sv2); - if (spix2) { - dpix_val2 = denise_colors.acolors[spix2]; - } - } + dtbuf[h][1] = dpix_val1; dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -19152,6 +58380,14 @@ static void lts_aga_fm1_kehb0_p6_ilores_dhires_spr(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -19160,6 +58396,14 @@ static void lts_aga_fm1_kehb0_p6_ilores_dhires_spr(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -19183,11 +58427,11 @@ static void lts_aga_fm1_kehb0_p6_ilores_dhires_spr(void) denise_cck++; } } -static void lts_aga_fm1_kehb0_p6_ilores_dhires_spr_filtered(void) +static void lts_aga_fm1_ham0_p8_ilores_dshres_filtered(void) { lts_null(); } -static void lts_aga_fm1_kehb1_p6_ilores_dhires_spr(void) +static void lts_aga_fm1_ham1_p8_ilores_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -19200,7 +58444,6 @@ static void lts_aga_fm1_kehb1_p6_ilores_dhires_spr(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -19208,44 +58451,69 @@ static void lts_aga_fm1_kehb1_p6_ilores_dhires_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - pix0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[pix0 & 31]; + dpix_val0 = decode_ham_pixel_aga(pix0); } last_bpl_pix = pix0; } - bplshiftcnt[0] += 2; + bplshiftcnt[0] += 1; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl6e(); - loaded_pix = getbpl6_32(); + shiftbpl8e(); + loaded_pix = getbpl8_32(); } - bplshiftcnt[1] += 2; + bplshiftcnt[1] += 1; if (bplshiftcnt[1] >= 4) { bplshiftcnt[1] = 0; - shiftbpl6o(); - loaded_pix = getbpl6_32(); + shiftbpl8o(); + loaded_pix = getbpl8_32(); } if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl6e(); + copybpl8e(); bplshiftcnt[0] = 0; - loaded_pix = getbpl6_32(); + loaded_pix = getbpl8_32(); } if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { - copybpl6o(); + copybpl8o(); bplshiftcnt[1] = 0; - loaded_pix = getbpl6_32(); + loaded_pix = getbpl8_32(); } - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + dpix_val1 = decode_ham_pixel_aga(pix1); } + last_bpl_pix = pix1; } - loaded_pixs[0] = loaded_pix; - internal_pixel_cnt += 2; - matchsprites_aga(cnt + 2); + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8e(); + loaded_pix = getbpl8_32(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl8o(); + loaded_pix = getbpl8_32(); + } + if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8_32(); + } + if (bpldat_copy[1] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) { + copybpl8o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl8_32(); + } + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { @@ -19253,58 +58521,74 @@ static void lts_aga_fm1_kehb1_p6_ilores_dhires_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - pix2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[pix2 & 31]; + dpix_val2 = decode_ham_pixel_aga(pix2); } last_bpl_pix = pix2; } - bplshiftcnt[0] += 2; + bplshiftcnt[0] += 1; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl6e(); - loaded_pix = getbpl6_32(); + shiftbpl8e(); + loaded_pix = getbpl8_32(); } - bplshiftcnt[1] += 2; + bplshiftcnt[1] += 1; if (bplshiftcnt[1] >= 4) { bplshiftcnt[1] = 0; - shiftbpl6o(); - loaded_pix = getbpl6_32(); + shiftbpl8o(); + loaded_pix = getbpl8_32(); } if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { - copybpl6e(); + copybpl8e(); bplshiftcnt[0] = 0; - loaded_pix = getbpl6_32(); + loaded_pix = getbpl8_32(); } if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) { - copybpl6o(); + copybpl8o(); bplshiftcnt[1] = 0; - loaded_pix = getbpl6_32(); + loaded_pix = getbpl8_32(); } - uae_u32 sv2 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv2 = svt; + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + dpix_val3 = decode_ham_pixel_aga(pix3); } + last_bpl_pix = pix3; } - loaded_pixs[2] = loaded_pix; - internal_pixel_cnt += 2; + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8e(); + loaded_pix = getbpl8_32(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl8o(); + loaded_pix = getbpl8_32(); + } + if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8_32(); + } + if (bpldat_copy[1] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[1]) { + copybpl8o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl8_32(); + } + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - } - } dtbuf[h][0] = dpix_val0; - if (sv2) { - uae_u32 spix2 = denise_render_sprites2(pix2, sv2); - if (spix2) { - dpix_val2 = denise_colors.acolors[spix2]; - } - } + dtbuf[h][1] = dpix_val1; dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -19313,6 +58597,14 @@ static void lts_aga_fm1_kehb1_p6_ilores_dhires_spr(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -19321,6 +58613,14 @@ static void lts_aga_fm1_kehb1_p6_ilores_dhires_spr(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -19344,11 +58644,11 @@ static void lts_aga_fm1_kehb1_p6_ilores_dhires_spr(void) denise_cck++; } } -static void lts_aga_fm1_kehb1_p6_ilores_dhires_spr_filtered(void) +static void lts_aga_fm1_ham1_p8_ilores_dshres_filtered(void) { lts_null(); } -static void lts_aga_fm1_n0_p8_ilores_dhires_spr(void) +static void lts_aga_fm1_kehb0_p8_ilores_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -19359,89 +58659,36 @@ 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; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8(); - loaded_pix = getbpl8_32(); - } - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_32(); } - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; } - loaded_pixs[0] = loaded_pix; - internal_pixel_cnt += 2; - matchsprites_aga(cnt + 2); + internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8(); - loaded_pix = getbpl8_32(); - } - if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_32(); } - uae_u32 sv2 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv2 = svt; - } + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; } - loaded_pixs[2] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - } - } dtbuf[h][0] = dpix_val0; - if (sv2) { - uae_u32 spix2 = denise_render_sprites2(pix2, sv2); - if (spix2) { - dpix_val2 = denise_colors.acolors[spix2]; - } - } + dtbuf[h][1] = dpix_val1; dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -19450,6 +58697,14 @@ static void lts_aga_fm1_n0_p8_ilores_dhires_spr(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -19458,6 +58713,14 @@ static void lts_aga_fm1_n0_p8_ilores_dhires_spr(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -19481,11 +58744,11 @@ static void lts_aga_fm1_n0_p8_ilores_dhires_spr(void) denise_cck++; } } -static void lts_aga_fm1_n0_p8_ilores_dhires_spr_filtered(void) +static void lts_aga_fm1_kehb0_p8_ilores_dshres_filtered(void) { lts_null(); } -static void lts_aga_fm1_n1_p8_ilores_dhires_spr(void) +static void lts_aga_fm1_kehb1_p8_ilores_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -19496,111 +58759,36 @@ 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; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8e(); - loaded_pix = getbpl8_32(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl8o(); - loaded_pix = getbpl8_32(); - } - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_32(); - } - if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { - copybpl8o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl8_32(); } - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; } - loaded_pixs[0] = loaded_pix; - internal_pixel_cnt += 2; - matchsprites_aga(cnt + 2); + internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { - dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8e(); - loaded_pix = getbpl8_32(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl8o(); - loaded_pix = getbpl8_32(); - } - if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_32(); - } - if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) { - copybpl8o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl8_32(); + dpix_val2 = bordercolor; } - uae_u32 sv2 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv2 = svt; - } + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; } - loaded_pixs[2] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - } - } dtbuf[h][0] = dpix_val0; - if (sv2) { - uae_u32 spix2 = denise_render_sprites2(pix2, sv2); - if (spix2) { - dpix_val2 = denise_colors.acolors[spix2]; - } - } + dtbuf[h][1] = dpix_val1; dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -19609,6 +58797,14 @@ static void lts_aga_fm1_n1_p8_ilores_dhires_spr(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -19617,6 +58813,14 @@ static void lts_aga_fm1_n1_p8_ilores_dhires_spr(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -19640,11 +58844,11 @@ static void lts_aga_fm1_n1_p8_ilores_dhires_spr(void) denise_cck++; } } -static void lts_aga_fm1_n1_p8_ilores_dhires_spr_filtered(void) +static void lts_aga_fm1_kehb1_p8_ilores_dshres_filtered(void) { lts_null(); } -static void lts_aga_fm1_dpf0_p8_ilores_dhires_spr(void) +static void lts_aga_fm1_n0_p2_ilores_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -19665,25 +58869,20 @@ static void lts_aga_fm1_dpf0_p8_ilores_dhires_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix0; } - bplshiftcnt[0] += 2; + bplshiftcnt[0] += 1; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl8(); - loaded_pix = getbpl8_32(); + shiftbpl2(); + loaded_pix = getbpl2_32(); } if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8(); + copybpl2(); bplshiftcnt[0] = 0; - loaded_pix = getbpl8_32(); + loaded_pix = getbpl2_32(); } uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { @@ -19694,7 +58893,40 @@ static void lts_aga_fm1_dpf0_p8_ilores_dhires_spr(void) } } loaded_pixs[0] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix1; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl2(); + loaded_pix = getbpl2_32(); + } + if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { + copybpl2(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl2_32(); + } + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } + } + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 1; matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; @@ -19703,25 +58935,20 @@ static void lts_aga_fm1_dpf0_p8_ilores_dhires_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix2; } - bplshiftcnt[0] += 2; + bplshiftcnt[0] += 1; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl8(); - loaded_pix = getbpl8_32(); + shiftbpl2(); + loaded_pix = getbpl2_32(); } if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8(); + copybpl2(); bplshiftcnt[0] = 0; - loaded_pix = getbpl8_32(); + loaded_pix = getbpl2_32(); } uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { @@ -19732,7 +58959,40 @@ static void lts_aga_fm1_dpf0_p8_ilores_dhires_spr(void) } } loaded_pixs[2] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix3; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl2(); + loaded_pix = getbpl2_32(); + } + if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { + copybpl2(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl2_32(); + } + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } + } + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { uae_u32 spix0 = denise_render_sprites2(pix0, sv0); @@ -19741,6 +59001,13 @@ static void lts_aga_fm1_dpf0_p8_ilores_dhires_spr(void) } } dtbuf[h][0] = dpix_val0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } + dtbuf[h][1] = dpix_val1; if (sv2) { uae_u32 spix2 = denise_render_sprites2(pix2, sv2); if (spix2) { @@ -19748,6 +59015,13 @@ static void lts_aga_fm1_dpf0_p8_ilores_dhires_spr(void) } } dtbuf[h][2] = dpix_val2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + } + } + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -19756,6 +59030,14 @@ static void lts_aga_fm1_dpf0_p8_ilores_dhires_spr(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -19764,6 +59046,14 @@ static void lts_aga_fm1_dpf0_p8_ilores_dhires_spr(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -19787,11 +59077,11 @@ static void lts_aga_fm1_dpf0_p8_ilores_dhires_spr(void) denise_cck++; } } -static void lts_aga_fm1_dpf0_p8_ilores_dhires_spr_filtered(void) +static void lts_aga_fm1_n0_p2_ilores_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm1_dpf1_p8_ilores_dhires_spr(void) +static void lts_aga_fm1_n1_p2_ilores_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -19812,36 +59102,31 @@ static void lts_aga_fm1_dpf1_p8_ilores_dhires_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix0; } - bplshiftcnt[0] += 2; + bplshiftcnt[0] += 1; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl8e(); - loaded_pix = getbpl8_32(); + shiftbpl2e(); + loaded_pix = getbpl2_32(); } - bplshiftcnt[1] += 2; + bplshiftcnt[1] += 1; if (bplshiftcnt[1] >= 4) { bplshiftcnt[1] = 0; - shiftbpl8o(); - loaded_pix = getbpl8_32(); + shiftbpl2o(); + loaded_pix = getbpl2_32(); } if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8e(); + copybpl2e(); bplshiftcnt[0] = 0; - loaded_pix = getbpl8_32(); + loaded_pix = getbpl2_32(); } if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { - copybpl8o(); + copybpl2o(); bplshiftcnt[1] = 0; - loaded_pix = getbpl8_32(); + loaded_pix = getbpl2_32(); } uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { @@ -19852,7 +59137,51 @@ static void lts_aga_fm1_dpf1_p8_ilores_dhires_spr(void) } } loaded_pixs[0] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix1; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl2e(); + loaded_pix = getbpl2_32(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl2o(); + loaded_pix = getbpl2_32(); + } + if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { + copybpl2e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl2_32(); + } + if (bpldat_copy[1] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) { + copybpl2o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl2_32(); + } + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } + } + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 1; matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; @@ -19861,36 +59190,31 @@ static void lts_aga_fm1_dpf1_p8_ilores_dhires_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix2; } - bplshiftcnt[0] += 2; + bplshiftcnt[0] += 1; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl8e(); - loaded_pix = getbpl8_32(); + shiftbpl2e(); + loaded_pix = getbpl2_32(); } - bplshiftcnt[1] += 2; + bplshiftcnt[1] += 1; if (bplshiftcnt[1] >= 4) { bplshiftcnt[1] = 0; - shiftbpl8o(); - loaded_pix = getbpl8_32(); + shiftbpl2o(); + loaded_pix = getbpl2_32(); } if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8e(); + copybpl2e(); bplshiftcnt[0] = 0; - loaded_pix = getbpl8_32(); + loaded_pix = getbpl2_32(); } if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) { - copybpl8o(); + copybpl2o(); bplshiftcnt[1] = 0; - loaded_pix = getbpl8_32(); + loaded_pix = getbpl2_32(); } uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { @@ -19901,7 +59225,51 @@ static void lts_aga_fm1_dpf1_p8_ilores_dhires_spr(void) } } loaded_pixs[2] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix3; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl2e(); + loaded_pix = getbpl2_32(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl2o(); + loaded_pix = getbpl2_32(); + } + if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { + copybpl2e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl2_32(); + } + if (bpldat_copy[1] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[1]) { + copybpl2o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl2_32(); + } + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } + } + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { uae_u32 spix0 = denise_render_sprites2(pix0, sv0); @@ -19910,6 +59278,13 @@ static void lts_aga_fm1_dpf1_p8_ilores_dhires_spr(void) } } dtbuf[h][0] = dpix_val0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } + dtbuf[h][1] = dpix_val1; if (sv2) { uae_u32 spix2 = denise_render_sprites2(pix2, sv2); if (spix2) { @@ -19917,6 +59292,13 @@ static void lts_aga_fm1_dpf1_p8_ilores_dhires_spr(void) } } dtbuf[h][2] = dpix_val2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + } + } + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -19925,6 +59307,14 @@ static void lts_aga_fm1_dpf1_p8_ilores_dhires_spr(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -19933,6 +59323,14 @@ static void lts_aga_fm1_dpf1_p8_ilores_dhires_spr(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -19956,27 +59354,11 @@ static void lts_aga_fm1_dpf1_p8_ilores_dhires_spr(void) denise_cck++; } } -static void lts_aga_fm1_dpf1_p8_ilores_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb0_p8_ilores_dhires_spr(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb0_p8_ilores_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb1_p8_ilores_dhires_spr(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb1_p8_ilores_dhires_spr_filtered(void) +static void lts_aga_fm1_n1_p2_ilores_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm1_ham0_p8_ilores_dhires_spr(void) +static void lts_aga_fm1_dpf0_p2_ilores_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -19997,20 +59379,25 @@ static void lts_aga_fm1_ham0_p8_ilores_dhires_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - dpix_val0 = decode_ham_pixel_aga(pix0); + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; } last_bpl_pix = pix0; } - bplshiftcnt[0] += 2; + bplshiftcnt[0] += 1; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl8(); - loaded_pix = getbpl8_32(); + shiftbpl2(); + loaded_pix = getbpl2_32(); } if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8(); + copybpl2(); bplshiftcnt[0] = 0; - loaded_pix = getbpl8_32(); + loaded_pix = getbpl2_32(); } uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { @@ -20021,7 +59408,45 @@ static void lts_aga_fm1_ham0_p8_ilores_dhires_spr(void) } } loaded_pixs[0] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + uae_u8 val1 = dpf_lookup[pix1]; + if (dpf_lookup_no[pix1]) { + val1 += dblpfofs[bpldualpf2of]; + } + val1 ^= bplcon4_denise_xor_val; + dpix_val1 = denise_colors.acolors[val1]; + } + last_bpl_pix = pix1; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl2(); + loaded_pix = getbpl2_32(); + } + if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { + copybpl2(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl2_32(); + } + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } + } + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 1; matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; @@ -20030,20 +59455,25 @@ static void lts_aga_fm1_ham0_p8_ilores_dhires_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - dpix_val2 = decode_ham_pixel_aga(pix2); + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; } last_bpl_pix = pix2; } - bplshiftcnt[0] += 2; + bplshiftcnt[0] += 1; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl8(); - loaded_pix = getbpl8_32(); + shiftbpl2(); + loaded_pix = getbpl2_32(); } if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8(); + copybpl2(); bplshiftcnt[0] = 0; - loaded_pix = getbpl8_32(); + loaded_pix = getbpl2_32(); } uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { @@ -20054,7 +59484,45 @@ static void lts_aga_fm1_ham0_p8_ilores_dhires_spr(void) } } loaded_pixs[2] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + uae_u8 val3 = dpf_lookup[pix3]; + if (dpf_lookup_no[pix3]) { + val3 += dblpfofs[bpldualpf2of]; + } + val3 ^= bplcon4_denise_xor_val; + dpix_val3 = denise_colors.acolors[val3]; + } + last_bpl_pix = pix3; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl2(); + loaded_pix = getbpl2_32(); + } + if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { + copybpl2(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl2_32(); + } + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } + } + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { uae_u32 spix0 = denise_render_sprites2(pix0, sv0); @@ -20063,6 +59531,13 @@ static void lts_aga_fm1_ham0_p8_ilores_dhires_spr(void) } } dtbuf[h][0] = dpix_val0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } + dtbuf[h][1] = dpix_val1; if (sv2) { uae_u32 spix2 = denise_render_sprites2(pix2, sv2); if (spix2) { @@ -20070,6 +59545,13 @@ static void lts_aga_fm1_ham0_p8_ilores_dhires_spr(void) } } dtbuf[h][2] = dpix_val2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + } + } + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -20078,6 +59560,14 @@ static void lts_aga_fm1_ham0_p8_ilores_dhires_spr(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -20086,6 +59576,14 @@ static void lts_aga_fm1_ham0_p8_ilores_dhires_spr(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -20109,11 +59607,11 @@ static void lts_aga_fm1_ham0_p8_ilores_dhires_spr(void) denise_cck++; } } -static void lts_aga_fm1_ham0_p8_ilores_dhires_spr_filtered(void) +static void lts_aga_fm1_dpf0_p2_ilores_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm1_ham1_p8_ilores_dhires_spr(void) +static void lts_aga_fm1_dpf1_p2_ilores_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -20134,31 +59632,36 @@ static void lts_aga_fm1_ham1_p8_ilores_dhires_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - dpix_val0 = decode_ham_pixel_aga(pix0); + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; } last_bpl_pix = pix0; } - bplshiftcnt[0] += 2; + bplshiftcnt[0] += 1; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl8e(); - loaded_pix = getbpl8_32(); + shiftbpl2e(); + loaded_pix = getbpl2_32(); } - bplshiftcnt[1] += 2; + bplshiftcnt[1] += 1; if (bplshiftcnt[1] >= 4) { bplshiftcnt[1] = 0; - shiftbpl8o(); - loaded_pix = getbpl8_32(); + shiftbpl2o(); + loaded_pix = getbpl2_32(); } if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8e(); + copybpl2e(); bplshiftcnt[0] = 0; - loaded_pix = getbpl8_32(); + loaded_pix = getbpl2_32(); } if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { - copybpl8o(); + copybpl2o(); bplshiftcnt[1] = 0; - loaded_pix = getbpl8_32(); + loaded_pix = getbpl2_32(); } uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { @@ -20169,7 +59672,56 @@ static void lts_aga_fm1_ham1_p8_ilores_dhires_spr(void) } } loaded_pixs[0] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + uae_u8 val1 = dpf_lookup[pix1]; + if (dpf_lookup_no[pix1]) { + val1 += dblpfofs[bpldualpf2of]; + } + val1 ^= bplcon4_denise_xor_val; + dpix_val1 = denise_colors.acolors[val1]; + } + last_bpl_pix = pix1; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl2e(); + loaded_pix = getbpl2_32(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl2o(); + loaded_pix = getbpl2_32(); + } + if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { + copybpl2e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl2_32(); + } + if (bpldat_copy[1] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) { + copybpl2o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl2_32(); + } + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } + } + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 1; matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; @@ -20178,31 +59730,36 @@ static void lts_aga_fm1_ham1_p8_ilores_dhires_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - dpix_val2 = decode_ham_pixel_aga(pix2); + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; } last_bpl_pix = pix2; } - bplshiftcnt[0] += 2; + bplshiftcnt[0] += 1; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl8e(); - loaded_pix = getbpl8_32(); + shiftbpl2e(); + loaded_pix = getbpl2_32(); } - bplshiftcnt[1] += 2; + bplshiftcnt[1] += 1; if (bplshiftcnt[1] >= 4) { bplshiftcnt[1] = 0; - shiftbpl8o(); - loaded_pix = getbpl8_32(); + shiftbpl2o(); + loaded_pix = getbpl2_32(); } if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8e(); + copybpl2e(); bplshiftcnt[0] = 0; - loaded_pix = getbpl8_32(); + loaded_pix = getbpl2_32(); } if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) { - copybpl8o(); + copybpl2o(); bplshiftcnt[1] = 0; - loaded_pix = getbpl8_32(); + loaded_pix = getbpl2_32(); } uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { @@ -20213,7 +59770,56 @@ static void lts_aga_fm1_ham1_p8_ilores_dhires_spr(void) } } loaded_pixs[2] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + uae_u8 val3 = dpf_lookup[pix3]; + if (dpf_lookup_no[pix3]) { + val3 += dblpfofs[bpldualpf2of]; + } + val3 ^= bplcon4_denise_xor_val; + dpix_val3 = denise_colors.acolors[val3]; + } + last_bpl_pix = pix3; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl2e(); + loaded_pix = getbpl2_32(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl2o(); + loaded_pix = getbpl2_32(); + } + if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { + copybpl2e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl2_32(); + } + if (bpldat_copy[1] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[1]) { + copybpl2o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl2_32(); + } + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } + } + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { uae_u32 spix0 = denise_render_sprites2(pix0, sv0); @@ -20222,6 +59828,13 @@ static void lts_aga_fm1_ham1_p8_ilores_dhires_spr(void) } } dtbuf[h][0] = dpix_val0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } + dtbuf[h][1] = dpix_val1; if (sv2) { uae_u32 spix2 = denise_render_sprites2(pix2, sv2); if (spix2) { @@ -20229,6 +59842,13 @@ static void lts_aga_fm1_ham1_p8_ilores_dhires_spr(void) } } dtbuf[h][2] = dpix_val2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + } + } + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -20237,117 +59857,14 @@ static void lts_aga_fm1_ham1_p8_ilores_dhires_spr(void) #endif *buf1++ = t0; *buf2++ = t0; - uae_u32 t2 = dtbuf[h ^ lol][2]; - #ifdef DEBUGGER - if (decode_specials_debug) { - t2 = decode_denise_specials_debug(t2, cnt + 2); - } - #endif - *buf1++ = t2; - *buf2++ = t2; - } - sprites_hidden = sprites_hidden2; - #ifdef DEBUGGER - *debug_dma_dhpos_odd = denise_hcounter; - #endif - denise_hcounter_cmp++; - denise_hcounter_cmp &= 511; - denise_hcounter++; - denise_hcounter &= 511; - denise_hcounter_next++; - denise_hcounter_next &= 511; - } - denise_pixtotal++; - if (denise_pixtotal == 0) { - internal_pixel_start_cnt = internal_pixel_cnt; - } - denise_hcounter = denise_hcounter_new; - if (denise_accurate_mode) { - denise_hcounter_cmp = denise_hcounter_new; - } - denise_cck++; - } -} -static void lts_aga_fm1_ham1_p8_ilores_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb0_p8_ilores_dhires_spr(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb0_p8_ilores_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb1_p8_ilores_dhires_spr(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb1_p8_ilores_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_n0_p2_ihires_dhires(void) -{ - while (denise_cck < denise_endcycle) { - do_denise_cck(denise_linecnt, denise_startpos, denise_cck); - if (lts_changed) return; - for (int h = 0; h < 2; h++) { - if (h) { - denise_hcounter_next = denise_hcounter_new; - } - int cnt = denise_hcounter << 2; - int cnt_next = denise_hcounter_next << 2; - int cmp = denise_hcounter_cmp << 2; - if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; - uae_u8 pix0 = 0; - uae_u32 dpix_val0 = BLANK_COLOR; - if (!denise_blank_active) { - dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix0; - } - shiftbpl2(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl2(); - } - loaded_pix = getbpl2_32(); - loaded_pixs[0] = loaded_pix; - internal_pixel_cnt += 2; - uae_u8 pix2 = 0; - uae_u32 dpix_val2 = BLANK_COLOR; - if (!denise_blank_active) { - dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix2; - } - shiftbpl2(); - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl2(); - } - loaded_pix = getbpl2_32(); - loaded_pixs[2] = loaded_pix; - internal_pixel_cnt += 2; - if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - dtbuf[h][0] = dpix_val0; - dtbuf[h][2] = dpix_val2; - uae_u32 t0 = dtbuf[h ^ lol][0]; + uae_u32 t1 = dtbuf[h ^ lol][1]; #ifdef DEBUGGER if (decode_specials_debug) { - t0 = decode_denise_specials_debug(t0, cnt + 0); + t1 = decode_denise_specials_debug(t1, cnt + 1); } #endif - *buf1++ = t0; - *buf2++ = t0; + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -20356,6 +59873,14 @@ static void lts_aga_fm1_n0_p2_ihires_dhires(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -20379,11 +59904,11 @@ static void lts_aga_fm1_n0_p2_ihires_dhires(void) denise_cck++; } } -static void lts_aga_fm1_n0_p2_ihires_dhires_filtered(void) +static void lts_aga_fm1_dpf1_p2_ilores_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm1_n1_p2_ihires_dhires(void) +static void lts_aga_fm1_ehb0_p2_ilores_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -20394,158 +59919,96 @@ 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; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; } - last_bpl_pix = pix0; } - shiftbpl2(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl2e(); + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl2o(); + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } } - loaded_pix = getbpl2_32(); - loaded_pixs[0] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; } - last_bpl_pix = pix2; } - shiftbpl2(); - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl2e(); + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; } - if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { - copybpl2o(); + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } } - loaded_pix = getbpl2_32(); - loaded_pixs[2] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - dtbuf[h][0] = dpix_val0; - dtbuf[h][2] = dpix_val2; - uae_u32 t0 = dtbuf[h ^ lol][0]; - #ifdef DEBUGGER - if (decode_specials_debug) { - t0 = decode_denise_specials_debug(t0, cnt + 0); - } - #endif - *buf1++ = t0; - *buf2++ = t0; - uae_u32 t2 = dtbuf[h ^ lol][2]; - #ifdef DEBUGGER - if (decode_specials_debug) { - t2 = decode_denise_specials_debug(t2, cnt + 2); + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } } - #endif - *buf1++ = t2; - *buf2++ = t2; - } - sprites_hidden = sprites_hidden2; - #ifdef DEBUGGER - *debug_dma_dhpos_odd = denise_hcounter; - #endif - denise_hcounter_cmp++; - denise_hcounter_cmp &= 511; - denise_hcounter++; - denise_hcounter &= 511; - denise_hcounter_next++; - denise_hcounter_next &= 511; - } - denise_pixtotal++; - if (denise_pixtotal == 0) { - internal_pixel_start_cnt = internal_pixel_cnt; - } - denise_hcounter = denise_hcounter_new; - if (denise_accurate_mode) { - denise_hcounter_cmp = denise_hcounter_new; - } - denise_cck++; - } -} -static void lts_aga_fm1_n1_p2_ihires_dhires_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_dpf0_p2_ihires_dhires(void) -{ - while (denise_cck < denise_endcycle) { - do_denise_cck(denise_linecnt, denise_startpos, denise_cck); - if (lts_changed) return; - for (int h = 0; h < 2; h++) { - if (h) { - denise_hcounter_next = denise_hcounter_new; - } - int cnt = denise_hcounter << 2; - int cnt_next = denise_hcounter_next << 2; - int cmp = denise_hcounter_cmp << 2; - if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; - uae_u8 pix0 = 0; - uae_u32 dpix_val0 = BLANK_COLOR; - if (!denise_blank_active) { - dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; + dtbuf[h][0] = dpix_val0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; } - last_bpl_pix = pix0; - } - shiftbpl2(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl2(); - } - loaded_pix = getbpl2_32(); - loaded_pixs[0] = loaded_pix; - internal_pixel_cnt += 2; - uae_u8 pix2 = 0; - uae_u32 dpix_val2 = BLANK_COLOR; - if (!denise_blank_active) { - dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; + dtbuf[h][1] = dpix_val1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; } - last_bpl_pix = pix2; - } - shiftbpl2(); - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl2(); - } - loaded_pix = getbpl2_32(); - loaded_pixs[2] = loaded_pix; - internal_pixel_cnt += 2; - if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - dtbuf[h][0] = dpix_val0; dtbuf[h][2] = dpix_val2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + } + } + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -20554,6 +60017,14 @@ static void lts_aga_fm1_dpf0_p2_ihires_dhires(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -20562,6 +60033,14 @@ static void lts_aga_fm1_dpf0_p2_ihires_dhires(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -20585,11 +60064,11 @@ static void lts_aga_fm1_dpf0_p2_ihires_dhires(void) denise_cck++; } } -static void lts_aga_fm1_dpf0_p2_ihires_dhires_filtered(void) +static void lts_aga_fm1_ehb0_p2_ilores_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm1_dpf1_p2_ihires_dhires(void) +static void lts_aga_fm1_ehb1_p2_ilores_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -20600,63 +60079,96 @@ 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; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; } - last_bpl_pix = pix0; } - shiftbpl2(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl2e(); + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl2o(); + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } } - loaded_pix = getbpl2_32(); - loaded_pixs[0] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; } - last_bpl_pix = pix2; } - shiftbpl2(); - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl2e(); + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; } - if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { - copybpl2o(); + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } } - loaded_pix = getbpl2_32(); - loaded_pixs[2] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } dtbuf[h][0] = dpix_val0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } + dtbuf[h][1] = dpix_val1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } dtbuf[h][2] = dpix_val2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + } + } + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -20665,6 +60177,14 @@ static void lts_aga_fm1_dpf1_p2_ihires_dhires(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -20673,6 +60193,14 @@ static void lts_aga_fm1_dpf1_p2_ihires_dhires(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -20696,59 +60224,11 @@ static void lts_aga_fm1_dpf1_p2_ihires_dhires(void) denise_cck++; } } -static void lts_aga_fm1_dpf1_p2_ihires_dhires_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb0_p2_ihires_dhires(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb0_p2_ihires_dhires_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb1_p2_ihires_dhires(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb1_p2_ihires_dhires_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_ham0_p2_ihires_dhires(void) -{ - lts_null(); -} -static void lts_aga_fm1_ham0_p2_ihires_dhires_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_ham1_p2_ihires_dhires(void) -{ - lts_null(); -} -static void lts_aga_fm1_ham1_p2_ihires_dhires_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb0_p2_ihires_dhires(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb0_p2_ihires_dhires_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb1_p2_ihires_dhires(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb1_p2_ihires_dhires_filtered(void) +static void lts_aga_fm1_ehb1_p2_ilores_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm1_n0_p4_ihires_dhires(void) +static void lts_aga_fm1_ham0_p2_ilores_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -20759,47 +60239,96 @@ 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; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; } - last_bpl_pix = pix0; } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4(); + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; } - loaded_pix = getbpl4_32(); - loaded_pixs[0] = loaded_pix; - internal_pixel_cnt += 2; + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } + } + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; } - last_bpl_pix = pix2; } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4(); + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; } - loaded_pix = getbpl4_32(); - loaded_pixs[2] = loaded_pix; - internal_pixel_cnt += 2; + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } + } + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } dtbuf[h][0] = dpix_val0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } + dtbuf[h][1] = dpix_val1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } dtbuf[h][2] = dpix_val2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + } + } + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -20808,6 +60337,14 @@ static void lts_aga_fm1_n0_p4_ihires_dhires(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -20816,6 +60353,14 @@ static void lts_aga_fm1_n0_p4_ihires_dhires(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -20839,11 +60384,11 @@ static void lts_aga_fm1_n0_p4_ihires_dhires(void) denise_cck++; } } -static void lts_aga_fm1_n0_p4_ihires_dhires_filtered(void) +static void lts_aga_fm1_ham0_p2_ilores_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm1_n1_p4_ihires_dhires(void) +static void lts_aga_fm1_ham1_p2_ilores_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -20854,53 +60399,96 @@ 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; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; } - last_bpl_pix = pix0; } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4e(); + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl4o(); + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } } - loaded_pix = getbpl4_32(); - loaded_pixs[0] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; } - last_bpl_pix = pix2; } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4e(); + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; } - if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { - copybpl4o(); + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } } - loaded_pix = getbpl4_32(); - loaded_pixs[2] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } dtbuf[h][0] = dpix_val0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } + dtbuf[h][1] = dpix_val1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } dtbuf[h][2] = dpix_val2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + } + } + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -20909,6 +60497,14 @@ static void lts_aga_fm1_n1_p4_ihires_dhires(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -20917,6 +60513,14 @@ static void lts_aga_fm1_n1_p4_ihires_dhires(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -20940,11 +60544,11 @@ static void lts_aga_fm1_n1_p4_ihires_dhires(void) denise_cck++; } } -static void lts_aga_fm1_n1_p4_ihires_dhires_filtered(void) +static void lts_aga_fm1_ham1_p2_ilores_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm1_dpf0_p4_ihires_dhires(void) +static void lts_aga_fm1_kehb0_p2_ilores_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -20955,57 +60559,96 @@ 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; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; } - last_bpl_pix = pix0; } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4(); + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; } - loaded_pix = getbpl4_32(); - loaded_pixs[0] = loaded_pix; - internal_pixel_cnt += 2; + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } + } + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } + } + internal_pixel_cnt += 1; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } + dtbuf[h][1] = dpix_val1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; } - last_bpl_pix = pix2; - } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4(); - } - loaded_pix = getbpl4_32(); - loaded_pixs[2] = loaded_pix; - internal_pixel_cnt += 2; - if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - dtbuf[h][0] = dpix_val0; dtbuf[h][2] = dpix_val2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + } + } + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -21014,6 +60657,14 @@ static void lts_aga_fm1_dpf0_p4_ihires_dhires(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -21022,6 +60673,14 @@ static void lts_aga_fm1_dpf0_p4_ihires_dhires(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -21045,11 +60704,11 @@ static void lts_aga_fm1_dpf0_p4_ihires_dhires(void) denise_cck++; } } -static void lts_aga_fm1_dpf0_p4_ihires_dhires_filtered(void) +static void lts_aga_fm1_kehb0_p2_ilores_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm1_dpf1_p4_ihires_dhires(void) +static void lts_aga_fm1_kehb1_p2_ilores_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -21060,63 +60719,96 @@ 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; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; } - last_bpl_pix = pix0; } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4e(); + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl4o(); + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } } - loaded_pix = getbpl4_32(); - loaded_pixs[0] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; } - last_bpl_pix = pix2; } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4e(); + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; } - if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { - copybpl4o(); + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } } - loaded_pix = getbpl4_32(); - loaded_pixs[2] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } dtbuf[h][0] = dpix_val0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } + dtbuf[h][1] = dpix_val1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } dtbuf[h][2] = dpix_val2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + } + } + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -21125,6 +60817,14 @@ static void lts_aga_fm1_dpf1_p4_ihires_dhires(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -21133,6 +60833,14 @@ static void lts_aga_fm1_dpf1_p4_ihires_dhires(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -21156,59 +60864,11 @@ static void lts_aga_fm1_dpf1_p4_ihires_dhires(void) denise_cck++; } } -static void lts_aga_fm1_dpf1_p4_ihires_dhires_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb0_p4_ihires_dhires(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb0_p4_ihires_dhires_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb1_p4_ihires_dhires(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb1_p4_ihires_dhires_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_ham0_p4_ihires_dhires(void) -{ - lts_null(); -} -static void lts_aga_fm1_ham0_p4_ihires_dhires_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_ham1_p4_ihires_dhires(void) -{ - lts_null(); -} -static void lts_aga_fm1_ham1_p4_ihires_dhires_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb0_p4_ihires_dhires(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb0_p4_ihires_dhires_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb1_p4_ihires_dhires(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb1_p4_ihires_dhires_filtered(void) +static void lts_aga_fm1_kehb1_p2_ilores_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm1_n0_p6_ihires_dhires(void) +static void lts_aga_fm1_n0_p4_ilores_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -21221,6 +60881,7 @@ static void lts_aga_fm1_n0_p6_ihires_dhires(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -21232,13 +60893,61 @@ static void lts_aga_fm1_n0_p6_ihires_dhires(void) } last_bpl_pix = pix0; } - shiftbpl6(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6(); + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4(); + loaded_pix = getbpl4_32(); + } + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl4(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4_32(); + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } } - loaded_pix = getbpl6_32(); loaded_pixs[0] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix1; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4(); + loaded_pix = getbpl4_32(); + } + if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { + copybpl4(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4_32(); + } + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } + } + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { @@ -21250,16 +60959,89 @@ static void lts_aga_fm1_n0_p6_ihires_dhires(void) } last_bpl_pix = pix2; } - shiftbpl6(); - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6(); + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4(); + loaded_pix = getbpl4_32(); + } + if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { + copybpl4(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4_32(); + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } } - loaded_pix = getbpl6_32(); loaded_pixs[2] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix3; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4(); + loaded_pix = getbpl4_32(); + } + if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { + copybpl4(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4_32(); + } + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } + } + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } dtbuf[h][0] = dpix_val0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } + dtbuf[h][1] = dpix_val1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } dtbuf[h][2] = dpix_val2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + } + } + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -21268,6 +61050,14 @@ static void lts_aga_fm1_n0_p6_ihires_dhires(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -21276,6 +61066,14 @@ static void lts_aga_fm1_n0_p6_ihires_dhires(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -21299,11 +61097,11 @@ static void lts_aga_fm1_n0_p6_ihires_dhires(void) denise_cck++; } } -static void lts_aga_fm1_n0_p6_ihires_dhires_filtered(void) +static void lts_aga_fm1_n0_p4_ilores_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm1_n1_p6_ihires_dhires(void) +static void lts_aga_fm1_n1_p4_ilores_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -21312,55 +61110,215 @@ static void lts_aga_fm1_n1_p6_ihires_dhires(void) if (h) { denise_hcounter_next = denise_hcounter_new; } - int cnt = denise_hcounter << 2; - int cnt_next = denise_hcounter_next << 2; - int cmp = denise_hcounter_cmp << 2; - if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; - uae_u8 pix0 = 0; - uae_u32 dpix_val0 = BLANK_COLOR; + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4e(); + loaded_pix = getbpl4_32(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl4o(); + loaded_pix = getbpl4_32(); + } + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl4e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4_32(); + } + if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { + copybpl4o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl4_32(); + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix1; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4e(); + loaded_pix = getbpl4_32(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl4o(); + loaded_pix = getbpl4_32(); + } + if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { + copybpl4e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4_32(); + } + if (bpldat_copy[1] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) { + copybpl4o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl4_32(); + } + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } + } + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4e(); + loaded_pix = getbpl4_32(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl4o(); + loaded_pix = getbpl4_32(); + } + if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { + copybpl4e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4_32(); + } + if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) { + copybpl4o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl4_32(); + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { - dpix_val0 = bordercolor; + dpix_val3 = bordercolor; if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; } - last_bpl_pix = pix0; + last_bpl_pix = pix3; } - shiftbpl6(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6e(); + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4e(); + loaded_pix = getbpl4_32(); } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl6o(); + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl4o(); + loaded_pix = getbpl4_32(); } - loaded_pix = getbpl6_32(); - loaded_pixs[0] = loaded_pix; - internal_pixel_cnt += 2; - uae_u8 pix2 = 0; - uae_u32 dpix_val2 = BLANK_COLOR; - if (!denise_blank_active) { - dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix2; + if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { + copybpl4e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4_32(); } - shiftbpl6(); - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6e(); + if (bpldat_copy[1] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[1]) { + copybpl4o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl4_32(); } - if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { - copybpl6o(); + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } } - loaded_pix = getbpl6_32(); - loaded_pixs[2] = loaded_pix; - internal_pixel_cnt += 2; + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } dtbuf[h][0] = dpix_val0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } + dtbuf[h][1] = dpix_val1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } dtbuf[h][2] = dpix_val2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + } + } + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -21369,6 +61327,14 @@ static void lts_aga_fm1_n1_p6_ihires_dhires(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -21377,6 +61343,14 @@ static void lts_aga_fm1_n1_p6_ihires_dhires(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -21400,11 +61374,11 @@ static void lts_aga_fm1_n1_p6_ihires_dhires(void) denise_cck++; } } -static void lts_aga_fm1_n1_p6_ihires_dhires_filtered(void) +static void lts_aga_fm1_n1_p4_ilores_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm1_dpf0_p6_ihires_dhires(void) +static void lts_aga_fm1_dpf0_p4_ilores_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -21417,6 +61391,7 @@ static void lts_aga_fm1_dpf0_p6_ihires_dhires(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -21433,13 +61408,66 @@ static void lts_aga_fm1_dpf0_p6_ihires_dhires(void) } last_bpl_pix = pix0; } - shiftbpl6(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6(); + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4(); + loaded_pix = getbpl4_32(); + } + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl4(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4_32(); + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } } - loaded_pix = getbpl6_32(); loaded_pixs[0] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + uae_u8 val1 = dpf_lookup[pix1]; + if (dpf_lookup_no[pix1]) { + val1 += dblpfofs[bpldualpf2of]; + } + val1 ^= bplcon4_denise_xor_val; + dpix_val1 = denise_colors.acolors[val1]; + } + last_bpl_pix = pix1; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4(); + loaded_pix = getbpl4_32(); + } + if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { + copybpl4(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4_32(); + } + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } + } + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { @@ -21456,16 +61484,94 @@ static void lts_aga_fm1_dpf0_p6_ihires_dhires(void) } last_bpl_pix = pix2; } - shiftbpl6(); - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6(); + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4(); + loaded_pix = getbpl4_32(); + } + if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { + copybpl4(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4_32(); + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } } - loaded_pix = getbpl6_32(); loaded_pixs[2] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + uae_u8 val3 = dpf_lookup[pix3]; + if (dpf_lookup_no[pix3]) { + val3 += dblpfofs[bpldualpf2of]; + } + val3 ^= bplcon4_denise_xor_val; + dpix_val3 = denise_colors.acolors[val3]; + } + last_bpl_pix = pix3; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4(); + loaded_pix = getbpl4_32(); + } + if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { + copybpl4(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4_32(); + } + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } + } + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } dtbuf[h][0] = dpix_val0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } + dtbuf[h][1] = dpix_val1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } dtbuf[h][2] = dpix_val2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + } + } + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -21474,6 +61580,14 @@ static void lts_aga_fm1_dpf0_p6_ihires_dhires(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -21482,6 +61596,14 @@ static void lts_aga_fm1_dpf0_p6_ihires_dhires(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -21505,11 +61627,11 @@ static void lts_aga_fm1_dpf0_p6_ihires_dhires(void) denise_cck++; } } -static void lts_aga_fm1_dpf0_p6_ihires_dhires_filtered(void) +static void lts_aga_fm1_dpf0_p4_ilores_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm1_dpf1_p6_ihires_dhires(void) +static void lts_aga_fm1_dpf1_p4_ilores_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -21522,6 +61644,7 @@ static void lts_aga_fm1_dpf1_p6_ihires_dhires(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -21538,16 +61661,88 @@ static void lts_aga_fm1_dpf1_p6_ihires_dhires(void) } last_bpl_pix = pix0; } - shiftbpl6(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6e(); + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4e(); + loaded_pix = getbpl4_32(); } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl6o(); + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl4o(); + loaded_pix = getbpl4_32(); + } + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl4e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4_32(); + } + if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { + copybpl4o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl4_32(); + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } } - loaded_pix = getbpl6_32(); loaded_pixs[0] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + uae_u8 val1 = dpf_lookup[pix1]; + if (dpf_lookup_no[pix1]) { + val1 += dblpfofs[bpldualpf2of]; + } + val1 ^= bplcon4_denise_xor_val; + dpix_val1 = denise_colors.acolors[val1]; + } + last_bpl_pix = pix1; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4e(); + loaded_pix = getbpl4_32(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl4o(); + loaded_pix = getbpl4_32(); + } + if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { + copybpl4e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4_32(); + } + if (bpldat_copy[1] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) { + copybpl4o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl4_32(); + } + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } + } + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { @@ -21564,19 +61759,116 @@ static void lts_aga_fm1_dpf1_p6_ihires_dhires(void) } last_bpl_pix = pix2; } - shiftbpl6(); - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6e(); + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4e(); + loaded_pix = getbpl4_32(); } - if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { - copybpl6o(); + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl4o(); + loaded_pix = getbpl4_32(); + } + if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { + copybpl4e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4_32(); + } + if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) { + copybpl4o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl4_32(); + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } } - loaded_pix = getbpl6_32(); loaded_pixs[2] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + uae_u8 val3 = dpf_lookup[pix3]; + if (dpf_lookup_no[pix3]) { + val3 += dblpfofs[bpldualpf2of]; + } + val3 ^= bplcon4_denise_xor_val; + dpix_val3 = denise_colors.acolors[val3]; + } + last_bpl_pix = pix3; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4e(); + loaded_pix = getbpl4_32(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl4o(); + loaded_pix = getbpl4_32(); + } + if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { + copybpl4e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4_32(); + } + if (bpldat_copy[1] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[1]) { + copybpl4o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl4_32(); + } + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } + } + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } dtbuf[h][0] = dpix_val0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } + dtbuf[h][1] = dpix_val1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } dtbuf[h][2] = dpix_val2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + } + } + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -21585,6 +61877,14 @@ static void lts_aga_fm1_dpf1_p6_ihires_dhires(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -21593,6 +61893,14 @@ static void lts_aga_fm1_dpf1_p6_ihires_dhires(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -21616,11 +61924,11 @@ static void lts_aga_fm1_dpf1_p6_ihires_dhires(void) denise_cck++; } } -static void lts_aga_fm1_dpf1_p6_ihires_dhires_filtered(void) +static void lts_aga_fm1_dpf1_p4_ilores_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm1_ehb0_p6_ihires_dhires(void) +static void lts_aga_fm1_ehb0_p4_ilores_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -21631,59 +61939,96 @@ 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; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - pix0 ^= bplcon4_denise_xor_val; - if (!(pix0 & 0x20)) { - dpix_val0 = denise_colors.acolors[pix0]; - } else { - uae_u32 v = (denise_colors.color_regs_aga[pix0 & 0x1f] >> 1) & 0x7f7f7f; - dpix_val0 = CONVERT_RGB(v); - } + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; } - last_bpl_pix = pix0; } - shiftbpl6(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6(); + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; } - loaded_pix = getbpl6_32(); - loaded_pixs[0] = loaded_pix; - internal_pixel_cnt += 2; + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } + } + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - pix2 ^= bplcon4_denise_xor_val; - if (!(pix2 & 0x20)) { - dpix_val2 = denise_colors.acolors[pix2]; - } else { - uae_u32 v = (denise_colors.color_regs_aga[pix2 & 0x1f] >> 1) & 0x7f7f7f; - dpix_val2 = CONVERT_RGB(v); - } + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; } - last_bpl_pix = pix2; } - shiftbpl6(); - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6(); + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; } - loaded_pix = getbpl6_32(); - loaded_pixs[2] = loaded_pix; - internal_pixel_cnt += 2; + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } + } + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } dtbuf[h][0] = dpix_val0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } + dtbuf[h][1] = dpix_val1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } dtbuf[h][2] = dpix_val2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + } + } + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -21692,6 +62037,14 @@ static void lts_aga_fm1_ehb0_p6_ihires_dhires(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -21700,6 +62053,14 @@ static void lts_aga_fm1_ehb0_p6_ihires_dhires(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -21723,11 +62084,11 @@ static void lts_aga_fm1_ehb0_p6_ihires_dhires(void) denise_cck++; } } -static void lts_aga_fm1_ehb0_p6_ihires_dhires_filtered(void) +static void lts_aga_fm1_ehb0_p4_ilores_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm1_ehb1_p6_ihires_dhires(void) +static void lts_aga_fm1_ehb1_p4_ilores_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -21738,65 +62099,96 @@ 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; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - pix0 ^= bplcon4_denise_xor_val; - if (!(pix0 & 0x20)) { - dpix_val0 = denise_colors.acolors[pix0]; - } else { - uae_u32 v = (denise_colors.color_regs_aga[pix0 & 0x1f] >> 1) & 0x7f7f7f; - dpix_val0 = CONVERT_RGB(v); - } + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; } - last_bpl_pix = pix0; } - shiftbpl6(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6e(); + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl6o(); + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } } - loaded_pix = getbpl6_32(); - loaded_pixs[0] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - pix2 ^= bplcon4_denise_xor_val; - if (!(pix2 & 0x20)) { - dpix_val2 = denise_colors.acolors[pix2]; - } else { - uae_u32 v = (denise_colors.color_regs_aga[pix2 & 0x1f] >> 1) & 0x7f7f7f; - dpix_val2 = CONVERT_RGB(v); - } + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; } - last_bpl_pix = pix2; } - shiftbpl6(); - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6e(); + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; } - if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { - copybpl6o(); + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } } - loaded_pix = getbpl6_32(); - loaded_pixs[2] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } dtbuf[h][0] = dpix_val0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } + dtbuf[h][1] = dpix_val1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } dtbuf[h][2] = dpix_val2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + } + } + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -21805,6 +62197,14 @@ static void lts_aga_fm1_ehb1_p6_ihires_dhires(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -21813,6 +62213,14 @@ static void lts_aga_fm1_ehb1_p6_ihires_dhires(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -21836,11 +62244,11 @@ static void lts_aga_fm1_ehb1_p6_ihires_dhires(void) denise_cck++; } } -static void lts_aga_fm1_ehb1_p6_ihires_dhires_filtered(void) +static void lts_aga_fm1_ehb1_p4_ilores_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm1_ham0_p6_ihires_dhires(void) +static void lts_aga_fm1_ham0_p4_ilores_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -21851,47 +62259,96 @@ 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; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = decode_ham_pixel_aga(pix0); + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; } - last_bpl_pix = pix0; } - shiftbpl6(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6(); + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; } - loaded_pix = getbpl6_32(); - loaded_pixs[0] = loaded_pix; - internal_pixel_cnt += 2; + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } + } + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = decode_ham_pixel_aga(pix2); + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; } - last_bpl_pix = pix2; } - shiftbpl6(); - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6(); + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; } - loaded_pix = getbpl6_32(); - loaded_pixs[2] = loaded_pix; - internal_pixel_cnt += 2; + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } + } + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } dtbuf[h][0] = dpix_val0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } + dtbuf[h][1] = dpix_val1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } dtbuf[h][2] = dpix_val2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + } + } + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -21900,6 +62357,14 @@ static void lts_aga_fm1_ham0_p6_ihires_dhires(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -21908,6 +62373,14 @@ static void lts_aga_fm1_ham0_p6_ihires_dhires(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -21931,11 +62404,11 @@ static void lts_aga_fm1_ham0_p6_ihires_dhires(void) denise_cck++; } } -static void lts_aga_fm1_ham0_p6_ihires_dhires_filtered(void) +static void lts_aga_fm1_ham0_p4_ilores_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm1_ham1_p6_ihires_dhires(void) +static void lts_aga_fm1_ham1_p4_ilores_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -21946,53 +62419,96 @@ 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; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = decode_ham_pixel_aga(pix0); + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; } - last_bpl_pix = pix0; } - shiftbpl6(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6e(); + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl6o(); + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } } - loaded_pix = getbpl6_32(); - loaded_pixs[0] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = decode_ham_pixel_aga(pix2); + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; } - last_bpl_pix = pix2; } - shiftbpl6(); - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6e(); + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; } - if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { - copybpl6o(); + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } } - loaded_pix = getbpl6_32(); - loaded_pixs[2] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } dtbuf[h][0] = dpix_val0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } + dtbuf[h][1] = dpix_val1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } dtbuf[h][2] = dpix_val2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + } + } + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -22001,6 +62517,14 @@ static void lts_aga_fm1_ham1_p6_ihires_dhires(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -22009,6 +62533,14 @@ static void lts_aga_fm1_ham1_p6_ihires_dhires(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -22032,11 +62564,11 @@ static void lts_aga_fm1_ham1_p6_ihires_dhires(void) denise_cck++; } } -static void lts_aga_fm1_ham1_p6_ihires_dhires_filtered(void) +static void lts_aga_fm1_ham1_p4_ilores_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm1_kehb0_p6_ihires_dhires(void) +static void lts_aga_fm1_kehb0_p4_ilores_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -22047,49 +62579,96 @@ 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; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - pix0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[pix0 & 31]; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; } - last_bpl_pix = pix0; - } - shiftbpl6(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6(); } - loaded_pix = getbpl6_32(); - loaded_pixs[0] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - pix2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[pix2 & 31]; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; } - last_bpl_pix = pix2; } - shiftbpl6(); - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6(); + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; } - loaded_pix = getbpl6_32(); - loaded_pixs[2] = loaded_pix; - internal_pixel_cnt += 2; + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } + } + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } dtbuf[h][0] = dpix_val0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } + dtbuf[h][1] = dpix_val1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } dtbuf[h][2] = dpix_val2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + } + } + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -22098,6 +62677,14 @@ static void lts_aga_fm1_kehb0_p6_ihires_dhires(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -22106,6 +62693,14 @@ static void lts_aga_fm1_kehb0_p6_ihires_dhires(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -22129,11 +62724,11 @@ static void lts_aga_fm1_kehb0_p6_ihires_dhires(void) denise_cck++; } } -static void lts_aga_fm1_kehb0_p6_ihires_dhires_filtered(void) +static void lts_aga_fm1_kehb0_p4_ilores_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm1_kehb1_p6_ihires_dhires(void) +static void lts_aga_fm1_kehb1_p4_ilores_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -22144,55 +62739,96 @@ 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; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - pix0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[pix0 & 31]; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; } - last_bpl_pix = pix0; } - shiftbpl6(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6e(); + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl6o(); + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } } - loaded_pix = getbpl6_32(); - loaded_pixs[0] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - pix2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[pix2 & 31]; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; } - last_bpl_pix = pix2; } - shiftbpl6(); - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6e(); + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; } - if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { - copybpl6o(); + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } } - loaded_pix = getbpl6_32(); - loaded_pixs[2] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } dtbuf[h][0] = dpix_val0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } + dtbuf[h][1] = dpix_val1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } dtbuf[h][2] = dpix_val2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + } + } + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -22201,6 +62837,14 @@ static void lts_aga_fm1_kehb1_p6_ihires_dhires(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -22209,6 +62853,14 @@ static void lts_aga_fm1_kehb1_p6_ihires_dhires(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -22232,11 +62884,11 @@ static void lts_aga_fm1_kehb1_p6_ihires_dhires(void) denise_cck++; } } -static void lts_aga_fm1_kehb1_p6_ihires_dhires_filtered(void) +static void lts_aga_fm1_kehb1_p4_ilores_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm1_n0_p8_ihires_dhires(void) +static void lts_aga_fm1_n0_p6_ilores_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -22249,6 +62901,7 @@ static void lts_aga_fm1_n0_p8_ihires_dhires(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -22260,13 +62913,61 @@ static void lts_aga_fm1_n0_p8_ihires_dhires(void) } last_bpl_pix = pix0; } - shiftbpl8(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8(); + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6(); + loaded_pix = getbpl6_32(); + } + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl6(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6_32(); + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } } - loaded_pix = getbpl8_32(); loaded_pixs[0] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix1; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6(); + loaded_pix = getbpl6_32(); + } + if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { + copybpl6(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6_32(); + } + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } + } + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { @@ -22278,16 +62979,89 @@ static void lts_aga_fm1_n0_p8_ihires_dhires(void) } last_bpl_pix = pix2; } - shiftbpl8(); - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8(); + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6(); + loaded_pix = getbpl6_32(); + } + if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { + copybpl6(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6_32(); + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } } - loaded_pix = getbpl8_32(); loaded_pixs[2] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix3; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6(); + loaded_pix = getbpl6_32(); + } + if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { + copybpl6(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6_32(); + } + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } + } + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } dtbuf[h][0] = dpix_val0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } + dtbuf[h][1] = dpix_val1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } dtbuf[h][2] = dpix_val2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + } + } + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -22296,6 +63070,14 @@ static void lts_aga_fm1_n0_p8_ihires_dhires(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -22304,6 +63086,14 @@ static void lts_aga_fm1_n0_p8_ihires_dhires(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -22327,11 +63117,11 @@ static void lts_aga_fm1_n0_p8_ihires_dhires(void) denise_cck++; } } -static void lts_aga_fm1_n0_p8_ihires_dhires_filtered(void) +static void lts_aga_fm1_n0_p6_ilores_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm1_n1_p8_ihires_dhires(void) +static void lts_aga_fm1_n1_p6_ilores_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -22344,6 +63134,7 @@ static void lts_aga_fm1_n1_p8_ihires_dhires(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -22355,16 +63146,83 @@ static void lts_aga_fm1_n1_p8_ihires_dhires(void) } last_bpl_pix = pix0; } - shiftbpl8(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e(); + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6e(); + loaded_pix = getbpl6_32(); } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o(); + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl6o(); + loaded_pix = getbpl6_32(); + } + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl6e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6_32(); + } + if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { + copybpl6o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl6_32(); + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } } - loaded_pix = getbpl8_32(); loaded_pixs[0] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix1; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6e(); + loaded_pix = getbpl6_32(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl6o(); + loaded_pix = getbpl6_32(); + } + if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { + copybpl6e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6_32(); + } + if (bpldat_copy[1] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) { + copybpl6o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl6_32(); + } + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } + } + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { @@ -22376,19 +63234,111 @@ static void lts_aga_fm1_n1_p8_ihires_dhires(void) } last_bpl_pix = pix2; } - shiftbpl8(); - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e(); + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6e(); + loaded_pix = getbpl6_32(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl6o(); + loaded_pix = getbpl6_32(); + } + if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { + copybpl6e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6_32(); + } + if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) { + copybpl6o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl6_32(); + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix3; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6e(); + loaded_pix = getbpl6_32(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl6o(); + loaded_pix = getbpl6_32(); + } + if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { + copybpl6e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6_32(); } - if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o(); + if (bpldat_copy[1] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[1]) { + copybpl6o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl6_32(); } - loaded_pix = getbpl8_32(); - loaded_pixs[2] = loaded_pix; - internal_pixel_cnt += 2; + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } + } + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } dtbuf[h][0] = dpix_val0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } + dtbuf[h][1] = dpix_val1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } dtbuf[h][2] = dpix_val2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + } + } + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -22397,6 +63347,14 @@ static void lts_aga_fm1_n1_p8_ihires_dhires(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -22405,6 +63363,14 @@ static void lts_aga_fm1_n1_p8_ihires_dhires(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -22428,11 +63394,11 @@ static void lts_aga_fm1_n1_p8_ihires_dhires(void) denise_cck++; } } -static void lts_aga_fm1_n1_p8_ihires_dhires_filtered(void) +static void lts_aga_fm1_n1_p6_ilores_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm1_dpf0_p8_ihires_dhires(void) +static void lts_aga_fm1_dpf0_p6_ilores_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -22445,6 +63411,7 @@ static void lts_aga_fm1_dpf0_p8_ihires_dhires(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -22461,13 +63428,66 @@ static void lts_aga_fm1_dpf0_p8_ihires_dhires(void) } last_bpl_pix = pix0; } - shiftbpl8(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8(); + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6(); + loaded_pix = getbpl6_32(); + } + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl6(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6_32(); + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } } - loaded_pix = getbpl8_32(); loaded_pixs[0] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + uae_u8 val1 = dpf_lookup[pix1]; + if (dpf_lookup_no[pix1]) { + val1 += dblpfofs[bpldualpf2of]; + } + val1 ^= bplcon4_denise_xor_val; + dpix_val1 = denise_colors.acolors[val1]; + } + last_bpl_pix = pix1; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6(); + loaded_pix = getbpl6_32(); + } + if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { + copybpl6(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6_32(); + } + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } + } + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { @@ -22484,16 +63504,94 @@ static void lts_aga_fm1_dpf0_p8_ihires_dhires(void) } last_bpl_pix = pix2; } - shiftbpl8(); - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8(); + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6(); + loaded_pix = getbpl6_32(); + } + if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { + copybpl6(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6_32(); + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } } - loaded_pix = getbpl8_32(); loaded_pixs[2] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + uae_u8 val3 = dpf_lookup[pix3]; + if (dpf_lookup_no[pix3]) { + val3 += dblpfofs[bpldualpf2of]; + } + val3 ^= bplcon4_denise_xor_val; + dpix_val3 = denise_colors.acolors[val3]; + } + last_bpl_pix = pix3; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6(); + loaded_pix = getbpl6_32(); + } + if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { + copybpl6(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6_32(); + } + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } + } + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } dtbuf[h][0] = dpix_val0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } + dtbuf[h][1] = dpix_val1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } dtbuf[h][2] = dpix_val2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + } + } + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -22502,6 +63600,14 @@ static void lts_aga_fm1_dpf0_p8_ihires_dhires(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -22510,6 +63616,14 @@ static void lts_aga_fm1_dpf0_p8_ihires_dhires(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -22533,11 +63647,11 @@ static void lts_aga_fm1_dpf0_p8_ihires_dhires(void) denise_cck++; } } -static void lts_aga_fm1_dpf0_p8_ihires_dhires_filtered(void) +static void lts_aga_fm1_dpf0_p6_ilores_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm1_dpf1_p8_ihires_dhires(void) +static void lts_aga_fm1_dpf1_p6_ilores_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -22550,6 +63664,7 @@ static void lts_aga_fm1_dpf1_p8_ihires_dhires(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -22566,16 +63681,88 @@ static void lts_aga_fm1_dpf1_p8_ihires_dhires(void) } last_bpl_pix = pix0; } - shiftbpl8(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e(); + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6e(); + loaded_pix = getbpl6_32(); } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o(); + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl6o(); + loaded_pix = getbpl6_32(); + } + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl6e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6_32(); + } + if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { + copybpl6o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl6_32(); + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } } - loaded_pix = getbpl8_32(); loaded_pixs[0] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + uae_u8 val1 = dpf_lookup[pix1]; + if (dpf_lookup_no[pix1]) { + val1 += dblpfofs[bpldualpf2of]; + } + val1 ^= bplcon4_denise_xor_val; + dpix_val1 = denise_colors.acolors[val1]; + } + last_bpl_pix = pix1; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6e(); + loaded_pix = getbpl6_32(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl6o(); + loaded_pix = getbpl6_32(); + } + if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { + copybpl6e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6_32(); + } + if (bpldat_copy[1] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) { + copybpl6o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl6_32(); + } + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } + } + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { @@ -22592,19 +63779,116 @@ static void lts_aga_fm1_dpf1_p8_ihires_dhires(void) } last_bpl_pix = pix2; } - shiftbpl8(); - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e(); + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6e(); + loaded_pix = getbpl6_32(); } - if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o(); + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl6o(); + loaded_pix = getbpl6_32(); + } + if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { + copybpl6e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6_32(); + } + if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) { + copybpl6o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl6_32(); + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } } - loaded_pix = getbpl8_32(); loaded_pixs[2] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + uae_u8 val3 = dpf_lookup[pix3]; + if (dpf_lookup_no[pix3]) { + val3 += dblpfofs[bpldualpf2of]; + } + val3 ^= bplcon4_denise_xor_val; + dpix_val3 = denise_colors.acolors[val3]; + } + last_bpl_pix = pix3; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6e(); + loaded_pix = getbpl6_32(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl6o(); + loaded_pix = getbpl6_32(); + } + if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { + copybpl6e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6_32(); + } + if (bpldat_copy[1] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[1]) { + copybpl6o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl6_32(); + } + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } + } + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } dtbuf[h][0] = dpix_val0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } + dtbuf[h][1] = dpix_val1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } dtbuf[h][2] = dpix_val2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + } + } + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -22613,6 +63897,14 @@ static void lts_aga_fm1_dpf1_p8_ihires_dhires(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -22621,6 +63913,14 @@ static void lts_aga_fm1_dpf1_p8_ihires_dhires(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -22644,27 +63944,11 @@ static void lts_aga_fm1_dpf1_p8_ihires_dhires(void) denise_cck++; } } -static void lts_aga_fm1_dpf1_p8_ihires_dhires_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb0_p8_ihires_dhires(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb0_p8_ihires_dhires_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb1_p8_ihires_dhires(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb1_p8_ihires_dhires_filtered(void) +static void lts_aga_fm1_dpf1_p6_ilores_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm1_ham0_p8_ihires_dhires(void) +static void lts_aga_fm1_ehb0_p6_ilores_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -22673,28 +63957,89 @@ static void lts_aga_fm1_ham0_p8_ihires_dhires(void) if (h) { denise_hcounter_next = denise_hcounter_new; } - int cnt = denise_hcounter << 2; - int cnt_next = denise_hcounter_next << 2; - int cmp = denise_hcounter_cmp << 2; - if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; - uae_u8 pix0 = 0; - uae_u32 dpix_val0 = BLANK_COLOR; + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + pix0 ^= bplcon4_denise_xor_val; + if (!(pix0 & 0x20)) { + dpix_val0 = denise_colors.acolors[pix0]; + } else { + uae_u32 v = (denise_colors.color_regs_aga[pix0 & 0x1f] >> 1) & 0x7f7f7f; + dpix_val0 = CONVERT_RGB(v); + } + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6(); + loaded_pix = getbpl6_32(); + } + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl6(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6_32(); + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { - dpix_val0 = bordercolor; + dpix_val1 = bordercolor; if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = decode_ham_pixel_aga(pix0); + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + pix1 ^= bplcon4_denise_xor_val; + if (!(pix1 & 0x20)) { + dpix_val1 = denise_colors.acolors[pix1]; + } else { + uae_u32 v = (denise_colors.color_regs_aga[pix1 & 0x1f] >> 1) & 0x7f7f7f; + dpix_val1 = CONVERT_RGB(v); + } } - last_bpl_pix = pix0; + last_bpl_pix = pix1; } - shiftbpl8(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8(); + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6(); + loaded_pix = getbpl6_32(); } - loaded_pix = getbpl8_32(); - loaded_pixs[0] = loaded_pix; - internal_pixel_cnt += 2; + if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { + copybpl6(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6_32(); + } + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } + } + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { @@ -22702,20 +64047,105 @@ static void lts_aga_fm1_ham0_p8_ihires_dhires(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - dpix_val2 = decode_ham_pixel_aga(pix2); + pix2 ^= bplcon4_denise_xor_val; + if (!(pix2 & 0x20)) { + dpix_val2 = denise_colors.acolors[pix2]; + } else { + uae_u32 v = (denise_colors.color_regs_aga[pix2 & 0x1f] >> 1) & 0x7f7f7f; + dpix_val2 = CONVERT_RGB(v); + } } last_bpl_pix = pix2; } - shiftbpl8(); - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8(); + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6(); + loaded_pix = getbpl6_32(); + } + if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { + copybpl6(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6_32(); + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } } - loaded_pix = getbpl8_32(); loaded_pixs[2] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + pix3 ^= bplcon4_denise_xor_val; + if (!(pix3 & 0x20)) { + dpix_val3 = denise_colors.acolors[pix3]; + } else { + uae_u32 v = (denise_colors.color_regs_aga[pix3 & 0x1f] >> 1) & 0x7f7f7f; + dpix_val3 = CONVERT_RGB(v); + } + } + last_bpl_pix = pix3; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6(); + loaded_pix = getbpl6_32(); + } + if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { + copybpl6(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6_32(); + } + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } + } + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } dtbuf[h][0] = dpix_val0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } + dtbuf[h][1] = dpix_val1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } dtbuf[h][2] = dpix_val2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + } + } + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -22724,6 +64154,14 @@ static void lts_aga_fm1_ham0_p8_ihires_dhires(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -22732,6 +64170,14 @@ static void lts_aga_fm1_ham0_p8_ihires_dhires(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -22755,11 +64201,11 @@ static void lts_aga_fm1_ham0_p8_ihires_dhires(void) denise_cck++; } } -static void lts_aga_fm1_ham0_p8_ihires_dhires_filtered(void) +static void lts_aga_fm1_ehb0_p6_ilores_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm1_ham1_p8_ihires_dhires(void) +static void lts_aga_fm1_ehb1_p6_ilores_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -22772,6 +64218,7 @@ static void lts_aga_fm1_ham1_p8_ihires_dhires(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -22779,20 +64226,99 @@ static void lts_aga_fm1_ham1_p8_ihires_dhires(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - dpix_val0 = decode_ham_pixel_aga(pix0); + pix0 ^= bplcon4_denise_xor_val; + if (!(pix0 & 0x20)) { + dpix_val0 = denise_colors.acolors[pix0]; + } else { + uae_u32 v = (denise_colors.color_regs_aga[pix0 & 0x1f] >> 1) & 0x7f7f7f; + dpix_val0 = CONVERT_RGB(v); + } } last_bpl_pix = pix0; } - shiftbpl8(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e(); + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6e(); + loaded_pix = getbpl6_32(); } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o(); + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl6o(); + loaded_pix = getbpl6_32(); + } + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl6e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6_32(); + } + if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { + copybpl6o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl6_32(); + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } } - loaded_pix = getbpl8_32(); loaded_pixs[0] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + pix1 ^= bplcon4_denise_xor_val; + if (!(pix1 & 0x20)) { + dpix_val1 = denise_colors.acolors[pix1]; + } else { + uae_u32 v = (denise_colors.color_regs_aga[pix1 & 0x1f] >> 1) & 0x7f7f7f; + dpix_val1 = CONVERT_RGB(v); + } + } + last_bpl_pix = pix1; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6e(); + loaded_pix = getbpl6_32(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl6o(); + loaded_pix = getbpl6_32(); + } + if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { + copybpl6e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6_32(); + } + if (bpldat_copy[1] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) { + copybpl6o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl6_32(); + } + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } + } + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { @@ -22800,23 +64326,127 @@ static void lts_aga_fm1_ham1_p8_ihires_dhires(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - dpix_val2 = decode_ham_pixel_aga(pix2); + pix2 ^= bplcon4_denise_xor_val; + if (!(pix2 & 0x20)) { + dpix_val2 = denise_colors.acolors[pix2]; + } else { + uae_u32 v = (denise_colors.color_regs_aga[pix2 & 0x1f] >> 1) & 0x7f7f7f; + dpix_val2 = CONVERT_RGB(v); + } } last_bpl_pix = pix2; } - shiftbpl8(); - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e(); + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6e(); + loaded_pix = getbpl6_32(); } - if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o(); + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl6o(); + loaded_pix = getbpl6_32(); + } + if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { + copybpl6e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6_32(); + } + if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) { + copybpl6o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl6_32(); + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } } - loaded_pix = getbpl8_32(); loaded_pixs[2] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + pix3 ^= bplcon4_denise_xor_val; + if (!(pix3 & 0x20)) { + dpix_val3 = denise_colors.acolors[pix3]; + } else { + uae_u32 v = (denise_colors.color_regs_aga[pix3 & 0x1f] >> 1) & 0x7f7f7f; + dpix_val3 = CONVERT_RGB(v); + } + } + last_bpl_pix = pix3; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6e(); + loaded_pix = getbpl6_32(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl6o(); + loaded_pix = getbpl6_32(); + } + if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { + copybpl6e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6_32(); + } + if (bpldat_copy[1] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[1]) { + copybpl6o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl6_32(); + } + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } + } + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } dtbuf[h][0] = dpix_val0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } + dtbuf[h][1] = dpix_val1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } dtbuf[h][2] = dpix_val2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + } + } + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -22825,6 +64455,14 @@ static void lts_aga_fm1_ham1_p8_ihires_dhires(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -22833,6 +64471,14 @@ static void lts_aga_fm1_ham1_p8_ihires_dhires(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -22856,27 +64502,11 @@ static void lts_aga_fm1_ham1_p8_ihires_dhires(void) denise_cck++; } } -static void lts_aga_fm1_ham1_p8_ihires_dhires_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb0_p8_ihires_dhires(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb0_p8_ihires_dhires_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb1_p8_ihires_dhires(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb1_p8_ihires_dhires_filtered(void) +static void lts_aga_fm1_ehb1_p6_ilores_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm1_n0_p2_ihires_dhires_spr(void) +static void lts_aga_fm1_ham0_p6_ilores_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -22897,15 +64527,21 @@ static void lts_aga_fm1_n0_p2_ihires_dhires_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + dpix_val0 = decode_ham_pixel_aga(pix0); } last_bpl_pix = pix0; } - shiftbpl2(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl2(); + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6(); + loaded_pix = getbpl6_32(); + } + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl6(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6_32(); } - loaded_pix = getbpl2_32(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -22915,34 +64551,106 @@ static void lts_aga_fm1_n0_p2_ihires_dhires_spr(void) } } loaded_pixs[0] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + dpix_val1 = decode_ham_pixel_aga(pix1); + } + last_bpl_pix = pix1; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6(); + loaded_pix = getbpl6_32(); + } + if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { + copybpl6(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6_32(); + } + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } + } + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 1; matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { - dpix_val2 = bordercolor; + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = decode_ham_pixel_aga(pix2); + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6(); + loaded_pix = getbpl6_32(); + } + if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { + copybpl6(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6_32(); + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + dpix_val3 = decode_ham_pixel_aga(pix3); } - last_bpl_pix = pix2; + last_bpl_pix = pix3; } - shiftbpl2(); - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl2(); + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6(); + loaded_pix = getbpl6_32(); } - loaded_pix = getbpl2_32(); - uae_u32 sv2 = 0; + if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { + copybpl6(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6_32(); + } + uae_u32 sv3 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; svt = denise_render_sprites_aga(denise_spr_add); if (!denise_sprite_blank_active && !sprites_hidden) { - sv2 = svt; + sv3 = svt; } } - loaded_pixs[2] = loaded_pix; - internal_pixel_cnt += 2; + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { uae_u32 spix0 = denise_render_sprites2(pix0, sv0); @@ -22951,6 +64659,13 @@ static void lts_aga_fm1_n0_p2_ihires_dhires_spr(void) } } dtbuf[h][0] = dpix_val0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } + dtbuf[h][1] = dpix_val1; if (sv2) { uae_u32 spix2 = denise_render_sprites2(pix2, sv2); if (spix2) { @@ -22958,6 +64673,13 @@ static void lts_aga_fm1_n0_p2_ihires_dhires_spr(void) } } dtbuf[h][2] = dpix_val2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + } + } + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -22966,6 +64688,14 @@ static void lts_aga_fm1_n0_p2_ihires_dhires_spr(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -22974,6 +64704,14 @@ static void lts_aga_fm1_n0_p2_ihires_dhires_spr(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -22997,11 +64735,11 @@ static void lts_aga_fm1_n0_p2_ihires_dhires_spr(void) denise_cck++; } } -static void lts_aga_fm1_n0_p2_ihires_dhires_spr_filtered(void) +static void lts_aga_fm1_ham0_p6_ilores_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm1_n1_p2_ihires_dhires_spr(void) +static void lts_aga_fm1_ham1_p6_ilores_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -23022,18 +64760,32 @@ static void lts_aga_fm1_n1_p2_ihires_dhires_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + dpix_val0 = decode_ham_pixel_aga(pix0); } last_bpl_pix = pix0; } - shiftbpl2(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl2e(); + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6e(); + loaded_pix = getbpl6_32(); } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl2o(); + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl6o(); + loaded_pix = getbpl6_32(); + } + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl6e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6_32(); + } + if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { + copybpl6o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl6_32(); } - loaded_pix = getbpl2_32(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -23043,7 +64795,51 @@ static void lts_aga_fm1_n1_p2_ihires_dhires_spr(void) } } loaded_pixs[0] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + dpix_val1 = decode_ham_pixel_aga(pix1); + } + last_bpl_pix = pix1; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6e(); + loaded_pix = getbpl6_32(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl6o(); + loaded_pix = getbpl6_32(); + } + if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { + copybpl6e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6_32(); + } + if (bpldat_copy[1] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) { + copybpl6o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl6_32(); + } + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } + } + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 1; matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; @@ -23052,18 +64848,32 @@ static void lts_aga_fm1_n1_p2_ihires_dhires_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + dpix_val2 = decode_ham_pixel_aga(pix2); } last_bpl_pix = pix2; } - shiftbpl2(); - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl2e(); + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6e(); + loaded_pix = getbpl6_32(); } - if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { - copybpl2o(); + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl6o(); + loaded_pix = getbpl6_32(); + } + if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { + copybpl6e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6_32(); + } + if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) { + copybpl6o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl6_32(); } - loaded_pix = getbpl2_32(); uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -23073,7 +64883,51 @@ static void lts_aga_fm1_n1_p2_ihires_dhires_spr(void) } } loaded_pixs[2] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + dpix_val3 = decode_ham_pixel_aga(pix3); + } + last_bpl_pix = pix3; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6e(); + loaded_pix = getbpl6_32(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl6o(); + loaded_pix = getbpl6_32(); + } + if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { + copybpl6e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6_32(); + } + if (bpldat_copy[1] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[1]) { + copybpl6o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl6_32(); + } + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } + } + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { uae_u32 spix0 = denise_render_sprites2(pix0, sv0); @@ -23082,6 +64936,13 @@ static void lts_aga_fm1_n1_p2_ihires_dhires_spr(void) } } dtbuf[h][0] = dpix_val0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } + dtbuf[h][1] = dpix_val1; if (sv2) { uae_u32 spix2 = denise_render_sprites2(pix2, sv2); if (spix2) { @@ -23089,6 +64950,13 @@ static void lts_aga_fm1_n1_p2_ihires_dhires_spr(void) } } dtbuf[h][2] = dpix_val2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + } + } + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -23097,6 +64965,14 @@ static void lts_aga_fm1_n1_p2_ihires_dhires_spr(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -23105,6 +64981,14 @@ static void lts_aga_fm1_n1_p2_ihires_dhires_spr(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -23128,11 +65012,11 @@ static void lts_aga_fm1_n1_p2_ihires_dhires_spr(void) denise_cck++; } } -static void lts_aga_fm1_n1_p2_ihires_dhires_spr_filtered(void) +static void lts_aga_fm1_ham1_p6_ilores_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm1_dpf0_p2_ihires_dhires_spr(void) +static void lts_aga_fm1_kehb0_p6_ilores_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -23153,20 +65037,22 @@ static void lts_aga_fm1_dpf0_p2_ihires_dhires_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; + pix0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[pix0 & 31]; } last_bpl_pix = pix0; } - shiftbpl2(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl2(); + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6(); + loaded_pix = getbpl6_32(); + } + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl6(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6_32(); } - loaded_pix = getbpl2_32(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -23176,7 +65062,41 @@ static void lts_aga_fm1_dpf0_p2_ihires_dhires_spr(void) } } loaded_pixs[0] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + pix1 ^= bplcon4_denise_xor_val; + dpix_val1 = denise_colors.acolors[pix1 & 31]; + } + last_bpl_pix = pix1; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6(); + loaded_pix = getbpl6_32(); + } + if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { + copybpl6(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6_32(); + } + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } + } + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 1; matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; @@ -23185,20 +65105,22 @@ static void lts_aga_fm1_dpf0_p2_ihires_dhires_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; + pix2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[pix2 & 31]; } last_bpl_pix = pix2; } - shiftbpl2(); - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl2(); + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6(); + loaded_pix = getbpl6_32(); + } + if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { + copybpl6(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6_32(); } - loaded_pix = getbpl2_32(); uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -23208,7 +65130,41 @@ static void lts_aga_fm1_dpf0_p2_ihires_dhires_spr(void) } } loaded_pixs[2] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + pix3 ^= bplcon4_denise_xor_val; + dpix_val3 = denise_colors.acolors[pix3 & 31]; + } + last_bpl_pix = pix3; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6(); + loaded_pix = getbpl6_32(); + } + if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { + copybpl6(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6_32(); + } + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } + } + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { uae_u32 spix0 = denise_render_sprites2(pix0, sv0); @@ -23217,6 +65173,13 @@ static void lts_aga_fm1_dpf0_p2_ihires_dhires_spr(void) } } dtbuf[h][0] = dpix_val0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } + dtbuf[h][1] = dpix_val1; if (sv2) { uae_u32 spix2 = denise_render_sprites2(pix2, sv2); if (spix2) { @@ -23224,6 +65187,13 @@ static void lts_aga_fm1_dpf0_p2_ihires_dhires_spr(void) } } dtbuf[h][2] = dpix_val2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + } + } + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -23232,6 +65202,14 @@ static void lts_aga_fm1_dpf0_p2_ihires_dhires_spr(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -23240,6 +65218,14 @@ static void lts_aga_fm1_dpf0_p2_ihires_dhires_spr(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -23263,11 +65249,11 @@ static void lts_aga_fm1_dpf0_p2_ihires_dhires_spr(void) denise_cck++; } } -static void lts_aga_fm1_dpf0_p2_ihires_dhires_spr_filtered(void) +static void lts_aga_fm1_kehb0_p6_ilores_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm1_dpf1_p2_ihires_dhires_spr(void) +static void lts_aga_fm1_kehb1_p6_ilores_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -23288,68 +65274,178 @@ static void lts_aga_fm1_dpf1_p2_ihires_dhires_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; + pix0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[pix0 & 31]; } last_bpl_pix = pix0; } - shiftbpl2(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl2e(); + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6e(); + loaded_pix = getbpl6_32(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl6o(); + loaded_pix = getbpl6_32(); + } + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl6e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6_32(); + } + if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { + copybpl6o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl6_32(); + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + pix1 ^= bplcon4_denise_xor_val; + dpix_val1 = denise_colors.acolors[pix1 & 31]; + } + last_bpl_pix = pix1; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6e(); + loaded_pix = getbpl6_32(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl6o(); + loaded_pix = getbpl6_32(); + } + if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { + copybpl6e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6_32(); + } + if (bpldat_copy[1] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) { + copybpl6o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl6_32(); + } + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } + } + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + pix2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[pix2 & 31]; + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6e(); + loaded_pix = getbpl6_32(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl6o(); + loaded_pix = getbpl6_32(); } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl2o(); + if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { + copybpl6e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6_32(); } - loaded_pix = getbpl2_32(); - uae_u32 sv0 = 0; + if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) { + copybpl6o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl6_32(); + } + uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; svt = denise_render_sprites_aga(denise_spr_add); if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; + sv2 = svt; } } - loaded_pixs[0] = loaded_pix; - internal_pixel_cnt += 2; - matchsprites_aga(cnt + 2); - uae_u8 pix2 = 0; - uae_u32 dpix_val2 = BLANK_COLOR; + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { - dpix_val2 = bordercolor; + dpix_val3 = bordercolor; if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + pix3 ^= bplcon4_denise_xor_val; + dpix_val3 = denise_colors.acolors[pix3 & 31]; } - last_bpl_pix = pix2; + last_bpl_pix = pix3; } - shiftbpl2(); - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl2e(); + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6e(); + loaded_pix = getbpl6_32(); } - if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { - copybpl2o(); + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl6o(); + loaded_pix = getbpl6_32(); } - loaded_pix = getbpl2_32(); - uae_u32 sv2 = 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] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[1]) { + copybpl6o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl6_32(); + } + uae_u32 sv3 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; svt = denise_render_sprites_aga(denise_spr_add); if (!denise_sprite_blank_active && !sprites_hidden) { - sv2 = svt; + sv3 = svt; } } - loaded_pixs[2] = loaded_pix; - internal_pixel_cnt += 2; + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { uae_u32 spix0 = denise_render_sprites2(pix0, sv0); @@ -23358,6 +65454,13 @@ static void lts_aga_fm1_dpf1_p2_ihires_dhires_spr(void) } } dtbuf[h][0] = dpix_val0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } + dtbuf[h][1] = dpix_val1; if (sv2) { uae_u32 spix2 = denise_render_sprites2(pix2, sv2); if (spix2) { @@ -23365,6 +65468,13 @@ static void lts_aga_fm1_dpf1_p2_ihires_dhires_spr(void) } } dtbuf[h][2] = dpix_val2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + } + } + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -23373,6 +65483,14 @@ static void lts_aga_fm1_dpf1_p2_ihires_dhires_spr(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -23381,6 +65499,14 @@ static void lts_aga_fm1_dpf1_p2_ihires_dhires_spr(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -23404,59 +65530,11 @@ static void lts_aga_fm1_dpf1_p2_ihires_dhires_spr(void) denise_cck++; } } -static void lts_aga_fm1_dpf1_p2_ihires_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb0_p2_ihires_dhires_spr(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb0_p2_ihires_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb1_p2_ihires_dhires_spr(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb1_p2_ihires_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_ham0_p2_ihires_dhires_spr(void) -{ - lts_null(); -} -static void lts_aga_fm1_ham0_p2_ihires_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_ham1_p2_ihires_dhires_spr(void) -{ - lts_null(); -} -static void lts_aga_fm1_ham1_p2_ihires_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb0_p2_ihires_dhires_spr(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb0_p2_ihires_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb1_p2_ihires_dhires_spr(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb1_p2_ihires_dhires_spr_filtered(void) +static void lts_aga_fm1_kehb1_p6_ilores_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm1_n0_p4_ihires_dhires_spr(void) +static void lts_aga_fm1_n0_p8_ilores_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -23481,11 +65559,17 @@ static void lts_aga_fm1_n0_p4_ihires_dhires_spr(void) } last_bpl_pix = pix0; } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4(); + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8(); + loaded_pix = getbpl8_32(); + } + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8_32(); } - loaded_pix = getbpl4_32(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -23495,7 +65579,40 @@ static void lts_aga_fm1_n0_p4_ihires_dhires_spr(void) } } loaded_pixs[0] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix1; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8(); + loaded_pix = getbpl8_32(); + } + if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8_32(); + } + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } + } + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 1; matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; @@ -23508,11 +65625,17 @@ static void lts_aga_fm1_n0_p4_ihires_dhires_spr(void) } last_bpl_pix = pix2; } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4(); + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8(); + loaded_pix = getbpl8_32(); + } + if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8_32(); } - loaded_pix = getbpl4_32(); uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -23522,7 +65645,40 @@ static void lts_aga_fm1_n0_p4_ihires_dhires_spr(void) } } loaded_pixs[2] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix3; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8(); + loaded_pix = getbpl8_32(); + } + if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8_32(); + } + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } + } + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { uae_u32 spix0 = denise_render_sprites2(pix0, sv0); @@ -23531,6 +65687,13 @@ static void lts_aga_fm1_n0_p4_ihires_dhires_spr(void) } } dtbuf[h][0] = dpix_val0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } + dtbuf[h][1] = dpix_val1; if (sv2) { uae_u32 spix2 = denise_render_sprites2(pix2, sv2); if (spix2) { @@ -23538,6 +65701,13 @@ static void lts_aga_fm1_n0_p4_ihires_dhires_spr(void) } } dtbuf[h][2] = dpix_val2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + } + } + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -23546,6 +65716,14 @@ static void lts_aga_fm1_n0_p4_ihires_dhires_spr(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -23554,6 +65732,14 @@ static void lts_aga_fm1_n0_p4_ihires_dhires_spr(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -23577,11 +65763,11 @@ static void lts_aga_fm1_n0_p4_ihires_dhires_spr(void) denise_cck++; } } -static void lts_aga_fm1_n0_p4_ihires_dhires_spr_filtered(void) +static void lts_aga_fm1_n0_p8_ilores_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm1_n1_p4_ihires_dhires_spr(void) +static void lts_aga_fm1_n1_p8_ilores_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -23606,14 +65792,28 @@ static void lts_aga_fm1_n1_p4_ihires_dhires_spr(void) } last_bpl_pix = pix0; } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4e(); + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8e(); + loaded_pix = getbpl8_32(); } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl4o(); + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl8o(); + loaded_pix = getbpl8_32(); + } + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8_32(); + } + if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { + copybpl8o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl8_32(); } - loaded_pix = getbpl4_32(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -23623,7 +65823,51 @@ static void lts_aga_fm1_n1_p4_ihires_dhires_spr(void) } } loaded_pixs[0] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix1; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8e(); + loaded_pix = getbpl8_32(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl8o(); + loaded_pix = getbpl8_32(); + } + if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8_32(); + } + if (bpldat_copy[1] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) { + copybpl8o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl8_32(); + } + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } + } + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 1; matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; @@ -23636,14 +65880,28 @@ static void lts_aga_fm1_n1_p4_ihires_dhires_spr(void) } last_bpl_pix = pix2; } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4e(); + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8e(); + loaded_pix = getbpl8_32(); } - if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { - copybpl4o(); + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl8o(); + loaded_pix = getbpl8_32(); + } + if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8_32(); + } + if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) { + copybpl8o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl8_32(); } - loaded_pix = getbpl4_32(); uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -23653,7 +65911,51 @@ static void lts_aga_fm1_n1_p4_ihires_dhires_spr(void) } } loaded_pixs[2] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix3; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8e(); + loaded_pix = getbpl8_32(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl8o(); + loaded_pix = getbpl8_32(); + } + if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8_32(); + } + if (bpldat_copy[1] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[1]) { + copybpl8o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl8_32(); + } + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } + } + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { uae_u32 spix0 = denise_render_sprites2(pix0, sv0); @@ -23662,6 +65964,13 @@ static void lts_aga_fm1_n1_p4_ihires_dhires_spr(void) } } dtbuf[h][0] = dpix_val0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } + dtbuf[h][1] = dpix_val1; if (sv2) { uae_u32 spix2 = denise_render_sprites2(pix2, sv2); if (spix2) { @@ -23669,6 +65978,13 @@ static void lts_aga_fm1_n1_p4_ihires_dhires_spr(void) } } dtbuf[h][2] = dpix_val2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + } + } + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -23677,6 +65993,14 @@ static void lts_aga_fm1_n1_p4_ihires_dhires_spr(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -23685,6 +66009,14 @@ static void lts_aga_fm1_n1_p4_ihires_dhires_spr(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -23708,11 +66040,11 @@ static void lts_aga_fm1_n1_p4_ihires_dhires_spr(void) denise_cck++; } } -static void lts_aga_fm1_n1_p4_ihires_dhires_spr_filtered(void) +static void lts_aga_fm1_n1_p8_ilores_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm1_dpf0_p4_ihires_dhires_spr(void) +static void lts_aga_fm1_dpf0_p8_ilores_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -23742,21 +66074,65 @@ static void lts_aga_fm1_dpf0_p4_ihires_dhires_spr(void) } last_bpl_pix = pix0; } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4(); + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8(); + loaded_pix = getbpl8_32(); + } + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8_32(); + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + uae_u8 val1 = dpf_lookup[pix1]; + if (dpf_lookup_no[pix1]) { + val1 += dblpfofs[bpldualpf2of]; + } + val1 ^= bplcon4_denise_xor_val; + dpix_val1 = denise_colors.acolors[val1]; + } + last_bpl_pix = pix1; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8(); + loaded_pix = getbpl8_32(); + } + if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8_32(); } - loaded_pix = getbpl4_32(); - uae_u32 sv0 = 0; + uae_u32 sv1 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; svt = denise_render_sprites_aga(denise_spr_add); if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; + sv1 = svt; } } - loaded_pixs[0] = loaded_pix; - internal_pixel_cnt += 2; + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 1; matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; @@ -23774,11 +66150,17 @@ static void lts_aga_fm1_dpf0_p4_ihires_dhires_spr(void) } last_bpl_pix = pix2; } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4(); + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8(); + loaded_pix = getbpl8_32(); + } + if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8_32(); } - loaded_pix = getbpl4_32(); uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -23788,7 +66170,45 @@ static void lts_aga_fm1_dpf0_p4_ihires_dhires_spr(void) } } loaded_pixs[2] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + uae_u8 val3 = dpf_lookup[pix3]; + if (dpf_lookup_no[pix3]) { + val3 += dblpfofs[bpldualpf2of]; + } + val3 ^= bplcon4_denise_xor_val; + dpix_val3 = denise_colors.acolors[val3]; + } + last_bpl_pix = pix3; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8(); + loaded_pix = getbpl8_32(); + } + if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8_32(); + } + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } + } + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { uae_u32 spix0 = denise_render_sprites2(pix0, sv0); @@ -23797,6 +66217,13 @@ static void lts_aga_fm1_dpf0_p4_ihires_dhires_spr(void) } } dtbuf[h][0] = dpix_val0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } + dtbuf[h][1] = dpix_val1; if (sv2) { uae_u32 spix2 = denise_render_sprites2(pix2, sv2); if (spix2) { @@ -23804,6 +66231,13 @@ static void lts_aga_fm1_dpf0_p4_ihires_dhires_spr(void) } } dtbuf[h][2] = dpix_val2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + } + } + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -23812,6 +66246,14 @@ static void lts_aga_fm1_dpf0_p4_ihires_dhires_spr(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -23820,6 +66262,14 @@ static void lts_aga_fm1_dpf0_p4_ihires_dhires_spr(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -23843,11 +66293,11 @@ static void lts_aga_fm1_dpf0_p4_ihires_dhires_spr(void) denise_cck++; } } -static void lts_aga_fm1_dpf0_p4_ihires_dhires_spr_filtered(void) +static void lts_aga_fm1_dpf0_p8_ilores_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm1_dpf1_p4_ihires_dhires_spr(void) +static void lts_aga_fm1_dpf1_p8_ilores_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -23877,14 +66327,28 @@ static void lts_aga_fm1_dpf1_p4_ihires_dhires_spr(void) } last_bpl_pix = pix0; } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4e(); + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8e(); + loaded_pix = getbpl8_32(); } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl4o(); + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl8o(); + loaded_pix = getbpl8_32(); + } + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8_32(); + } + if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { + copybpl8o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl8_32(); } - loaded_pix = getbpl4_32(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -23894,7 +66358,56 @@ static void lts_aga_fm1_dpf1_p4_ihires_dhires_spr(void) } } loaded_pixs[0] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + uae_u8 val1 = dpf_lookup[pix1]; + if (dpf_lookup_no[pix1]) { + val1 += dblpfofs[bpldualpf2of]; + } + val1 ^= bplcon4_denise_xor_val; + dpix_val1 = denise_colors.acolors[val1]; + } + last_bpl_pix = pix1; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8e(); + loaded_pix = getbpl8_32(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl8o(); + loaded_pix = getbpl8_32(); + } + if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8_32(); + } + if (bpldat_copy[1] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) { + copybpl8o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl8_32(); + } + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } + } + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 1; matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; @@ -23912,14 +66425,28 @@ static void lts_aga_fm1_dpf1_p4_ihires_dhires_spr(void) } last_bpl_pix = pix2; } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4e(); + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8e(); + loaded_pix = getbpl8_32(); } - if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { - copybpl4o(); + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl8o(); + loaded_pix = getbpl8_32(); + } + if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8_32(); + } + if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) { + copybpl8o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl8_32(); } - loaded_pix = getbpl4_32(); uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -23929,7 +66456,56 @@ static void lts_aga_fm1_dpf1_p4_ihires_dhires_spr(void) } } loaded_pixs[2] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + uae_u8 val3 = dpf_lookup[pix3]; + if (dpf_lookup_no[pix3]) { + val3 += dblpfofs[bpldualpf2of]; + } + val3 ^= bplcon4_denise_xor_val; + dpix_val3 = denise_colors.acolors[val3]; + } + last_bpl_pix = pix3; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8e(); + loaded_pix = getbpl8_32(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl8o(); + loaded_pix = getbpl8_32(); + } + if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8_32(); + } + if (bpldat_copy[1] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[1]) { + copybpl8o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl8_32(); + } + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } + } + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { uae_u32 spix0 = denise_render_sprites2(pix0, sv0); @@ -23938,6 +66514,13 @@ static void lts_aga_fm1_dpf1_p4_ihires_dhires_spr(void) } } dtbuf[h][0] = dpix_val0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } + dtbuf[h][1] = dpix_val1; if (sv2) { uae_u32 spix2 = denise_render_sprites2(pix2, sv2); if (spix2) { @@ -23945,6 +66528,13 @@ static void lts_aga_fm1_dpf1_p4_ihires_dhires_spr(void) } } dtbuf[h][2] = dpix_val2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + } + } + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -23953,6 +66543,14 @@ static void lts_aga_fm1_dpf1_p4_ihires_dhires_spr(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -23961,6 +66559,14 @@ static void lts_aga_fm1_dpf1_p4_ihires_dhires_spr(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -23984,59 +66590,11 @@ static void lts_aga_fm1_dpf1_p4_ihires_dhires_spr(void) denise_cck++; } } -static void lts_aga_fm1_dpf1_p4_ihires_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb0_p4_ihires_dhires_spr(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb0_p4_ihires_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb1_p4_ihires_dhires_spr(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb1_p4_ihires_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_ham0_p4_ihires_dhires_spr(void) -{ - lts_null(); -} -static void lts_aga_fm1_ham0_p4_ihires_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_ham1_p4_ihires_dhires_spr(void) -{ - lts_null(); -} -static void lts_aga_fm1_ham1_p4_ihires_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb0_p4_ihires_dhires_spr(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb0_p4_ihires_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb1_p4_ihires_dhires_spr(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb1_p4_ihires_dhires_spr_filtered(void) +static void lts_aga_fm1_dpf1_p8_ilores_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm1_n0_p6_ihires_dhires_spr(void) +static void lts_aga_fm1_ehb0_p8_ilores_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -24047,25 +66605,13 @@ 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; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix0; - } - shiftbpl6(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6(); } - loaded_pix = getbpl6_32(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -24074,25 +66620,28 @@ static void lts_aga_fm1_n0_p6_ihires_dhires_spr(void) sv0 = svt; } } - loaded_pixs[0] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } + } + internal_pixel_cnt += 1; matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix2; } - shiftbpl6(); - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6(); - } - loaded_pix = getbpl6_32(); uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -24101,8 +66650,22 @@ static void lts_aga_fm1_n0_p6_ihires_dhires_spr(void) sv2 = svt; } } - loaded_pixs[2] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } + } + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { uae_u32 spix0 = denise_render_sprites2(pix0, sv0); @@ -24111,6 +66674,13 @@ static void lts_aga_fm1_n0_p6_ihires_dhires_spr(void) } } dtbuf[h][0] = dpix_val0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } + dtbuf[h][1] = dpix_val1; if (sv2) { uae_u32 spix2 = denise_render_sprites2(pix2, sv2); if (spix2) { @@ -24118,6 +66688,13 @@ static void lts_aga_fm1_n0_p6_ihires_dhires_spr(void) } } dtbuf[h][2] = dpix_val2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + } + } + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -24126,6 +66703,14 @@ static void lts_aga_fm1_n0_p6_ihires_dhires_spr(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -24134,6 +66719,14 @@ static void lts_aga_fm1_n0_p6_ihires_dhires_spr(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -24157,11 +66750,11 @@ static void lts_aga_fm1_n0_p6_ihires_dhires_spr(void) denise_cck++; } } -static void lts_aga_fm1_n0_p6_ihires_dhires_spr_filtered(void) +static void lts_aga_fm1_ehb0_p8_ilores_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm1_n1_p6_ihires_dhires_spr(void) +static void lts_aga_fm1_ehb1_p8_ilores_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -24172,28 +66765,13 @@ 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; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix0; } - shiftbpl6(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6e(); - } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl6o(); - } - loaded_pix = getbpl6_32(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -24202,28 +66780,28 @@ static void lts_aga_fm1_n1_p6_ihires_dhires_spr(void) sv0 = svt; } } - loaded_pixs[0] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } + } + internal_pixel_cnt += 1; matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix2; } - shiftbpl6(); - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6e(); - } - if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { - copybpl6o(); - } - loaded_pix = getbpl6_32(); uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -24232,8 +66810,22 @@ static void lts_aga_fm1_n1_p6_ihires_dhires_spr(void) sv2 = svt; } } - loaded_pixs[2] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } + } + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { uae_u32 spix0 = denise_render_sprites2(pix0, sv0); @@ -24242,13 +66834,27 @@ static void lts_aga_fm1_n1_p6_ihires_dhires_spr(void) } } dtbuf[h][0] = dpix_val0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } + dtbuf[h][1] = dpix_val1; if (sv2) { uae_u32 spix2 = denise_render_sprites2(pix2, sv2); if (spix2) { dpix_val2 = denise_colors.acolors[spix2]; } } - dtbuf[h][2] = dpix_val2; + dtbuf[h][2] = dpix_val2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + } + } + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -24257,6 +66863,14 @@ static void lts_aga_fm1_n1_p6_ihires_dhires_spr(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -24265,6 +66879,14 @@ static void lts_aga_fm1_n1_p6_ihires_dhires_spr(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -24288,11 +66910,11 @@ static void lts_aga_fm1_n1_p6_ihires_dhires_spr(void) denise_cck++; } } -static void lts_aga_fm1_n1_p6_ihires_dhires_spr_filtered(void) +static void lts_aga_fm1_ehb1_p8_ilores_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm1_dpf0_p6_ihires_dhires_spr(void) +static void lts_aga_fm1_ham0_p8_ilores_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -24313,20 +66935,21 @@ static void lts_aga_fm1_dpf0_p6_ihires_dhires_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; + dpix_val0 = decode_ham_pixel_aga(pix0); } last_bpl_pix = pix0; } - shiftbpl6(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6(); + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8(); + loaded_pix = getbpl8_32(); + } + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8_32(); } - loaded_pix = getbpl6_32(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -24336,7 +66959,40 @@ static void lts_aga_fm1_dpf0_p6_ihires_dhires_spr(void) } } loaded_pixs[0] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + dpix_val1 = decode_ham_pixel_aga(pix1); + } + last_bpl_pix = pix1; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8(); + loaded_pix = getbpl8_32(); + } + if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8_32(); + } + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } + } + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 1; matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; @@ -24345,20 +67001,21 @@ static void lts_aga_fm1_dpf0_p6_ihires_dhires_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; + dpix_val2 = decode_ham_pixel_aga(pix2); } last_bpl_pix = pix2; } - shiftbpl6(); - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6(); + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8(); + loaded_pix = getbpl8_32(); + } + if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8_32(); } - loaded_pix = getbpl6_32(); uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -24368,7 +67025,40 @@ static void lts_aga_fm1_dpf0_p6_ihires_dhires_spr(void) } } loaded_pixs[2] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + dpix_val3 = decode_ham_pixel_aga(pix3); + } + last_bpl_pix = pix3; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8(); + loaded_pix = getbpl8_32(); + } + if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8_32(); + } + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } + } + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { uae_u32 spix0 = denise_render_sprites2(pix0, sv0); @@ -24377,6 +67067,13 @@ static void lts_aga_fm1_dpf0_p6_ihires_dhires_spr(void) } } dtbuf[h][0] = dpix_val0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } + dtbuf[h][1] = dpix_val1; if (sv2) { uae_u32 spix2 = denise_render_sprites2(pix2, sv2); if (spix2) { @@ -24384,6 +67081,13 @@ static void lts_aga_fm1_dpf0_p6_ihires_dhires_spr(void) } } dtbuf[h][2] = dpix_val2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + } + } + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -24392,6 +67096,14 @@ static void lts_aga_fm1_dpf0_p6_ihires_dhires_spr(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -24400,6 +67112,14 @@ static void lts_aga_fm1_dpf0_p6_ihires_dhires_spr(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -24423,11 +67143,11 @@ static void lts_aga_fm1_dpf0_p6_ihires_dhires_spr(void) denise_cck++; } } -static void lts_aga_fm1_dpf0_p6_ihires_dhires_spr_filtered(void) +static void lts_aga_fm1_ham0_p8_ilores_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm1_dpf1_p6_ihires_dhires_spr(void) +static void lts_aga_fm1_ham1_p8_ilores_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -24448,23 +67168,32 @@ static void lts_aga_fm1_dpf1_p6_ihires_dhires_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; + dpix_val0 = decode_ham_pixel_aga(pix0); } last_bpl_pix = pix0; } - shiftbpl6(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6e(); + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8e(); + loaded_pix = getbpl8_32(); } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl6o(); + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl8o(); + loaded_pix = getbpl8_32(); + } + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8_32(); + } + if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { + copybpl8o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl8_32(); } - loaded_pix = getbpl6_32(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -24474,7 +67203,51 @@ static void lts_aga_fm1_dpf1_p6_ihires_dhires_spr(void) } } loaded_pixs[0] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + dpix_val1 = decode_ham_pixel_aga(pix1); + } + last_bpl_pix = pix1; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8e(); + loaded_pix = getbpl8_32(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl8o(); + loaded_pix = getbpl8_32(); + } + if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8_32(); + } + if (bpldat_copy[1] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) { + copybpl8o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl8_32(); + } + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } + } + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 1; matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; @@ -24483,23 +67256,32 @@ static void lts_aga_fm1_dpf1_p6_ihires_dhires_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; + dpix_val2 = decode_ham_pixel_aga(pix2); } last_bpl_pix = pix2; } - shiftbpl6(); - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6e(); + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8e(); + loaded_pix = getbpl8_32(); } - if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { - copybpl6o(); + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl8o(); + loaded_pix = getbpl8_32(); + } + if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8_32(); + } + if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) { + copybpl8o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl8_32(); } - loaded_pix = getbpl6_32(); uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -24509,7 +67291,51 @@ static void lts_aga_fm1_dpf1_p6_ihires_dhires_spr(void) } } loaded_pixs[2] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + dpix_val3 = decode_ham_pixel_aga(pix3); + } + last_bpl_pix = pix3; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8e(); + loaded_pix = getbpl8_32(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl8o(); + loaded_pix = getbpl8_32(); + } + if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8_32(); + } + if (bpldat_copy[1] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[1]) { + copybpl8o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl8_32(); + } + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } + } + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { uae_u32 spix0 = denise_render_sprites2(pix0, sv0); @@ -24518,6 +67344,13 @@ static void lts_aga_fm1_dpf1_p6_ihires_dhires_spr(void) } } dtbuf[h][0] = dpix_val0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } + dtbuf[h][1] = dpix_val1; if (sv2) { uae_u32 spix2 = denise_render_sprites2(pix2, sv2); if (spix2) { @@ -24525,6 +67358,13 @@ static void lts_aga_fm1_dpf1_p6_ihires_dhires_spr(void) } } dtbuf[h][2] = dpix_val2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + } + } + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -24533,6 +67373,14 @@ static void lts_aga_fm1_dpf1_p6_ihires_dhires_spr(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -24541,6 +67389,14 @@ static void lts_aga_fm1_dpf1_p6_ihires_dhires_spr(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -24564,11 +67420,11 @@ static void lts_aga_fm1_dpf1_p6_ihires_dhires_spr(void) denise_cck++; } } -static void lts_aga_fm1_dpf1_p6_ihires_dhires_spr_filtered(void) +static void lts_aga_fm1_ham1_p8_ilores_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm1_ehb0_p6_ihires_dhires_spr(void) +static void lts_aga_fm1_kehb0_p8_ilores_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -24579,31 +67435,13 @@ 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; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - pix0 ^= bplcon4_denise_xor_val; - if (!(pix0 & 0x20)) { - dpix_val0 = denise_colors.acolors[pix0]; - } else { - uae_u32 v = (denise_colors.color_regs_aga[pix0 & 0x1f] >> 1) & 0x7f7f7f; - dpix_val0 = CONVERT_RGB(v); - } - } - last_bpl_pix = pix0; - } - shiftbpl6(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6(); } - loaded_pix = getbpl6_32(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -24612,31 +67450,28 @@ static void lts_aga_fm1_ehb0_p6_ihires_dhires_spr(void) sv0 = svt; } } - loaded_pixs[0] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } + } + internal_pixel_cnt += 1; matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - pix2 ^= bplcon4_denise_xor_val; - if (!(pix2 & 0x20)) { - dpix_val2 = denise_colors.acolors[pix2]; - } else { - uae_u32 v = (denise_colors.color_regs_aga[pix2 & 0x1f] >> 1) & 0x7f7f7f; - dpix_val2 = CONVERT_RGB(v); - } - } - last_bpl_pix = pix2; } - shiftbpl6(); - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6(); - } - loaded_pix = getbpl6_32(); uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -24645,8 +67480,22 @@ static void lts_aga_fm1_ehb0_p6_ihires_dhires_spr(void) sv2 = svt; } } - loaded_pixs[2] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } + } + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { uae_u32 spix0 = denise_render_sprites2(pix0, sv0); @@ -24655,6 +67504,13 @@ static void lts_aga_fm1_ehb0_p6_ihires_dhires_spr(void) } } dtbuf[h][0] = dpix_val0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } + dtbuf[h][1] = dpix_val1; if (sv2) { uae_u32 spix2 = denise_render_sprites2(pix2, sv2); if (spix2) { @@ -24662,6 +67518,13 @@ static void lts_aga_fm1_ehb0_p6_ihires_dhires_spr(void) } } dtbuf[h][2] = dpix_val2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + } + } + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -24670,6 +67533,14 @@ static void lts_aga_fm1_ehb0_p6_ihires_dhires_spr(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -24678,6 +67549,14 @@ static void lts_aga_fm1_ehb0_p6_ihires_dhires_spr(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -24701,11 +67580,11 @@ static void lts_aga_fm1_ehb0_p6_ihires_dhires_spr(void) denise_cck++; } } -static void lts_aga_fm1_ehb0_p6_ihires_dhires_spr_filtered(void) +static void lts_aga_fm1_kehb0_p8_ilores_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm1_ehb1_p6_ihires_dhires_spr(void) +static void lts_aga_fm1_kehb1_p8_ilores_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -24716,34 +67595,13 @@ 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; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - pix0 ^= bplcon4_denise_xor_val; - if (!(pix0 & 0x20)) { - dpix_val0 = denise_colors.acolors[pix0]; - } else { - uae_u32 v = (denise_colors.color_regs_aga[pix0 & 0x1f] >> 1) & 0x7f7f7f; - dpix_val0 = CONVERT_RGB(v); - } - } - last_bpl_pix = pix0; - } - shiftbpl6(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6e(); - } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl6o(); } - loaded_pix = getbpl6_32(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -24752,34 +67610,28 @@ static void lts_aga_fm1_ehb1_p6_ihires_dhires_spr(void) sv0 = svt; } } - loaded_pixs[0] = loaded_pix; - internal_pixel_cnt += 2; - matchsprites_aga(cnt + 2); - uae_u8 pix2 = 0; - uae_u32 dpix_val2 = BLANK_COLOR; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { - dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - pix2 ^= bplcon4_denise_xor_val; - if (!(pix2 & 0x20)) { - dpix_val2 = denise_colors.acolors[pix2]; - } else { - uae_u32 v = (denise_colors.color_regs_aga[pix2 & 0x1f] >> 1) & 0x7f7f7f; - dpix_val2 = CONVERT_RGB(v); - } + dpix_val1 = bordercolor; + } + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; } - last_bpl_pix = pix2; - } - shiftbpl6(); - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6e(); } - if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { - copybpl6o(); + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; } - loaded_pix = getbpl6_32(); uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -24788,8 +67640,22 @@ static void lts_aga_fm1_ehb1_p6_ihires_dhires_spr(void) sv2 = svt; } } - loaded_pixs[2] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } + } + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { uae_u32 spix0 = denise_render_sprites2(pix0, sv0); @@ -24798,6 +67664,13 @@ static void lts_aga_fm1_ehb1_p6_ihires_dhires_spr(void) } } dtbuf[h][0] = dpix_val0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } + dtbuf[h][1] = dpix_val1; if (sv2) { uae_u32 spix2 = denise_render_sprites2(pix2, sv2); if (spix2) { @@ -24805,6 +67678,13 @@ static void lts_aga_fm1_ehb1_p6_ihires_dhires_spr(void) } } dtbuf[h][2] = dpix_val2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + } + } + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -24813,6 +67693,14 @@ static void lts_aga_fm1_ehb1_p6_ihires_dhires_spr(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -24821,6 +67709,14 @@ static void lts_aga_fm1_ehb1_p6_ihires_dhires_spr(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -24844,11 +67740,11 @@ static void lts_aga_fm1_ehb1_p6_ihires_dhires_spr(void) denise_cck++; } } -static void lts_aga_fm1_ehb1_p6_ihires_dhires_spr_filtered(void) +static void lts_aga_fm1_kehb1_p8_ilores_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm1_ham0_p6_ihires_dhires_spr(void) +static void lts_aga_fm1_n0_p2_ihires_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -24861,7 +67757,6 @@ static void lts_aga_fm1_ham0_p6_ihires_dhires_spr(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -24869,26 +67764,47 @@ static void lts_aga_fm1_ham0_p6_ihires_dhires_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - dpix_val0 = decode_ham_pixel_aga(pix0); + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix0; } - shiftbpl6(); + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl2(); + loaded_pix = getbpl2_32(); + } if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6(); + copybpl2(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl2_32(); } - loaded_pix = getbpl6_32(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; } + last_bpl_pix = pix1; } - loaded_pixs[0] = loaded_pix; - internal_pixel_cnt += 2; - matchsprites_aga(cnt + 2); + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl2(); + loaded_pix = getbpl2_32(); + } + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl2(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl2_32(); + } + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { @@ -24896,40 +67812,52 @@ static void lts_aga_fm1_ham0_p6_ihires_dhires_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - dpix_val2 = decode_ham_pixel_aga(pix2); + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix2; } - shiftbpl6(); + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl2(); + loaded_pix = getbpl2_32(); + } if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6(); + copybpl2(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl2_32(); } - loaded_pix = getbpl6_32(); - uae_u32 sv2 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv2 = svt; + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; } + last_bpl_pix = pix3; } - loaded_pixs[2] = loaded_pix; - internal_pixel_cnt += 2; + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl2(); + loaded_pix = getbpl2_32(); + } + if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { + copybpl2(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl2_32(); + } + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - } - } dtbuf[h][0] = dpix_val0; - if (sv2) { - uae_u32 spix2 = denise_render_sprites2(pix2, sv2); - if (spix2) { - dpix_val2 = denise_colors.acolors[spix2]; - } - } + dtbuf[h][1] = dpix_val1; dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -24938,6 +67866,14 @@ static void lts_aga_fm1_ham0_p6_ihires_dhires_spr(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -24946,6 +67882,14 @@ static void lts_aga_fm1_ham0_p6_ihires_dhires_spr(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -24969,11 +67913,11 @@ static void lts_aga_fm1_ham0_p6_ihires_dhires_spr(void) denise_cck++; } } -static void lts_aga_fm1_ham0_p6_ihires_dhires_spr_filtered(void) +static void lts_aga_fm1_n0_p2_ihires_dshres_filtered(void) { lts_null(); } -static void lts_aga_fm1_ham1_p6_ihires_dhires_spr(void) +static void lts_aga_fm1_n1_p2_ihires_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -24986,7 +67930,6 @@ static void lts_aga_fm1_ham1_p6_ihires_dhires_spr(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -24994,29 +67937,69 @@ static void lts_aga_fm1_ham1_p6_ihires_dhires_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - dpix_val0 = decode_ham_pixel_aga(pix0); + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix0; } - shiftbpl6(); + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl2e(); + loaded_pix = getbpl2_32(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl2o(); + loaded_pix = getbpl2_32(); + } if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6e(); + copybpl2e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl2_32(); } if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl6o(); + copybpl2o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl2_32(); } - loaded_pix = getbpl6_32(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; } + last_bpl_pix = pix1; } - loaded_pixs[0] = loaded_pix; - internal_pixel_cnt += 2; - matchsprites_aga(cnt + 2); + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl2e(); + loaded_pix = getbpl2_32(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl2o(); + loaded_pix = getbpl2_32(); + } + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl2e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl2_32(); + } + if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { + copybpl2o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl2_32(); + } + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { @@ -25024,43 +68007,74 @@ static void lts_aga_fm1_ham1_p6_ihires_dhires_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - dpix_val2 = decode_ham_pixel_aga(pix2); + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix2; } - shiftbpl6(); + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl2e(); + loaded_pix = getbpl2_32(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl2o(); + loaded_pix = getbpl2_32(); + } if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6e(); + copybpl2e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl2_32(); } if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { - copybpl6o(); + copybpl2o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl2_32(); } - loaded_pix = getbpl6_32(); - uae_u32 sv2 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv2 = svt; + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; } + last_bpl_pix = pix3; } - loaded_pixs[2] = loaded_pix; - internal_pixel_cnt += 2; + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl2e(); + loaded_pix = getbpl2_32(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl2o(); + loaded_pix = getbpl2_32(); + } + if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { + copybpl2e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl2_32(); + } + if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) { + copybpl2o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl2_32(); + } + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - } - } dtbuf[h][0] = dpix_val0; - if (sv2) { - uae_u32 spix2 = denise_render_sprites2(pix2, sv2); - if (spix2) { - dpix_val2 = denise_colors.acolors[spix2]; - } - } + dtbuf[h][1] = dpix_val1; dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -25069,6 +68083,14 @@ static void lts_aga_fm1_ham1_p6_ihires_dhires_spr(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -25077,6 +68099,14 @@ static void lts_aga_fm1_ham1_p6_ihires_dhires_spr(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -25100,11 +68130,11 @@ static void lts_aga_fm1_ham1_p6_ihires_dhires_spr(void) denise_cck++; } } -static void lts_aga_fm1_ham1_p6_ihires_dhires_spr_filtered(void) +static void lts_aga_fm1_n1_p2_ihires_dshres_filtered(void) { lts_null(); } -static void lts_aga_fm1_kehb0_p6_ihires_dhires_spr(void) +static void lts_aga_fm1_dpf0_p2_ihires_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -25117,7 +68147,6 @@ static void lts_aga_fm1_kehb0_p6_ihires_dhires_spr(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -25125,27 +68154,57 @@ static void lts_aga_fm1_kehb0_p6_ihires_dhires_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - pix0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[pix0 & 31]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; } last_bpl_pix = pix0; } - shiftbpl6(); + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl2(); + loaded_pix = getbpl2_32(); + } if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6(); + copybpl2(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl2_32(); } - loaded_pix = getbpl6_32(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + uae_u8 val1 = dpf_lookup[pix1]; + if (dpf_lookup_no[pix1]) { + val1 += dblpfofs[bpldualpf2of]; + } + val1 ^= bplcon4_denise_xor_val; + dpix_val1 = denise_colors.acolors[val1]; } + last_bpl_pix = pix1; } - loaded_pixs[0] = loaded_pix; - internal_pixel_cnt += 2; - matchsprites_aga(cnt + 2); + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl2(); + loaded_pix = getbpl2_32(); + } + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl2(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl2_32(); + } + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { @@ -25153,41 +68212,62 @@ static void lts_aga_fm1_kehb0_p6_ihires_dhires_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - pix2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[pix2 & 31]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; } last_bpl_pix = pix2; } - shiftbpl6(); - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6(); + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl2(); + loaded_pix = getbpl2_32(); } - loaded_pix = getbpl6_32(); - uae_u32 sv2 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv2 = svt; - } + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl2(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl2_32(); } loaded_pixs[2] = loaded_pix; - internal_pixel_cnt += 2; - if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + uae_u8 val3 = dpf_lookup[pix3]; + if (dpf_lookup_no[pix3]) { + val3 += dblpfofs[bpldualpf2of]; } + val3 ^= bplcon4_denise_xor_val; + dpix_val3 = denise_colors.acolors[val3]; } + last_bpl_pix = pix3; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl2(); + loaded_pix = getbpl2_32(); + } + if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { + copybpl2(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl2_32(); + } + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 1; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; - if (sv2) { - uae_u32 spix2 = denise_render_sprites2(pix2, sv2); - if (spix2) { - dpix_val2 = denise_colors.acolors[spix2]; - } - } + dtbuf[h][1] = dpix_val1; dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -25196,6 +68276,14 @@ static void lts_aga_fm1_kehb0_p6_ihires_dhires_spr(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -25204,6 +68292,14 @@ static void lts_aga_fm1_kehb0_p6_ihires_dhires_spr(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -25227,11 +68323,11 @@ static void lts_aga_fm1_kehb0_p6_ihires_dhires_spr(void) denise_cck++; } } -static void lts_aga_fm1_kehb0_p6_ihires_dhires_spr_filtered(void) +static void lts_aga_fm1_dpf0_p2_ihires_dshres_filtered(void) { lts_null(); } -static void lts_aga_fm1_kehb1_p6_ihires_dhires_spr(void) +static void lts_aga_fm1_dpf1_p2_ihires_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -25244,7 +68340,6 @@ static void lts_aga_fm1_kehb1_p6_ihires_dhires_spr(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -25252,30 +68347,79 @@ static void lts_aga_fm1_kehb1_p6_ihires_dhires_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - pix0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[pix0 & 31]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; } last_bpl_pix = pix0; } - shiftbpl6(); + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl2e(); + loaded_pix = getbpl2_32(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl2o(); + loaded_pix = getbpl2_32(); + } if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6e(); + copybpl2e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl2_32(); } if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl6o(); + copybpl2o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl2_32(); } - loaded_pix = getbpl6_32(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + uae_u8 val1 = dpf_lookup[pix1]; + if (dpf_lookup_no[pix1]) { + val1 += dblpfofs[bpldualpf2of]; + } + val1 ^= bplcon4_denise_xor_val; + dpix_val1 = denise_colors.acolors[val1]; } + last_bpl_pix = pix1; } - loaded_pixs[0] = loaded_pix; - internal_pixel_cnt += 2; - matchsprites_aga(cnt + 2); + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl2e(); + loaded_pix = getbpl2_32(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl2o(); + loaded_pix = getbpl2_32(); + } + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl2e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl2_32(); + } + if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { + copybpl2o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl2_32(); + } + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { @@ -25283,44 +68427,84 @@ static void lts_aga_fm1_kehb1_p6_ihires_dhires_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - pix2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[pix2 & 31]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; } last_bpl_pix = pix2; } - shiftbpl6(); + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl2e(); + loaded_pix = getbpl2_32(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl2o(); + loaded_pix = getbpl2_32(); + } if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6e(); + copybpl2e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl2_32(); } if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { - copybpl6o(); - } - loaded_pix = getbpl6_32(); - uae_u32 sv2 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv2 = svt; - } + copybpl2o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl2_32(); } loaded_pixs[2] = loaded_pix; - internal_pixel_cnt += 2; - if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + uae_u8 val3 = dpf_lookup[pix3]; + if (dpf_lookup_no[pix3]) { + val3 += dblpfofs[bpldualpf2of]; } + val3 ^= bplcon4_denise_xor_val; + dpix_val3 = denise_colors.acolors[val3]; } + last_bpl_pix = pix3; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl2e(); + loaded_pix = getbpl2_32(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl2o(); + loaded_pix = getbpl2_32(); + } + if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { + copybpl2e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl2_32(); + } + if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) { + copybpl2o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl2_32(); + } + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 1; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; - if (sv2) { - uae_u32 spix2 = denise_render_sprites2(pix2, sv2); - if (spix2) { - dpix_val2 = denise_colors.acolors[spix2]; - } - } + dtbuf[h][1] = dpix_val1; dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -25329,6 +68513,14 @@ static void lts_aga_fm1_kehb1_p6_ihires_dhires_spr(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -25337,6 +68529,14 @@ static void lts_aga_fm1_kehb1_p6_ihires_dhires_spr(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -25360,11 +68560,11 @@ static void lts_aga_fm1_kehb1_p6_ihires_dhires_spr(void) denise_cck++; } } -static void lts_aga_fm1_kehb1_p6_ihires_dhires_spr_filtered(void) +static void lts_aga_fm1_dpf1_p2_ihires_dshres_filtered(void) { lts_null(); } -static void lts_aga_fm1_n0_p8_ihires_dhires_spr(void) +static void lts_aga_fm1_ehb0_p2_ihires_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -25375,77 +68575,36 @@ 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; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix0; - } - shiftbpl8(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8(); } - loaded_pix = getbpl8_32(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; } - loaded_pixs[0] = loaded_pix; - internal_pixel_cnt += 2; - matchsprites_aga(cnt + 2); + internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix2; - } - shiftbpl8(); - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8(); } - loaded_pix = getbpl8_32(); - uae_u32 sv2 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv2 = svt; - } + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; } - loaded_pixs[2] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - } - } dtbuf[h][0] = dpix_val0; - if (sv2) { - uae_u32 spix2 = denise_render_sprites2(pix2, sv2); - if (spix2) { - dpix_val2 = denise_colors.acolors[spix2]; - } - } + dtbuf[h][1] = dpix_val1; dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -25454,6 +68613,14 @@ static void lts_aga_fm1_n0_p8_ihires_dhires_spr(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -25462,6 +68629,14 @@ static void lts_aga_fm1_n0_p8_ihires_dhires_spr(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -25485,11 +68660,11 @@ static void lts_aga_fm1_n0_p8_ihires_dhires_spr(void) denise_cck++; } } -static void lts_aga_fm1_n0_p8_ihires_dhires_spr_filtered(void) +static void lts_aga_fm1_ehb0_p2_ihires_dshres_filtered(void) { lts_null(); } -static void lts_aga_fm1_n1_p8_ihires_dhires_spr(void) +static void lts_aga_fm1_ehb1_p2_ihires_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -25500,83 +68675,36 @@ 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; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix0; - } - shiftbpl8(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e(); - } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o(); } - loaded_pix = getbpl8_32(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; } - loaded_pixs[0] = loaded_pix; - internal_pixel_cnt += 2; - matchsprites_aga(cnt + 2); + internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix2; - } - shiftbpl8(); - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e(); - } - if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o(); } - loaded_pix = getbpl8_32(); - uae_u32 sv2 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv2 = svt; - } + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; } - loaded_pixs[2] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - } - } dtbuf[h][0] = dpix_val0; - if (sv2) { - uae_u32 spix2 = denise_render_sprites2(pix2, sv2); - if (spix2) { - dpix_val2 = denise_colors.acolors[spix2]; - } - } + dtbuf[h][1] = dpix_val1; dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -25585,6 +68713,14 @@ static void lts_aga_fm1_n1_p8_ihires_dhires_spr(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -25593,6 +68729,14 @@ static void lts_aga_fm1_n1_p8_ihires_dhires_spr(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -25616,11 +68760,11 @@ static void lts_aga_fm1_n1_p8_ihires_dhires_spr(void) denise_cck++; } } -static void lts_aga_fm1_n1_p8_ihires_dhires_spr_filtered(void) +static void lts_aga_fm1_ehb1_p2_ihires_dshres_filtered(void) { lts_null(); } -static void lts_aga_fm1_dpf0_p8_ihires_dhires_spr(void) +static void lts_aga_fm1_ham0_p2_ihires_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -25631,87 +68775,36 @@ 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; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; - } - shiftbpl8(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8(); } - loaded_pix = getbpl8_32(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; } - loaded_pixs[0] = loaded_pix; - internal_pixel_cnt += 2; - matchsprites_aga(cnt + 2); + internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; - } - last_bpl_pix = pix2; - } - shiftbpl8(); - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8(); } - loaded_pix = getbpl8_32(); - uae_u32 sv2 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv2 = svt; - } + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; } - loaded_pixs[2] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - } - } dtbuf[h][0] = dpix_val0; - if (sv2) { - uae_u32 spix2 = denise_render_sprites2(pix2, sv2); - if (spix2) { - dpix_val2 = denise_colors.acolors[spix2]; - } - } + dtbuf[h][1] = dpix_val1; dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -25720,6 +68813,14 @@ static void lts_aga_fm1_dpf0_p8_ihires_dhires_spr(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -25728,6 +68829,14 @@ static void lts_aga_fm1_dpf0_p8_ihires_dhires_spr(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -25751,11 +68860,11 @@ static void lts_aga_fm1_dpf0_p8_ihires_dhires_spr(void) denise_cck++; } } -static void lts_aga_fm1_dpf0_p8_ihires_dhires_spr_filtered(void) +static void lts_aga_fm1_ham0_p2_ihires_dshres_filtered(void) { lts_null(); } -static void lts_aga_fm1_dpf1_p8_ihires_dhires_spr(void) +static void lts_aga_fm1_ham1_p2_ihires_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -25766,93 +68875,36 @@ 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; - uae_u32 dpix_val0 = BLANK_COLOR; - if (!denise_blank_active) { - dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; - } - shiftbpl8(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e(); - } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o(); - } - loaded_pix = getbpl8_32(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; } - loaded_pixs[0] = loaded_pix; - internal_pixel_cnt += 2; - matchsprites_aga(cnt + 2); + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; - } - last_bpl_pix = pix2; - } - shiftbpl8(); - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e(); - } - if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o(); } - loaded_pix = getbpl8_32(); - uae_u32 sv2 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv2 = svt; - } + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; } - loaded_pixs[2] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - } - } dtbuf[h][0] = dpix_val0; - if (sv2) { - uae_u32 spix2 = denise_render_sprites2(pix2, sv2); - if (spix2) { - dpix_val2 = denise_colors.acolors[spix2]; - } - } + dtbuf[h][1] = dpix_val1; dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -25861,6 +68913,14 @@ static void lts_aga_fm1_dpf1_p8_ihires_dhires_spr(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -25869,6 +68929,14 @@ static void lts_aga_fm1_dpf1_p8_ihires_dhires_spr(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -25892,27 +68960,11 @@ static void lts_aga_fm1_dpf1_p8_ihires_dhires_spr(void) denise_cck++; } } -static void lts_aga_fm1_dpf1_p8_ihires_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb0_p8_ihires_dhires_spr(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb0_p8_ihires_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb1_p8_ihires_dhires_spr(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb1_p8_ihires_dhires_spr_filtered(void) +static void lts_aga_fm1_ham1_p2_ihires_dshres_filtered(void) { lts_null(); } -static void lts_aga_fm1_ham0_p8_ihires_dhires_spr(void) +static void lts_aga_fm1_kehb0_p2_ihires_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -25923,77 +68975,36 @@ 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; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = decode_ham_pixel_aga(pix0); - } - last_bpl_pix = pix0; - } - shiftbpl8(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8(); } - loaded_pix = getbpl8_32(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; } - loaded_pixs[0] = loaded_pix; - internal_pixel_cnt += 2; - matchsprites_aga(cnt + 2); + internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = decode_ham_pixel_aga(pix2); - } - last_bpl_pix = pix2; - } - shiftbpl8(); - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8(); } - loaded_pix = getbpl8_32(); - uae_u32 sv2 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv2 = svt; - } + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; } - loaded_pixs[2] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - } - } dtbuf[h][0] = dpix_val0; - if (sv2) { - uae_u32 spix2 = denise_render_sprites2(pix2, sv2); - if (spix2) { - dpix_val2 = denise_colors.acolors[spix2]; - } - } + dtbuf[h][1] = dpix_val1; dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -26002,6 +69013,14 @@ static void lts_aga_fm1_ham0_p8_ihires_dhires_spr(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -26010,6 +69029,14 @@ static void lts_aga_fm1_ham0_p8_ihires_dhires_spr(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -26033,11 +69060,11 @@ static void lts_aga_fm1_ham0_p8_ihires_dhires_spr(void) denise_cck++; } } -static void lts_aga_fm1_ham0_p8_ihires_dhires_spr_filtered(void) +static void lts_aga_fm1_kehb0_p2_ihires_dshres_filtered(void) { lts_null(); } -static void lts_aga_fm1_ham1_p8_ihires_dhires_spr(void) +static void lts_aga_fm1_kehb1_p2_ihires_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -26048,83 +69075,36 @@ 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; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = decode_ham_pixel_aga(pix0); - } - last_bpl_pix = pix0; - } - shiftbpl8(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e(); - } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o(); } - loaded_pix = getbpl8_32(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; } - loaded_pixs[0] = loaded_pix; - internal_pixel_cnt += 2; - matchsprites_aga(cnt + 2); + internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = decode_ham_pixel_aga(pix2); - } - last_bpl_pix = pix2; - } - shiftbpl8(); - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e(); - } - if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o(); } - loaded_pix = getbpl8_32(); - uae_u32 sv2 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv2 = svt; - } + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; } - loaded_pixs[2] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - } - } dtbuf[h][0] = dpix_val0; - if (sv2) { - uae_u32 spix2 = denise_render_sprites2(pix2, sv2); - if (spix2) { - dpix_val2 = denise_colors.acolors[spix2]; - } - } + dtbuf[h][1] = dpix_val1; dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -26133,6 +69113,14 @@ static void lts_aga_fm1_ham1_p8_ihires_dhires_spr(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -26141,6 +69129,14 @@ static void lts_aga_fm1_ham1_p8_ihires_dhires_spr(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -26164,27 +69160,11 @@ static void lts_aga_fm1_ham1_p8_ihires_dhires_spr(void) denise_cck++; } } -static void lts_aga_fm1_ham1_p8_ihires_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb0_p8_ihires_dhires_spr(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb0_p8_ihires_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb1_p8_ihires_dhires_spr(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb1_p8_ihires_dhires_spr_filtered(void) +static void lts_aga_fm1_kehb1_p2_ihires_dshres_filtered(void) { lts_null(); } -static void lts_aga_fm1_n0_p2_ishres_dhires(void) +static void lts_aga_fm1_n0_p4_ihires_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -26208,14 +69188,43 @@ static void lts_aga_fm1_n0_p2_ishres_dhires(void) } last_bpl_pix = pix0; } - shiftbpl2(); - if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { - copybpl2(); + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4(); + loaded_pix = getbpl4_32(); + } + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4_32(); } - loaded_pix = getbpl2_32(); loaded_pixs[0] = loaded_pix; - shiftbpl2(); - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix1; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4(); + loaded_pix = getbpl4_32(); + } + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4_32(); + } + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { @@ -26227,17 +69236,48 @@ static void lts_aga_fm1_n0_p2_ishres_dhires(void) } last_bpl_pix = pix2; } - shiftbpl2(); - if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { - copybpl2(); + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4(); + loaded_pix = getbpl4_32(); + } + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4_32(); } - loaded_pix = getbpl2_32(); loaded_pixs[2] = loaded_pix; - shiftbpl2(); - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix3; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4(); + loaded_pix = getbpl4_32(); + } + if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4_32(); + } + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -26246,6 +69286,14 @@ static void lts_aga_fm1_n0_p2_ishres_dhires(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -26254,6 +69302,14 @@ static void lts_aga_fm1_n0_p2_ishres_dhires(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -26277,7 +69333,11 @@ static void lts_aga_fm1_n0_p2_ishres_dhires(void) denise_cck++; } } -static void lts_aga_fm1_n0_p2_ishres_dhires_filtered(void) +static void lts_aga_fm1_n0_p4_ihires_dshres_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_n1_p4_ihires_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -26301,12 +69361,30 @@ static void lts_aga_fm1_n0_p2_ishres_dhires_filtered(void) } last_bpl_pix = pix0; } - shiftbpl2(); - if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { - copybpl2(); + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4e(); + loaded_pix = getbpl4_32(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl4o(); + loaded_pix = getbpl4_32(); + } + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4_32(); + } + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl4o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl4_32(); } - loaded_pix = getbpl2_32(); loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 1; uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { @@ -26318,13 +69396,30 @@ static void lts_aga_fm1_n0_p2_ishres_dhires_filtered(void) } last_bpl_pix = pix1; } - shiftbpl2(); - if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { - copybpl2(); + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4e(); + loaded_pix = getbpl4_32(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl4o(); + loaded_pix = getbpl4_32(); + } + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4_32(); + } + if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { + copybpl4o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl4_32(); } - loaded_pix = getbpl2_32(); loaded_pixs[1] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { @@ -26336,12 +69431,30 @@ static void lts_aga_fm1_n0_p2_ishres_dhires_filtered(void) } last_bpl_pix = pix2; } - shiftbpl2(); - if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { - copybpl2(); + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4e(); + loaded_pix = getbpl4_32(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl4o(); + loaded_pix = getbpl4_32(); + } + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4_32(); + } + if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { + copybpl4o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl4_32(); } - loaded_pix = getbpl2_32(); loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 1; uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { @@ -26353,18 +69466,35 @@ static void lts_aga_fm1_n0_p2_ishres_dhires_filtered(void) } last_bpl_pix = pix3; } - shiftbpl2(); - if (bpldat_copy[0] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[0]) { - copybpl2(); + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4e(); + loaded_pix = getbpl4_32(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl4o(); + loaded_pix = getbpl4_32(); + } + if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4_32(); + } + if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) { + copybpl4o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl4_32(); } - loaded_pix = getbpl2_32(); loaded_pixs[3] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - dpix_val0 = filter_pixel(dpix_val0, dpix_val1); dtbuf[h][0] = dpix_val0; - dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + dtbuf[h][1] = dpix_val1; dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -26373,6 +69503,14 @@ static void lts_aga_fm1_n0_p2_ishres_dhires_filtered(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -26381,6 +69519,14 @@ static void lts_aga_fm1_n0_p2_ishres_dhires_filtered(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -26404,7 +69550,11 @@ static void lts_aga_fm1_n0_p2_ishres_dhires_filtered(void) denise_cck++; } } -static void lts_aga_fm1_n1_p2_ishres_dhires(void) +static void lts_aga_fm1_n1_p4_ihires_dshres_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_dpf0_p4_ihires_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -26424,21 +69574,57 @@ static void lts_aga_fm1_n1_p2_ishres_dhires(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; } last_bpl_pix = pix0; } - shiftbpl2(); - if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { - copybpl2e(); + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4(); + loaded_pix = getbpl4_32(); } - if (bpldat_copy[1] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[1]) { - copybpl2o(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4_32(); } - loaded_pix = getbpl2_32(); loaded_pixs[0] = loaded_pix; - shiftbpl2(); - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + uae_u8 val1 = dpf_lookup[pix1]; + if (dpf_lookup_no[pix1]) { + val1 += dblpfofs[bpldualpf2of]; + } + val1 ^= bplcon4_denise_xor_val; + dpix_val1 = denise_colors.acolors[val1]; + } + last_bpl_pix = pix1; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4(); + loaded_pix = getbpl4_32(); + } + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4_32(); + } + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { @@ -26446,24 +69632,62 @@ static void lts_aga_fm1_n1_p2_ishres_dhires(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; } last_bpl_pix = pix2; } - shiftbpl2(); - if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { - copybpl2e(); + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4(); + loaded_pix = getbpl4_32(); } - if (bpldat_copy[1] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[1]) { - copybpl2o(); + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4_32(); } - loaded_pix = getbpl2_32(); loaded_pixs[2] = loaded_pix; - shiftbpl2(); - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + uae_u8 val3 = dpf_lookup[pix3]; + if (dpf_lookup_no[pix3]) { + val3 += dblpfofs[bpldualpf2of]; + } + val3 ^= bplcon4_denise_xor_val; + dpix_val3 = denise_colors.acolors[val3]; + } + last_bpl_pix = pix3; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4(); + loaded_pix = getbpl4_32(); + } + if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4_32(); + } + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -26472,6 +69696,14 @@ static void lts_aga_fm1_n1_p2_ishres_dhires(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -26480,6 +69712,14 @@ static void lts_aga_fm1_n1_p2_ishres_dhires(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -26503,7 +69743,11 @@ static void lts_aga_fm1_n1_p2_ishres_dhires(void) denise_cck++; } } -static void lts_aga_fm1_n1_p2_ishres_dhires_filtered(void) +static void lts_aga_fm1_dpf0_p4_ihires_dshres_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_dpf1_p4_ihires_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -26523,19 +69767,39 @@ static void lts_aga_fm1_n1_p2_ishres_dhires_filtered(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; } last_bpl_pix = pix0; } - shiftbpl2(); - if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { - copybpl2e(); + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4e(); + loaded_pix = getbpl4_32(); } - if (bpldat_copy[1] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[1]) { - copybpl2o(); + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl4o(); + loaded_pix = getbpl4_32(); + } + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4_32(); + } + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl4o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl4_32(); } - loaded_pix = getbpl2_32(); loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 1; uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { @@ -26543,20 +69807,39 @@ static void lts_aga_fm1_n1_p2_ishres_dhires_filtered(void) if (denise_hdiw && bpl1dat_trigger) { pix1 = loaded_pixs[1]; clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; + uae_u8 val1 = dpf_lookup[pix1]; + if (dpf_lookup_no[pix1]) { + val1 += dblpfofs[bpldualpf2of]; + } + val1 ^= bplcon4_denise_xor_val; + dpix_val1 = denise_colors.acolors[val1]; } last_bpl_pix = pix1; } - shiftbpl2(); - if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { - copybpl2e(); + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4e(); + loaded_pix = getbpl4_32(); } - if (bpldat_copy[1] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[1]) { - copybpl2o(); + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl4o(); + loaded_pix = getbpl4_32(); + } + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4_32(); + } + if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { + copybpl4o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl4_32(); } - loaded_pix = getbpl2_32(); loaded_pixs[1] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { @@ -26564,19 +69847,39 @@ static void lts_aga_fm1_n1_p2_ishres_dhires_filtered(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; } last_bpl_pix = pix2; } - shiftbpl2(); - if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { - copybpl2e(); + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4e(); + loaded_pix = getbpl4_32(); } - if (bpldat_copy[1] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[1]) { - copybpl2o(); + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl4o(); + loaded_pix = getbpl4_32(); + } + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4_32(); + } + if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { + copybpl4o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl4_32(); } - loaded_pix = getbpl2_32(); loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 1; uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { @@ -26584,25 +69887,44 @@ static void lts_aga_fm1_n1_p2_ishres_dhires_filtered(void) if (denise_hdiw && bpl1dat_trigger) { pix3 = loaded_pixs[3]; clxdat |= bplcoltable[pix3]; - dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; + uae_u8 val3 = dpf_lookup[pix3]; + if (dpf_lookup_no[pix3]) { + val3 += dblpfofs[bpldualpf2of]; + } + val3 ^= bplcon4_denise_xor_val; + dpix_val3 = denise_colors.acolors[val3]; } last_bpl_pix = pix3; } - shiftbpl2(); - if (bpldat_copy[0] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[0]) { - copybpl2e(); + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4e(); + loaded_pix = getbpl4_32(); } - if (bpldat_copy[1] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[1]) { - copybpl2o(); + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl4o(); + loaded_pix = getbpl4_32(); + } + if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4_32(); + } + if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) { + copybpl4o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl4_32(); } - loaded_pix = getbpl2_32(); loaded_pixs[3] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - dpix_val0 = filter_pixel(dpix_val0, dpix_val1); dtbuf[h][0] = dpix_val0; - dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + dtbuf[h][1] = dpix_val1; dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -26611,6 +69933,14 @@ static void lts_aga_fm1_n1_p2_ishres_dhires_filtered(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -26619,6 +69949,14 @@ static void lts_aga_fm1_n1_p2_ishres_dhires_filtered(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -26642,7 +69980,11 @@ static void lts_aga_fm1_n1_p2_ishres_dhires_filtered(void) denise_cck++; } } -static void lts_aga_fm1_dpf0_p2_ishres_dhires(void) +static void lts_aga_fm1_dpf1_p4_ihires_dshres_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_ehb0_p4_ihires_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -26653,59 +69995,36 @@ 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; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; } - shiftbpl2(); - if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { - copybpl2(); + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; } - loaded_pix = getbpl2_32(); - loaded_pixs[0] = loaded_pix; - shiftbpl2(); - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; - } - last_bpl_pix = pix2; } - shiftbpl2(); - if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { - copybpl2(); + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; } - loaded_pix = getbpl2_32(); - loaded_pixs[2] = loaded_pix; - shiftbpl2(); - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -26714,6 +70033,14 @@ static void lts_aga_fm1_dpf0_p2_ishres_dhires(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -26722,6 +70049,14 @@ static void lts_aga_fm1_dpf0_p2_ishres_dhires(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -26745,7 +70080,11 @@ static void lts_aga_fm1_dpf0_p2_ishres_dhires(void) denise_cck++; } } -static void lts_aga_fm1_dpf0_p2_ishres_dhires_filtered(void) +static void lts_aga_fm1_ehb0_p4_ihires_dshres_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_ehb1_p4_ihires_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -26756,103 +70095,36 @@ 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; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; - } - shiftbpl2(); - if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { - copybpl2(); } - loaded_pix = getbpl2_32(); - loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 1; uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - if (dpf_lookup_no[pix1]) { - val1 += dblpfofs[bpldualpf2of]; - } - val1 ^= bplcon4_denise_xor_val; - dpix_val1 = denise_colors.acolors[val1]; - } - last_bpl_pix = pix1; - } - shiftbpl2(); - if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { - copybpl2(); } - loaded_pix = getbpl2_32(); - loaded_pixs[1] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; - } - last_bpl_pix = pix2; - } - shiftbpl2(); - if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { - copybpl2(); } - loaded_pix = getbpl2_32(); - loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 1; uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - uae_u8 val3 = dpf_lookup[pix3]; - if (dpf_lookup_no[pix3]) { - val3 += dblpfofs[bpldualpf2of]; - } - val3 ^= bplcon4_denise_xor_val; - dpix_val3 = denise_colors.acolors[val3]; - } - last_bpl_pix = pix3; - } - shiftbpl2(); - if (bpldat_copy[0] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[0]) { - copybpl2(); } - loaded_pix = getbpl2_32(); - loaded_pixs[3] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - dpix_val0 = filter_pixel(dpix_val0, dpix_val1); dtbuf[h][0] = dpix_val0; - dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + dtbuf[h][1] = dpix_val1; dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -26861,6 +70133,14 @@ static void lts_aga_fm1_dpf0_p2_ishres_dhires_filtered(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -26869,6 +70149,14 @@ static void lts_aga_fm1_dpf0_p2_ishres_dhires_filtered(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -26892,7 +70180,11 @@ static void lts_aga_fm1_dpf0_p2_ishres_dhires_filtered(void) denise_cck++; } } -static void lts_aga_fm1_dpf1_p2_ishres_dhires(void) +static void lts_aga_fm1_ehb1_p4_ihires_dshres_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_ham0_p4_ihires_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -26903,65 +70195,36 @@ 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; - if (!denise_blank_active) { - dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; - } - shiftbpl2(); - if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { - copybpl2e(); + if (!denise_blank_active) { + dpix_val0 = bordercolor; } - if (bpldat_copy[1] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[1]) { - copybpl2o(); + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; } - loaded_pix = getbpl2_32(); - loaded_pixs[0] = loaded_pix; - shiftbpl2(); - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; - } - last_bpl_pix = pix2; - } - shiftbpl2(); - if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { - copybpl2e(); } - if (bpldat_copy[1] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[1]) { - copybpl2o(); + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; } - loaded_pix = getbpl2_32(); - loaded_pixs[2] = loaded_pix; - shiftbpl2(); - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -26970,6 +70233,14 @@ static void lts_aga_fm1_dpf1_p2_ishres_dhires(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -26978,6 +70249,14 @@ static void lts_aga_fm1_dpf1_p2_ishres_dhires(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -27001,7 +70280,11 @@ static void lts_aga_fm1_dpf1_p2_ishres_dhires(void) denise_cck++; } } -static void lts_aga_fm1_dpf1_p2_ishres_dhires_filtered(void) +static void lts_aga_fm1_ham0_p4_ihires_dshres_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_ham1_p4_ihires_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -27012,115 +70295,36 @@ 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; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; - } - shiftbpl2(); - if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { - copybpl2e(); - } - if (bpldat_copy[1] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[1]) { - copybpl2o(); } - loaded_pix = getbpl2_32(); - loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 1; uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - if (dpf_lookup_no[pix1]) { - val1 += dblpfofs[bpldualpf2of]; - } - val1 ^= bplcon4_denise_xor_val; - dpix_val1 = denise_colors.acolors[val1]; - } - last_bpl_pix = pix1; - } - shiftbpl2(); - if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { - copybpl2e(); - } - if (bpldat_copy[1] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[1]) { - copybpl2o(); } - loaded_pix = getbpl2_32(); - loaded_pixs[1] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; - } - last_bpl_pix = pix2; } - shiftbpl2(); - if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { - copybpl2e(); - } - if (bpldat_copy[1] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[1]) { - copybpl2o(); - } - loaded_pix = getbpl2_32(); - loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 1; uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - uae_u8 val3 = dpf_lookup[pix3]; - if (dpf_lookup_no[pix3]) { - val3 += dblpfofs[bpldualpf2of]; - } - val3 ^= bplcon4_denise_xor_val; - dpix_val3 = denise_colors.acolors[val3]; - } - last_bpl_pix = pix3; - } - shiftbpl2(); - if (bpldat_copy[0] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[0]) { - copybpl2e(); - } - if (bpldat_copy[1] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[1]) { - copybpl2o(); } - loaded_pix = getbpl2_32(); - loaded_pixs[3] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - dpix_val0 = filter_pixel(dpix_val0, dpix_val1); dtbuf[h][0] = dpix_val0; - dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + dtbuf[h][1] = dpix_val1; dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -27129,6 +70333,14 @@ static void lts_aga_fm1_dpf1_p2_ishres_dhires_filtered(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -27137,6 +70349,14 @@ static void lts_aga_fm1_dpf1_p2_ishres_dhires_filtered(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -27160,55 +70380,11 @@ static void lts_aga_fm1_dpf1_p2_ishres_dhires_filtered(void) denise_cck++; } } -static void lts_aga_fm1_ehb0_p2_ishres_dhires(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb0_p2_ishres_dhires_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb1_p2_ishres_dhires(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb1_p2_ishres_dhires_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_ham0_p2_ishres_dhires(void) -{ - lts_null(); -} -static void lts_aga_fm1_ham0_p2_ishres_dhires_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_ham1_p2_ishres_dhires(void) -{ - lts_null(); -} -static void lts_aga_fm1_ham1_p2_ishres_dhires_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb0_p2_ishres_dhires(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb0_p2_ishres_dhires_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb1_p2_ishres_dhires(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb1_p2_ishres_dhires_filtered(void) +static void lts_aga_fm1_ham1_p4_ihires_dshres_filtered(void) { lts_null(); } -static void lts_aga_fm1_n0_p4_ishres_dhires(void) +static void lts_aga_fm1_kehb0_p4_ihires_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -27219,49 +70395,36 @@ 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; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix0; } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4(); + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; } - loaded_pix = getbpl4_32(); - loaded_pixs[0] = loaded_pix; - shiftbpl4(); - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix2; } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4(); + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; } - loaded_pix = getbpl4_32(); - loaded_pixs[2] = loaded_pix; - shiftbpl4(); - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -27270,6 +70433,14 @@ static void lts_aga_fm1_n0_p4_ishres_dhires(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -27278,6 +70449,14 @@ static void lts_aga_fm1_n0_p4_ishres_dhires(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -27301,7 +70480,11 @@ static void lts_aga_fm1_n0_p4_ishres_dhires(void) denise_cck++; } } -static void lts_aga_fm1_n0_p4_ishres_dhires_filtered(void) +static void lts_aga_fm1_kehb0_p4_ihires_dshres_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_kehb1_p4_ihires_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -27312,83 +70495,36 @@ 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; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix0; - } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4(); } - loaded_pix = getbpl4_32(); - loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 1; uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix1; - } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4(); } - loaded_pix = getbpl4_32(); - loaded_pixs[1] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix2; - } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4(); } - loaded_pix = getbpl4_32(); - loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 1; uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix3; - } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4(); } - loaded_pix = getbpl4_32(); - loaded_pixs[3] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - dpix_val0 = filter_pixel(dpix_val0, dpix_val1); dtbuf[h][0] = dpix_val0; - dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + dtbuf[h][1] = dpix_val1; dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -27397,6 +70533,14 @@ static void lts_aga_fm1_n0_p4_ishres_dhires_filtered(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -27405,6 +70549,14 @@ static void lts_aga_fm1_n0_p4_ishres_dhires_filtered(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -27428,7 +70580,11 @@ static void lts_aga_fm1_n0_p4_ishres_dhires_filtered(void) denise_cck++; } } -static void lts_aga_fm1_n1_p4_ishres_dhires(void) +static void lts_aga_fm1_kehb1_p4_ihires_dshres_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_n0_p6_ihires_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -27452,17 +70608,43 @@ static void lts_aga_fm1_n1_p4_ishres_dhires(void) } last_bpl_pix = pix0; } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4e(); + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6(); + loaded_pix = getbpl6_32(); } - if (bpldat_copy[1] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[1]) { - copybpl4o(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6_32(); } - loaded_pix = getbpl4_32(); loaded_pixs[0] = loaded_pix; - shiftbpl4(); - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix1; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6(); + loaded_pix = getbpl6_32(); + } + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6_32(); + } + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { @@ -27474,20 +70656,48 @@ static void lts_aga_fm1_n1_p4_ishres_dhires(void) } last_bpl_pix = pix2; } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4e(); + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6(); + loaded_pix = getbpl6_32(); } - if (bpldat_copy[1] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[1]) { - copybpl4o(); + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6_32(); } - loaded_pix = getbpl4_32(); loaded_pixs[2] = loaded_pix; - shiftbpl4(); - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix3; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6(); + loaded_pix = getbpl6_32(); + } + if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6_32(); + } + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -27496,6 +70706,14 @@ static void lts_aga_fm1_n1_p4_ishres_dhires(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -27504,6 +70722,14 @@ static void lts_aga_fm1_n1_p4_ishres_dhires(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -27527,7 +70753,11 @@ static void lts_aga_fm1_n1_p4_ishres_dhires(void) denise_cck++; } } -static void lts_aga_fm1_n1_p4_ishres_dhires_filtered(void) +static void lts_aga_fm1_n0_p6_ihires_dshres_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_n1_p6_ihires_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -27551,15 +70781,30 @@ static void lts_aga_fm1_n1_p4_ishres_dhires_filtered(void) } last_bpl_pix = pix0; } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4e(); + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6e(); + loaded_pix = getbpl6_32(); } - if (bpldat_copy[1] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[1]) { - copybpl4o(); + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl6o(); + loaded_pix = getbpl6_32(); + } + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6_32(); + } + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl6o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl6_32(); } - loaded_pix = getbpl4_32(); loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 1; uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { @@ -27571,16 +70816,30 @@ static void lts_aga_fm1_n1_p4_ishres_dhires_filtered(void) } last_bpl_pix = pix1; } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4e(); + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6e(); + loaded_pix = getbpl6_32(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl6o(); + loaded_pix = getbpl6_32(); } - if (bpldat_copy[1] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[1]) { - copybpl4o(); + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6_32(); + } + if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { + copybpl6o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl6_32(); } - loaded_pix = getbpl4_32(); loaded_pixs[1] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { @@ -27592,15 +70851,30 @@ static void lts_aga_fm1_n1_p4_ishres_dhires_filtered(void) } last_bpl_pix = pix2; } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4e(); + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6e(); + loaded_pix = getbpl6_32(); } - if (bpldat_copy[1] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[1]) { - copybpl4o(); + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl6o(); + loaded_pix = getbpl6_32(); + } + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6_32(); + } + if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { + copybpl6o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl6_32(); } - loaded_pix = getbpl4_32(); loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 1; uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { @@ -27612,21 +70886,35 @@ static void lts_aga_fm1_n1_p4_ishres_dhires_filtered(void) } last_bpl_pix = pix3; } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4e(); + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6e(); + loaded_pix = getbpl6_32(); } - if (bpldat_copy[1] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[1]) { - copybpl4o(); + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl6o(); + loaded_pix = getbpl6_32(); + } + if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6_32(); + } + if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) { + copybpl6o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl6_32(); } - loaded_pix = getbpl4_32(); loaded_pixs[3] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - dpix_val0 = filter_pixel(dpix_val0, dpix_val1); dtbuf[h][0] = dpix_val0; - dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + dtbuf[h][1] = dpix_val1; dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -27635,6 +70923,14 @@ static void lts_aga_fm1_n1_p4_ishres_dhires_filtered(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -27643,6 +70939,14 @@ static void lts_aga_fm1_n1_p4_ishres_dhires_filtered(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -27666,7 +70970,11 @@ static void lts_aga_fm1_n1_p4_ishres_dhires_filtered(void) denise_cck++; } } -static void lts_aga_fm1_dpf0_p4_ishres_dhires(void) +static void lts_aga_fm1_n1_p6_ihires_dshres_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_dpf0_p6_ihires_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -27695,14 +71003,48 @@ static void lts_aga_fm1_dpf0_p4_ishres_dhires(void) } last_bpl_pix = pix0; } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4(); + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6(); + loaded_pix = getbpl6_32(); + } + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6_32(); } - loaded_pix = getbpl4_32(); loaded_pixs[0] = loaded_pix; - shiftbpl4(); - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + uae_u8 val1 = dpf_lookup[pix1]; + if (dpf_lookup_no[pix1]) { + val1 += dblpfofs[bpldualpf2of]; + } + val1 ^= bplcon4_denise_xor_val; + dpix_val1 = denise_colors.acolors[val1]; + } + last_bpl_pix = pix1; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6(); + loaded_pix = getbpl6_32(); + } + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6_32(); + } + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { @@ -27719,17 +71061,53 @@ static void lts_aga_fm1_dpf0_p4_ishres_dhires(void) } last_bpl_pix = pix2; } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4(); + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6(); + loaded_pix = getbpl6_32(); + } + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6_32(); } - loaded_pix = getbpl4_32(); loaded_pixs[2] = loaded_pix; - shiftbpl4(); - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + uae_u8 val3 = dpf_lookup[pix3]; + if (dpf_lookup_no[pix3]) { + val3 += dblpfofs[bpldualpf2of]; + } + val3 ^= bplcon4_denise_xor_val; + dpix_val3 = denise_colors.acolors[val3]; + } + last_bpl_pix = pix3; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6(); + loaded_pix = getbpl6_32(); + } + if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6_32(); + } + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -27738,6 +71116,14 @@ static void lts_aga_fm1_dpf0_p4_ishres_dhires(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -27746,6 +71132,14 @@ static void lts_aga_fm1_dpf0_p4_ishres_dhires(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -27769,7 +71163,11 @@ static void lts_aga_fm1_dpf0_p4_ishres_dhires(void) denise_cck++; } } -static void lts_aga_fm1_dpf0_p4_ishres_dhires_filtered(void) +static void lts_aga_fm1_dpf0_p6_ihires_dshres_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_dpf1_p6_ihires_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -27798,12 +71196,30 @@ static void lts_aga_fm1_dpf0_p4_ishres_dhires_filtered(void) } last_bpl_pix = pix0; } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4(); + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6e(); + loaded_pix = getbpl6_32(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl6o(); + loaded_pix = getbpl6_32(); + } + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6_32(); + } + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl6o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl6_32(); } - loaded_pix = getbpl4_32(); loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 1; uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { @@ -27820,13 +71236,30 @@ static void lts_aga_fm1_dpf0_p4_ishres_dhires_filtered(void) } last_bpl_pix = pix1; } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4(); + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6e(); + loaded_pix = getbpl6_32(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl6o(); + loaded_pix = getbpl6_32(); + } + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6_32(); + } + if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { + copybpl6o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl6_32(); } - loaded_pix = getbpl4_32(); loaded_pixs[1] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { @@ -27843,12 +71276,30 @@ static void lts_aga_fm1_dpf0_p4_ishres_dhires_filtered(void) } last_bpl_pix = pix2; } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4(); + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6e(); + loaded_pix = getbpl6_32(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl6o(); + loaded_pix = getbpl6_32(); + } + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6_32(); + } + if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { + copybpl6o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl6_32(); } - loaded_pix = getbpl4_32(); loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 1; uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { @@ -27865,18 +71316,35 @@ static void lts_aga_fm1_dpf0_p4_ishres_dhires_filtered(void) } last_bpl_pix = pix3; } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4(); + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6e(); + loaded_pix = getbpl6_32(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl6o(); + loaded_pix = getbpl6_32(); + } + if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6_32(); + } + if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) { + copybpl6o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl6_32(); } - loaded_pix = getbpl4_32(); loaded_pixs[3] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - dpix_val0 = filter_pixel(dpix_val0, dpix_val1); dtbuf[h][0] = dpix_val0; - dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + dtbuf[h][1] = dpix_val1; dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -27885,6 +71353,14 @@ static void lts_aga_fm1_dpf0_p4_ishres_dhires_filtered(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -27893,6 +71369,14 @@ static void lts_aga_fm1_dpf0_p4_ishres_dhires_filtered(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -27916,7 +71400,11 @@ static void lts_aga_fm1_dpf0_p4_ishres_dhires_filtered(void) denise_cck++; } } -static void lts_aga_fm1_dpf1_p4_ishres_dhires(void) +static void lts_aga_fm1_dpf1_p6_ihires_dshres_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_ehb0_p6_ihires_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -27936,26 +71424,59 @@ static void lts_aga_fm1_dpf1_p4_ishres_dhires(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; + pix0 ^= bplcon4_denise_xor_val; + if (!(pix0 & 0x20)) { + dpix_val0 = denise_colors.acolors[pix0]; + } else { + uae_u32 v = (denise_colors.color_regs_aga[pix0 & 0x1f] >> 1) & 0x7f7f7f; + dpix_val0 = CONVERT_RGB(v); } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; } last_bpl_pix = pix0; } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4e(); + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6(); + loaded_pix = getbpl6_32(); } - if (bpldat_copy[1] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[1]) { - copybpl4o(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6_32(); } - loaded_pix = getbpl4_32(); loaded_pixs[0] = loaded_pix; - shiftbpl4(); - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + pix1 ^= bplcon4_denise_xor_val; + if (!(pix1 & 0x20)) { + dpix_val1 = denise_colors.acolors[pix1]; + } else { + uae_u32 v = (denise_colors.color_regs_aga[pix1 & 0x1f] >> 1) & 0x7f7f7f; + dpix_val1 = CONVERT_RGB(v); + } + } + last_bpl_pix = pix1; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6(); + loaded_pix = getbpl6_32(); + } + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6_32(); + } + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { @@ -27963,29 +71484,64 @@ static void lts_aga_fm1_dpf1_p4_ishres_dhires(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; + pix2 ^= bplcon4_denise_xor_val; + if (!(pix2 & 0x20)) { + dpix_val2 = denise_colors.acolors[pix2]; + } else { + uae_u32 v = (denise_colors.color_regs_aga[pix2 & 0x1f] >> 1) & 0x7f7f7f; + dpix_val2 = CONVERT_RGB(v); } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; } last_bpl_pix = pix2; } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4e(); + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6(); + loaded_pix = getbpl6_32(); } - if (bpldat_copy[1] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[1]) { - copybpl4o(); + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6_32(); } - loaded_pix = getbpl4_32(); loaded_pixs[2] = loaded_pix; - shiftbpl4(); - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + pix3 ^= bplcon4_denise_xor_val; + if (!(pix3 & 0x20)) { + dpix_val3 = denise_colors.acolors[pix3]; + } else { + uae_u32 v = (denise_colors.color_regs_aga[pix3 & 0x1f] >> 1) & 0x7f7f7f; + dpix_val3 = CONVERT_RGB(v); + } + } + last_bpl_pix = pix3; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6(); + loaded_pix = getbpl6_32(); + } + if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6_32(); + } + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -27994,6 +71550,14 @@ static void lts_aga_fm1_dpf1_p4_ishres_dhires(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -28002,6 +71566,14 @@ static void lts_aga_fm1_dpf1_p4_ishres_dhires(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -28025,7 +71597,11 @@ static void lts_aga_fm1_dpf1_p4_ishres_dhires(void) denise_cck++; } } -static void lts_aga_fm1_dpf1_p4_ishres_dhires_filtered(void) +static void lts_aga_fm1_ehb0_p6_ihires_dshres_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_ehb1_p6_ihires_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -28045,24 +71621,40 @@ static void lts_aga_fm1_dpf1_p4_ishres_dhires_filtered(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; + pix0 ^= bplcon4_denise_xor_val; + if (!(pix0 & 0x20)) { + dpix_val0 = denise_colors.acolors[pix0]; + } else { + uae_u32 v = (denise_colors.color_regs_aga[pix0 & 0x1f] >> 1) & 0x7f7f7f; + dpix_val0 = CONVERT_RGB(v); } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; } last_bpl_pix = pix0; } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4e(); + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6e(); + loaded_pix = getbpl6_32(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl6o(); + loaded_pix = getbpl6_32(); + } + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6_32(); } - if (bpldat_copy[1] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[1]) { - copybpl4o(); + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl6o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl6_32(); } - loaded_pix = getbpl4_32(); loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 1; uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { @@ -28070,25 +71662,40 @@ static void lts_aga_fm1_dpf1_p4_ishres_dhires_filtered(void) if (denise_hdiw && bpl1dat_trigger) { pix1 = loaded_pixs[1]; clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - if (dpf_lookup_no[pix1]) { - val1 += dblpfofs[bpldualpf2of]; + pix1 ^= bplcon4_denise_xor_val; + if (!(pix1 & 0x20)) { + dpix_val1 = denise_colors.acolors[pix1]; + } else { + uae_u32 v = (denise_colors.color_regs_aga[pix1 & 0x1f] >> 1) & 0x7f7f7f; + dpix_val1 = CONVERT_RGB(v); } - val1 ^= bplcon4_denise_xor_val; - dpix_val1 = denise_colors.acolors[val1]; } last_bpl_pix = pix1; } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4e(); + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6e(); + loaded_pix = getbpl6_32(); } - if (bpldat_copy[1] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[1]) { - copybpl4o(); + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl6o(); + loaded_pix = getbpl6_32(); + } + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6_32(); + } + if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { + copybpl6o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl6_32(); } - loaded_pix = getbpl4_32(); loaded_pixs[1] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { @@ -28096,24 +71703,40 @@ static void lts_aga_fm1_dpf1_p4_ishres_dhires_filtered(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; + pix2 ^= bplcon4_denise_xor_val; + if (!(pix2 & 0x20)) { + dpix_val2 = denise_colors.acolors[pix2]; + } else { + uae_u32 v = (denise_colors.color_regs_aga[pix2 & 0x1f] >> 1) & 0x7f7f7f; + dpix_val2 = CONVERT_RGB(v); } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; } last_bpl_pix = pix2; } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4e(); + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6e(); + loaded_pix = getbpl6_32(); } - if (bpldat_copy[1] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[1]) { - copybpl4o(); + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl6o(); + loaded_pix = getbpl6_32(); + } + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6_32(); + } + if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { + copybpl6o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl6_32(); } - loaded_pix = getbpl4_32(); loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 1; uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { @@ -28121,30 +71744,45 @@ static void lts_aga_fm1_dpf1_p4_ishres_dhires_filtered(void) if (denise_hdiw && bpl1dat_trigger) { pix3 = loaded_pixs[3]; clxdat |= bplcoltable[pix3]; - uae_u8 val3 = dpf_lookup[pix3]; - if (dpf_lookup_no[pix3]) { - val3 += dblpfofs[bpldualpf2of]; + pix3 ^= bplcon4_denise_xor_val; + if (!(pix3 & 0x20)) { + dpix_val3 = denise_colors.acolors[pix3]; + } else { + uae_u32 v = (denise_colors.color_regs_aga[pix3 & 0x1f] >> 1) & 0x7f7f7f; + dpix_val3 = CONVERT_RGB(v); } - val3 ^= bplcon4_denise_xor_val; - dpix_val3 = denise_colors.acolors[val3]; } last_bpl_pix = pix3; } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4e(); + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6e(); + loaded_pix = getbpl6_32(); } - if (bpldat_copy[1] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[1]) { - copybpl4o(); + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl6o(); + loaded_pix = getbpl6_32(); + } + if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6_32(); + } + if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) { + copybpl6o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl6_32(); } - loaded_pix = getbpl4_32(); loaded_pixs[3] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - dpix_val0 = filter_pixel(dpix_val0, dpix_val1); dtbuf[h][0] = dpix_val0; - dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + dtbuf[h][1] = dpix_val1; dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -28153,6 +71791,14 @@ static void lts_aga_fm1_dpf1_p4_ishres_dhires_filtered(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -28161,6 +71807,14 @@ static void lts_aga_fm1_dpf1_p4_ishres_dhires_filtered(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -28184,215 +71838,11 @@ static void lts_aga_fm1_dpf1_p4_ishres_dhires_filtered(void) denise_cck++; } } -static void lts_aga_fm1_ehb0_p4_ishres_dhires(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb0_p4_ishres_dhires_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb1_p4_ishres_dhires(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb1_p4_ishres_dhires_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_ham0_p4_ishres_dhires(void) -{ - lts_null(); -} -static void lts_aga_fm1_ham0_p4_ishres_dhires_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_ham1_p4_ishres_dhires(void) -{ - lts_null(); -} -static void lts_aga_fm1_ham1_p4_ishres_dhires_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb0_p4_ishres_dhires(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb0_p4_ishres_dhires_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb1_p4_ishres_dhires(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb1_p4_ishres_dhires_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_n0_p6_ishres_dhires(void) -{ - lts_null(); -} -static void lts_aga_fm1_n0_p6_ishres_dhires_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_n1_p6_ishres_dhires(void) -{ - lts_null(); -} -static void lts_aga_fm1_n1_p6_ishres_dhires_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_dpf0_p6_ishres_dhires(void) -{ - lts_null(); -} -static void lts_aga_fm1_dpf0_p6_ishres_dhires_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_dpf1_p6_ishres_dhires(void) -{ - lts_null(); -} -static void lts_aga_fm1_dpf1_p6_ishres_dhires_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb0_p6_ishres_dhires(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb0_p6_ishres_dhires_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb1_p6_ishres_dhires(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb1_p6_ishres_dhires_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_ham0_p6_ishres_dhires(void) -{ - lts_null(); -} -static void lts_aga_fm1_ham0_p6_ishres_dhires_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_ham1_p6_ishres_dhires(void) -{ - lts_null(); -} -static void lts_aga_fm1_ham1_p6_ishres_dhires_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb0_p6_ishres_dhires(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb0_p6_ishres_dhires_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb1_p6_ishres_dhires(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb1_p6_ishres_dhires_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_n0_p8_ishres_dhires(void) -{ - lts_null(); -} -static void lts_aga_fm1_n0_p8_ishres_dhires_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_n1_p8_ishres_dhires(void) -{ - lts_null(); -} -static void lts_aga_fm1_n1_p8_ishres_dhires_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_dpf0_p8_ishres_dhires(void) -{ - lts_null(); -} -static void lts_aga_fm1_dpf0_p8_ishres_dhires_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_dpf1_p8_ishres_dhires(void) -{ - lts_null(); -} -static void lts_aga_fm1_dpf1_p8_ishres_dhires_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb0_p8_ishres_dhires(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb0_p8_ishres_dhires_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb1_p8_ishres_dhires(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb1_p8_ishres_dhires_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_ham0_p8_ishres_dhires(void) -{ - lts_null(); -} -static void lts_aga_fm1_ham0_p8_ishres_dhires_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_ham1_p8_ishres_dhires(void) -{ - lts_null(); -} -static void lts_aga_fm1_ham1_p8_ishres_dhires_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb0_p8_ishres_dhires(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb0_p8_ishres_dhires_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb1_p8_ishres_dhires(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb1_p8_ishres_dhires_filtered(void) +static void lts_aga_fm1_ehb1_p6_ihires_dshres_filtered(void) { lts_null(); } -static void lts_aga_fm1_n0_p2_ishres_dhires_spr(void) +static void lts_aga_fm1_ham0_p6_ihires_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -28405,7 +71855,6 @@ static void lts_aga_fm1_n0_p2_ishres_dhires_spr(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -28413,27 +71862,47 @@ static void lts_aga_fm1_n0_p2_ishres_dhires_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + dpix_val0 = decode_ham_pixel_aga(pix0); } last_bpl_pix = pix0; } - shiftbpl2(); - if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { - copybpl2(); + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6(); + loaded_pix = getbpl6_32(); } - loaded_pix = getbpl2_32(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6_32(); } loaded_pixs[0] = loaded_pix; - shiftbpl2(); - internal_pixel_cnt += 2; - matchsprites_aga(cnt + 2); + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + dpix_val1 = decode_ham_pixel_aga(pix1); + } + last_bpl_pix = pix1; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6(); + loaded_pix = getbpl6_32(); + } + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6_32(); + } + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { @@ -28441,41 +71910,52 @@ static void lts_aga_fm1_n0_p2_ishres_dhires_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + dpix_val2 = decode_ham_pixel_aga(pix2); } last_bpl_pix = pix2; } - shiftbpl2(); - if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { - copybpl2(); + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6(); + loaded_pix = getbpl6_32(); } - loaded_pix = getbpl2_32(); - uae_u32 sv2 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv2 = svt; - } + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6_32(); } loaded_pixs[2] = loaded_pix; - shiftbpl2(); - internal_pixel_cnt += 2; - if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - } + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + dpix_val3 = decode_ham_pixel_aga(pix3); } + last_bpl_pix = pix3; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6(); + loaded_pix = getbpl6_32(); + } + if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6_32(); + } + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 1; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; - if (sv2) { - uae_u32 spix2 = denise_render_sprites2(pix2, sv2); - if (spix2) { - dpix_val2 = denise_colors.acolors[spix2]; - } - } + dtbuf[h][1] = dpix_val1; dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -28484,6 +71964,14 @@ static void lts_aga_fm1_n0_p2_ishres_dhires_spr(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -28492,6 +71980,14 @@ static void lts_aga_fm1_n0_p2_ishres_dhires_spr(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -28515,7 +72011,11 @@ static void lts_aga_fm1_n0_p2_ishres_dhires_spr(void) denise_cck++; } } -static void lts_aga_fm1_n0_p2_ishres_dhires_spr_filtered(void) +static void lts_aga_fm1_ham0_p6_ihires_dshres_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_ham1_p6_ihires_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -28528,7 +72028,6 @@ static void lts_aga_fm1_n0_p2_ishres_dhires_spr_filtered(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -28536,24 +72035,34 @@ static void lts_aga_fm1_n0_p2_ishres_dhires_spr_filtered(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + dpix_val0 = decode_ham_pixel_aga(pix0); } last_bpl_pix = pix0; } - shiftbpl2(); - if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { - copybpl2(); + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6e(); + loaded_pix = getbpl6_32(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl6o(); + loaded_pix = getbpl6_32(); + } + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6_32(); } - loaded_pix = getbpl2_32(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl6o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl6_32(); } loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 1; uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { @@ -28561,18 +72070,34 @@ static void lts_aga_fm1_n0_p2_ishres_dhires_spr_filtered(void) if (denise_hdiw && bpl1dat_trigger) { pix1 = loaded_pixs[1]; clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; + dpix_val1 = decode_ham_pixel_aga(pix1); } last_bpl_pix = pix1; } - shiftbpl2(); - if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { - copybpl2(); + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6e(); + loaded_pix = getbpl6_32(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl6o(); + loaded_pix = getbpl6_32(); + } + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6_32(); + } + if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { + copybpl6o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl6_32(); } - loaded_pix = getbpl2_32(); loaded_pixs[1] = loaded_pix; - internal_pixel_cnt += 2; - matchsprites_aga(cnt + 2); + internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { @@ -28580,24 +72105,34 @@ static void lts_aga_fm1_n0_p2_ishres_dhires_spr_filtered(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + dpix_val2 = decode_ham_pixel_aga(pix2); } last_bpl_pix = pix2; } - shiftbpl2(); - if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { - copybpl2(); + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6e(); + loaded_pix = getbpl6_32(); } - loaded_pix = getbpl2_32(); - uae_u32 sv2 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv2 = svt; - } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl6o(); + loaded_pix = getbpl6_32(); + } + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6_32(); + } + if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { + copybpl6o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl6_32(); } loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 1; uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { @@ -28605,36 +72140,39 @@ static void lts_aga_fm1_n0_p2_ishres_dhires_spr_filtered(void) if (denise_hdiw && bpl1dat_trigger) { pix3 = loaded_pixs[3]; clxdat |= bplcoltable[pix3]; - dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; + dpix_val3 = decode_ham_pixel_aga(pix3); } last_bpl_pix = pix3; } - shiftbpl2(); - if (bpldat_copy[0] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[0]) { - copybpl2(); + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6e(); + loaded_pix = getbpl6_32(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl6o(); + loaded_pix = getbpl6_32(); + } + if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6_32(); + } + if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) { + copybpl6o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl6_32(); } - loaded_pix = getbpl2_32(); loaded_pixs[3] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - dpix_val1 = dpix_val0; - } - } - dpix_val0 = filter_pixel(dpix_val0, dpix_val1); dtbuf[h][0] = dpix_val0; - if (sv2) { - uae_u32 spix2 = denise_render_sprites2(pix2, sv2); - if (spix2) { - dpix_val2 = denise_colors.acolors[spix2]; - dpix_val3 = dpix_val2; - } - } - dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + dtbuf[h][1] = dpix_val1; dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -28643,6 +72181,14 @@ static void lts_aga_fm1_n0_p2_ishres_dhires_spr_filtered(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -28651,6 +72197,14 @@ static void lts_aga_fm1_n0_p2_ishres_dhires_spr_filtered(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -28674,7 +72228,11 @@ static void lts_aga_fm1_n0_p2_ishres_dhires_spr_filtered(void) denise_cck++; } } -static void lts_aga_fm1_n1_p2_ishres_dhires_spr(void) +static void lts_aga_fm1_ham1_p6_ihires_dshres_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_kehb0_p6_ihires_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -28687,7 +72245,6 @@ static void lts_aga_fm1_n1_p2_ishres_dhires_spr(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -28695,30 +72252,49 @@ static void lts_aga_fm1_n1_p2_ishres_dhires_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + pix0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[pix0 & 31]; } last_bpl_pix = pix0; } - shiftbpl2(); - if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { - copybpl2e(); + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6(); + loaded_pix = getbpl6_32(); } - if (bpldat_copy[1] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[1]) { - copybpl2o(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6_32(); } - loaded_pix = getbpl2_32(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + pix1 ^= bplcon4_denise_xor_val; + dpix_val1 = denise_colors.acolors[pix1 & 31]; } + last_bpl_pix = pix1; } - loaded_pixs[0] = loaded_pix; - shiftbpl2(); - internal_pixel_cnt += 2; - matchsprites_aga(cnt + 2); + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6(); + loaded_pix = getbpl6_32(); + } + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6_32(); + } + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { @@ -28726,44 +72302,54 @@ static void lts_aga_fm1_n1_p2_ishres_dhires_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + pix2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[pix2 & 31]; } last_bpl_pix = pix2; } - shiftbpl2(); - if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { - copybpl2e(); + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6(); + loaded_pix = getbpl6_32(); } - if (bpldat_copy[1] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[1]) { - copybpl2o(); + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6_32(); } - loaded_pix = getbpl2_32(); - uae_u32 sv2 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv2 = svt; + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + pix3 ^= bplcon4_denise_xor_val; + dpix_val3 = denise_colors.acolors[pix3 & 31]; } + last_bpl_pix = pix3; } - loaded_pixs[2] = loaded_pix; - shiftbpl2(); - internal_pixel_cnt += 2; + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6(); + loaded_pix = getbpl6_32(); + } + if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6_32(); + } + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - } - } dtbuf[h][0] = dpix_val0; - if (sv2) { - uae_u32 spix2 = denise_render_sprites2(pix2, sv2); - if (spix2) { - dpix_val2 = denise_colors.acolors[spix2]; - } - } + dtbuf[h][1] = dpix_val1; dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -28772,6 +72358,14 @@ static void lts_aga_fm1_n1_p2_ishres_dhires_spr(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -28780,6 +72374,14 @@ static void lts_aga_fm1_n1_p2_ishres_dhires_spr(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -28803,7 +72405,11 @@ static void lts_aga_fm1_n1_p2_ishres_dhires_spr(void) denise_cck++; } } -static void lts_aga_fm1_n1_p2_ishres_dhires_spr_filtered(void) +static void lts_aga_fm1_kehb0_p6_ihires_dshres_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_kehb1_p6_ihires_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -28816,7 +72422,6 @@ static void lts_aga_fm1_n1_p2_ishres_dhires_spr_filtered(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -28824,27 +72429,35 @@ static void lts_aga_fm1_n1_p2_ishres_dhires_spr_filtered(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + pix0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[pix0 & 31]; } last_bpl_pix = pix0; } - shiftbpl2(); - if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { - copybpl2e(); + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6e(); + loaded_pix = getbpl6_32(); } - if (bpldat_copy[1] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[1]) { - copybpl2o(); + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl6o(); + loaded_pix = getbpl6_32(); } - loaded_pix = getbpl2_32(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6_32(); + } + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl6o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl6_32(); } loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 1; uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { @@ -28852,21 +72465,35 @@ static void lts_aga_fm1_n1_p2_ishres_dhires_spr_filtered(void) if (denise_hdiw && bpl1dat_trigger) { pix1 = loaded_pixs[1]; clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; + pix1 ^= bplcon4_denise_xor_val; + dpix_val1 = denise_colors.acolors[pix1 & 31]; } last_bpl_pix = pix1; } - shiftbpl2(); - if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { - copybpl2e(); + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6e(); + loaded_pix = getbpl6_32(); } - if (bpldat_copy[1] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[1]) { - copybpl2o(); + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl6o(); + loaded_pix = getbpl6_32(); + } + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6_32(); + } + if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { + copybpl6o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl6_32(); } - loaded_pix = getbpl2_32(); loaded_pixs[1] = loaded_pix; - internal_pixel_cnt += 2; - matchsprites_aga(cnt + 2); + internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { @@ -28874,27 +72501,35 @@ static void lts_aga_fm1_n1_p2_ishres_dhires_spr_filtered(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + pix2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[pix2 & 31]; } last_bpl_pix = pix2; } - shiftbpl2(); - if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { - copybpl2e(); + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6e(); + loaded_pix = getbpl6_32(); } - if (bpldat_copy[1] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[1]) { - copybpl2o(); + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl6o(); + loaded_pix = getbpl6_32(); } - loaded_pix = getbpl2_32(); - uae_u32 sv2 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv2 = svt; - } + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6_32(); + } + if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { + copybpl6o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl6_32(); } loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 1; uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { @@ -28902,39 +72537,40 @@ static void lts_aga_fm1_n1_p2_ishres_dhires_spr_filtered(void) if (denise_hdiw && bpl1dat_trigger) { pix3 = loaded_pixs[3]; clxdat |= bplcoltable[pix3]; - dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; + pix3 ^= bplcon4_denise_xor_val; + dpix_val3 = denise_colors.acolors[pix3 & 31]; } last_bpl_pix = pix3; } - shiftbpl2(); - if (bpldat_copy[0] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[0]) { - copybpl2e(); + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6e(); + loaded_pix = getbpl6_32(); } - if (bpldat_copy[1] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[1]) { - copybpl2o(); + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl6o(); + loaded_pix = getbpl6_32(); + } + if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6_32(); + } + if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) { + copybpl6o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl6_32(); } - loaded_pix = getbpl2_32(); loaded_pixs[3] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - dpix_val1 = dpix_val0; - } - } - dpix_val0 = filter_pixel(dpix_val0, dpix_val1); dtbuf[h][0] = dpix_val0; - if (sv2) { - uae_u32 spix2 = denise_render_sprites2(pix2, sv2); - if (spix2) { - dpix_val2 = denise_colors.acolors[spix2]; - dpix_val3 = dpix_val2; - } - } - dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + dtbuf[h][1] = dpix_val1; dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -28943,6 +72579,14 @@ static void lts_aga_fm1_n1_p2_ishres_dhires_spr_filtered(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -28951,6 +72595,14 @@ static void lts_aga_fm1_n1_p2_ishres_dhires_spr_filtered(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -28974,7 +72626,11 @@ static void lts_aga_fm1_n1_p2_ishres_dhires_spr_filtered(void) denise_cck++; } } -static void lts_aga_fm1_dpf0_p2_ishres_dhires_spr(void) +static void lts_aga_fm1_kehb1_p6_ihires_dshres_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_n0_p8_ihires_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -28987,7 +72643,6 @@ static void lts_aga_fm1_dpf0_p2_ishres_dhires_spr(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -28995,32 +72650,47 @@ static void lts_aga_fm1_dpf0_p2_ishres_dhires_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix0; } - shiftbpl2(); - if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { - copybpl2(); + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8(); + loaded_pix = getbpl8_32(); } - loaded_pix = getbpl2_32(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8_32(); + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; } + last_bpl_pix = pix1; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8(); + loaded_pix = getbpl8_32(); + } + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8_32(); } - loaded_pixs[0] = loaded_pix; - shiftbpl2(); - internal_pixel_cnt += 2; - matchsprites_aga(cnt + 2); + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { @@ -29028,46 +72698,52 @@ static void lts_aga_fm1_dpf0_p2_ishres_dhires_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix2; } - shiftbpl2(); - if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { - copybpl2(); + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8(); + loaded_pix = getbpl8_32(); } - loaded_pix = getbpl2_32(); - uae_u32 sv2 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv2 = svt; - } + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8_32(); } loaded_pixs[2] = loaded_pix; - shiftbpl2(); - internal_pixel_cnt += 2; - if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - } + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; } + last_bpl_pix = pix3; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8(); + loaded_pix = getbpl8_32(); + } + if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8_32(); + } + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 1; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; - if (sv2) { - uae_u32 spix2 = denise_render_sprites2(pix2, sv2); - if (spix2) { - dpix_val2 = denise_colors.acolors[spix2]; - } - } + dtbuf[h][1] = dpix_val1; dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -29076,6 +72752,14 @@ static void lts_aga_fm1_dpf0_p2_ishres_dhires_spr(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -29084,6 +72768,14 @@ static void lts_aga_fm1_dpf0_p2_ishres_dhires_spr(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -29107,7 +72799,11 @@ static void lts_aga_fm1_dpf0_p2_ishres_dhires_spr(void) denise_cck++; } } -static void lts_aga_fm1_dpf0_p2_ishres_dhires_spr_filtered(void) +static void lts_aga_fm1_n0_p8_ihires_dshres_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_n1_p8_ihires_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -29120,7 +72816,6 @@ static void lts_aga_fm1_dpf0_p2_ishres_dhires_spr_filtered(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -29128,29 +72823,34 @@ static void lts_aga_fm1_dpf0_p2_ishres_dhires_spr_filtered(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix0; } - shiftbpl2(); - if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { - copybpl2(); + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8e(); + loaded_pix = getbpl8_32(); } - loaded_pix = getbpl2_32(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl8o(); + loaded_pix = getbpl8_32(); + } + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8_32(); + } + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl8_32(); } loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 1; uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { @@ -29158,23 +72858,34 @@ static void lts_aga_fm1_dpf0_p2_ishres_dhires_spr_filtered(void) if (denise_hdiw && bpl1dat_trigger) { pix1 = loaded_pixs[1]; clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - if (dpf_lookup_no[pix1]) { - val1 += dblpfofs[bpldualpf2of]; - } - val1 ^= bplcon4_denise_xor_val; - dpix_val1 = denise_colors.acolors[val1]; + dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix1; } - shiftbpl2(); - if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { - copybpl2(); + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8e(); + loaded_pix = getbpl8_32(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl8o(); + loaded_pix = getbpl8_32(); + } + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8_32(); + } + if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl8_32(); } - loaded_pix = getbpl2_32(); loaded_pixs[1] = loaded_pix; - internal_pixel_cnt += 2; - matchsprites_aga(cnt + 2); + internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { @@ -29182,29 +72893,34 @@ static void lts_aga_fm1_dpf0_p2_ishres_dhires_spr_filtered(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix2; } - shiftbpl2(); - if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { - copybpl2(); + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8e(); + loaded_pix = getbpl8_32(); } - loaded_pix = getbpl2_32(); - uae_u32 sv2 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv2 = svt; - } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl8o(); + loaded_pix = getbpl8_32(); + } + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8_32(); + } + if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl8_32(); } loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 1; uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { @@ -29212,41 +72928,39 @@ static void lts_aga_fm1_dpf0_p2_ishres_dhires_spr_filtered(void) if (denise_hdiw && bpl1dat_trigger) { pix3 = loaded_pixs[3]; clxdat |= bplcoltable[pix3]; - uae_u8 val3 = dpf_lookup[pix3]; - if (dpf_lookup_no[pix3]) { - val3 += dblpfofs[bpldualpf2of]; - } - val3 ^= bplcon4_denise_xor_val; - dpix_val3 = denise_colors.acolors[val3]; + dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix3; } - shiftbpl2(); - if (bpldat_copy[0] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[0]) { - copybpl2(); + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8e(); + loaded_pix = getbpl8_32(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl8o(); + loaded_pix = getbpl8_32(); + } + if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8_32(); + } + if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl8_32(); } - loaded_pix = getbpl2_32(); loaded_pixs[3] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - dpix_val1 = dpix_val0; - } - } - dpix_val0 = filter_pixel(dpix_val0, dpix_val1); dtbuf[h][0] = dpix_val0; - if (sv2) { - uae_u32 spix2 = denise_render_sprites2(pix2, sv2); - if (spix2) { - dpix_val2 = denise_colors.acolors[spix2]; - dpix_val3 = dpix_val2; - } - } - dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + dtbuf[h][1] = dpix_val1; dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -29255,6 +72969,14 @@ static void lts_aga_fm1_dpf0_p2_ishres_dhires_spr_filtered(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -29263,6 +72985,14 @@ static void lts_aga_fm1_dpf0_p2_ishres_dhires_spr_filtered(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -29286,7 +73016,11 @@ static void lts_aga_fm1_dpf0_p2_ishres_dhires_spr_filtered(void) denise_cck++; } } -static void lts_aga_fm1_dpf1_p2_ishres_dhires_spr(void) +static void lts_aga_fm1_n1_p8_ihires_dshres_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_dpf0_p8_ihires_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -29299,7 +73033,6 @@ static void lts_aga_fm1_dpf1_p2_ishres_dhires_spr(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -29316,26 +73049,48 @@ static void lts_aga_fm1_dpf1_p2_ishres_dhires_spr(void) } last_bpl_pix = pix0; } - shiftbpl2(); - if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { - copybpl2e(); + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8(); + loaded_pix = getbpl8_32(); } - if (bpldat_copy[1] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[1]) { - copybpl2o(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8_32(); } - loaded_pix = getbpl2_32(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + uae_u8 val1 = dpf_lookup[pix1]; + if (dpf_lookup_no[pix1]) { + val1 += dblpfofs[bpldualpf2of]; + } + val1 ^= bplcon4_denise_xor_val; + dpix_val1 = denise_colors.acolors[val1]; } + last_bpl_pix = pix1; } - loaded_pixs[0] = loaded_pix; - shiftbpl2(); - internal_pixel_cnt += 2; - matchsprites_aga(cnt + 2); + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8(); + loaded_pix = getbpl8_32(); + } + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8_32(); + } + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { @@ -29352,40 +73107,53 @@ static void lts_aga_fm1_dpf1_p2_ishres_dhires_spr(void) } last_bpl_pix = pix2; } - shiftbpl2(); - if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { - copybpl2e(); - } - if (bpldat_copy[1] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[1]) { - copybpl2o(); + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8(); + loaded_pix = getbpl8_32(); } - loaded_pix = getbpl2_32(); - uae_u32 sv2 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv2 = svt; - } + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8_32(); } loaded_pixs[2] = loaded_pix; - shiftbpl2(); - internal_pixel_cnt += 2; - if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + uae_u8 val3 = dpf_lookup[pix3]; + if (dpf_lookup_no[pix3]) { + val3 += dblpfofs[bpldualpf2of]; } + val3 ^= bplcon4_denise_xor_val; + dpix_val3 = denise_colors.acolors[val3]; } + last_bpl_pix = pix3; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8(); + loaded_pix = getbpl8_32(); + } + if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8_32(); + } + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 1; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; - if (sv2) { - uae_u32 spix2 = denise_render_sprites2(pix2, sv2); - if (spix2) { - dpix_val2 = denise_colors.acolors[spix2]; - } - } + dtbuf[h][1] = dpix_val1; dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -29394,6 +73162,14 @@ static void lts_aga_fm1_dpf1_p2_ishres_dhires_spr(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -29402,6 +73178,14 @@ static void lts_aga_fm1_dpf1_p2_ishres_dhires_spr(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -29425,7 +73209,11 @@ static void lts_aga_fm1_dpf1_p2_ishres_dhires_spr(void) denise_cck++; } } -static void lts_aga_fm1_dpf1_p2_ishres_dhires_spr_filtered(void) +static void lts_aga_fm1_dpf0_p8_ihires_dshres_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_dpf1_p8_ihires_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -29438,7 +73226,6 @@ static void lts_aga_fm1_dpf1_p2_ishres_dhires_spr_filtered(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -29455,23 +73242,30 @@ static void lts_aga_fm1_dpf1_p2_ishres_dhires_spr_filtered(void) } last_bpl_pix = pix0; } - shiftbpl2(); - if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { - copybpl2e(); + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8e(); + loaded_pix = getbpl8_32(); } - if (bpldat_copy[1] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[1]) { - copybpl2o(); + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl8o(); + loaded_pix = getbpl8_32(); } - loaded_pix = getbpl2_32(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8_32(); + } + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl8_32(); } loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 1; uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { @@ -29488,17 +73282,30 @@ static void lts_aga_fm1_dpf1_p2_ishres_dhires_spr_filtered(void) } last_bpl_pix = pix1; } - shiftbpl2(); - if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { - copybpl2e(); + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8e(); + loaded_pix = getbpl8_32(); } - if (bpldat_copy[1] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[1]) { - copybpl2o(); + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl8o(); + loaded_pix = getbpl8_32(); + } + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8_32(); + } + if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl8_32(); } - loaded_pix = getbpl2_32(); loaded_pixs[1] = loaded_pix; - internal_pixel_cnt += 2; - matchsprites_aga(cnt + 2); + internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { @@ -29515,23 +73322,30 @@ static void lts_aga_fm1_dpf1_p2_ishres_dhires_spr_filtered(void) } last_bpl_pix = pix2; } - shiftbpl2(); - if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { - copybpl2e(); + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8e(); + loaded_pix = getbpl8_32(); } - if (bpldat_copy[1] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[1]) { - copybpl2o(); + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl8o(); + loaded_pix = getbpl8_32(); + } + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8_32(); } - loaded_pix = getbpl2_32(); - uae_u32 sv2 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv2 = svt; - } + if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl8_32(); } loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 1; uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { @@ -29548,35 +73362,35 @@ static void lts_aga_fm1_dpf1_p2_ishres_dhires_spr_filtered(void) } last_bpl_pix = pix3; } - shiftbpl2(); - if (bpldat_copy[0] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[0]) { - copybpl2e(); + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8e(); + loaded_pix = getbpl8_32(); } - if (bpldat_copy[1] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[1]) { - copybpl2o(); + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl8o(); + loaded_pix = getbpl8_32(); + } + if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8_32(); + } + if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl8_32(); } - loaded_pix = getbpl2_32(); loaded_pixs[3] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - dpix_val1 = dpix_val0; - } - } - dpix_val0 = filter_pixel(dpix_val0, dpix_val1); dtbuf[h][0] = dpix_val0; - if (sv2) { - uae_u32 spix2 = denise_render_sprites2(pix2, sv2); - if (spix2) { - dpix_val2 = denise_colors.acolors[spix2]; - dpix_val3 = dpix_val2; - } - } - dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + dtbuf[h][1] = dpix_val1; dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -29585,6 +73399,14 @@ static void lts_aga_fm1_dpf1_p2_ishres_dhires_spr_filtered(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -29593,6 +73415,14 @@ static void lts_aga_fm1_dpf1_p2_ishres_dhires_spr_filtered(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -29616,55 +73446,11 @@ static void lts_aga_fm1_dpf1_p2_ishres_dhires_spr_filtered(void) denise_cck++; } } -static void lts_aga_fm1_ehb0_p2_ishres_dhires_spr(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb0_p2_ishres_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb1_p2_ishres_dhires_spr(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb1_p2_ishres_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_ham0_p2_ishres_dhires_spr(void) -{ - lts_null(); -} -static void lts_aga_fm1_ham0_p2_ishres_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_ham1_p2_ishres_dhires_spr(void) -{ - lts_null(); -} -static void lts_aga_fm1_ham1_p2_ishres_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb0_p2_ishres_dhires_spr(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb0_p2_ishres_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb1_p2_ishres_dhires_spr(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb1_p2_ishres_dhires_spr_filtered(void) +static void lts_aga_fm1_dpf1_p8_ihires_dshres_filtered(void) { lts_null(); } -static void lts_aga_fm1_n0_p4_ishres_dhires_spr(void) +static void lts_aga_fm1_ehb0_p8_ihires_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -29675,79 +73461,36 @@ 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; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix0; - } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4(); } - loaded_pix = getbpl4_32(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; } - loaded_pixs[0] = loaded_pix; - shiftbpl4(); - internal_pixel_cnt += 2; - matchsprites_aga(cnt + 2); + internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix2; - } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4(); } - loaded_pix = getbpl4_32(); - uae_u32 sv2 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv2 = svt; - } + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; } - loaded_pixs[2] = loaded_pix; - shiftbpl4(); - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - } - } dtbuf[h][0] = dpix_val0; - if (sv2) { - uae_u32 spix2 = denise_render_sprites2(pix2, sv2); - if (spix2) { - dpix_val2 = denise_colors.acolors[spix2]; - } - } + dtbuf[h][1] = dpix_val1; dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -29756,6 +73499,14 @@ static void lts_aga_fm1_n0_p4_ishres_dhires_spr(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -29764,6 +73515,14 @@ static void lts_aga_fm1_n0_p4_ishres_dhires_spr(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -29787,7 +73546,11 @@ static void lts_aga_fm1_n0_p4_ishres_dhires_spr(void) denise_cck++; } } -static void lts_aga_fm1_n0_p4_ishres_dhires_spr_filtered(void) +static void lts_aga_fm1_ehb0_p8_ihires_dshres_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_ehb1_p8_ihires_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -29798,115 +73561,36 @@ 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; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix0; - } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4(); - } - loaded_pix = getbpl4_32(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } } - loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 1; uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix1; } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4(); - } - loaded_pix = getbpl4_32(); - loaded_pixs[1] = loaded_pix; - internal_pixel_cnt += 2; - matchsprites_aga(cnt + 2); + internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix2; - } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4(); - } - loaded_pix = getbpl4_32(); - uae_u32 sv2 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv2 = svt; - } } - loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 1; uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix3; - } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4(); } - loaded_pix = getbpl4_32(); - loaded_pixs[3] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - dpix_val1 = dpix_val0; - } - } - dpix_val0 = filter_pixel(dpix_val0, dpix_val1); dtbuf[h][0] = dpix_val0; - if (sv2) { - uae_u32 spix2 = denise_render_sprites2(pix2, sv2); - if (spix2) { - dpix_val2 = denise_colors.acolors[spix2]; - dpix_val3 = dpix_val2; - } - } - dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + dtbuf[h][1] = dpix_val1; dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -29915,6 +73599,14 @@ static void lts_aga_fm1_n0_p4_ishres_dhires_spr_filtered(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -29923,6 +73615,14 @@ static void lts_aga_fm1_n0_p4_ishres_dhires_spr_filtered(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -29946,7 +73646,11 @@ static void lts_aga_fm1_n0_p4_ishres_dhires_spr_filtered(void) denise_cck++; } } -static void lts_aga_fm1_n1_p4_ishres_dhires_spr(void) +static void lts_aga_fm1_ehb1_p8_ihires_dshres_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_ham0_p8_ihires_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -29959,7 +73663,6 @@ static void lts_aga_fm1_n1_p4_ishres_dhires_spr(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -29967,30 +73670,47 @@ static void lts_aga_fm1_n1_p4_ishres_dhires_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + dpix_val0 = decode_ham_pixel_aga(pix0); } last_bpl_pix = pix0; } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4e(); + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8(); + loaded_pix = getbpl8_32(); } - if (bpldat_copy[1] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[1]) { - copybpl4o(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8_32(); } - loaded_pix = getbpl4_32(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + dpix_val1 = decode_ham_pixel_aga(pix1); } + last_bpl_pix = pix1; } - loaded_pixs[0] = loaded_pix; - shiftbpl4(); - internal_pixel_cnt += 2; - matchsprites_aga(cnt + 2); + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8(); + loaded_pix = getbpl8_32(); + } + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8_32(); + } + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { @@ -29998,44 +73718,52 @@ static void lts_aga_fm1_n1_p4_ishres_dhires_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + dpix_val2 = decode_ham_pixel_aga(pix2); } last_bpl_pix = pix2; } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4e(); + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8(); + loaded_pix = getbpl8_32(); } - if (bpldat_copy[1] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[1]) { - copybpl4o(); + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8_32(); } - loaded_pix = getbpl4_32(); - uae_u32 sv2 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv2 = svt; + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + dpix_val3 = decode_ham_pixel_aga(pix3); } + last_bpl_pix = pix3; } - loaded_pixs[2] = loaded_pix; - shiftbpl4(); - internal_pixel_cnt += 2; + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8(); + loaded_pix = getbpl8_32(); + } + if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8_32(); + } + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - } - } dtbuf[h][0] = dpix_val0; - if (sv2) { - uae_u32 spix2 = denise_render_sprites2(pix2, sv2); - if (spix2) { - dpix_val2 = denise_colors.acolors[spix2]; - } - } + dtbuf[h][1] = dpix_val1; dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -30044,6 +73772,14 @@ static void lts_aga_fm1_n1_p4_ishres_dhires_spr(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -30052,6 +73788,14 @@ static void lts_aga_fm1_n1_p4_ishres_dhires_spr(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -30075,7 +73819,11 @@ static void lts_aga_fm1_n1_p4_ishres_dhires_spr(void) denise_cck++; } } -static void lts_aga_fm1_n1_p4_ishres_dhires_spr_filtered(void) +static void lts_aga_fm1_ham0_p8_ihires_dshres_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_ham1_p8_ihires_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -30088,7 +73836,6 @@ static void lts_aga_fm1_n1_p4_ishres_dhires_spr_filtered(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -30096,27 +73843,34 @@ static void lts_aga_fm1_n1_p4_ishres_dhires_spr_filtered(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + dpix_val0 = decode_ham_pixel_aga(pix0); } last_bpl_pix = pix0; } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4e(); + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8e(); + loaded_pix = getbpl8_32(); } - if (bpldat_copy[1] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[1]) { - copybpl4o(); + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl8o(); + loaded_pix = getbpl8_32(); } - loaded_pix = getbpl4_32(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8_32(); + } + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl8_32(); } loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 1; uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { @@ -30124,21 +73878,34 @@ static void lts_aga_fm1_n1_p4_ishres_dhires_spr_filtered(void) if (denise_hdiw && bpl1dat_trigger) { pix1 = loaded_pixs[1]; clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; + dpix_val1 = decode_ham_pixel_aga(pix1); } last_bpl_pix = pix1; } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4e(); + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8e(); + loaded_pix = getbpl8_32(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl8o(); + loaded_pix = getbpl8_32(); } - if (bpldat_copy[1] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[1]) { - copybpl4o(); + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8_32(); + } + if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl8_32(); } - loaded_pix = getbpl4_32(); loaded_pixs[1] = loaded_pix; - internal_pixel_cnt += 2; - matchsprites_aga(cnt + 2); + internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { @@ -30146,27 +73913,34 @@ static void lts_aga_fm1_n1_p4_ishres_dhires_spr_filtered(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + dpix_val2 = decode_ham_pixel_aga(pix2); } last_bpl_pix = pix2; } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4e(); + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8e(); + loaded_pix = getbpl8_32(); } - if (bpldat_copy[1] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[1]) { - copybpl4o(); + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl8o(); + loaded_pix = getbpl8_32(); } - loaded_pix = getbpl4_32(); - uae_u32 sv2 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv2 = svt; - } + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8_32(); + } + if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl8_32(); } loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 1; uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { @@ -30174,39 +73948,39 @@ static void lts_aga_fm1_n1_p4_ishres_dhires_spr_filtered(void) if (denise_hdiw && bpl1dat_trigger) { pix3 = loaded_pixs[3]; clxdat |= bplcoltable[pix3]; - dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; + dpix_val3 = decode_ham_pixel_aga(pix3); } last_bpl_pix = pix3; } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4e(); + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8e(); + loaded_pix = getbpl8_32(); } - if (bpldat_copy[1] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[1]) { - copybpl4o(); + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl8o(); + loaded_pix = getbpl8_32(); + } + if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8_32(); + } + if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl8_32(); } - loaded_pix = getbpl4_32(); loaded_pixs[3] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - dpix_val1 = dpix_val0; - } - } - dpix_val0 = filter_pixel(dpix_val0, dpix_val1); dtbuf[h][0] = dpix_val0; - if (sv2) { - uae_u32 spix2 = denise_render_sprites2(pix2, sv2); - if (spix2) { - dpix_val2 = denise_colors.acolors[spix2]; - dpix_val3 = dpix_val2; - } - } - dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + dtbuf[h][1] = dpix_val1; dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -30215,6 +73989,14 @@ static void lts_aga_fm1_n1_p4_ishres_dhires_spr_filtered(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -30223,6 +74005,14 @@ static void lts_aga_fm1_n1_p4_ishres_dhires_spr_filtered(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -30246,7 +74036,11 @@ static void lts_aga_fm1_n1_p4_ishres_dhires_spr_filtered(void) denise_cck++; } } -static void lts_aga_fm1_dpf0_p4_ishres_dhires_spr(void) +static void lts_aga_fm1_ham1_p8_ihires_dshres_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_kehb0_p8_ihires_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -30257,89 +74051,36 @@ 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; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; - } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4(); } - loaded_pix = getbpl4_32(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; } - loaded_pixs[0] = loaded_pix; - shiftbpl4(); - internal_pixel_cnt += 2; - matchsprites_aga(cnt + 2); + internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; - } - last_bpl_pix = pix2; } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4(); - } - loaded_pix = getbpl4_32(); - uae_u32 sv2 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv2 = svt; - } + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; } - loaded_pixs[2] = loaded_pix; - shiftbpl4(); - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - } - } dtbuf[h][0] = dpix_val0; - if (sv2) { - uae_u32 spix2 = denise_render_sprites2(pix2, sv2); - if (spix2) { - dpix_val2 = denise_colors.acolors[spix2]; - } - } + dtbuf[h][1] = dpix_val1; dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -30348,6 +74089,14 @@ static void lts_aga_fm1_dpf0_p4_ishres_dhires_spr(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -30356,6 +74105,14 @@ static void lts_aga_fm1_dpf0_p4_ishres_dhires_spr(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -30379,7 +74136,11 @@ static void lts_aga_fm1_dpf0_p4_ishres_dhires_spr(void) denise_cck++; } } -static void lts_aga_fm1_dpf0_p4_ishres_dhires_spr_filtered(void) +static void lts_aga_fm1_kehb0_p8_ihires_dshres_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_kehb1_p8_ihires_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -30390,135 +74151,36 @@ 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; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; - } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4(); - } - loaded_pix = getbpl4_32(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } } - loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 1; uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - if (dpf_lookup_no[pix1]) { - val1 += dblpfofs[bpldualpf2of]; - } - val1 ^= bplcon4_denise_xor_val; - dpix_val1 = denise_colors.acolors[val1]; - } - last_bpl_pix = pix1; } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4(); - } - loaded_pix = getbpl4_32(); - loaded_pixs[1] = loaded_pix; - internal_pixel_cnt += 2; - matchsprites_aga(cnt + 2); + internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; - } - last_bpl_pix = pix2; - } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4(); - } - loaded_pix = getbpl4_32(); - uae_u32 sv2 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv2 = svt; - } } - loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 1; uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - uae_u8 val3 = dpf_lookup[pix3]; - if (dpf_lookup_no[pix3]) { - val3 += dblpfofs[bpldualpf2of]; - } - val3 ^= bplcon4_denise_xor_val; - dpix_val3 = denise_colors.acolors[val3]; - } - last_bpl_pix = pix3; - } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4(); } - loaded_pix = getbpl4_32(); - loaded_pixs[3] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - dpix_val1 = dpix_val0; - } - } - dpix_val0 = filter_pixel(dpix_val0, dpix_val1); dtbuf[h][0] = dpix_val0; - if (sv2) { - uae_u32 spix2 = denise_render_sprites2(pix2, sv2); - if (spix2) { - dpix_val2 = denise_colors.acolors[spix2]; - dpix_val3 = dpix_val2; - } - } - dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + dtbuf[h][1] = dpix_val1; dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -30527,6 +74189,14 @@ static void lts_aga_fm1_dpf0_p4_ishres_dhires_spr_filtered(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -30535,6 +74205,14 @@ static void lts_aga_fm1_dpf0_p4_ishres_dhires_spr_filtered(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -30558,7 +74236,11 @@ static void lts_aga_fm1_dpf0_p4_ishres_dhires_spr_filtered(void) denise_cck++; } } -static void lts_aga_fm1_dpf1_p4_ishres_dhires_spr(void) +static void lts_aga_fm1_kehb1_p8_ihires_dshres_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_n0_p2_ihires_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -30579,23 +74261,21 @@ static void lts_aga_fm1_dpf1_p4_ishres_dhires_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix0; } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4e(); + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl2(); + loaded_pix = getbpl2_32(); } - if (bpldat_copy[1] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[1]) { - copybpl4o(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl2(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl2_32(); } - loaded_pix = getbpl4_32(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -30605,8 +74285,40 @@ static void lts_aga_fm1_dpf1_p4_ishres_dhires_spr(void) } } loaded_pixs[0] = loaded_pix; - shiftbpl4(); - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix1; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl2(); + loaded_pix = getbpl2_32(); + } + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl2(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl2_32(); + } + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } + } + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 1; matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; @@ -30615,23 +74327,21 @@ static void lts_aga_fm1_dpf1_p4_ishres_dhires_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix2; } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4e(); + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl2(); + loaded_pix = getbpl2_32(); } - if (bpldat_copy[1] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[1]) { - copybpl4o(); + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl2(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl2_32(); } - loaded_pix = getbpl4_32(); uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -30641,8 +74351,40 @@ static void lts_aga_fm1_dpf1_p4_ishres_dhires_spr(void) } } loaded_pixs[2] = loaded_pix; - shiftbpl4(); - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix3; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl2(); + loaded_pix = getbpl2_32(); + } + if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { + copybpl2(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl2_32(); + } + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } + } + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { uae_u32 spix0 = denise_render_sprites2(pix0, sv0); @@ -30651,6 +74393,13 @@ static void lts_aga_fm1_dpf1_p4_ishres_dhires_spr(void) } } dtbuf[h][0] = dpix_val0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } + dtbuf[h][1] = dpix_val1; if (sv2) { uae_u32 spix2 = denise_render_sprites2(pix2, sv2); if (spix2) { @@ -30658,6 +74407,13 @@ static void lts_aga_fm1_dpf1_p4_ishres_dhires_spr(void) } } dtbuf[h][2] = dpix_val2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + } + } + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -30666,14 +74422,30 @@ static void lts_aga_fm1_dpf1_p4_ishres_dhires_spr(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { - t2 = decode_denise_specials_debug(t2, cnt + 2); + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); } #endif - *buf1++ = t2; - *buf2++ = t2; + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -30697,7 +74469,11 @@ static void lts_aga_fm1_dpf1_p4_ishres_dhires_spr(void) denise_cck++; } } -static void lts_aga_fm1_dpf1_p4_ishres_dhires_spr_filtered(void) +static void lts_aga_fm1_n0_p2_ihires_dshres_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_n1_p2_ihires_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -30718,23 +74494,32 @@ static void lts_aga_fm1_dpf1_p4_ishres_dhires_spr_filtered(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix0; } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4e(); + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl2e(); + loaded_pix = getbpl2_32(); } - if (bpldat_copy[1] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[1]) { - copybpl4o(); + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl2o(); + loaded_pix = getbpl2_32(); + } + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl2e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl2_32(); + } + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl2o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl2_32(); } - loaded_pix = getbpl4_32(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -30744,6 +74529,8 @@ static void lts_aga_fm1_dpf1_p4_ishres_dhires_spr_filtered(void) } } loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { @@ -30751,25 +74538,42 @@ static void lts_aga_fm1_dpf1_p4_ishres_dhires_spr_filtered(void) if (denise_hdiw && bpl1dat_trigger) { pix1 = loaded_pixs[1]; clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - if (dpf_lookup_no[pix1]) { - val1 += dblpfofs[bpldualpf2of]; - } - val1 ^= bplcon4_denise_xor_val; - dpix_val1 = denise_colors.acolors[val1]; + dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix1; } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4e(); + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl2e(); + loaded_pix = getbpl2_32(); } - if (bpldat_copy[1] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[1]) { - copybpl4o(); + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl2o(); + loaded_pix = getbpl2_32(); + } + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl2e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl2_32(); + } + if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { + copybpl2o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl2_32(); + } + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } } - loaded_pix = getbpl4_32(); loaded_pixs[1] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; @@ -30778,23 +74582,32 @@ static void lts_aga_fm1_dpf1_p4_ishres_dhires_spr_filtered(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix2; } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4e(); + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl2e(); + loaded_pix = getbpl2_32(); } - if (bpldat_copy[1] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[1]) { - copybpl4o(); + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl2o(); + loaded_pix = getbpl2_32(); + } + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl2e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl2_32(); + } + if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { + copybpl2o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl2_32(); } - loaded_pix = getbpl4_32(); uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -30804,6 +74617,8 @@ static void lts_aga_fm1_dpf1_p4_ishres_dhires_spr_filtered(void) } } loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { @@ -30811,44 +74626,71 @@ static void lts_aga_fm1_dpf1_p4_ishres_dhires_spr_filtered(void) if (denise_hdiw && bpl1dat_trigger) { pix3 = loaded_pixs[3]; clxdat |= bplcoltable[pix3]; - uae_u8 val3 = dpf_lookup[pix3]; - if (dpf_lookup_no[pix3]) { - val3 += dblpfofs[bpldualpf2of]; - } - val3 ^= bplcon4_denise_xor_val; - dpix_val3 = denise_colors.acolors[val3]; + dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix3; } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4e(); + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl2e(); + loaded_pix = getbpl2_32(); } - if (bpldat_copy[1] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[1]) { - copybpl4o(); + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl2o(); + loaded_pix = getbpl2_32(); + } + if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { + copybpl2e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl2_32(); + } + if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) { + copybpl2o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl2_32(); + } + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } } - loaded_pix = getbpl4_32(); loaded_pixs[3] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { uae_u32 spix0 = denise_render_sprites2(pix0, sv0); if (spix0) { dpix_val0 = denise_colors.acolors[spix0]; - dpix_val1 = dpix_val0; } } - dpix_val0 = filter_pixel(dpix_val0, dpix_val1); dtbuf[h][0] = dpix_val0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } + dtbuf[h][1] = dpix_val1; if (sv2) { uae_u32 spix2 = denise_render_sprites2(pix2, sv2); if (spix2) { dpix_val2 = denise_colors.acolors[spix2]; - dpix_val3 = dpix_val2; } } - dpix_val2 = filter_pixel(dpix_val2, dpix_val3); dtbuf[h][2] = dpix_val2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + } + } + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -30857,6 +74699,14 @@ static void lts_aga_fm1_dpf1_p4_ishres_dhires_spr_filtered(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -30865,6 +74715,14 @@ static void lts_aga_fm1_dpf1_p4_ishres_dhires_spr_filtered(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -30888,215 +74746,11 @@ static void lts_aga_fm1_dpf1_p4_ishres_dhires_spr_filtered(void) denise_cck++; } } -static void lts_aga_fm1_ehb0_p4_ishres_dhires_spr(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb0_p4_ishres_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb1_p4_ishres_dhires_spr(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb1_p4_ishres_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_ham0_p4_ishres_dhires_spr(void) -{ - lts_null(); -} -static void lts_aga_fm1_ham0_p4_ishres_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_ham1_p4_ishres_dhires_spr(void) -{ - lts_null(); -} -static void lts_aga_fm1_ham1_p4_ishres_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb0_p4_ishres_dhires_spr(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb0_p4_ishres_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb1_p4_ishres_dhires_spr(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb1_p4_ishres_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_n0_p6_ishres_dhires_spr(void) -{ - lts_null(); -} -static void lts_aga_fm1_n0_p6_ishres_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_n1_p6_ishres_dhires_spr(void) -{ - lts_null(); -} -static void lts_aga_fm1_n1_p6_ishres_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_dpf0_p6_ishres_dhires_spr(void) -{ - lts_null(); -} -static void lts_aga_fm1_dpf0_p6_ishres_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_dpf1_p6_ishres_dhires_spr(void) -{ - lts_null(); -} -static void lts_aga_fm1_dpf1_p6_ishres_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb0_p6_ishres_dhires_spr(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb0_p6_ishres_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb1_p6_ishres_dhires_spr(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb1_p6_ishres_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_ham0_p6_ishres_dhires_spr(void) -{ - lts_null(); -} -static void lts_aga_fm1_ham0_p6_ishres_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_ham1_p6_ishres_dhires_spr(void) -{ - lts_null(); -} -static void lts_aga_fm1_ham1_p6_ishres_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb0_p6_ishres_dhires_spr(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb0_p6_ishres_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb1_p6_ishres_dhires_spr(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb1_p6_ishres_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_n0_p8_ishres_dhires_spr(void) -{ - lts_null(); -} -static void lts_aga_fm1_n0_p8_ishres_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_n1_p8_ishres_dhires_spr(void) -{ - lts_null(); -} -static void lts_aga_fm1_n1_p8_ishres_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_dpf0_p8_ishres_dhires_spr(void) -{ - lts_null(); -} -static void lts_aga_fm1_dpf0_p8_ishres_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_dpf1_p8_ishres_dhires_spr(void) -{ - lts_null(); -} -static void lts_aga_fm1_dpf1_p8_ishres_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb0_p8_ishres_dhires_spr(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb0_p8_ishres_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb1_p8_ishres_dhires_spr(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb1_p8_ishres_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_ham0_p8_ishres_dhires_spr(void) -{ - lts_null(); -} -static void lts_aga_fm1_ham0_p8_ishres_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_ham1_p8_ishres_dhires_spr(void) -{ - lts_null(); -} -static void lts_aga_fm1_ham1_p8_ishres_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb0_p8_ishres_dhires_spr(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb0_p8_ishres_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb1_p8_ishres_dhires_spr(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb1_p8_ishres_dhires_spr_filtered(void) +static void lts_aga_fm1_n1_p2_ihires_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm1_n0_p2_ilores_dshres(void) +static void lts_aga_fm1_dpf0_p2_ihires_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -31109,6 +74763,7 @@ static void lts_aga_fm1_n0_p2_ilores_dshres(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -31116,23 +74771,37 @@ static void lts_aga_fm1_n0_p2_ilores_dshres(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; } last_bpl_pix = pix0; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; shiftbpl2(); loaded_pix = getbpl2_32(); } - if (bpldat_copy[0] && ((cmp | 0) & 127) == 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(); } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { @@ -31140,23 +74809,37 @@ static void lts_aga_fm1_n0_p2_ilores_dshres(void) if (denise_hdiw && bpl1dat_trigger) { pix1 = loaded_pixs[1]; clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; + uae_u8 val1 = dpf_lookup[pix1]; + if (dpf_lookup_no[pix1]) { + val1 += dblpfofs[bpldualpf2of]; + } + val1 ^= bplcon4_denise_xor_val; + dpix_val1 = denise_colors.acolors[val1]; } last_bpl_pix = pix1; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; shiftbpl2(); loaded_pix = getbpl2_32(); } - if (bpldat_copy[0] && ((cmp | 1) & 127) == 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(); } + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } + } loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { @@ -31164,23 +74847,37 @@ static void lts_aga_fm1_n0_p2_ilores_dshres(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; } last_bpl_pix = pix2; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; shiftbpl2(); loaded_pix = getbpl2_32(); } - if (bpldat_copy[0] && ((cmp | 2) & 127) == 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(); } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { @@ -31188,27 +74885,64 @@ static void lts_aga_fm1_n0_p2_ilores_dshres(void) if (denise_hdiw && bpl1dat_trigger) { pix3 = loaded_pixs[3]; clxdat |= bplcoltable[pix3]; - dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; + uae_u8 val3 = dpf_lookup[pix3]; + if (dpf_lookup_no[pix3]) { + val3 += dblpfofs[bpldualpf2of]; + } + val3 ^= bplcon4_denise_xor_val; + dpix_val3 = denise_colors.acolors[val3]; } last_bpl_pix = pix3; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; shiftbpl2(); loaded_pix = getbpl2_32(); } - if (bpldat_copy[0] && ((cmp | 3) & 127) == 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(); } + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } + } loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } dtbuf[h][0] = dpix_val0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } dtbuf[h][1] = dpix_val1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } dtbuf[h][2] = dpix_val2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + } + } dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -31265,11 +74999,11 @@ static void lts_aga_fm1_n0_p2_ilores_dshres(void) denise_cck++; } } -static void lts_aga_fm1_n0_p2_ilores_dshres_filtered(void) +static void lts_aga_fm1_dpf0_p2_ihires_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm1_n1_p2_ilores_dshres(void) +static void lts_aga_fm1_dpf1_p2_ihires_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -31282,6 +75016,7 @@ static void lts_aga_fm1_n1_p2_ilores_dshres(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -31289,34 +75024,48 @@ static void lts_aga_fm1_n1_p2_ilores_dshres(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; } last_bpl_pix = pix0; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; shiftbpl2e(); loaded_pix = getbpl2_32(); } - bplshiftcnt[1] += 1; + bplshiftcnt[1] += 2; if (bplshiftcnt[1] >= 4) { bplshiftcnt[1] = 0; shiftbpl2o(); loaded_pix = getbpl2_32(); } - if (bpldat_copy[0] && ((cmp | 0) & 127) == 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] && ((cmp | 0) & 127) == 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(); } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { @@ -31324,34 +75073,48 @@ static void lts_aga_fm1_n1_p2_ilores_dshres(void) if (denise_hdiw && bpl1dat_trigger) { pix1 = loaded_pixs[1]; clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; + uae_u8 val1 = dpf_lookup[pix1]; + if (dpf_lookup_no[pix1]) { + val1 += dblpfofs[bpldualpf2of]; + } + val1 ^= bplcon4_denise_xor_val; + dpix_val1 = denise_colors.acolors[val1]; } last_bpl_pix = pix1; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; shiftbpl2e(); loaded_pix = getbpl2_32(); } - bplshiftcnt[1] += 1; + bplshiftcnt[1] += 2; if (bplshiftcnt[1] >= 4) { bplshiftcnt[1] = 0; shiftbpl2o(); loaded_pix = getbpl2_32(); } - if (bpldat_copy[0] && ((cmp | 1) & 127) == 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] && ((cmp | 1) & 127) == 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(); } + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } + } loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { @@ -31359,34 +75122,48 @@ static void lts_aga_fm1_n1_p2_ilores_dshres(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; } last_bpl_pix = pix2; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; shiftbpl2e(); loaded_pix = getbpl2_32(); } - bplshiftcnt[1] += 1; + bplshiftcnt[1] += 2; if (bplshiftcnt[1] >= 4) { bplshiftcnt[1] = 0; shiftbpl2o(); loaded_pix = getbpl2_32(); } - if (bpldat_copy[0] && ((cmp | 2) & 127) == 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] && ((cmp | 2) & 127) == 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(); } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { @@ -31394,38 +75171,75 @@ static void lts_aga_fm1_n1_p2_ilores_dshres(void) if (denise_hdiw && bpl1dat_trigger) { pix3 = loaded_pixs[3]; clxdat |= bplcoltable[pix3]; - dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; + uae_u8 val3 = dpf_lookup[pix3]; + if (dpf_lookup_no[pix3]) { + val3 += dblpfofs[bpldualpf2of]; + } + val3 ^= bplcon4_denise_xor_val; + dpix_val3 = denise_colors.acolors[val3]; } last_bpl_pix = pix3; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; shiftbpl2e(); loaded_pix = getbpl2_32(); } - bplshiftcnt[1] += 1; + bplshiftcnt[1] += 2; if (bplshiftcnt[1] >= 4) { bplshiftcnt[1] = 0; shiftbpl2o(); loaded_pix = getbpl2_32(); } - if (bpldat_copy[0] && ((cmp | 3) & 127) == 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] && ((cmp | 3) & 127) == 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(); } + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } + } loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } dtbuf[h][0] = dpix_val0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } dtbuf[h][1] = dpix_val1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } dtbuf[h][2] = dpix_val2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + } + } dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -31482,11 +75296,11 @@ static void lts_aga_fm1_n1_p2_ilores_dshres(void) denise_cck++; } } -static void lts_aga_fm1_n1_p2_ilores_dshres_filtered(void) +static void lts_aga_fm1_dpf1_p2_ihires_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm1_dpf0_p2_ilores_dshres(void) +static void lts_aga_fm1_ehb0_p2_ihires_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -31497,128 +75311,415 @@ 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; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl2(); - loaded_pix = getbpl2_32(); } - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl2(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl2_32(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - if (dpf_lookup_no[pix1]) { - val1 += dblpfofs[bpldualpf2of]; + } + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } + } + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } + } + internal_pixel_cnt += 1; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; } - val1 ^= bplcon4_denise_xor_val; - dpix_val1 = denise_colors.acolors[val1]; } - last_bpl_pix = pix1; + dtbuf[h][0] = dpix_val0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } + dtbuf[h][1] = dpix_val1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + } + } + dtbuf[h][3] = dpix_val3; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl2(); - loaded_pix = getbpl2_32(); + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_ehb0_p2_ihires_dshres_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_ehb1_p2_ihires_dshres_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; } - if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { - copybpl2(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl2_32(); + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } } - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } + } + internal_pixel_cnt += 1; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; } - last_bpl_pix = pix2; + dtbuf[h][0] = dpix_val0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } + dtbuf[h][1] = dpix_val1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + } + } + dtbuf[h][3] = dpix_val3; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl2(); - loaded_pix = getbpl2_32(); + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_ehb1_p2_ihires_dshres_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_ham0_p2_ihires_dshres_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } + } + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; } - if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { - copybpl2(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl2_32(); + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } } - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - uae_u8 val3 = dpf_lookup[pix3]; - if (dpf_lookup_no[pix3]) { - val3 += dblpfofs[bpldualpf2of]; - } - val3 ^= bplcon4_denise_xor_val; - dpix_val3 = denise_colors.acolors[val3]; - } - last_bpl_pix = pix3; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl2(); - loaded_pix = getbpl2_32(); } - if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { - copybpl2(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl2_32(); + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } } - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } dtbuf[h][0] = dpix_val0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } dtbuf[h][1] = dpix_val1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } dtbuf[h][2] = dpix_val2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + } + } dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -31675,11 +75776,11 @@ static void lts_aga_fm1_dpf0_p2_ilores_dshres(void) denise_cck++; } } -static void lts_aga_fm1_dpf0_p2_ilores_dshres_filtered(void) +static void lts_aga_fm1_ham0_p2_ihires_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm1_dpf1_p2_ilores_dshres(void) +static void lts_aga_fm1_ham1_p2_ihires_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -31690,172 +75791,95 @@ 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; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl2e(); - loaded_pix = getbpl2_32(); - } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl2o(); - loaded_pix = getbpl2_32(); - } - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl2e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl2_32(); } - if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { - copybpl2o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl2_32(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - if (dpf_lookup_no[pix1]) { - val1 += dblpfofs[bpldualpf2of]; - } - val1 ^= bplcon4_denise_xor_val; - dpix_val1 = denise_colors.acolors[val1]; - } - last_bpl_pix = pix1; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl2e(); - loaded_pix = getbpl2_32(); - } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl2o(); - loaded_pix = getbpl2_32(); - } - if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { - copybpl2e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl2_32(); } - if (bpldat_copy[1] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) { - copybpl2o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl2_32(); + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } } - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl2e(); - loaded_pix = getbpl2_32(); } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl2o(); - loaded_pix = getbpl2_32(); - } - if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { - copybpl2e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl2_32(); - } - if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) { - copybpl2o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl2_32(); + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } } - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - uae_u8 val3 = dpf_lookup[pix3]; - if (dpf_lookup_no[pix3]) { - val3 += dblpfofs[bpldualpf2of]; - } - val3 ^= bplcon4_denise_xor_val; - dpix_val3 = denise_colors.acolors[val3]; - } - last_bpl_pix = pix3; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl2e(); - loaded_pix = getbpl2_32(); - } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl2o(); - loaded_pix = getbpl2_32(); - } - if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { - copybpl2e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl2_32(); } - if (bpldat_copy[1] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[1]) { - copybpl2o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl2_32(); + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } } - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } dtbuf[h][0] = dpix_val0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } dtbuf[h][1] = dpix_val1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } dtbuf[h][2] = dpix_val2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + } + } dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -31912,59 +75936,11 @@ static void lts_aga_fm1_dpf1_p2_ilores_dshres(void) denise_cck++; } } -static void lts_aga_fm1_dpf1_p2_ilores_dshres_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb0_p2_ilores_dshres(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb0_p2_ilores_dshres_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb1_p2_ilores_dshres(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb1_p2_ilores_dshres_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_ham0_p2_ilores_dshres(void) -{ - lts_null(); -} -static void lts_aga_fm1_ham0_p2_ilores_dshres_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_ham1_p2_ilores_dshres(void) -{ - lts_null(); -} -static void lts_aga_fm1_ham1_p2_ilores_dshres_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb0_p2_ilores_dshres(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb0_p2_ilores_dshres_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb1_p2_ilores_dshres(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb1_p2_ilores_dshres_filtered(void) +static void lts_aga_fm1_ham1_p2_ihires_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm1_n0_p4_ilores_dshres(void) +static void lts_aga_fm1_kehb0_p2_ihires_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -31975,108 +75951,95 @@ 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; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4(); - loaded_pix = getbpl4_32(); } - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl4(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4_32(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix1; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4(); - loaded_pix = getbpl4_32(); } - if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { - copybpl4(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4_32(); + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } } - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4(); - loaded_pix = getbpl4_32(); } - if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { - copybpl4(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4_32(); + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } } - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix3; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4(); - loaded_pix = getbpl4_32(); } - if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { - copybpl4(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4_32(); + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } } - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } dtbuf[h][0] = dpix_val0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } dtbuf[h][1] = dpix_val1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } dtbuf[h][2] = dpix_val2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + } + } dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -32133,11 +76096,11 @@ static void lts_aga_fm1_n0_p4_ilores_dshres(void) denise_cck++; } } -static void lts_aga_fm1_n0_p4_ilores_dshres_filtered(void) +static void lts_aga_fm1_kehb0_p2_ihires_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm1_n1_p4_ilores_dshres(void) +static void lts_aga_fm1_kehb1_p2_ihires_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -32148,152 +76111,95 @@ 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; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4e(); - loaded_pix = getbpl4_32(); - } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl4o(); - loaded_pix = getbpl4_32(); - } - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl4e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4_32(); } - if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { - copybpl4o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl4_32(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix1; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4e(); - loaded_pix = getbpl4_32(); - } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl4o(); - loaded_pix = getbpl4_32(); - } - if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { - copybpl4e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4_32(); } - if (bpldat_copy[1] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) { - copybpl4o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl4_32(); + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } } - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4e(); - loaded_pix = getbpl4_32(); - } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl4o(); - loaded_pix = getbpl4_32(); - } - if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { - copybpl4e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4_32(); } - if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) { - copybpl4o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl4_32(); + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } } - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix3; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4e(); - loaded_pix = getbpl4_32(); - } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl4o(); - loaded_pix = getbpl4_32(); - } - if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { - copybpl4e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4_32(); } - if (bpldat_copy[1] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[1]) { - copybpl4o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl4_32(); + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } } - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } dtbuf[h][0] = dpix_val0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } dtbuf[h][1] = dpix_val1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } dtbuf[h][2] = dpix_val2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + } + } dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -32350,11 +76256,11 @@ static void lts_aga_fm1_n1_p4_ilores_dshres(void) denise_cck++; } } -static void lts_aga_fm1_n1_p4_ilores_dshres_filtered(void) +static void lts_aga_fm1_kehb1_p2_ihires_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm1_dpf0_p4_ilores_dshres(void) +static void lts_aga_fm1_n0_p4_ihires_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -32367,6 +76273,7 @@ static void lts_aga_fm1_dpf0_p4_ilores_dshres(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -32374,28 +76281,32 @@ static void lts_aga_fm1_dpf0_p4_ilores_dshres(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix0; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; shiftbpl4(); loaded_pix = getbpl4_32(); } - if (bpldat_copy[0] && ((cmp | 0) & 127) == 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(); } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { @@ -32403,28 +76314,32 @@ static void lts_aga_fm1_dpf0_p4_ilores_dshres(void) if (denise_hdiw && bpl1dat_trigger) { pix1 = loaded_pixs[1]; clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - if (dpf_lookup_no[pix1]) { - val1 += dblpfofs[bpldualpf2of]; - } - val1 ^= bplcon4_denise_xor_val; - dpix_val1 = denise_colors.acolors[val1]; + dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix1; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; shiftbpl4(); loaded_pix = getbpl4_32(); } - if (bpldat_copy[0] && ((cmp | 1) & 127) == 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(); } + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } + } loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { @@ -32432,28 +76347,32 @@ static void lts_aga_fm1_dpf0_p4_ilores_dshres(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix2; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; shiftbpl4(); loaded_pix = getbpl4_32(); } - if (bpldat_copy[0] && ((cmp | 2) & 127) == 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(); } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { @@ -32461,32 +76380,59 @@ static void lts_aga_fm1_dpf0_p4_ilores_dshres(void) if (denise_hdiw && bpl1dat_trigger) { pix3 = loaded_pixs[3]; clxdat |= bplcoltable[pix3]; - uae_u8 val3 = dpf_lookup[pix3]; - if (dpf_lookup_no[pix3]) { - val3 += dblpfofs[bpldualpf2of]; - } - val3 ^= bplcon4_denise_xor_val; - dpix_val3 = denise_colors.acolors[val3]; + dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix3; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; shiftbpl4(); loaded_pix = getbpl4_32(); } - if (bpldat_copy[0] && ((cmp | 3) & 127) == 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(); } + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } + } loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } dtbuf[h][0] = dpix_val0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } dtbuf[h][1] = dpix_val1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } dtbuf[h][2] = dpix_val2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + } + } dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -32543,11 +76489,11 @@ static void lts_aga_fm1_dpf0_p4_ilores_dshres(void) denise_cck++; } } -static void lts_aga_fm1_dpf0_p4_ilores_dshres_filtered(void) +static void lts_aga_fm1_n0_p4_ihires_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm1_dpf1_p4_ilores_dshres(void) +static void lts_aga_fm1_n1_p4_ihires_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -32560,6 +76506,7 @@ static void lts_aga_fm1_dpf1_p4_ilores_dshres(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -32567,39 +76514,43 @@ static void lts_aga_fm1_dpf1_p4_ilores_dshres(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix0; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; shiftbpl4e(); loaded_pix = getbpl4_32(); } - bplshiftcnt[1] += 1; + bplshiftcnt[1] += 2; if (bplshiftcnt[1] >= 4) { bplshiftcnt[1] = 0; shiftbpl4o(); loaded_pix = getbpl4_32(); } - if (bpldat_copy[0] && ((cmp | 0) & 127) == 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] && ((cmp | 0) & 127) == 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(); } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { @@ -32607,39 +76558,43 @@ static void lts_aga_fm1_dpf1_p4_ilores_dshres(void) if (denise_hdiw && bpl1dat_trigger) { pix1 = loaded_pixs[1]; clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - if (dpf_lookup_no[pix1]) { - val1 += dblpfofs[bpldualpf2of]; - } - val1 ^= bplcon4_denise_xor_val; - dpix_val1 = denise_colors.acolors[val1]; + dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix1; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; shiftbpl4e(); loaded_pix = getbpl4_32(); } - bplshiftcnt[1] += 1; + bplshiftcnt[1] += 2; if (bplshiftcnt[1] >= 4) { bplshiftcnt[1] = 0; shiftbpl4o(); loaded_pix = getbpl4_32(); } - if (bpldat_copy[0] && ((cmp | 1) & 127) == 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] && ((cmp | 1) & 127) == 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(); } + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } + } loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { @@ -32647,39 +76602,43 @@ static void lts_aga_fm1_dpf1_p4_ilores_dshres(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix2; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; shiftbpl4e(); loaded_pix = getbpl4_32(); } - bplshiftcnt[1] += 1; + bplshiftcnt[1] += 2; if (bplshiftcnt[1] >= 4) { bplshiftcnt[1] = 0; shiftbpl4o(); loaded_pix = getbpl4_32(); } - if (bpldat_copy[0] && ((cmp | 2) & 127) == 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] && ((cmp | 2) & 127) == 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(); } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { @@ -32687,43 +76646,70 @@ static void lts_aga_fm1_dpf1_p4_ilores_dshres(void) if (denise_hdiw && bpl1dat_trigger) { pix3 = loaded_pixs[3]; clxdat |= bplcoltable[pix3]; - uae_u8 val3 = dpf_lookup[pix3]; - if (dpf_lookup_no[pix3]) { - val3 += dblpfofs[bpldualpf2of]; - } - val3 ^= bplcon4_denise_xor_val; - dpix_val3 = denise_colors.acolors[val3]; + dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix3; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; shiftbpl4e(); loaded_pix = getbpl4_32(); } - bplshiftcnt[1] += 1; + bplshiftcnt[1] += 2; if (bplshiftcnt[1] >= 4) { bplshiftcnt[1] = 0; shiftbpl4o(); loaded_pix = getbpl4_32(); } - if (bpldat_copy[0] && ((cmp | 3) & 127) == 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] && ((cmp | 3) & 127) == 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(); } + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } + } loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } dtbuf[h][0] = dpix_val0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } dtbuf[h][1] = dpix_val1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } dtbuf[h][2] = dpix_val2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + } + } dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -32780,59 +76766,11 @@ static void lts_aga_fm1_dpf1_p4_ilores_dshres(void) denise_cck++; } } -static void lts_aga_fm1_dpf1_p4_ilores_dshres_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb0_p4_ilores_dshres(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb0_p4_ilores_dshres_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb1_p4_ilores_dshres(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb1_p4_ilores_dshres_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_ham0_p4_ilores_dshres(void) -{ - lts_null(); -} -static void lts_aga_fm1_ham0_p4_ilores_dshres_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_ham1_p4_ilores_dshres(void) -{ - lts_null(); -} -static void lts_aga_fm1_ham1_p4_ilores_dshres_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb0_p4_ilores_dshres(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb0_p4_ilores_dshres_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb1_p4_ilores_dshres(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb1_p4_ilores_dshres_filtered(void) +static void lts_aga_fm1_n1_p4_ihires_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm1_n0_p6_ilores_dshres(void) +static void lts_aga_fm1_dpf0_p4_ihires_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -32845,6 +76783,7 @@ static void lts_aga_fm1_n0_p6_ilores_dshres(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -32852,23 +76791,37 @@ static void lts_aga_fm1_n0_p6_ilores_dshres(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; } last_bpl_pix = pix0; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl6(); - loaded_pix = getbpl6_32(); + shiftbpl4(); + loaded_pix = getbpl4_32(); } - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl6(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4(); bplshiftcnt[0] = 0; - loaded_pix = getbpl6_32(); + loaded_pix = getbpl4_32(); + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } } loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { @@ -32876,23 +76829,37 @@ static void lts_aga_fm1_n0_p6_ilores_dshres(void) if (denise_hdiw && bpl1dat_trigger) { pix1 = loaded_pixs[1]; clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; + uae_u8 val1 = dpf_lookup[pix1]; + if (dpf_lookup_no[pix1]) { + val1 += dblpfofs[bpldualpf2of]; + } + val1 ^= bplcon4_denise_xor_val; + dpix_val1 = denise_colors.acolors[val1]; } last_bpl_pix = pix1; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl6(); - loaded_pix = getbpl6_32(); + shiftbpl4(); + loaded_pix = getbpl4_32(); } - if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { - copybpl6(); + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4(); bplshiftcnt[0] = 0; - loaded_pix = getbpl6_32(); + loaded_pix = getbpl4_32(); + } + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } } loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { @@ -32900,23 +76867,37 @@ static void lts_aga_fm1_n0_p6_ilores_dshres(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; } last_bpl_pix = pix2; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl6(); - loaded_pix = getbpl6_32(); + shiftbpl4(); + loaded_pix = getbpl4_32(); } - if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { - copybpl6(); + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4(); bplshiftcnt[0] = 0; - loaded_pix = getbpl6_32(); + loaded_pix = getbpl4_32(); + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } } loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { @@ -32924,27 +76905,64 @@ static void lts_aga_fm1_n0_p6_ilores_dshres(void) if (denise_hdiw && bpl1dat_trigger) { pix3 = loaded_pixs[3]; clxdat |= bplcoltable[pix3]; - dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; + uae_u8 val3 = dpf_lookup[pix3]; + if (dpf_lookup_no[pix3]) { + val3 += dblpfofs[bpldualpf2of]; + } + val3 ^= bplcon4_denise_xor_val; + dpix_val3 = denise_colors.acolors[val3]; } last_bpl_pix = pix3; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl6(); - loaded_pix = getbpl6_32(); + shiftbpl4(); + loaded_pix = getbpl4_32(); } - if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { - copybpl6(); + if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4(); bplshiftcnt[0] = 0; - loaded_pix = getbpl6_32(); + loaded_pix = getbpl4_32(); + } + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } } loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } dtbuf[h][0] = dpix_val0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } dtbuf[h][1] = dpix_val1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } dtbuf[h][2] = dpix_val2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + } + } dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -33001,11 +77019,11 @@ static void lts_aga_fm1_n0_p6_ilores_dshres(void) denise_cck++; } } -static void lts_aga_fm1_n0_p6_ilores_dshres_filtered(void) +static void lts_aga_fm1_dpf0_p4_ihires_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm1_n1_p6_ilores_dshres(void) +static void lts_aga_fm1_dpf1_p4_ihires_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -33018,6 +77036,7 @@ static void lts_aga_fm1_n1_p6_ilores_dshres(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -33025,34 +77044,48 @@ static void lts_aga_fm1_n1_p6_ilores_dshres(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; } last_bpl_pix = pix0; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl6e(); - loaded_pix = getbpl6_32(); + shiftbpl4e(); + loaded_pix = getbpl4_32(); } - bplshiftcnt[1] += 1; + bplshiftcnt[1] += 2; if (bplshiftcnt[1] >= 4) { bplshiftcnt[1] = 0; - shiftbpl6o(); - loaded_pix = getbpl6_32(); + shiftbpl4o(); + loaded_pix = getbpl4_32(); } - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl6e(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4e(); bplshiftcnt[0] = 0; - loaded_pix = getbpl6_32(); + loaded_pix = getbpl4_32(); } - if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { - copybpl6o(); + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl4o(); bplshiftcnt[1] = 0; - loaded_pix = getbpl6_32(); + loaded_pix = getbpl4_32(); + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } } loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { @@ -33060,34 +77093,48 @@ static void lts_aga_fm1_n1_p6_ilores_dshres(void) if (denise_hdiw && bpl1dat_trigger) { pix1 = loaded_pixs[1]; clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; + uae_u8 val1 = dpf_lookup[pix1]; + if (dpf_lookup_no[pix1]) { + val1 += dblpfofs[bpldualpf2of]; + } + val1 ^= bplcon4_denise_xor_val; + dpix_val1 = denise_colors.acolors[val1]; } last_bpl_pix = pix1; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl6e(); - loaded_pix = getbpl6_32(); + shiftbpl4e(); + loaded_pix = getbpl4_32(); } - bplshiftcnt[1] += 1; + bplshiftcnt[1] += 2; if (bplshiftcnt[1] >= 4) { bplshiftcnt[1] = 0; - shiftbpl6o(); - loaded_pix = getbpl6_32(); + shiftbpl4o(); + loaded_pix = getbpl4_32(); } - if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { - copybpl6e(); + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4e(); bplshiftcnt[0] = 0; - loaded_pix = getbpl6_32(); + loaded_pix = getbpl4_32(); } - if (bpldat_copy[1] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) { - copybpl6o(); + if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { + copybpl4o(); bplshiftcnt[1] = 0; - loaded_pix = getbpl6_32(); + loaded_pix = getbpl4_32(); + } + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } } loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { @@ -33095,34 +77142,48 @@ static void lts_aga_fm1_n1_p6_ilores_dshres(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; } last_bpl_pix = pix2; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl6e(); - loaded_pix = getbpl6_32(); + shiftbpl4e(); + loaded_pix = getbpl4_32(); } - bplshiftcnt[1] += 1; + bplshiftcnt[1] += 2; if (bplshiftcnt[1] >= 4) { bplshiftcnt[1] = 0; - shiftbpl6o(); - loaded_pix = getbpl6_32(); + shiftbpl4o(); + loaded_pix = getbpl4_32(); } - if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { - copybpl6e(); + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4e(); bplshiftcnt[0] = 0; - loaded_pix = getbpl6_32(); + loaded_pix = getbpl4_32(); } - if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) { - copybpl6o(); + if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { + copybpl4o(); bplshiftcnt[1] = 0; - loaded_pix = getbpl6_32(); + loaded_pix = getbpl4_32(); + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } } loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { @@ -33130,38 +77191,75 @@ static void lts_aga_fm1_n1_p6_ilores_dshres(void) if (denise_hdiw && bpl1dat_trigger) { pix3 = loaded_pixs[3]; clxdat |= bplcoltable[pix3]; - dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; + uae_u8 val3 = dpf_lookup[pix3]; + if (dpf_lookup_no[pix3]) { + val3 += dblpfofs[bpldualpf2of]; + } + val3 ^= bplcon4_denise_xor_val; + dpix_val3 = denise_colors.acolors[val3]; } last_bpl_pix = pix3; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl6e(); - loaded_pix = getbpl6_32(); + shiftbpl4e(); + loaded_pix = getbpl4_32(); } - bplshiftcnt[1] += 1; + bplshiftcnt[1] += 2; if (bplshiftcnt[1] >= 4) { bplshiftcnt[1] = 0; - shiftbpl6o(); - loaded_pix = getbpl6_32(); + shiftbpl4o(); + loaded_pix = getbpl4_32(); } - if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { - copybpl6e(); + if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4e(); bplshiftcnt[0] = 0; - loaded_pix = getbpl6_32(); + loaded_pix = getbpl4_32(); } - if (bpldat_copy[1] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[1]) { - copybpl6o(); + if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) { + copybpl4o(); bplshiftcnt[1] = 0; - loaded_pix = getbpl6_32(); + loaded_pix = getbpl4_32(); + } + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } } loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } dtbuf[h][0] = dpix_val0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } dtbuf[h][1] = dpix_val1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } dtbuf[h][2] = dpix_val2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + } + } dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -33218,11 +77316,11 @@ static void lts_aga_fm1_n1_p6_ilores_dshres(void) denise_cck++; } } -static void lts_aga_fm1_n1_p6_ilores_dshres_filtered(void) +static void lts_aga_fm1_dpf1_p4_ihires_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm1_dpf0_p6_ilores_dshres(void) +static void lts_aga_fm1_ehb0_p4_ihires_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -33233,128 +77331,95 @@ 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; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6(); - loaded_pix = getbpl6_32(); } - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl6(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6_32(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - if (dpf_lookup_no[pix1]) { - val1 += dblpfofs[bpldualpf2of]; - } - val1 ^= bplcon4_denise_xor_val; - dpix_val1 = denise_colors.acolors[val1]; - } - last_bpl_pix = pix1; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6(); - loaded_pix = getbpl6_32(); } - if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { - copybpl6(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6_32(); + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } } - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6(); - loaded_pix = getbpl6_32(); } - if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { - copybpl6(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6_32(); + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } } - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - uae_u8 val3 = dpf_lookup[pix3]; - if (dpf_lookup_no[pix3]) { - val3 += dblpfofs[bpldualpf2of]; - } - val3 ^= bplcon4_denise_xor_val; - dpix_val3 = denise_colors.acolors[val3]; - } - last_bpl_pix = pix3; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6(); - loaded_pix = getbpl6_32(); } - if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { - copybpl6(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6_32(); + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } } - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } dtbuf[h][0] = dpix_val0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } dtbuf[h][1] = dpix_val1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } dtbuf[h][2] = dpix_val2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + } + } dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -33411,11 +77476,11 @@ static void lts_aga_fm1_dpf0_p6_ilores_dshres(void) denise_cck++; } } -static void lts_aga_fm1_dpf0_p6_ilores_dshres_filtered(void) +static void lts_aga_fm1_ehb0_p4_ihires_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm1_dpf1_p6_ilores_dshres(void) +static void lts_aga_fm1_ehb1_p4_ihires_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -33426,172 +77491,95 @@ 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; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6e(); - loaded_pix = getbpl6_32(); - } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl6o(); - loaded_pix = getbpl6_32(); } - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl6e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6_32(); - } - if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { - copybpl6o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl6_32(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - if (dpf_lookup_no[pix1]) { - val1 += dblpfofs[bpldualpf2of]; - } - val1 ^= bplcon4_denise_xor_val; - dpix_val1 = denise_colors.acolors[val1]; - } - last_bpl_pix = pix1; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6e(); - loaded_pix = getbpl6_32(); - } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl6o(); - loaded_pix = getbpl6_32(); - } - if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { - copybpl6e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6_32(); } - if (bpldat_copy[1] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) { - copybpl6o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl6_32(); + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } } - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6e(); - loaded_pix = getbpl6_32(); - } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl6o(); - loaded_pix = getbpl6_32(); - } - if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { - copybpl6e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6_32(); } - if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) { - copybpl6o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl6_32(); + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } } - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - uae_u8 val3 = dpf_lookup[pix3]; - if (dpf_lookup_no[pix3]) { - val3 += dblpfofs[bpldualpf2of]; - } - val3 ^= bplcon4_denise_xor_val; - dpix_val3 = denise_colors.acolors[val3]; - } - last_bpl_pix = pix3; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6e(); - loaded_pix = getbpl6_32(); - } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl6o(); - loaded_pix = getbpl6_32(); - } - if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { - copybpl6e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6_32(); } - if (bpldat_copy[1] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[1]) { - copybpl6o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl6_32(); + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } } - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } dtbuf[h][0] = dpix_val0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } dtbuf[h][1] = dpix_val1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } dtbuf[h][2] = dpix_val2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + } + } dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -33648,11 +77636,11 @@ static void lts_aga_fm1_dpf1_p6_ilores_dshres(void) denise_cck++; } } -static void lts_aga_fm1_dpf1_p6_ilores_dshres_filtered(void) +static void lts_aga_fm1_ehb1_p4_ihires_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm1_ehb0_p6_ilores_dshres(void) +static void lts_aga_fm1_ham0_p4_ihires_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -33663,132 +77651,95 @@ 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; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - pix0 ^= bplcon4_denise_xor_val; - if (!(pix0 & 0x20)) { - dpix_val0 = denise_colors.acolors[pix0]; - } else { - uae_u32 v = (denise_colors.color_regs_aga[pix0 & 0x1f] >> 1) & 0x7f7f7f; - dpix_val0 = CONVERT_RGB(v); - } - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6(); - loaded_pix = getbpl6_32(); } - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl6(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6_32(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - pix1 ^= bplcon4_denise_xor_val; - if (!(pix1 & 0x20)) { - dpix_val1 = denise_colors.acolors[pix1]; - } else { - uae_u32 v = (denise_colors.color_regs_aga[pix1 & 0x1f] >> 1) & 0x7f7f7f; - dpix_val1 = CONVERT_RGB(v); - } - } - last_bpl_pix = pix1; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6(); - loaded_pix = getbpl6_32(); } - if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { - copybpl6(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6_32(); + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } } - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - pix2 ^= bplcon4_denise_xor_val; - if (!(pix2 & 0x20)) { - dpix_val2 = denise_colors.acolors[pix2]; - } else { - uae_u32 v = (denise_colors.color_regs_aga[pix2 & 0x1f] >> 1) & 0x7f7f7f; - dpix_val2 = CONVERT_RGB(v); - } - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6(); - loaded_pix = getbpl6_32(); } - if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { - copybpl6(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6_32(); + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } } - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - pix3 ^= bplcon4_denise_xor_val; - if (!(pix3 & 0x20)) { - dpix_val3 = denise_colors.acolors[pix3]; - } else { - uae_u32 v = (denise_colors.color_regs_aga[pix3 & 0x1f] >> 1) & 0x7f7f7f; - dpix_val3 = CONVERT_RGB(v); - } - } - last_bpl_pix = pix3; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6(); - loaded_pix = getbpl6_32(); } - if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { - copybpl6(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6_32(); + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } } - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } dtbuf[h][0] = dpix_val0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } dtbuf[h][1] = dpix_val1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } dtbuf[h][2] = dpix_val2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + } + } dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -33845,11 +77796,11 @@ static void lts_aga_fm1_ehb0_p6_ilores_dshres(void) denise_cck++; } } -static void lts_aga_fm1_ehb0_p6_ilores_dshres_filtered(void) +static void lts_aga_fm1_ham0_p4_ihires_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm1_ehb1_p6_ilores_dshres(void) +static void lts_aga_fm1_ham1_p4_ihires_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -33860,176 +77811,95 @@ 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; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - pix0 ^= bplcon4_denise_xor_val; - if (!(pix0 & 0x20)) { - dpix_val0 = denise_colors.acolors[pix0]; - } else { - uae_u32 v = (denise_colors.color_regs_aga[pix0 & 0x1f] >> 1) & 0x7f7f7f; - dpix_val0 = CONVERT_RGB(v); - } - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6e(); - loaded_pix = getbpl6_32(); - } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl6o(); - loaded_pix = getbpl6_32(); - } - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl6e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6_32(); } - if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { - copybpl6o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl6_32(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - pix1 ^= bplcon4_denise_xor_val; - if (!(pix1 & 0x20)) { - dpix_val1 = denise_colors.acolors[pix1]; - } else { - uae_u32 v = (denise_colors.color_regs_aga[pix1 & 0x1f] >> 1) & 0x7f7f7f; - dpix_val1 = CONVERT_RGB(v); - } - } - last_bpl_pix = pix1; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6e(); - loaded_pix = getbpl6_32(); - } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl6o(); - loaded_pix = getbpl6_32(); - } - if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { - copybpl6e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6_32(); } - if (bpldat_copy[1] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) { - copybpl6o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl6_32(); + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } } - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - pix2 ^= bplcon4_denise_xor_val; - if (!(pix2 & 0x20)) { - dpix_val2 = denise_colors.acolors[pix2]; - } else { - uae_u32 v = (denise_colors.color_regs_aga[pix2 & 0x1f] >> 1) & 0x7f7f7f; - dpix_val2 = CONVERT_RGB(v); - } - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6e(); - loaded_pix = getbpl6_32(); - } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl6o(); - loaded_pix = getbpl6_32(); - } - if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { - copybpl6e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6_32(); } - if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) { - copybpl6o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl6_32(); + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } } - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - pix3 ^= bplcon4_denise_xor_val; - if (!(pix3 & 0x20)) { - dpix_val3 = denise_colors.acolors[pix3]; - } else { - uae_u32 v = (denise_colors.color_regs_aga[pix3 & 0x1f] >> 1) & 0x7f7f7f; - dpix_val3 = CONVERT_RGB(v); - } - } - last_bpl_pix = pix3; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6e(); - loaded_pix = getbpl6_32(); - } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl6o(); - loaded_pix = getbpl6_32(); - } - if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { - copybpl6e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6_32(); } - if (bpldat_copy[1] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[1]) { - copybpl6o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl6_32(); + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } } - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } dtbuf[h][0] = dpix_val0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } dtbuf[h][1] = dpix_val1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } dtbuf[h][2] = dpix_val2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + } + } dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -34086,11 +77956,11 @@ static void lts_aga_fm1_ehb1_p6_ilores_dshres(void) denise_cck++; } } -static void lts_aga_fm1_ehb1_p6_ilores_dshres_filtered(void) +static void lts_aga_fm1_ham1_p4_ihires_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm1_ham0_p6_ilores_dshres(void) +static void lts_aga_fm1_kehb0_p4_ihires_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -34101,108 +77971,95 @@ 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; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = decode_ham_pixel_aga(pix0); - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6(); - loaded_pix = getbpl6_32(); } - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl6(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6_32(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - dpix_val1 = decode_ham_pixel_aga(pix1); - } - last_bpl_pix = pix1; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6(); - loaded_pix = getbpl6_32(); } - if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { - copybpl6(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6_32(); + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } } - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = decode_ham_pixel_aga(pix2); - } - last_bpl_pix = pix2; } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6(); - loaded_pix = getbpl6_32(); - } - if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { - copybpl6(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6_32(); + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } } - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - dpix_val3 = decode_ham_pixel_aga(pix3); - } - last_bpl_pix = pix3; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6(); - loaded_pix = getbpl6_32(); } - if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { - copybpl6(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6_32(); + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } } - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } dtbuf[h][0] = dpix_val0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } dtbuf[h][1] = dpix_val1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } dtbuf[h][2] = dpix_val2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + } + } dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -34259,11 +78116,11 @@ static void lts_aga_fm1_ham0_p6_ilores_dshres(void) denise_cck++; } } -static void lts_aga_fm1_ham0_p6_ilores_dshres_filtered(void) +static void lts_aga_fm1_kehb0_p4_ihires_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm1_ham1_p6_ilores_dshres(void) +static void lts_aga_fm1_kehb1_p4_ihires_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -34274,152 +78131,95 @@ 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; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = decode_ham_pixel_aga(pix0); - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6e(); - loaded_pix = getbpl6_32(); - } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl6o(); - loaded_pix = getbpl6_32(); - } - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl6e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6_32(); } - if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { - copybpl6o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl6_32(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - dpix_val1 = decode_ham_pixel_aga(pix1); - } - last_bpl_pix = pix1; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6e(); - loaded_pix = getbpl6_32(); - } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl6o(); - loaded_pix = getbpl6_32(); - } - if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { - copybpl6e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6_32(); } - if (bpldat_copy[1] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) { - copybpl6o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl6_32(); + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } } - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = decode_ham_pixel_aga(pix2); - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6e(); - loaded_pix = getbpl6_32(); - } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl6o(); - loaded_pix = getbpl6_32(); - } - if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { - copybpl6e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6_32(); } - if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) { - copybpl6o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl6_32(); + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } } - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - dpix_val3 = decode_ham_pixel_aga(pix3); - } - last_bpl_pix = pix3; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6e(); - loaded_pix = getbpl6_32(); - } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl6o(); - loaded_pix = getbpl6_32(); - } - if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { - copybpl6e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6_32(); } - if (bpldat_copy[1] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[1]) { - copybpl6o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl6_32(); + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } } - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } dtbuf[h][0] = dpix_val0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } dtbuf[h][1] = dpix_val1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } dtbuf[h][2] = dpix_val2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + } + } dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -34476,11 +78276,11 @@ static void lts_aga_fm1_ham1_p6_ilores_dshres(void) denise_cck++; } } -static void lts_aga_fm1_ham1_p6_ilores_dshres_filtered(void) +static void lts_aga_fm1_kehb1_p4_ihires_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm1_kehb0_p6_ilores_dshres(void) +static void lts_aga_fm1_n0_p6_ihires_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -34493,6 +78293,7 @@ static void lts_aga_fm1_kehb0_p6_ilores_dshres(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -34500,24 +78301,32 @@ static void lts_aga_fm1_kehb0_p6_ilores_dshres(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - pix0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[pix0 & 31]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix0; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; shiftbpl6(); loaded_pix = getbpl6_32(); } - if (bpldat_copy[0] && ((cmp | 0) & 127) == 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(); } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { @@ -34525,24 +78334,32 @@ static void lts_aga_fm1_kehb0_p6_ilores_dshres(void) if (denise_hdiw && bpl1dat_trigger) { pix1 = loaded_pixs[1]; clxdat |= bplcoltable[pix1]; - pix1 ^= bplcon4_denise_xor_val; - dpix_val1 = denise_colors.acolors[pix1 & 31]; + dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix1; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; shiftbpl6(); loaded_pix = getbpl6_32(); } - if (bpldat_copy[0] && ((cmp | 1) & 127) == 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(); } + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } + } loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { @@ -34550,24 +78367,32 @@ static void lts_aga_fm1_kehb0_p6_ilores_dshres(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - pix2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[pix2 & 31]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix2; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; shiftbpl6(); loaded_pix = getbpl6_32(); } - if (bpldat_copy[0] && ((cmp | 2) & 127) == 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(); } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { @@ -34575,28 +78400,59 @@ static void lts_aga_fm1_kehb0_p6_ilores_dshres(void) if (denise_hdiw && bpl1dat_trigger) { pix3 = loaded_pixs[3]; clxdat |= bplcoltable[pix3]; - pix3 ^= bplcon4_denise_xor_val; - dpix_val3 = denise_colors.acolors[pix3 & 31]; + dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix3; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; shiftbpl6(); loaded_pix = getbpl6_32(); } - if (bpldat_copy[0] && ((cmp | 3) & 127) == 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(); } + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } + } loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } dtbuf[h][0] = dpix_val0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } dtbuf[h][1] = dpix_val1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } dtbuf[h][2] = dpix_val2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + } + } dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -34653,11 +78509,11 @@ static void lts_aga_fm1_kehb0_p6_ilores_dshres(void) denise_cck++; } } -static void lts_aga_fm1_kehb0_p6_ilores_dshres_filtered(void) +static void lts_aga_fm1_n0_p6_ihires_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm1_kehb1_p6_ilores_dshres(void) +static void lts_aga_fm1_n1_p6_ihires_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -34670,6 +78526,7 @@ static void lts_aga_fm1_kehb1_p6_ilores_dshres(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -34677,35 +78534,43 @@ static void lts_aga_fm1_kehb1_p6_ilores_dshres(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - pix0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[pix0 & 31]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix0; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; shiftbpl6e(); loaded_pix = getbpl6_32(); } - bplshiftcnt[1] += 1; + bplshiftcnt[1] += 2; if (bplshiftcnt[1] >= 4) { bplshiftcnt[1] = 0; shiftbpl6o(); loaded_pix = getbpl6_32(); } - if (bpldat_copy[0] && ((cmp | 0) & 127) == 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] && ((cmp | 0) & 127) == 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(); } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { @@ -34713,35 +78578,43 @@ static void lts_aga_fm1_kehb1_p6_ilores_dshres(void) if (denise_hdiw && bpl1dat_trigger) { pix1 = loaded_pixs[1]; clxdat |= bplcoltable[pix1]; - pix1 ^= bplcon4_denise_xor_val; - dpix_val1 = denise_colors.acolors[pix1 & 31]; + dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix1; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; shiftbpl6e(); loaded_pix = getbpl6_32(); } - bplshiftcnt[1] += 1; + bplshiftcnt[1] += 2; if (bplshiftcnt[1] >= 4) { bplshiftcnt[1] = 0; shiftbpl6o(); loaded_pix = getbpl6_32(); } - if (bpldat_copy[0] && ((cmp | 1) & 127) == 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] && ((cmp | 1) & 127) == 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(); } + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } + } loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { @@ -34749,35 +78622,43 @@ static void lts_aga_fm1_kehb1_p6_ilores_dshres(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - pix2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[pix2 & 31]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix2; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; shiftbpl6e(); loaded_pix = getbpl6_32(); } - bplshiftcnt[1] += 1; + bplshiftcnt[1] += 2; if (bplshiftcnt[1] >= 4) { bplshiftcnt[1] = 0; shiftbpl6o(); loaded_pix = getbpl6_32(); } - if (bpldat_copy[0] && ((cmp | 2) & 127) == 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] && ((cmp | 2) & 127) == 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(); } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { @@ -34785,39 +78666,70 @@ static void lts_aga_fm1_kehb1_p6_ilores_dshres(void) if (denise_hdiw && bpl1dat_trigger) { pix3 = loaded_pixs[3]; clxdat |= bplcoltable[pix3]; - pix3 ^= bplcon4_denise_xor_val; - dpix_val3 = denise_colors.acolors[pix3 & 31]; + dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix3; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; shiftbpl6e(); loaded_pix = getbpl6_32(); } - bplshiftcnt[1] += 1; + bplshiftcnt[1] += 2; if (bplshiftcnt[1] >= 4) { bplshiftcnt[1] = 0; shiftbpl6o(); loaded_pix = getbpl6_32(); } - if (bpldat_copy[0] && ((cmp | 3) & 127) == 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] && ((cmp | 3) & 127) == 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(); } + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } + } loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } dtbuf[h][0] = dpix_val0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } dtbuf[h][1] = dpix_val1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } dtbuf[h][2] = dpix_val2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + } + } dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -34874,11 +78786,11 @@ static void lts_aga_fm1_kehb1_p6_ilores_dshres(void) denise_cck++; } } -static void lts_aga_fm1_kehb1_p6_ilores_dshres_filtered(void) +static void lts_aga_fm1_n1_p6_ihires_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm1_n0_p8_ilores_dshres(void) +static void lts_aga_fm1_dpf0_p6_ihires_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -34891,6 +78803,7 @@ static void lts_aga_fm1_n0_p8_ilores_dshres(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -34898,23 +78811,37 @@ static void lts_aga_fm1_n0_p8_ilores_dshres(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; } last_bpl_pix = pix0; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl8(); - loaded_pix = getbpl8_32(); + shiftbpl6(); + loaded_pix = getbpl6_32(); } - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6(); bplshiftcnt[0] = 0; - loaded_pix = getbpl8_32(); + loaded_pix = getbpl6_32(); + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } } loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { @@ -34922,23 +78849,37 @@ static void lts_aga_fm1_n0_p8_ilores_dshres(void) if (denise_hdiw && bpl1dat_trigger) { pix1 = loaded_pixs[1]; clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; + uae_u8 val1 = dpf_lookup[pix1]; + if (dpf_lookup_no[pix1]) { + val1 += dblpfofs[bpldualpf2of]; + } + val1 ^= bplcon4_denise_xor_val; + dpix_val1 = denise_colors.acolors[val1]; } last_bpl_pix = pix1; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl8(); - loaded_pix = getbpl8_32(); + shiftbpl6(); + loaded_pix = getbpl6_32(); } - if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8(); + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6(); bplshiftcnt[0] = 0; - loaded_pix = getbpl8_32(); + loaded_pix = getbpl6_32(); + } + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } } loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { @@ -34946,23 +78887,37 @@ static void lts_aga_fm1_n0_p8_ilores_dshres(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; } last_bpl_pix = pix2; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl8(); - loaded_pix = getbpl8_32(); + shiftbpl6(); + loaded_pix = getbpl6_32(); } - if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8(); + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6(); bplshiftcnt[0] = 0; - loaded_pix = getbpl8_32(); + loaded_pix = getbpl6_32(); + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } } loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { @@ -34970,27 +78925,64 @@ static void lts_aga_fm1_n0_p8_ilores_dshres(void) if (denise_hdiw && bpl1dat_trigger) { pix3 = loaded_pixs[3]; clxdat |= bplcoltable[pix3]; - dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; + uae_u8 val3 = dpf_lookup[pix3]; + if (dpf_lookup_no[pix3]) { + val3 += dblpfofs[bpldualpf2of]; + } + val3 ^= bplcon4_denise_xor_val; + dpix_val3 = denise_colors.acolors[val3]; } last_bpl_pix = pix3; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl8(); - loaded_pix = getbpl8_32(); + shiftbpl6(); + loaded_pix = getbpl6_32(); } - if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8(); + if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6(); bplshiftcnt[0] = 0; - loaded_pix = getbpl8_32(); + loaded_pix = getbpl6_32(); + } + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } } loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } dtbuf[h][0] = dpix_val0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } dtbuf[h][1] = dpix_val1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } dtbuf[h][2] = dpix_val2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + } + } dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -35047,11 +79039,11 @@ static void lts_aga_fm1_n0_p8_ilores_dshres(void) denise_cck++; } } -static void lts_aga_fm1_n0_p8_ilores_dshres_filtered(void) +static void lts_aga_fm1_dpf0_p6_ihires_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm1_n1_p8_ilores_dshres(void) +static void lts_aga_fm1_dpf1_p6_ihires_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -35064,6 +79056,7 @@ static void lts_aga_fm1_n1_p8_ilores_dshres(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -35071,34 +79064,48 @@ static void lts_aga_fm1_n1_p8_ilores_dshres(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; } last_bpl_pix = pix0; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl8e(); - loaded_pix = getbpl8_32(); + shiftbpl6e(); + loaded_pix = getbpl6_32(); } - bplshiftcnt[1] += 1; + bplshiftcnt[1] += 2; if (bplshiftcnt[1] >= 4) { bplshiftcnt[1] = 0; - shiftbpl8o(); - loaded_pix = getbpl8_32(); + shiftbpl6o(); + loaded_pix = getbpl6_32(); } - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8e(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6e(); bplshiftcnt[0] = 0; - loaded_pix = getbpl8_32(); + loaded_pix = getbpl6_32(); } - if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { - copybpl8o(); + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl6o(); bplshiftcnt[1] = 0; - loaded_pix = getbpl8_32(); + loaded_pix = getbpl6_32(); + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } } loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { @@ -35106,34 +79113,48 @@ static void lts_aga_fm1_n1_p8_ilores_dshres(void) if (denise_hdiw && bpl1dat_trigger) { pix1 = loaded_pixs[1]; clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; + uae_u8 val1 = dpf_lookup[pix1]; + if (dpf_lookup_no[pix1]) { + val1 += dblpfofs[bpldualpf2of]; + } + val1 ^= bplcon4_denise_xor_val; + dpix_val1 = denise_colors.acolors[val1]; } last_bpl_pix = pix1; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl8e(); - loaded_pix = getbpl8_32(); + shiftbpl6e(); + loaded_pix = getbpl6_32(); } - bplshiftcnt[1] += 1; + bplshiftcnt[1] += 2; if (bplshiftcnt[1] >= 4) { bplshiftcnt[1] = 0; - shiftbpl8o(); - loaded_pix = getbpl8_32(); + shiftbpl6o(); + loaded_pix = getbpl6_32(); } - if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8e(); + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6e(); bplshiftcnt[0] = 0; - loaded_pix = getbpl8_32(); + loaded_pix = getbpl6_32(); } - if (bpldat_copy[1] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) { - copybpl8o(); + if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { + copybpl6o(); bplshiftcnt[1] = 0; - loaded_pix = getbpl8_32(); + loaded_pix = getbpl6_32(); + } + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } } loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { @@ -35141,34 +79162,48 @@ static void lts_aga_fm1_n1_p8_ilores_dshres(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; } last_bpl_pix = pix2; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl8e(); - loaded_pix = getbpl8_32(); + shiftbpl6e(); + loaded_pix = getbpl6_32(); } - bplshiftcnt[1] += 1; + bplshiftcnt[1] += 2; if (bplshiftcnt[1] >= 4) { bplshiftcnt[1] = 0; - shiftbpl8o(); - loaded_pix = getbpl8_32(); + shiftbpl6o(); + loaded_pix = getbpl6_32(); } - if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8e(); + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6e(); bplshiftcnt[0] = 0; - loaded_pix = getbpl8_32(); + loaded_pix = getbpl6_32(); } - if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) { - copybpl8o(); + if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { + copybpl6o(); bplshiftcnt[1] = 0; - loaded_pix = getbpl8_32(); + loaded_pix = getbpl6_32(); + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } } loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { @@ -35176,38 +79211,75 @@ static void lts_aga_fm1_n1_p8_ilores_dshres(void) if (denise_hdiw && bpl1dat_trigger) { pix3 = loaded_pixs[3]; clxdat |= bplcoltable[pix3]; - dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; + uae_u8 val3 = dpf_lookup[pix3]; + if (dpf_lookup_no[pix3]) { + val3 += dblpfofs[bpldualpf2of]; + } + val3 ^= bplcon4_denise_xor_val; + dpix_val3 = denise_colors.acolors[val3]; } last_bpl_pix = pix3; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl8e(); - loaded_pix = getbpl8_32(); + shiftbpl6e(); + loaded_pix = getbpl6_32(); } - bplshiftcnt[1] += 1; + bplshiftcnt[1] += 2; if (bplshiftcnt[1] >= 4) { bplshiftcnt[1] = 0; - shiftbpl8o(); - loaded_pix = getbpl8_32(); + shiftbpl6o(); + loaded_pix = getbpl6_32(); } - if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8e(); + if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6e(); bplshiftcnt[0] = 0; - loaded_pix = getbpl8_32(); + loaded_pix = getbpl6_32(); } - if (bpldat_copy[1] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[1]) { - copybpl8o(); + if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) { + copybpl6o(); bplshiftcnt[1] = 0; - loaded_pix = getbpl8_32(); + loaded_pix = getbpl6_32(); + } + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } } loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } dtbuf[h][0] = dpix_val0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } dtbuf[h][1] = dpix_val1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } dtbuf[h][2] = dpix_val2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + } + } dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -35264,11 +79336,11 @@ static void lts_aga_fm1_n1_p8_ilores_dshres(void) denise_cck++; } } -static void lts_aga_fm1_n1_p8_ilores_dshres_filtered(void) +static void lts_aga_fm1_dpf1_p6_ihires_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm1_dpf0_p8_ilores_dshres(void) +static void lts_aga_fm1_ehb0_p6_ihires_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -35281,6 +79353,7 @@ static void lts_aga_fm1_dpf0_p8_ilores_dshres(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -35288,28 +79361,38 @@ static void lts_aga_fm1_dpf0_p8_ilores_dshres(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; + pix0 ^= bplcon4_denise_xor_val; + if (!(pix0 & 0x20)) { + dpix_val0 = denise_colors.acolors[pix0]; + } else { + uae_u32 v = (denise_colors.color_regs_aga[pix0 & 0x1f] >> 1) & 0x7f7f7f; + dpix_val0 = CONVERT_RGB(v); } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; } last_bpl_pix = pix0; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl8(); - loaded_pix = getbpl8_32(); + shiftbpl6(); + loaded_pix = getbpl6_32(); } - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6(); bplshiftcnt[0] = 0; - loaded_pix = getbpl8_32(); + loaded_pix = getbpl6_32(); + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } } loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { @@ -35317,28 +79400,38 @@ static void lts_aga_fm1_dpf0_p8_ilores_dshres(void) if (denise_hdiw && bpl1dat_trigger) { pix1 = loaded_pixs[1]; clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - if (dpf_lookup_no[pix1]) { - val1 += dblpfofs[bpldualpf2of]; + pix1 ^= bplcon4_denise_xor_val; + if (!(pix1 & 0x20)) { + dpix_val1 = denise_colors.acolors[pix1]; + } else { + uae_u32 v = (denise_colors.color_regs_aga[pix1 & 0x1f] >> 1) & 0x7f7f7f; + dpix_val1 = CONVERT_RGB(v); } - val1 ^= bplcon4_denise_xor_val; - dpix_val1 = denise_colors.acolors[val1]; } last_bpl_pix = pix1; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl8(); - loaded_pix = getbpl8_32(); + shiftbpl6(); + loaded_pix = getbpl6_32(); } - if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8(); + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6(); bplshiftcnt[0] = 0; - loaded_pix = getbpl8_32(); + loaded_pix = getbpl6_32(); + } + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } } loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { @@ -35346,28 +79439,38 @@ static void lts_aga_fm1_dpf0_p8_ilores_dshres(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; + pix2 ^= bplcon4_denise_xor_val; + if (!(pix2 & 0x20)) { + dpix_val2 = denise_colors.acolors[pix2]; + } else { + uae_u32 v = (denise_colors.color_regs_aga[pix2 & 0x1f] >> 1) & 0x7f7f7f; + dpix_val2 = CONVERT_RGB(v); } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; } last_bpl_pix = pix2; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl8(); - loaded_pix = getbpl8_32(); + shiftbpl6(); + loaded_pix = getbpl6_32(); } - if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8(); + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6(); bplshiftcnt[0] = 0; - loaded_pix = getbpl8_32(); + loaded_pix = getbpl6_32(); + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } } loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { @@ -35375,32 +79478,65 @@ static void lts_aga_fm1_dpf0_p8_ilores_dshres(void) if (denise_hdiw && bpl1dat_trigger) { pix3 = loaded_pixs[3]; clxdat |= bplcoltable[pix3]; - uae_u8 val3 = dpf_lookup[pix3]; - if (dpf_lookup_no[pix3]) { - val3 += dblpfofs[bpldualpf2of]; + pix3 ^= bplcon4_denise_xor_val; + if (!(pix3 & 0x20)) { + dpix_val3 = denise_colors.acolors[pix3]; + } else { + uae_u32 v = (denise_colors.color_regs_aga[pix3 & 0x1f] >> 1) & 0x7f7f7f; + dpix_val3 = CONVERT_RGB(v); } - val3 ^= bplcon4_denise_xor_val; - dpix_val3 = denise_colors.acolors[val3]; } last_bpl_pix = pix3; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl8(); - loaded_pix = getbpl8_32(); + shiftbpl6(); + loaded_pix = getbpl6_32(); } - if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8(); + if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6(); bplshiftcnt[0] = 0; - loaded_pix = getbpl8_32(); + loaded_pix = getbpl6_32(); + } + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } } loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } dtbuf[h][0] = dpix_val0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } dtbuf[h][1] = dpix_val1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } dtbuf[h][2] = dpix_val2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + } + } dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -35457,11 +79593,11 @@ static void lts_aga_fm1_dpf0_p8_ilores_dshres(void) denise_cck++; } } -static void lts_aga_fm1_dpf0_p8_ilores_dshres_filtered(void) +static void lts_aga_fm1_ehb0_p6_ihires_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm1_dpf1_p8_ilores_dshres(void) +static void lts_aga_fm1_ehb1_p6_ihires_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -35474,6 +79610,7 @@ static void lts_aga_fm1_dpf1_p8_ilores_dshres(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -35481,39 +79618,49 @@ static void lts_aga_fm1_dpf1_p8_ilores_dshres(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; + pix0 ^= bplcon4_denise_xor_val; + if (!(pix0 & 0x20)) { + dpix_val0 = denise_colors.acolors[pix0]; + } else { + uae_u32 v = (denise_colors.color_regs_aga[pix0 & 0x1f] >> 1) & 0x7f7f7f; + dpix_val0 = CONVERT_RGB(v); } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; } last_bpl_pix = pix0; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl8e(); - loaded_pix = getbpl8_32(); + shiftbpl6e(); + loaded_pix = getbpl6_32(); } - bplshiftcnt[1] += 1; + bplshiftcnt[1] += 2; if (bplshiftcnt[1] >= 4) { bplshiftcnt[1] = 0; - shiftbpl8o(); - loaded_pix = getbpl8_32(); + shiftbpl6o(); + loaded_pix = getbpl6_32(); } - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8e(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6e(); bplshiftcnt[0] = 0; - loaded_pix = getbpl8_32(); + loaded_pix = getbpl6_32(); } - if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { - copybpl8o(); + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl6o(); bplshiftcnt[1] = 0; - loaded_pix = getbpl8_32(); + loaded_pix = getbpl6_32(); + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } } loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { @@ -35521,39 +79668,49 @@ static void lts_aga_fm1_dpf1_p8_ilores_dshres(void) if (denise_hdiw && bpl1dat_trigger) { pix1 = loaded_pixs[1]; clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - if (dpf_lookup_no[pix1]) { - val1 += dblpfofs[bpldualpf2of]; + pix1 ^= bplcon4_denise_xor_val; + if (!(pix1 & 0x20)) { + dpix_val1 = denise_colors.acolors[pix1]; + } else { + uae_u32 v = (denise_colors.color_regs_aga[pix1 & 0x1f] >> 1) & 0x7f7f7f; + dpix_val1 = CONVERT_RGB(v); } - val1 ^= bplcon4_denise_xor_val; - dpix_val1 = denise_colors.acolors[val1]; } last_bpl_pix = pix1; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl8e(); - loaded_pix = getbpl8_32(); + shiftbpl6e(); + loaded_pix = getbpl6_32(); } - bplshiftcnt[1] += 1; + bplshiftcnt[1] += 2; if (bplshiftcnt[1] >= 4) { bplshiftcnt[1] = 0; - shiftbpl8o(); - loaded_pix = getbpl8_32(); + shiftbpl6o(); + loaded_pix = getbpl6_32(); } - if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8e(); + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6e(); bplshiftcnt[0] = 0; - loaded_pix = getbpl8_32(); + loaded_pix = getbpl6_32(); } - if (bpldat_copy[1] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) { - copybpl8o(); + if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { + copybpl6o(); bplshiftcnt[1] = 0; - loaded_pix = getbpl8_32(); + loaded_pix = getbpl6_32(); + } + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } } loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { @@ -35561,39 +79718,49 @@ static void lts_aga_fm1_dpf1_p8_ilores_dshres(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; + pix2 ^= bplcon4_denise_xor_val; + if (!(pix2 & 0x20)) { + dpix_val2 = denise_colors.acolors[pix2]; + } else { + uae_u32 v = (denise_colors.color_regs_aga[pix2 & 0x1f] >> 1) & 0x7f7f7f; + dpix_val2 = CONVERT_RGB(v); } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; } last_bpl_pix = pix2; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl8e(); - loaded_pix = getbpl8_32(); + shiftbpl6e(); + loaded_pix = getbpl6_32(); } - bplshiftcnt[1] += 1; + bplshiftcnt[1] += 2; if (bplshiftcnt[1] >= 4) { bplshiftcnt[1] = 0; - shiftbpl8o(); - loaded_pix = getbpl8_32(); + shiftbpl6o(); + loaded_pix = getbpl6_32(); } - if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8e(); + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6e(); bplshiftcnt[0] = 0; - loaded_pix = getbpl8_32(); + loaded_pix = getbpl6_32(); } - if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) { - copybpl8o(); + if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { + copybpl6o(); bplshiftcnt[1] = 0; - loaded_pix = getbpl8_32(); + loaded_pix = getbpl6_32(); + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } } loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { @@ -35601,43 +79768,76 @@ static void lts_aga_fm1_dpf1_p8_ilores_dshres(void) if (denise_hdiw && bpl1dat_trigger) { pix3 = loaded_pixs[3]; clxdat |= bplcoltable[pix3]; - uae_u8 val3 = dpf_lookup[pix3]; - if (dpf_lookup_no[pix3]) { - val3 += dblpfofs[bpldualpf2of]; + pix3 ^= bplcon4_denise_xor_val; + if (!(pix3 & 0x20)) { + dpix_val3 = denise_colors.acolors[pix3]; + } else { + uae_u32 v = (denise_colors.color_regs_aga[pix3 & 0x1f] >> 1) & 0x7f7f7f; + dpix_val3 = CONVERT_RGB(v); } - val3 ^= bplcon4_denise_xor_val; - dpix_val3 = denise_colors.acolors[val3]; } last_bpl_pix = pix3; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl8e(); - loaded_pix = getbpl8_32(); + shiftbpl6e(); + loaded_pix = getbpl6_32(); } - bplshiftcnt[1] += 1; + bplshiftcnt[1] += 2; if (bplshiftcnt[1] >= 4) { bplshiftcnt[1] = 0; - shiftbpl8o(); - loaded_pix = getbpl8_32(); + shiftbpl6o(); + loaded_pix = getbpl6_32(); } - if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8e(); + if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6e(); bplshiftcnt[0] = 0; - loaded_pix = getbpl8_32(); + loaded_pix = getbpl6_32(); } - if (bpldat_copy[1] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[1]) { - copybpl8o(); + if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) { + copybpl6o(); bplshiftcnt[1] = 0; - loaded_pix = getbpl8_32(); + loaded_pix = getbpl6_32(); + } + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } } loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } dtbuf[h][0] = dpix_val0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } dtbuf[h][1] = dpix_val1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } dtbuf[h][2] = dpix_val2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + } + } dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -35694,27 +79894,11 @@ static void lts_aga_fm1_dpf1_p8_ilores_dshres(void) denise_cck++; } } -static void lts_aga_fm1_dpf1_p8_ilores_dshres_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb0_p8_ilores_dshres(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb0_p8_ilores_dshres_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb1_p8_ilores_dshres(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb1_p8_ilores_dshres_filtered(void) +static void lts_aga_fm1_ehb1_p6_ihires_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm1_ham0_p8_ilores_dshres(void) +static void lts_aga_fm1_ham0_p6_ihires_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -35727,6 +79911,7 @@ static void lts_aga_fm1_ham0_p8_ilores_dshres(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -35738,19 +79923,28 @@ static void lts_aga_fm1_ham0_p8_ilores_dshres(void) } last_bpl_pix = pix0; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl8(); - loaded_pix = getbpl8_32(); + shiftbpl6(); + loaded_pix = getbpl6_32(); } - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6(); bplshiftcnt[0] = 0; - loaded_pix = getbpl8_32(); + loaded_pix = getbpl6_32(); + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } } loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { @@ -35762,19 +79956,28 @@ static void lts_aga_fm1_ham0_p8_ilores_dshres(void) } last_bpl_pix = pix1; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl8(); - loaded_pix = getbpl8_32(); + shiftbpl6(); + loaded_pix = getbpl6_32(); } - if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8(); + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6(); bplshiftcnt[0] = 0; - loaded_pix = getbpl8_32(); + loaded_pix = getbpl6_32(); + } + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } } loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { @@ -35786,19 +79989,28 @@ static void lts_aga_fm1_ham0_p8_ilores_dshres(void) } last_bpl_pix = pix2; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl8(); - loaded_pix = getbpl8_32(); + shiftbpl6(); + loaded_pix = getbpl6_32(); } - if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8(); + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6(); bplshiftcnt[0] = 0; - loaded_pix = getbpl8_32(); + loaded_pix = getbpl6_32(); + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } } loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { @@ -35810,23 +80022,55 @@ static void lts_aga_fm1_ham0_p8_ilores_dshres(void) } last_bpl_pix = pix3; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl8(); - loaded_pix = getbpl8_32(); + shiftbpl6(); + loaded_pix = getbpl6_32(); } - if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8(); + if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6(); bplshiftcnt[0] = 0; - loaded_pix = getbpl8_32(); + loaded_pix = getbpl6_32(); + } + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } } loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } dtbuf[h][0] = dpix_val0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } dtbuf[h][1] = dpix_val1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } dtbuf[h][2] = dpix_val2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + } + } dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -35883,11 +80127,11 @@ static void lts_aga_fm1_ham0_p8_ilores_dshres(void) denise_cck++; } } -static void lts_aga_fm1_ham0_p8_ilores_dshres_filtered(void) +static void lts_aga_fm1_ham0_p6_ihires_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm1_ham1_p8_ilores_dshres(void) +static void lts_aga_fm1_ham1_p6_ihires_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -35900,6 +80144,7 @@ static void lts_aga_fm1_ham1_p8_ilores_dshres(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -35911,30 +80156,39 @@ static void lts_aga_fm1_ham1_p8_ilores_dshres(void) } last_bpl_pix = pix0; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl8e(); - loaded_pix = getbpl8_32(); + shiftbpl6e(); + loaded_pix = getbpl6_32(); } - bplshiftcnt[1] += 1; + bplshiftcnt[1] += 2; if (bplshiftcnt[1] >= 4) { bplshiftcnt[1] = 0; - shiftbpl8o(); - loaded_pix = getbpl8_32(); + shiftbpl6o(); + loaded_pix = getbpl6_32(); } - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8e(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6e(); bplshiftcnt[0] = 0; - loaded_pix = getbpl8_32(); + loaded_pix = getbpl6_32(); } - if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { - copybpl8o(); + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl6o(); bplshiftcnt[1] = 0; - loaded_pix = getbpl8_32(); + loaded_pix = getbpl6_32(); + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } } loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { @@ -35946,30 +80200,39 @@ static void lts_aga_fm1_ham1_p8_ilores_dshres(void) } last_bpl_pix = pix1; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl8e(); - loaded_pix = getbpl8_32(); + shiftbpl6e(); + loaded_pix = getbpl6_32(); } - bplshiftcnt[1] += 1; + bplshiftcnt[1] += 2; if (bplshiftcnt[1] >= 4) { bplshiftcnt[1] = 0; - shiftbpl8o(); - loaded_pix = getbpl8_32(); + shiftbpl6o(); + loaded_pix = getbpl6_32(); } - if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8e(); + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6e(); bplshiftcnt[0] = 0; - loaded_pix = getbpl8_32(); + loaded_pix = getbpl6_32(); } - if (bpldat_copy[1] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) { - copybpl8o(); + if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { + copybpl6o(); bplshiftcnt[1] = 0; - loaded_pix = getbpl8_32(); + loaded_pix = getbpl6_32(); + } + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } } loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { @@ -35981,30 +80244,39 @@ static void lts_aga_fm1_ham1_p8_ilores_dshres(void) } last_bpl_pix = pix2; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl8e(); - loaded_pix = getbpl8_32(); + shiftbpl6e(); + loaded_pix = getbpl6_32(); } - bplshiftcnt[1] += 1; + bplshiftcnt[1] += 2; if (bplshiftcnt[1] >= 4) { bplshiftcnt[1] = 0; - shiftbpl8o(); - loaded_pix = getbpl8_32(); + shiftbpl6o(); + loaded_pix = getbpl6_32(); } - if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8e(); + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6e(); bplshiftcnt[0] = 0; - loaded_pix = getbpl8_32(); + loaded_pix = getbpl6_32(); } - if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) { - copybpl8o(); + if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { + copybpl6o(); bplshiftcnt[1] = 0; - loaded_pix = getbpl8_32(); + loaded_pix = getbpl6_32(); + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } } loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { @@ -36016,34 +80288,66 @@ static void lts_aga_fm1_ham1_p8_ilores_dshres(void) } last_bpl_pix = pix3; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl8e(); - loaded_pix = getbpl8_32(); + shiftbpl6e(); + loaded_pix = getbpl6_32(); } - bplshiftcnt[1] += 1; + bplshiftcnt[1] += 2; if (bplshiftcnt[1] >= 4) { bplshiftcnt[1] = 0; - shiftbpl8o(); - loaded_pix = getbpl8_32(); + shiftbpl6o(); + loaded_pix = getbpl6_32(); } - if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8e(); + if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6e(); bplshiftcnt[0] = 0; - loaded_pix = getbpl8_32(); + loaded_pix = getbpl6_32(); } - if (bpldat_copy[1] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[1]) { - copybpl8o(); + if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) { + copybpl6o(); bplshiftcnt[1] = 0; - loaded_pix = getbpl8_32(); + loaded_pix = getbpl6_32(); + } + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } } loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } dtbuf[h][0] = dpix_val0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } dtbuf[h][1] = dpix_val1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } dtbuf[h][2] = dpix_val2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + } + } dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -36100,27 +80404,11 @@ static void lts_aga_fm1_ham1_p8_ilores_dshres(void) denise_cck++; } } -static void lts_aga_fm1_ham1_p8_ilores_dshres_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb0_p8_ilores_dshres(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb0_p8_ilores_dshres_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb1_p8_ilores_dshres(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb1_p8_ilores_dshres_filtered(void) +static void lts_aga_fm1_ham1_p6_ihires_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm1_n0_p2_ilores_dshres_spr(void) +static void lts_aga_fm1_kehb0_p6_ihires_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -36141,20 +80429,21 @@ static void lts_aga_fm1_n0_p2_ilores_dshres_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + pix0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[pix0 & 31]; } last_bpl_pix = pix0; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl2(); - loaded_pix = getbpl2_32(); + shiftbpl6(); + loaded_pix = getbpl6_32(); } - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl2(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6(); bplshiftcnt[0] = 0; - loaded_pix = getbpl2_32(); + loaded_pix = getbpl6_32(); } uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { @@ -36174,20 +80463,21 @@ static void lts_aga_fm1_n0_p2_ilores_dshres_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix1 = loaded_pixs[1]; clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; + pix1 ^= bplcon4_denise_xor_val; + dpix_val1 = denise_colors.acolors[pix1 & 31]; } last_bpl_pix = pix1; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl2(); - loaded_pix = getbpl2_32(); + shiftbpl6(); + loaded_pix = getbpl6_32(); } - if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { - copybpl2(); + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6(); bplshiftcnt[0] = 0; - loaded_pix = getbpl2_32(); + loaded_pix = getbpl6_32(); } uae_u32 sv1 = 0; if (denise_spr_nr_armeds) { @@ -36207,20 +80497,21 @@ static void lts_aga_fm1_n0_p2_ilores_dshres_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + pix2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[pix2 & 31]; } last_bpl_pix = pix2; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl2(); - loaded_pix = getbpl2_32(); + shiftbpl6(); + loaded_pix = getbpl6_32(); } - if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { - copybpl2(); + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6(); bplshiftcnt[0] = 0; - loaded_pix = getbpl2_32(); + loaded_pix = getbpl6_32(); } uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { @@ -36240,20 +80531,21 @@ static void lts_aga_fm1_n0_p2_ilores_dshres_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix3 = loaded_pixs[3]; clxdat |= bplcoltable[pix3]; - dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; + pix3 ^= bplcon4_denise_xor_val; + dpix_val3 = denise_colors.acolors[pix3 & 31]; } last_bpl_pix = pix3; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl2(); - loaded_pix = getbpl2_32(); + shiftbpl6(); + loaded_pix = getbpl6_32(); } - if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { - copybpl2(); + if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6(); bplshiftcnt[0] = 0; - loaded_pix = getbpl2_32(); + loaded_pix = getbpl6_32(); } uae_u32 sv3 = 0; if (denise_spr_nr_armeds) { @@ -36349,11 +80641,11 @@ static void lts_aga_fm1_n0_p2_ilores_dshres_spr(void) denise_cck++; } } -static void lts_aga_fm1_n0_p2_ilores_dshres_spr_filtered(void) +static void lts_aga_fm1_kehb0_p6_ihires_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm1_n1_p2_ilores_dshres_spr(void) +static void lts_aga_fm1_kehb1_p6_ihires_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -36374,31 +80666,32 @@ static void lts_aga_fm1_n1_p2_ilores_dshres_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + pix0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[pix0 & 31]; } last_bpl_pix = pix0; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl2e(); - loaded_pix = getbpl2_32(); + shiftbpl6e(); + loaded_pix = getbpl6_32(); } - bplshiftcnt[1] += 1; + bplshiftcnt[1] += 2; if (bplshiftcnt[1] >= 4) { bplshiftcnt[1] = 0; - shiftbpl2o(); - loaded_pix = getbpl2_32(); + shiftbpl6o(); + loaded_pix = getbpl6_32(); } - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl2e(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6e(); bplshiftcnt[0] = 0; - loaded_pix = getbpl2_32(); + loaded_pix = getbpl6_32(); } - if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { - copybpl2o(); + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl6o(); bplshiftcnt[1] = 0; - loaded_pix = getbpl2_32(); + loaded_pix = getbpl6_32(); } uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { @@ -36418,31 +80711,32 @@ static void lts_aga_fm1_n1_p2_ilores_dshres_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix1 = loaded_pixs[1]; clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; + pix1 ^= bplcon4_denise_xor_val; + dpix_val1 = denise_colors.acolors[pix1 & 31]; } last_bpl_pix = pix1; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl2e(); - loaded_pix = getbpl2_32(); + shiftbpl6e(); + loaded_pix = getbpl6_32(); } - bplshiftcnt[1] += 1; + bplshiftcnt[1] += 2; if (bplshiftcnt[1] >= 4) { bplshiftcnt[1] = 0; - shiftbpl2o(); - loaded_pix = getbpl2_32(); + shiftbpl6o(); + loaded_pix = getbpl6_32(); } - if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { - copybpl2e(); + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6e(); bplshiftcnt[0] = 0; - loaded_pix = getbpl2_32(); + loaded_pix = getbpl6_32(); } - if (bpldat_copy[1] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) { - copybpl2o(); + if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { + copybpl6o(); bplshiftcnt[1] = 0; - loaded_pix = getbpl2_32(); + loaded_pix = getbpl6_32(); } uae_u32 sv1 = 0; if (denise_spr_nr_armeds) { @@ -36462,31 +80756,32 @@ static void lts_aga_fm1_n1_p2_ilores_dshres_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + pix2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[pix2 & 31]; } last_bpl_pix = pix2; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl2e(); - loaded_pix = getbpl2_32(); + shiftbpl6e(); + loaded_pix = getbpl6_32(); } - bplshiftcnt[1] += 1; + bplshiftcnt[1] += 2; if (bplshiftcnt[1] >= 4) { bplshiftcnt[1] = 0; - shiftbpl2o(); - loaded_pix = getbpl2_32(); + shiftbpl6o(); + loaded_pix = getbpl6_32(); } - if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { - copybpl2e(); + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6e(); bplshiftcnt[0] = 0; - loaded_pix = getbpl2_32(); + loaded_pix = getbpl6_32(); } - if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) { - copybpl2o(); + if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { + copybpl6o(); bplshiftcnt[1] = 0; - loaded_pix = getbpl2_32(); + loaded_pix = getbpl6_32(); } uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { @@ -36506,31 +80801,32 @@ static void lts_aga_fm1_n1_p2_ilores_dshres_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix3 = loaded_pixs[3]; clxdat |= bplcoltable[pix3]; - dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; + pix3 ^= bplcon4_denise_xor_val; + dpix_val3 = denise_colors.acolors[pix3 & 31]; } last_bpl_pix = pix3; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl2e(); - loaded_pix = getbpl2_32(); + shiftbpl6e(); + loaded_pix = getbpl6_32(); } - bplshiftcnt[1] += 1; + bplshiftcnt[1] += 2; if (bplshiftcnt[1] >= 4) { bplshiftcnt[1] = 0; - shiftbpl2o(); - loaded_pix = getbpl2_32(); + shiftbpl6o(); + loaded_pix = getbpl6_32(); } - if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { - copybpl2e(); + if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6e(); bplshiftcnt[0] = 0; - loaded_pix = getbpl2_32(); + loaded_pix = getbpl6_32(); } - if (bpldat_copy[1] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[1]) { - copybpl2o(); + if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) { + copybpl6o(); bplshiftcnt[1] = 0; - loaded_pix = getbpl2_32(); + loaded_pix = getbpl6_32(); } uae_u32 sv3 = 0; if (denise_spr_nr_armeds) { @@ -36626,11 +80922,11 @@ static void lts_aga_fm1_n1_p2_ilores_dshres_spr(void) denise_cck++; } } -static void lts_aga_fm1_n1_p2_ilores_dshres_spr_filtered(void) +static void lts_aga_fm1_kehb1_p6_ihires_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm1_dpf0_p2_ilores_dshres_spr(void) +static void lts_aga_fm1_n0_p8_ihires_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -36651,25 +80947,20 @@ static void lts_aga_fm1_dpf0_p2_ilores_dshres_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix0; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl2(); - loaded_pix = getbpl2_32(); + shiftbpl8(); + loaded_pix = getbpl8_32(); } - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl2(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8(); bplshiftcnt[0] = 0; - loaded_pix = getbpl2_32(); + loaded_pix = getbpl8_32(); } uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { @@ -36689,25 +80980,20 @@ static void lts_aga_fm1_dpf0_p2_ilores_dshres_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix1 = loaded_pixs[1]; clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - if (dpf_lookup_no[pix1]) { - val1 += dblpfofs[bpldualpf2of]; - } - val1 ^= bplcon4_denise_xor_val; - dpix_val1 = denise_colors.acolors[val1]; + dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix1; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl2(); - loaded_pix = getbpl2_32(); + shiftbpl8(); + loaded_pix = getbpl8_32(); } - if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { - copybpl2(); + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8(); bplshiftcnt[0] = 0; - loaded_pix = getbpl2_32(); + loaded_pix = getbpl8_32(); } uae_u32 sv1 = 0; if (denise_spr_nr_armeds) { @@ -36727,25 +81013,20 @@ static void lts_aga_fm1_dpf0_p2_ilores_dshres_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix2; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl2(); - loaded_pix = getbpl2_32(); + shiftbpl8(); + loaded_pix = getbpl8_32(); } - if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { - copybpl2(); + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8(); bplshiftcnt[0] = 0; - loaded_pix = getbpl2_32(); + loaded_pix = getbpl8_32(); } uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { @@ -36765,25 +81046,20 @@ static void lts_aga_fm1_dpf0_p2_ilores_dshres_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix3 = loaded_pixs[3]; clxdat |= bplcoltable[pix3]; - uae_u8 val3 = dpf_lookup[pix3]; - if (dpf_lookup_no[pix3]) { - val3 += dblpfofs[bpldualpf2of]; - } - val3 ^= bplcon4_denise_xor_val; - dpix_val3 = denise_colors.acolors[val3]; + dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix3; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl2(); - loaded_pix = getbpl2_32(); + shiftbpl8(); + loaded_pix = getbpl8_32(); } - if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { - copybpl2(); + if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8(); bplshiftcnt[0] = 0; - loaded_pix = getbpl2_32(); + loaded_pix = getbpl8_32(); } uae_u32 sv3 = 0; if (denise_spr_nr_armeds) { @@ -36879,11 +81155,11 @@ static void lts_aga_fm1_dpf0_p2_ilores_dshres_spr(void) denise_cck++; } } -static void lts_aga_fm1_dpf0_p2_ilores_dshres_spr_filtered(void) +static void lts_aga_fm1_n0_p8_ihires_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm1_dpf1_p2_ilores_dshres_spr(void) +static void lts_aga_fm1_n1_p8_ihires_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -36904,36 +81180,31 @@ static void lts_aga_fm1_dpf1_p2_ilores_dshres_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix0; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl2e(); - loaded_pix = getbpl2_32(); + shiftbpl8e(); + loaded_pix = getbpl8_32(); } - bplshiftcnt[1] += 1; + bplshiftcnt[1] += 2; if (bplshiftcnt[1] >= 4) { bplshiftcnt[1] = 0; - shiftbpl2o(); - loaded_pix = getbpl2_32(); + shiftbpl8o(); + loaded_pix = getbpl8_32(); } - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl2e(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8e(); bplshiftcnt[0] = 0; - loaded_pix = getbpl2_32(); + loaded_pix = getbpl8_32(); } - if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { - copybpl2o(); + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o(); bplshiftcnt[1] = 0; - loaded_pix = getbpl2_32(); + loaded_pix = getbpl8_32(); } uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { @@ -36953,36 +81224,31 @@ static void lts_aga_fm1_dpf1_p2_ilores_dshres_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix1 = loaded_pixs[1]; clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - if (dpf_lookup_no[pix1]) { - val1 += dblpfofs[bpldualpf2of]; - } - val1 ^= bplcon4_denise_xor_val; - dpix_val1 = denise_colors.acolors[val1]; + dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix1; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl2e(); - loaded_pix = getbpl2_32(); + shiftbpl8e(); + loaded_pix = getbpl8_32(); } - bplshiftcnt[1] += 1; + bplshiftcnt[1] += 2; if (bplshiftcnt[1] >= 4) { bplshiftcnt[1] = 0; - shiftbpl2o(); - loaded_pix = getbpl2_32(); + shiftbpl8o(); + loaded_pix = getbpl8_32(); } - if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { - copybpl2e(); + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8e(); bplshiftcnt[0] = 0; - loaded_pix = getbpl2_32(); + loaded_pix = getbpl8_32(); } - if (bpldat_copy[1] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) { - copybpl2o(); + if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o(); bplshiftcnt[1] = 0; - loaded_pix = getbpl2_32(); + loaded_pix = getbpl8_32(); } uae_u32 sv1 = 0; if (denise_spr_nr_armeds) { @@ -37002,36 +81268,31 @@ static void lts_aga_fm1_dpf1_p2_ilores_dshres_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix2; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl2e(); - loaded_pix = getbpl2_32(); + shiftbpl8e(); + loaded_pix = getbpl8_32(); } - bplshiftcnt[1] += 1; + bplshiftcnt[1] += 2; if (bplshiftcnt[1] >= 4) { bplshiftcnt[1] = 0; - shiftbpl2o(); - loaded_pix = getbpl2_32(); + shiftbpl8o(); + loaded_pix = getbpl8_32(); } - if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { - copybpl2e(); + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8e(); bplshiftcnt[0] = 0; - loaded_pix = getbpl2_32(); + loaded_pix = getbpl8_32(); } - if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) { - copybpl2o(); + if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o(); bplshiftcnt[1] = 0; - loaded_pix = getbpl2_32(); + loaded_pix = getbpl8_32(); } uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { @@ -37051,36 +81312,31 @@ static void lts_aga_fm1_dpf1_p2_ilores_dshres_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix3 = loaded_pixs[3]; clxdat |= bplcoltable[pix3]; - uae_u8 val3 = dpf_lookup[pix3]; - if (dpf_lookup_no[pix3]) { - val3 += dblpfofs[bpldualpf2of]; - } - val3 ^= bplcon4_denise_xor_val; - dpix_val3 = denise_colors.acolors[val3]; + dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix3; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl2e(); - loaded_pix = getbpl2_32(); + shiftbpl8e(); + loaded_pix = getbpl8_32(); } - bplshiftcnt[1] += 1; + bplshiftcnt[1] += 2; if (bplshiftcnt[1] >= 4) { bplshiftcnt[1] = 0; - shiftbpl2o(); - loaded_pix = getbpl2_32(); + shiftbpl8o(); + loaded_pix = getbpl8_32(); } - if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { - copybpl2e(); + if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8e(); bplshiftcnt[0] = 0; - loaded_pix = getbpl2_32(); + loaded_pix = getbpl8_32(); } - if (bpldat_copy[1] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[1]) { - copybpl2o(); + if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o(); bplshiftcnt[1] = 0; - loaded_pix = getbpl2_32(); + loaded_pix = getbpl8_32(); } uae_u32 sv3 = 0; if (denise_spr_nr_armeds) { @@ -37176,59 +81432,11 @@ static void lts_aga_fm1_dpf1_p2_ilores_dshres_spr(void) denise_cck++; } } -static void lts_aga_fm1_dpf1_p2_ilores_dshres_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb0_p2_ilores_dshres_spr(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb0_p2_ilores_dshres_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb1_p2_ilores_dshres_spr(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb1_p2_ilores_dshres_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_ham0_p2_ilores_dshres_spr(void) -{ - lts_null(); -} -static void lts_aga_fm1_ham0_p2_ilores_dshres_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_ham1_p2_ilores_dshres_spr(void) -{ - lts_null(); -} -static void lts_aga_fm1_ham1_p2_ilores_dshres_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb0_p2_ilores_dshres_spr(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb0_p2_ilores_dshres_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb1_p2_ilores_dshres_spr(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb1_p2_ilores_dshres_spr_filtered(void) +static void lts_aga_fm1_n1_p8_ihires_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm1_n0_p4_ilores_dshres_spr(void) +static void lts_aga_fm1_dpf0_p8_ihires_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -37249,20 +81457,25 @@ static void lts_aga_fm1_n0_p4_ilores_dshres_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; } last_bpl_pix = pix0; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl4(); - loaded_pix = getbpl4_32(); + shiftbpl8(); + loaded_pix = getbpl8_32(); } - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl4(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8(); bplshiftcnt[0] = 0; - loaded_pix = getbpl4_32(); + loaded_pix = getbpl8_32(); } uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { @@ -37282,20 +81495,25 @@ static void lts_aga_fm1_n0_p4_ilores_dshres_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix1 = loaded_pixs[1]; clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; + uae_u8 val1 = dpf_lookup[pix1]; + if (dpf_lookup_no[pix1]) { + val1 += dblpfofs[bpldualpf2of]; + } + val1 ^= bplcon4_denise_xor_val; + dpix_val1 = denise_colors.acolors[val1]; } last_bpl_pix = pix1; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl4(); - loaded_pix = getbpl4_32(); + shiftbpl8(); + loaded_pix = getbpl8_32(); } - if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { - copybpl4(); + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8(); bplshiftcnt[0] = 0; - loaded_pix = getbpl4_32(); + loaded_pix = getbpl8_32(); } uae_u32 sv1 = 0; if (denise_spr_nr_armeds) { @@ -37315,20 +81533,25 @@ static void lts_aga_fm1_n0_p4_ilores_dshres_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; } last_bpl_pix = pix2; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl4(); - loaded_pix = getbpl4_32(); + shiftbpl8(); + loaded_pix = getbpl8_32(); } - if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { - copybpl4(); + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8(); bplshiftcnt[0] = 0; - loaded_pix = getbpl4_32(); + loaded_pix = getbpl8_32(); } uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { @@ -37348,20 +81571,25 @@ static void lts_aga_fm1_n0_p4_ilores_dshres_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix3 = loaded_pixs[3]; clxdat |= bplcoltable[pix3]; - dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; + uae_u8 val3 = dpf_lookup[pix3]; + if (dpf_lookup_no[pix3]) { + val3 += dblpfofs[bpldualpf2of]; + } + val3 ^= bplcon4_denise_xor_val; + dpix_val3 = denise_colors.acolors[val3]; } last_bpl_pix = pix3; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl4(); - loaded_pix = getbpl4_32(); + shiftbpl8(); + loaded_pix = getbpl8_32(); } - if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { - copybpl4(); + if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8(); bplshiftcnt[0] = 0; - loaded_pix = getbpl4_32(); + loaded_pix = getbpl8_32(); } uae_u32 sv3 = 0; if (denise_spr_nr_armeds) { @@ -37457,11 +81685,11 @@ static void lts_aga_fm1_n0_p4_ilores_dshres_spr(void) denise_cck++; } } -static void lts_aga_fm1_n0_p4_ilores_dshres_spr_filtered(void) +static void lts_aga_fm1_dpf0_p8_ihires_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm1_n1_p4_ilores_dshres_spr(void) +static void lts_aga_fm1_dpf1_p8_ihires_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -37482,31 +81710,36 @@ static void lts_aga_fm1_n1_p4_ilores_dshres_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; } last_bpl_pix = pix0; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl4e(); - loaded_pix = getbpl4_32(); + shiftbpl8e(); + loaded_pix = getbpl8_32(); } - bplshiftcnt[1] += 1; + bplshiftcnt[1] += 2; if (bplshiftcnt[1] >= 4) { bplshiftcnt[1] = 0; - shiftbpl4o(); - loaded_pix = getbpl4_32(); + shiftbpl8o(); + loaded_pix = getbpl8_32(); } - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl4e(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8e(); bplshiftcnt[0] = 0; - loaded_pix = getbpl4_32(); + loaded_pix = getbpl8_32(); } - if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { - copybpl4o(); + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o(); bplshiftcnt[1] = 0; - loaded_pix = getbpl4_32(); + loaded_pix = getbpl8_32(); } uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { @@ -37526,31 +81759,36 @@ static void lts_aga_fm1_n1_p4_ilores_dshres_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix1 = loaded_pixs[1]; clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; + uae_u8 val1 = dpf_lookup[pix1]; + if (dpf_lookup_no[pix1]) { + val1 += dblpfofs[bpldualpf2of]; + } + val1 ^= bplcon4_denise_xor_val; + dpix_val1 = denise_colors.acolors[val1]; } last_bpl_pix = pix1; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl4e(); - loaded_pix = getbpl4_32(); + shiftbpl8e(); + loaded_pix = getbpl8_32(); } - bplshiftcnt[1] += 1; + bplshiftcnt[1] += 2; if (bplshiftcnt[1] >= 4) { bplshiftcnt[1] = 0; - shiftbpl4o(); - loaded_pix = getbpl4_32(); + shiftbpl8o(); + loaded_pix = getbpl8_32(); } - if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { - copybpl4e(); + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8e(); bplshiftcnt[0] = 0; - loaded_pix = getbpl4_32(); + loaded_pix = getbpl8_32(); } - if (bpldat_copy[1] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) { - copybpl4o(); + if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o(); bplshiftcnt[1] = 0; - loaded_pix = getbpl4_32(); + loaded_pix = getbpl8_32(); } uae_u32 sv1 = 0; if (denise_spr_nr_armeds) { @@ -37570,31 +81808,36 @@ static void lts_aga_fm1_n1_p4_ilores_dshres_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; } last_bpl_pix = pix2; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl4e(); - loaded_pix = getbpl4_32(); + shiftbpl8e(); + loaded_pix = getbpl8_32(); } - bplshiftcnt[1] += 1; + bplshiftcnt[1] += 2; if (bplshiftcnt[1] >= 4) { bplshiftcnt[1] = 0; - shiftbpl4o(); - loaded_pix = getbpl4_32(); + shiftbpl8o(); + loaded_pix = getbpl8_32(); } - if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { - copybpl4e(); + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8e(); bplshiftcnt[0] = 0; - loaded_pix = getbpl4_32(); + loaded_pix = getbpl8_32(); } - if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) { - copybpl4o(); + if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o(); bplshiftcnt[1] = 0; - loaded_pix = getbpl4_32(); + loaded_pix = getbpl8_32(); } uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { @@ -37614,31 +81857,36 @@ static void lts_aga_fm1_n1_p4_ilores_dshres_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix3 = loaded_pixs[3]; clxdat |= bplcoltable[pix3]; - dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; + uae_u8 val3 = dpf_lookup[pix3]; + if (dpf_lookup_no[pix3]) { + val3 += dblpfofs[bpldualpf2of]; + } + val3 ^= bplcon4_denise_xor_val; + dpix_val3 = denise_colors.acolors[val3]; } last_bpl_pix = pix3; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl4e(); - loaded_pix = getbpl4_32(); + shiftbpl8e(); + loaded_pix = getbpl8_32(); } - bplshiftcnt[1] += 1; + bplshiftcnt[1] += 2; if (bplshiftcnt[1] >= 4) { bplshiftcnt[1] = 0; - shiftbpl4o(); - loaded_pix = getbpl4_32(); + shiftbpl8o(); + loaded_pix = getbpl8_32(); } - if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { - copybpl4e(); + if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8e(); bplshiftcnt[0] = 0; - loaded_pix = getbpl4_32(); + loaded_pix = getbpl8_32(); } - if (bpldat_copy[1] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[1]) { - copybpl4o(); + if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o(); bplshiftcnt[1] = 0; - loaded_pix = getbpl4_32(); + loaded_pix = getbpl8_32(); } uae_u32 sv3 = 0; if (denise_spr_nr_armeds) { @@ -37734,11 +81982,11 @@ static void lts_aga_fm1_n1_p4_ilores_dshres_spr(void) denise_cck++; } } -static void lts_aga_fm1_n1_p4_ilores_dshres_spr_filtered(void) +static void lts_aga_fm1_dpf1_p8_ihires_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm1_dpf0_p4_ilores_dshres_spr(void) +static void lts_aga_fm1_ehb0_p8_ihires_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -37749,35 +81997,12 @@ 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; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4(); - loaded_pix = getbpl4_32(); - } - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl4(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4_32(); } uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { @@ -37787,35 +82012,12 @@ static void lts_aga_fm1_dpf0_p4_ilores_dshres_spr(void) sv0 = svt; } } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - if (dpf_lookup_no[pix1]) { - val1 += dblpfofs[bpldualpf2of]; - } - val1 ^= bplcon4_denise_xor_val; - dpix_val1 = denise_colors.acolors[val1]; - } - last_bpl_pix = pix1; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4(); - loaded_pix = getbpl4_32(); - } - if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { - copybpl4(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4_32(); } uae_u32 sv1 = 0; if (denise_spr_nr_armeds) { @@ -37825,35 +82027,12 @@ static void lts_aga_fm1_dpf0_p4_ilores_dshres_spr(void) sv1 = svt; } } - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4(); - loaded_pix = getbpl4_32(); - } - if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { - copybpl4(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4_32(); } uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { @@ -37863,35 +82042,12 @@ static void lts_aga_fm1_dpf0_p4_ilores_dshres_spr(void) sv2 = svt; } } - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - uae_u8 val3 = dpf_lookup[pix3]; - if (dpf_lookup_no[pix3]) { - val3 += dblpfofs[bpldualpf2of]; - } - val3 ^= bplcon4_denise_xor_val; - dpix_val3 = denise_colors.acolors[val3]; - } - last_bpl_pix = pix3; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4(); - loaded_pix = getbpl4_32(); - } - if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { - copybpl4(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4_32(); } uae_u32 sv3 = 0; if (denise_spr_nr_armeds) { @@ -37901,7 +82057,6 @@ static void lts_aga_fm1_dpf0_p4_ilores_dshres_spr(void) sv3 = svt; } } - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { @@ -37987,11 +82142,11 @@ static void lts_aga_fm1_dpf0_p4_ilores_dshres_spr(void) denise_cck++; } } -static void lts_aga_fm1_dpf0_p4_ilores_dshres_spr_filtered(void) +static void lts_aga_fm1_ehb0_p8_ihires_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm1_dpf1_p4_ilores_dshres_spr(void) +static void lts_aga_fm1_ehb1_p8_ihires_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -38002,46 +82157,12 @@ 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; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4e(); - loaded_pix = getbpl4_32(); - } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl4o(); - loaded_pix = getbpl4_32(); - } - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl4e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4_32(); - } - if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { - copybpl4o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl4_32(); } uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { @@ -38051,46 +82172,12 @@ static void lts_aga_fm1_dpf1_p4_ilores_dshres_spr(void) sv0 = svt; } } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - if (dpf_lookup_no[pix1]) { - val1 += dblpfofs[bpldualpf2of]; - } - val1 ^= bplcon4_denise_xor_val; - dpix_val1 = denise_colors.acolors[val1]; - } - last_bpl_pix = pix1; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4e(); - loaded_pix = getbpl4_32(); - } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl4o(); - loaded_pix = getbpl4_32(); - } - if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { - copybpl4e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4_32(); - } - if (bpldat_copy[1] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) { - copybpl4o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl4_32(); } uae_u32 sv1 = 0; if (denise_spr_nr_armeds) { @@ -38100,46 +82187,12 @@ static void lts_aga_fm1_dpf1_p4_ilores_dshres_spr(void) sv1 = svt; } } - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4e(); - loaded_pix = getbpl4_32(); - } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl4o(); - loaded_pix = getbpl4_32(); - } - if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { - copybpl4e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4_32(); - } - if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) { - copybpl4o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl4_32(); } uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { @@ -38149,46 +82202,12 @@ static void lts_aga_fm1_dpf1_p4_ilores_dshres_spr(void) sv2 = svt; } } - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - uae_u8 val3 = dpf_lookup[pix3]; - if (dpf_lookup_no[pix3]) { - val3 += dblpfofs[bpldualpf2of]; - } - val3 ^= bplcon4_denise_xor_val; - dpix_val3 = denise_colors.acolors[val3]; - } - last_bpl_pix = pix3; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4e(); - loaded_pix = getbpl4_32(); - } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl4o(); - loaded_pix = getbpl4_32(); - } - if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { - copybpl4e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4_32(); - } - if (bpldat_copy[1] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[1]) { - copybpl4o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl4_32(); } uae_u32 sv3 = 0; if (denise_spr_nr_armeds) { @@ -38198,7 +82217,6 @@ static void lts_aga_fm1_dpf1_p4_ilores_dshres_spr(void) sv3 = svt; } } - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { @@ -38284,59 +82302,11 @@ static void lts_aga_fm1_dpf1_p4_ilores_dshres_spr(void) denise_cck++; } } -static void lts_aga_fm1_dpf1_p4_ilores_dshres_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb0_p4_ilores_dshres_spr(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb0_p4_ilores_dshres_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb1_p4_ilores_dshres_spr(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb1_p4_ilores_dshres_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_ham0_p4_ilores_dshres_spr(void) -{ - lts_null(); -} -static void lts_aga_fm1_ham0_p4_ilores_dshres_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_ham1_p4_ilores_dshres_spr(void) -{ - lts_null(); -} -static void lts_aga_fm1_ham1_p4_ilores_dshres_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb0_p4_ilores_dshres_spr(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb0_p4_ilores_dshres_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb1_p4_ilores_dshres_spr(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb1_p4_ilores_dshres_spr_filtered(void) +static void lts_aga_fm1_ehb1_p8_ihires_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm1_n0_p6_ilores_dshres_spr(void) +static void lts_aga_fm1_ham0_p8_ihires_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -38357,20 +82327,20 @@ static void lts_aga_fm1_n0_p6_ilores_dshres_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + dpix_val0 = decode_ham_pixel_aga(pix0); } last_bpl_pix = pix0; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl6(); - loaded_pix = getbpl6_32(); + shiftbpl8(); + loaded_pix = getbpl8_32(); } - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl6(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8(); bplshiftcnt[0] = 0; - loaded_pix = getbpl6_32(); + loaded_pix = getbpl8_32(); } uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { @@ -38390,20 +82360,20 @@ static void lts_aga_fm1_n0_p6_ilores_dshres_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix1 = loaded_pixs[1]; clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; + dpix_val1 = decode_ham_pixel_aga(pix1); } last_bpl_pix = pix1; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl6(); - loaded_pix = getbpl6_32(); + shiftbpl8(); + loaded_pix = getbpl8_32(); } - if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { - copybpl6(); + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8(); bplshiftcnt[0] = 0; - loaded_pix = getbpl6_32(); + loaded_pix = getbpl8_32(); } uae_u32 sv1 = 0; if (denise_spr_nr_armeds) { @@ -38423,20 +82393,20 @@ static void lts_aga_fm1_n0_p6_ilores_dshres_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + dpix_val2 = decode_ham_pixel_aga(pix2); } last_bpl_pix = pix2; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl6(); - loaded_pix = getbpl6_32(); + shiftbpl8(); + loaded_pix = getbpl8_32(); } - if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { - copybpl6(); + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8(); bplshiftcnt[0] = 0; - loaded_pix = getbpl6_32(); + loaded_pix = getbpl8_32(); } uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { @@ -38456,20 +82426,20 @@ static void lts_aga_fm1_n0_p6_ilores_dshres_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix3 = loaded_pixs[3]; clxdat |= bplcoltable[pix3]; - dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; + dpix_val3 = decode_ham_pixel_aga(pix3); } last_bpl_pix = pix3; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl6(); - loaded_pix = getbpl6_32(); + shiftbpl8(); + loaded_pix = getbpl8_32(); } - if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { - copybpl6(); + if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8(); bplshiftcnt[0] = 0; - loaded_pix = getbpl6_32(); + loaded_pix = getbpl8_32(); } uae_u32 sv3 = 0; if (denise_spr_nr_armeds) { @@ -38565,11 +82535,11 @@ static void lts_aga_fm1_n0_p6_ilores_dshres_spr(void) denise_cck++; } } -static void lts_aga_fm1_n0_p6_ilores_dshres_spr_filtered(void) +static void lts_aga_fm1_ham0_p8_ihires_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm1_n1_p6_ilores_dshres_spr(void) +static void lts_aga_fm1_ham1_p8_ihires_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -38590,31 +82560,31 @@ static void lts_aga_fm1_n1_p6_ilores_dshres_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + dpix_val0 = decode_ham_pixel_aga(pix0); } last_bpl_pix = pix0; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl6e(); - loaded_pix = getbpl6_32(); + shiftbpl8e(); + loaded_pix = getbpl8_32(); } - bplshiftcnt[1] += 1; + bplshiftcnt[1] += 2; if (bplshiftcnt[1] >= 4) { bplshiftcnt[1] = 0; - shiftbpl6o(); - loaded_pix = getbpl6_32(); + shiftbpl8o(); + loaded_pix = getbpl8_32(); } - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl6e(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8e(); bplshiftcnt[0] = 0; - loaded_pix = getbpl6_32(); + loaded_pix = getbpl8_32(); } - if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { - copybpl6o(); + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o(); bplshiftcnt[1] = 0; - loaded_pix = getbpl6_32(); + loaded_pix = getbpl8_32(); } uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { @@ -38634,31 +82604,31 @@ static void lts_aga_fm1_n1_p6_ilores_dshres_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix1 = loaded_pixs[1]; clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; + dpix_val1 = decode_ham_pixel_aga(pix1); } last_bpl_pix = pix1; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl6e(); - loaded_pix = getbpl6_32(); + shiftbpl8e(); + loaded_pix = getbpl8_32(); } - bplshiftcnt[1] += 1; + bplshiftcnt[1] += 2; if (bplshiftcnt[1] >= 4) { bplshiftcnt[1] = 0; - shiftbpl6o(); - loaded_pix = getbpl6_32(); + shiftbpl8o(); + loaded_pix = getbpl8_32(); } - if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { - copybpl6e(); + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8e(); bplshiftcnt[0] = 0; - loaded_pix = getbpl6_32(); + loaded_pix = getbpl8_32(); } - if (bpldat_copy[1] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) { - copybpl6o(); + if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o(); bplshiftcnt[1] = 0; - loaded_pix = getbpl6_32(); + loaded_pix = getbpl8_32(); } uae_u32 sv1 = 0; if (denise_spr_nr_armeds) { @@ -38678,31 +82648,31 @@ static void lts_aga_fm1_n1_p6_ilores_dshres_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + dpix_val2 = decode_ham_pixel_aga(pix2); } last_bpl_pix = pix2; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl6e(); - loaded_pix = getbpl6_32(); + shiftbpl8e(); + loaded_pix = getbpl8_32(); } - bplshiftcnt[1] += 1; + bplshiftcnt[1] += 2; if (bplshiftcnt[1] >= 4) { bplshiftcnt[1] = 0; - shiftbpl6o(); - loaded_pix = getbpl6_32(); + shiftbpl8o(); + loaded_pix = getbpl8_32(); } - if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { - copybpl6e(); + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8e(); bplshiftcnt[0] = 0; - loaded_pix = getbpl6_32(); + loaded_pix = getbpl8_32(); } - if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) { - copybpl6o(); + if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o(); bplshiftcnt[1] = 0; - loaded_pix = getbpl6_32(); + loaded_pix = getbpl8_32(); } uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { @@ -38722,31 +82692,31 @@ static void lts_aga_fm1_n1_p6_ilores_dshres_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix3 = loaded_pixs[3]; clxdat |= bplcoltable[pix3]; - dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; + dpix_val3 = decode_ham_pixel_aga(pix3); } last_bpl_pix = pix3; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl6e(); - loaded_pix = getbpl6_32(); + shiftbpl8e(); + loaded_pix = getbpl8_32(); } - bplshiftcnt[1] += 1; + bplshiftcnt[1] += 2; if (bplshiftcnt[1] >= 4) { bplshiftcnt[1] = 0; - shiftbpl6o(); - loaded_pix = getbpl6_32(); + shiftbpl8o(); + loaded_pix = getbpl8_32(); } - if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { - copybpl6e(); + if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8e(); bplshiftcnt[0] = 0; - loaded_pix = getbpl6_32(); + loaded_pix = getbpl8_32(); } - if (bpldat_copy[1] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[1]) { - copybpl6o(); + if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o(); bplshiftcnt[1] = 0; - loaded_pix = getbpl6_32(); + loaded_pix = getbpl8_32(); } uae_u32 sv3 = 0; if (denise_spr_nr_armeds) { @@ -38842,11 +82812,11 @@ static void lts_aga_fm1_n1_p6_ilores_dshres_spr(void) denise_cck++; } } -static void lts_aga_fm1_n1_p6_ilores_dshres_spr_filtered(void) +static void lts_aga_fm1_ham1_p8_ihires_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm1_dpf0_p6_ilores_dshres_spr(void) +static void lts_aga_fm1_kehb0_p8_ihires_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -38857,35 +82827,12 @@ 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; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6(); - loaded_pix = getbpl6_32(); - } - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl6(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6_32(); } uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { @@ -38895,35 +82842,12 @@ static void lts_aga_fm1_dpf0_p6_ilores_dshres_spr(void) sv0 = svt; } } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - if (dpf_lookup_no[pix1]) { - val1 += dblpfofs[bpldualpf2of]; - } - val1 ^= bplcon4_denise_xor_val; - dpix_val1 = denise_colors.acolors[val1]; - } - last_bpl_pix = pix1; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6(); - loaded_pix = getbpl6_32(); - } - if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { - copybpl6(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6_32(); } uae_u32 sv1 = 0; if (denise_spr_nr_armeds) { @@ -38933,35 +82857,12 @@ static void lts_aga_fm1_dpf0_p6_ilores_dshres_spr(void) sv1 = svt; } } - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6(); - loaded_pix = getbpl6_32(); - } - if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { - copybpl6(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6_32(); } uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { @@ -38971,35 +82872,12 @@ static void lts_aga_fm1_dpf0_p6_ilores_dshres_spr(void) sv2 = svt; } } - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - uae_u8 val3 = dpf_lookup[pix3]; - if (dpf_lookup_no[pix3]) { - val3 += dblpfofs[bpldualpf2of]; - } - val3 ^= bplcon4_denise_xor_val; - dpix_val3 = denise_colors.acolors[val3]; - } - last_bpl_pix = pix3; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6(); - loaded_pix = getbpl6_32(); - } - if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { - copybpl6(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6_32(); } uae_u32 sv3 = 0; if (denise_spr_nr_armeds) { @@ -39009,7 +82887,6 @@ static void lts_aga_fm1_dpf0_p6_ilores_dshres_spr(void) sv3 = svt; } } - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { @@ -39095,11 +82972,11 @@ static void lts_aga_fm1_dpf0_p6_ilores_dshres_spr(void) denise_cck++; } } -static void lts_aga_fm1_dpf0_p6_ilores_dshres_spr_filtered(void) +static void lts_aga_fm1_kehb0_p8_ihires_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm1_dpf1_p6_ilores_dshres_spr(void) +static void lts_aga_fm1_kehb1_p8_ihires_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -39110,46 +82987,12 @@ 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; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6e(); - loaded_pix = getbpl6_32(); - } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl6o(); - loaded_pix = getbpl6_32(); - } - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl6e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6_32(); - } - if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { - copybpl6o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl6_32(); } uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { @@ -39159,46 +83002,12 @@ static void lts_aga_fm1_dpf1_p6_ilores_dshres_spr(void) sv0 = svt; } } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - if (dpf_lookup_no[pix1]) { - val1 += dblpfofs[bpldualpf2of]; - } - val1 ^= bplcon4_denise_xor_val; - dpix_val1 = denise_colors.acolors[val1]; - } - last_bpl_pix = pix1; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6e(); - loaded_pix = getbpl6_32(); - } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl6o(); - loaded_pix = getbpl6_32(); - } - if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { - copybpl6e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6_32(); - } - if (bpldat_copy[1] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) { - copybpl6o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl6_32(); } uae_u32 sv1 = 0; if (denise_spr_nr_armeds) { @@ -39208,46 +83017,12 @@ static void lts_aga_fm1_dpf1_p6_ilores_dshres_spr(void) sv1 = svt; } } - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6e(); - loaded_pix = getbpl6_32(); - } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl6o(); - loaded_pix = getbpl6_32(); - } - if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { - copybpl6e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6_32(); - } - if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) { - copybpl6o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl6_32(); } uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { @@ -39257,46 +83032,12 @@ static void lts_aga_fm1_dpf1_p6_ilores_dshres_spr(void) sv2 = svt; } } - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - uae_u8 val3 = dpf_lookup[pix3]; - if (dpf_lookup_no[pix3]) { - val3 += dblpfofs[bpldualpf2of]; - } - val3 ^= bplcon4_denise_xor_val; - dpix_val3 = denise_colors.acolors[val3]; - } - last_bpl_pix = pix3; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6e(); - loaded_pix = getbpl6_32(); - } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl6o(); - loaded_pix = getbpl6_32(); - } - if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { - copybpl6e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6_32(); - } - if (bpldat_copy[1] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[1]) { - copybpl6o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl6_32(); } uae_u32 sv3 = 0; if (denise_spr_nr_armeds) { @@ -39306,7 +83047,6 @@ static void lts_aga_fm1_dpf1_p6_ilores_dshres_spr(void) sv3 = svt; } } - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { @@ -39323,19 +83063,168 @@ static void lts_aga_fm1_dpf1_p6_ilores_dshres_spr(void) } } dtbuf[h][1] = dpix_val1; - if (sv2) { - uae_u32 spix2 = denise_render_sprites2(pix2, sv2); - if (spix2) { - dpix_val2 = denise_colors.acolors[spix2]; - } - } + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + } + } + dtbuf[h][3] = dpix_val3; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_kehb1_p8_ihires_dshres_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_n0_p2_ishres_dshres(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix0; + } + shiftbpl2(); + if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { + copybpl2(); + } + loaded_pix = getbpl2_32(); + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix1; + } + shiftbpl2(); + if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { + copybpl2(); + } + loaded_pix = getbpl2_32(); + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 1; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix2; + } + shiftbpl2(); + if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { + copybpl2(); + } + loaded_pix = getbpl2_32(); + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix3; + } + shiftbpl2(); + if (bpldat_copy[0] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[0]) { + copybpl2(); + } + loaded_pix = getbpl2_32(); + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 1; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; dtbuf[h][2] = dpix_val2; - if (sv3) { - uae_u32 spix3 = denise_render_sprites2(pix3, sv3); - if (spix3) { - dpix_val3 = denise_colors.acolors[spix3]; - } - } dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -39392,11 +83281,11 @@ static void lts_aga_fm1_dpf1_p6_ilores_dshres_spr(void) denise_cck++; } } -static void lts_aga_fm1_dpf1_p6_ilores_dshres_spr_filtered(void) +static void lts_aga_fm1_n0_p2_ishres_dshres_filtered(void) { lts_null(); } -static void lts_aga_fm1_ehb0_p6_ilores_dshres_spr(void) +static void lts_aga_fm1_n1_p2_ishres_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -39409,7 +83298,6 @@ static void lts_aga_fm1_ehb0_p6_ilores_dshres_spr(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -39417,38 +83305,20 @@ static void lts_aga_fm1_ehb0_p6_ilores_dshres_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - pix0 ^= bplcon4_denise_xor_val; - if (!(pix0 & 0x20)) { - dpix_val0 = denise_colors.acolors[pix0]; - } else { - uae_u32 v = (denise_colors.color_regs_aga[pix0 & 0x1f] >> 1) & 0x7f7f7f; - dpix_val0 = CONVERT_RGB(v); - } + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix0; } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6(); - loaded_pix = getbpl6_32(); - } - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl6(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6_32(); + shiftbpl2(); + if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { + copybpl2e(); } - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } + if (bpldat_copy[1] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[1]) { + copybpl2o(); } + loaded_pix = getbpl2_32(); loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; - matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { @@ -39456,38 +83326,20 @@ static void lts_aga_fm1_ehb0_p6_ilores_dshres_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix1 = loaded_pixs[1]; clxdat |= bplcoltable[pix1]; - pix1 ^= bplcon4_denise_xor_val; - if (!(pix1 & 0x20)) { - dpix_val1 = denise_colors.acolors[pix1]; - } else { - uae_u32 v = (denise_colors.color_regs_aga[pix1 & 0x1f] >> 1) & 0x7f7f7f; - dpix_val1 = CONVERT_RGB(v); - } + dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix1; } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6(); - loaded_pix = getbpl6_32(); - } - if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { - copybpl6(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6_32(); + shiftbpl2(); + if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { + copybpl2e(); } - uae_u32 sv1 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv1 = svt; - } + if (bpldat_copy[1] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[1]) { + copybpl2o(); } + loaded_pix = getbpl2_32(); loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; - matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { @@ -39495,38 +83347,20 @@ static void lts_aga_fm1_ehb0_p6_ilores_dshres_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - pix2 ^= bplcon4_denise_xor_val; - if (!(pix2 & 0x20)) { - dpix_val2 = denise_colors.acolors[pix2]; - } else { - uae_u32 v = (denise_colors.color_regs_aga[pix2 & 0x1f] >> 1) & 0x7f7f7f; - dpix_val2 = CONVERT_RGB(v); - } + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix2; } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6(); - loaded_pix = getbpl6_32(); - } - if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { - copybpl6(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6_32(); + shiftbpl2(); + if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { + copybpl2e(); } - uae_u32 sv2 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv2 = svt; - } + if (bpldat_copy[1] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[1]) { + copybpl2o(); } + loaded_pix = getbpl2_32(); loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; - matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { @@ -39534,65 +83368,24 @@ static void lts_aga_fm1_ehb0_p6_ilores_dshres_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix3 = loaded_pixs[3]; clxdat |= bplcoltable[pix3]; - pix3 ^= bplcon4_denise_xor_val; - if (!(pix3 & 0x20)) { - dpix_val3 = denise_colors.acolors[pix3]; - } else { - uae_u32 v = (denise_colors.color_regs_aga[pix3 & 0x1f] >> 1) & 0x7f7f7f; - dpix_val3 = CONVERT_RGB(v); - } + dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix3; } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6(); - loaded_pix = getbpl6_32(); - } - if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { - copybpl6(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6_32(); + shiftbpl2(); + if (bpldat_copy[0] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[0]) { + copybpl2e(); } - uae_u32 sv3 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv3 = svt; - } + if (bpldat_copy[1] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[1]) { + copybpl2o(); } + loaded_pix = getbpl2_32(); loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - } - } dtbuf[h][0] = dpix_val0; - if (sv1) { - uae_u32 spix1 = denise_render_sprites2(pix1, sv1); - if (spix1) { - dpix_val1 = denise_colors.acolors[spix1]; - } - } dtbuf[h][1] = dpix_val1; - if (sv2) { - uae_u32 spix2 = denise_render_sprites2(pix2, sv2); - if (spix2) { - dpix_val2 = denise_colors.acolors[spix2]; - } - } dtbuf[h][2] = dpix_val2; - if (sv3) { - uae_u32 spix3 = denise_render_sprites2(pix3, sv3); - if (spix3) { - dpix_val3 = denise_colors.acolors[spix3]; - } - } dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -39649,11 +83442,11 @@ static void lts_aga_fm1_ehb0_p6_ilores_dshres_spr(void) denise_cck++; } } -static void lts_aga_fm1_ehb0_p6_ilores_dshres_spr_filtered(void) +static void lts_aga_fm1_n1_p2_ishres_dshres_filtered(void) { lts_null(); } -static void lts_aga_fm1_ehb1_p6_ilores_dshres_spr(void) +static void lts_aga_fm1_dpf0_p2_ishres_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -39666,7 +83459,6 @@ static void lts_aga_fm1_ehb1_p6_ilores_dshres_spr(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -39674,49 +83466,22 @@ static void lts_aga_fm1_ehb1_p6_ilores_dshres_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - pix0 ^= bplcon4_denise_xor_val; - if (!(pix0 & 0x20)) { - dpix_val0 = denise_colors.acolors[pix0]; - } else { - uae_u32 v = (denise_colors.color_regs_aga[pix0 & 0x1f] >> 1) & 0x7f7f7f; - dpix_val0 = CONVERT_RGB(v); + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; } last_bpl_pix = pix0; } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6e(); - loaded_pix = getbpl6_32(); - } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl6o(); - loaded_pix = getbpl6_32(); - } - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl6e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6_32(); - } - if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { - copybpl6o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl6_32(); - } - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } + shiftbpl2(); + if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { + copybpl2(); } + loaded_pix = getbpl2_32(); loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; - matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { @@ -39724,49 +83489,22 @@ static void lts_aga_fm1_ehb1_p6_ilores_dshres_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix1 = loaded_pixs[1]; clxdat |= bplcoltable[pix1]; - pix1 ^= bplcon4_denise_xor_val; - if (!(pix1 & 0x20)) { - dpix_val1 = denise_colors.acolors[pix1]; - } else { - uae_u32 v = (denise_colors.color_regs_aga[pix1 & 0x1f] >> 1) & 0x7f7f7f; - dpix_val1 = CONVERT_RGB(v); + uae_u8 val1 = dpf_lookup[pix1]; + if (dpf_lookup_no[pix1]) { + val1 += dblpfofs[bpldualpf2of]; } + val1 ^= bplcon4_denise_xor_val; + dpix_val1 = denise_colors.acolors[val1]; } last_bpl_pix = pix1; } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6e(); - loaded_pix = getbpl6_32(); - } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl6o(); - loaded_pix = getbpl6_32(); - } - if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { - copybpl6e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6_32(); - } - if (bpldat_copy[1] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) { - copybpl6o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl6_32(); - } - uae_u32 sv1 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv1 = svt; - } + shiftbpl2(); + if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { + copybpl2(); } + loaded_pix = getbpl2_32(); loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; - matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { @@ -39774,49 +83512,22 @@ static void lts_aga_fm1_ehb1_p6_ilores_dshres_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - pix2 ^= bplcon4_denise_xor_val; - if (!(pix2 & 0x20)) { - dpix_val2 = denise_colors.acolors[pix2]; - } else { - uae_u32 v = (denise_colors.color_regs_aga[pix2 & 0x1f] >> 1) & 0x7f7f7f; - dpix_val2 = CONVERT_RGB(v); + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; } last_bpl_pix = pix2; } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6e(); - loaded_pix = getbpl6_32(); - } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl6o(); - loaded_pix = getbpl6_32(); - } - if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { - copybpl6e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6_32(); - } - if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) { - copybpl6o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl6_32(); - } - uae_u32 sv2 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv2 = svt; - } + shiftbpl2(); + if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { + copybpl2(); } + loaded_pix = getbpl2_32(); loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; - matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { @@ -39824,76 +83535,26 @@ static void lts_aga_fm1_ehb1_p6_ilores_dshres_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix3 = loaded_pixs[3]; clxdat |= bplcoltable[pix3]; - pix3 ^= bplcon4_denise_xor_val; - if (!(pix3 & 0x20)) { - dpix_val3 = denise_colors.acolors[pix3]; - } else { - uae_u32 v = (denise_colors.color_regs_aga[pix3 & 0x1f] >> 1) & 0x7f7f7f; - dpix_val3 = CONVERT_RGB(v); + uae_u8 val3 = dpf_lookup[pix3]; + if (dpf_lookup_no[pix3]) { + val3 += dblpfofs[bpldualpf2of]; } + val3 ^= bplcon4_denise_xor_val; + dpix_val3 = denise_colors.acolors[val3]; } last_bpl_pix = pix3; } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6e(); - loaded_pix = getbpl6_32(); - } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl6o(); - loaded_pix = getbpl6_32(); - } - if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { - copybpl6e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6_32(); - } - if (bpldat_copy[1] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[1]) { - copybpl6o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl6_32(); - } - uae_u32 sv3 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv3 = svt; - } + shiftbpl2(); + if (bpldat_copy[0] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[0]) { + copybpl2(); } + loaded_pix = getbpl2_32(); loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - } - } dtbuf[h][0] = dpix_val0; - if (sv1) { - uae_u32 spix1 = denise_render_sprites2(pix1, sv1); - if (spix1) { - dpix_val1 = denise_colors.acolors[spix1]; - } - } dtbuf[h][1] = dpix_val1; - if (sv2) { - uae_u32 spix2 = denise_render_sprites2(pix2, sv2); - if (spix2) { - dpix_val2 = denise_colors.acolors[spix2]; - } - } dtbuf[h][2] = dpix_val2; - if (sv3) { - uae_u32 spix3 = denise_render_sprites2(pix3, sv3); - if (spix3) { - dpix_val3 = denise_colors.acolors[spix3]; - } - } dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -39950,11 +83611,11 @@ static void lts_aga_fm1_ehb1_p6_ilores_dshres_spr(void) denise_cck++; } } -static void lts_aga_fm1_ehb1_p6_ilores_dshres_spr_filtered(void) +static void lts_aga_fm1_dpf0_p2_ishres_dshres_filtered(void) { lts_null(); } -static void lts_aga_fm1_ham0_p6_ilores_dshres_spr(void) +static void lts_aga_fm1_dpf1_p2_ishres_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -39967,7 +83628,6 @@ static void lts_aga_fm1_ham0_p6_ilores_dshres_spr(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -39975,32 +83635,25 @@ static void lts_aga_fm1_ham0_p6_ilores_dshres_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - dpix_val0 = decode_ham_pixel_aga(pix0); + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; } last_bpl_pix = pix0; } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6(); - loaded_pix = getbpl6_32(); - } - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl6(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6_32(); + shiftbpl2(); + if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { + copybpl2e(); } - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } + if (bpldat_copy[1] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[1]) { + copybpl2o(); } + loaded_pix = getbpl2_32(); loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; - matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { @@ -40008,32 +83661,25 @@ static void lts_aga_fm1_ham0_p6_ilores_dshres_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix1 = loaded_pixs[1]; clxdat |= bplcoltable[pix1]; - dpix_val1 = decode_ham_pixel_aga(pix1); + uae_u8 val1 = dpf_lookup[pix1]; + if (dpf_lookup_no[pix1]) { + val1 += dblpfofs[bpldualpf2of]; + } + val1 ^= bplcon4_denise_xor_val; + dpix_val1 = denise_colors.acolors[val1]; } last_bpl_pix = pix1; } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6(); - loaded_pix = getbpl6_32(); - } - if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { - copybpl6(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6_32(); + shiftbpl2(); + if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { + copybpl2e(); } - uae_u32 sv1 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv1 = svt; - } + if (bpldat_copy[1] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[1]) { + copybpl2o(); } + loaded_pix = getbpl2_32(); loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; - matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { @@ -40041,32 +83687,25 @@ static void lts_aga_fm1_ham0_p6_ilores_dshres_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - dpix_val2 = decode_ham_pixel_aga(pix2); + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; } last_bpl_pix = pix2; } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6(); - loaded_pix = getbpl6_32(); - } - if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { - copybpl6(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6_32(); + shiftbpl2(); + if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { + copybpl2e(); } - uae_u32 sv2 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv2 = svt; - } + if (bpldat_copy[1] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[1]) { + copybpl2o(); } + loaded_pix = getbpl2_32(); loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; - matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { @@ -40074,59 +83713,29 @@ static void lts_aga_fm1_ham0_p6_ilores_dshres_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix3 = loaded_pixs[3]; clxdat |= bplcoltable[pix3]; - dpix_val3 = decode_ham_pixel_aga(pix3); + uae_u8 val3 = dpf_lookup[pix3]; + if (dpf_lookup_no[pix3]) { + val3 += dblpfofs[bpldualpf2of]; + } + val3 ^= bplcon4_denise_xor_val; + dpix_val3 = denise_colors.acolors[val3]; } last_bpl_pix = pix3; } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6(); - loaded_pix = getbpl6_32(); - } - if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { - copybpl6(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6_32(); + shiftbpl2(); + if (bpldat_copy[0] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[0]) { + copybpl2e(); } - uae_u32 sv3 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv3 = svt; - } + if (bpldat_copy[1] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[1]) { + copybpl2o(); } + loaded_pix = getbpl2_32(); loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - } - } dtbuf[h][0] = dpix_val0; - if (sv1) { - uae_u32 spix1 = denise_render_sprites2(pix1, sv1); - if (spix1) { - dpix_val1 = denise_colors.acolors[spix1]; - } - } dtbuf[h][1] = dpix_val1; - if (sv2) { - uae_u32 spix2 = denise_render_sprites2(pix2, sv2); - if (spix2) { - dpix_val2 = denise_colors.acolors[spix2]; - } - } dtbuf[h][2] = dpix_val2; - if (sv3) { - uae_u32 spix3 = denise_render_sprites2(pix3, sv3); - if (spix3) { - dpix_val3 = denise_colors.acolors[spix3]; - } - } dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -40183,11 +83792,11 @@ static void lts_aga_fm1_ham0_p6_ilores_dshres_spr(void) denise_cck++; } } -static void lts_aga_fm1_ham0_p6_ilores_dshres_spr_filtered(void) +static void lts_aga_fm1_dpf1_p2_ishres_dshres_filtered(void) { lts_null(); } -static void lts_aga_fm1_ham1_p6_ilores_dshres_spr(void) +static void lts_aga_fm1_ehb0_p2_ishres_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -40198,212 +83807,35 @@ 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; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = decode_ham_pixel_aga(pix0); - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6e(); - loaded_pix = getbpl6_32(); - } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl6o(); - loaded_pix = getbpl6_32(); - } - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl6e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6_32(); - } - if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { - copybpl6o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl6_32(); - } - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; - matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - dpix_val1 = decode_ham_pixel_aga(pix1); - } - last_bpl_pix = pix1; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6e(); - loaded_pix = getbpl6_32(); - } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl6o(); - loaded_pix = getbpl6_32(); - } - if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { - copybpl6e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6_32(); - } - if (bpldat_copy[1] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) { - copybpl6o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl6_32(); - } - uae_u32 sv1 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv1 = svt; - } } - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; - matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = decode_ham_pixel_aga(pix2); - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6e(); - loaded_pix = getbpl6_32(); - } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl6o(); - loaded_pix = getbpl6_32(); - } - if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { - copybpl6e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6_32(); - } - if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) { - copybpl6o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl6_32(); - } - uae_u32 sv2 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv2 = svt; - } } - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; - matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - dpix_val3 = decode_ham_pixel_aga(pix3); - } - last_bpl_pix = pix3; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6e(); - loaded_pix = getbpl6_32(); - } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl6o(); - loaded_pix = getbpl6_32(); - } - if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { - copybpl6e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6_32(); - } - if (bpldat_copy[1] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[1]) { - copybpl6o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl6_32(); - } - uae_u32 sv3 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv3 = svt; - } } - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - } - } dtbuf[h][0] = dpix_val0; - if (sv1) { - uae_u32 spix1 = denise_render_sprites2(pix1, sv1); - if (spix1) { - dpix_val1 = denise_colors.acolors[spix1]; - } - } dtbuf[h][1] = dpix_val1; - if (sv2) { - uae_u32 spix2 = denise_render_sprites2(pix2, sv2); - if (spix2) { - dpix_val2 = denise_colors.acolors[spix2]; - } - } dtbuf[h][2] = dpix_val2; - if (sv3) { - uae_u32 spix3 = denise_render_sprites2(pix3, sv3); - if (spix3) { - dpix_val3 = denise_colors.acolors[spix3]; - } - } dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -40460,11 +83892,11 @@ static void lts_aga_fm1_ham1_p6_ilores_dshres_spr(void) denise_cck++; } } -static void lts_aga_fm1_ham1_p6_ilores_dshres_spr_filtered(void) +static void lts_aga_fm1_ehb0_p2_ishres_dshres_filtered(void) { lts_null(); } -static void lts_aga_fm1_kehb0_p6_ilores_dshres_spr(void) +static void lts_aga_fm1_ehb1_p2_ishres_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -40475,172 +83907,35 @@ 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; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - pix0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[pix0 & 31]; - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6(); - loaded_pix = getbpl6_32(); - } - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl6(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6_32(); - } - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; - matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - pix1 ^= bplcon4_denise_xor_val; - dpix_val1 = denise_colors.acolors[pix1 & 31]; - } - last_bpl_pix = pix1; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6(); - loaded_pix = getbpl6_32(); - } - if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { - copybpl6(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6_32(); - } - uae_u32 sv1 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv1 = svt; - } } - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; - matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - pix2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[pix2 & 31]; - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6(); - loaded_pix = getbpl6_32(); - } - if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { - copybpl6(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6_32(); } - uae_u32 sv2 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv2 = svt; - } - } - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; - matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - pix3 ^= bplcon4_denise_xor_val; - dpix_val3 = denise_colors.acolors[pix3 & 31]; - } - last_bpl_pix = pix3; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6(); - loaded_pix = getbpl6_32(); - } - if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { - copybpl6(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6_32(); - } - uae_u32 sv3 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv3 = svt; - } } - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - } - } dtbuf[h][0] = dpix_val0; - if (sv1) { - uae_u32 spix1 = denise_render_sprites2(pix1, sv1); - if (spix1) { - dpix_val1 = denise_colors.acolors[spix1]; - } - } dtbuf[h][1] = dpix_val1; - if (sv2) { - uae_u32 spix2 = denise_render_sprites2(pix2, sv2); - if (spix2) { - dpix_val2 = denise_colors.acolors[spix2]; - } - } dtbuf[h][2] = dpix_val2; - if (sv3) { - uae_u32 spix3 = denise_render_sprites2(pix3, sv3); - if (spix3) { - dpix_val3 = denise_colors.acolors[spix3]; - } - } dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -40697,11 +83992,11 @@ static void lts_aga_fm1_kehb0_p6_ilores_dshres_spr(void) denise_cck++; } } -static void lts_aga_fm1_kehb0_p6_ilores_dshres_spr_filtered(void) +static void lts_aga_fm1_ehb1_p2_ishres_dshres_filtered(void) { lts_null(); } -static void lts_aga_fm1_kehb1_p6_ilores_dshres_spr(void) +static void lts_aga_fm1_ham0_p2_ishres_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -40712,216 +84007,35 @@ 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; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - pix0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[pix0 & 31]; - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6e(); - loaded_pix = getbpl6_32(); - } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl6o(); - loaded_pix = getbpl6_32(); - } - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl6e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6_32(); - } - if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { - copybpl6o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl6_32(); } - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } - } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; - matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - pix1 ^= bplcon4_denise_xor_val; - dpix_val1 = denise_colors.acolors[pix1 & 31]; - } - last_bpl_pix = pix1; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6e(); - loaded_pix = getbpl6_32(); - } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl6o(); - loaded_pix = getbpl6_32(); - } - if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { - copybpl6e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6_32(); - } - if (bpldat_copy[1] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) { - copybpl6o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl6_32(); - } - uae_u32 sv1 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv1 = svt; - } - } - loaded_pixs[1] = loaded_pix; - internal_pixel_cnt += 1; - matchsprites_aga(cnt + 2); - uae_u8 pix2 = 0; - uae_u32 dpix_val2 = BLANK_COLOR; - if (!denise_blank_active) { - dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - pix2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[pix2 & 31]; - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6e(); - loaded_pix = getbpl6_32(); - } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl6o(); - loaded_pix = getbpl6_32(); - } - if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { - copybpl6e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6_32(); - } - if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) { - copybpl6o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl6_32(); - } - uae_u32 sv2 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv2 = svt; - } - } - loaded_pixs[2] = loaded_pix; - internal_pixel_cnt += 1; - matchsprites_aga(cnt + 3); - uae_u8 pix3 = 0; - uae_u32 dpix_val3 = BLANK_COLOR; - if (!denise_blank_active) { - dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - pix3 ^= bplcon4_denise_xor_val; - dpix_val3 = denise_colors.acolors[pix3 & 31]; - } - last_bpl_pix = pix3; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6e(); - loaded_pix = getbpl6_32(); - } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl6o(); - loaded_pix = getbpl6_32(); - } - if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { - copybpl6e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6_32(); } - if (bpldat_copy[1] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[1]) { - copybpl6o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl6_32(); + internal_pixel_cnt += 1; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; } - uae_u32 sv3 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv3 = svt; - } + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; } - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - } - } dtbuf[h][0] = dpix_val0; - if (sv1) { - uae_u32 spix1 = denise_render_sprites2(pix1, sv1); - if (spix1) { - dpix_val1 = denise_colors.acolors[spix1]; - } - } dtbuf[h][1] = dpix_val1; - if (sv2) { - uae_u32 spix2 = denise_render_sprites2(pix2, sv2); - if (spix2) { - dpix_val2 = denise_colors.acolors[spix2]; - } - } dtbuf[h][2] = dpix_val2; - if (sv3) { - uae_u32 spix3 = denise_render_sprites2(pix3, sv3); - if (spix3) { - dpix_val3 = denise_colors.acolors[spix3]; - } - } dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -40978,11 +84092,11 @@ static void lts_aga_fm1_kehb1_p6_ilores_dshres_spr(void) denise_cck++; } } -static void lts_aga_fm1_kehb1_p6_ilores_dshres_spr_filtered(void) +static void lts_aga_fm1_ham0_p2_ishres_dshres_filtered(void) { lts_null(); } -static void lts_aga_fm1_n0_p8_ilores_dshres_spr(void) +static void lts_aga_fm1_ham1_p2_ishres_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -40993,168 +84107,35 @@ 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; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8(); - loaded_pix = getbpl8_32(); - } - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_32(); - } - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; - matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix1; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8(); - loaded_pix = getbpl8_32(); - } - if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_32(); - } - uae_u32 sv1 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv1 = svt; - } } - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; - matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8(); - loaded_pix = getbpl8_32(); - } - if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_32(); - } - uae_u32 sv2 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv2 = svt; - } } - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; - matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix3; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8(); - loaded_pix = getbpl8_32(); - } - if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_32(); - } - uae_u32 sv3 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv3 = svt; - } } - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - } - } dtbuf[h][0] = dpix_val0; - if (sv1) { - uae_u32 spix1 = denise_render_sprites2(pix1, sv1); - if (spix1) { - dpix_val1 = denise_colors.acolors[spix1]; - } - } dtbuf[h][1] = dpix_val1; - if (sv2) { - uae_u32 spix2 = denise_render_sprites2(pix2, sv2); - if (spix2) { - dpix_val2 = denise_colors.acolors[spix2]; - } - } dtbuf[h][2] = dpix_val2; - if (sv3) { - uae_u32 spix3 = denise_render_sprites2(pix3, sv3); - if (spix3) { - dpix_val3 = denise_colors.acolors[spix3]; - } - } dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -41211,11 +84192,11 @@ static void lts_aga_fm1_n0_p8_ilores_dshres_spr(void) denise_cck++; } } -static void lts_aga_fm1_n0_p8_ilores_dshres_spr_filtered(void) +static void lts_aga_fm1_ham1_p2_ishres_dshres_filtered(void) { lts_null(); } -static void lts_aga_fm1_n1_p8_ilores_dshres_spr(void) +static void lts_aga_fm1_kehb0_p2_ishres_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -41226,212 +84207,35 @@ 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; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8e(); - loaded_pix = getbpl8_32(); - } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl8o(); - loaded_pix = getbpl8_32(); - } - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_32(); } - if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { - copybpl8o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl8_32(); - } - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } - } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; - matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix1; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8e(); - loaded_pix = getbpl8_32(); - } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl8o(); - loaded_pix = getbpl8_32(); - } - if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_32(); - } - if (bpldat_copy[1] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) { - copybpl8o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl8_32(); - } - uae_u32 sv1 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv1 = svt; - } } - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; - matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8e(); - loaded_pix = getbpl8_32(); - } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl8o(); - loaded_pix = getbpl8_32(); - } - if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_32(); - } - if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) { - copybpl8o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl8_32(); - } - uae_u32 sv2 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv2 = svt; - } } - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; - matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix3; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8e(); - loaded_pix = getbpl8_32(); - } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl8o(); - loaded_pix = getbpl8_32(); - } - if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_32(); - } - if (bpldat_copy[1] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[1]) { - copybpl8o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl8_32(); - } - uae_u32 sv3 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv3 = svt; - } } - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - } - } dtbuf[h][0] = dpix_val0; - if (sv1) { - uae_u32 spix1 = denise_render_sprites2(pix1, sv1); - if (spix1) { - dpix_val1 = denise_colors.acolors[spix1]; - } - } dtbuf[h][1] = dpix_val1; - if (sv2) { - uae_u32 spix2 = denise_render_sprites2(pix2, sv2); - if (spix2) { - dpix_val2 = denise_colors.acolors[spix2]; - } - } dtbuf[h][2] = dpix_val2; - if (sv3) { - uae_u32 spix3 = denise_render_sprites2(pix3, sv3); - if (spix3) { - dpix_val3 = denise_colors.acolors[spix3]; - } - } dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -41488,11 +84292,11 @@ static void lts_aga_fm1_n1_p8_ilores_dshres_spr(void) denise_cck++; } } -static void lts_aga_fm1_n1_p8_ilores_dshres_spr_filtered(void) +static void lts_aga_fm1_kehb0_p2_ishres_dshres_filtered(void) { lts_null(); } -static void lts_aga_fm1_dpf0_p8_ilores_dshres_spr(void) +static void lts_aga_fm1_kehb1_p2_ishres_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -41503,188 +84307,35 @@ 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; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8(); - loaded_pix = getbpl8_32(); - } - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_32(); - } - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; - matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - if (dpf_lookup_no[pix1]) { - val1 += dblpfofs[bpldualpf2of]; - } - val1 ^= bplcon4_denise_xor_val; - dpix_val1 = denise_colors.acolors[val1]; - } - last_bpl_pix = pix1; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8(); - loaded_pix = getbpl8_32(); - } - if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_32(); - } - uae_u32 sv1 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv1 = svt; - } } - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; - matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8(); - loaded_pix = getbpl8_32(); - } - if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_32(); - } - uae_u32 sv2 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv2 = svt; - } } - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; - matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - uae_u8 val3 = dpf_lookup[pix3]; - if (dpf_lookup_no[pix3]) { - val3 += dblpfofs[bpldualpf2of]; - } - val3 ^= bplcon4_denise_xor_val; - dpix_val3 = denise_colors.acolors[val3]; - } - last_bpl_pix = pix3; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8(); - loaded_pix = getbpl8_32(); - } - if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_32(); - } - uae_u32 sv3 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv3 = svt; - } } - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - } - } dtbuf[h][0] = dpix_val0; - if (sv1) { - uae_u32 spix1 = denise_render_sprites2(pix1, sv1); - if (spix1) { - dpix_val1 = denise_colors.acolors[spix1]; - } - } - dtbuf[h][1] = dpix_val1; - if (sv2) { - uae_u32 spix2 = denise_render_sprites2(pix2, sv2); - if (spix2) { - dpix_val2 = denise_colors.acolors[spix2]; - } - } + dtbuf[h][1] = dpix_val1; dtbuf[h][2] = dpix_val2; - if (sv3) { - uae_u32 spix3 = denise_render_sprites2(pix3, sv3); - if (spix3) { - dpix_val3 = denise_colors.acolors[spix3]; - } - } dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -41741,11 +84392,11 @@ static void lts_aga_fm1_dpf0_p8_ilores_dshres_spr(void) denise_cck++; } } -static void lts_aga_fm1_dpf0_p8_ilores_dshres_spr_filtered(void) +static void lts_aga_fm1_kehb1_p2_ishres_dshres_filtered(void) { lts_null(); } -static void lts_aga_fm1_dpf1_p8_ilores_dshres_spr(void) +static void lts_aga_fm1_n0_p4_ishres_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -41758,7 +84409,6 @@ static void lts_aga_fm1_dpf1_p8_ilores_dshres_spr(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -41766,48 +84416,17 @@ static void lts_aga_fm1_dpf1_p8_ilores_dshres_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix0; } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8e(); - loaded_pix = getbpl8_32(); - } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl8o(); - loaded_pix = getbpl8_32(); - } - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_32(); - } - if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { - copybpl8o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl8_32(); - } - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4(); } + loaded_pix = getbpl4_32(); loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; - matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { @@ -41815,48 +84434,17 @@ static void lts_aga_fm1_dpf1_p8_ilores_dshres_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix1 = loaded_pixs[1]; clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - if (dpf_lookup_no[pix1]) { - val1 += dblpfofs[bpldualpf2of]; - } - val1 ^= bplcon4_denise_xor_val; - dpix_val1 = denise_colors.acolors[val1]; + dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix1; } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8e(); - loaded_pix = getbpl8_32(); - } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl8o(); - loaded_pix = getbpl8_32(); - } - if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_32(); - } - if (bpldat_copy[1] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) { - copybpl8o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl8_32(); - } - uae_u32 sv1 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv1 = svt; - } + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4(); } + loaded_pix = getbpl4_32(); loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; - matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { @@ -41864,48 +84452,17 @@ static void lts_aga_fm1_dpf1_p8_ilores_dshres_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix2; } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8e(); - loaded_pix = getbpl8_32(); - } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl8o(); - loaded_pix = getbpl8_32(); - } - if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_32(); - } - if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) { - copybpl8o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl8_32(); - } - uae_u32 sv2 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv2 = svt; - } + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4(); } + loaded_pix = getbpl4_32(); loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; - matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { @@ -41913,75 +84470,21 @@ static void lts_aga_fm1_dpf1_p8_ilores_dshres_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix3 = loaded_pixs[3]; clxdat |= bplcoltable[pix3]; - uae_u8 val3 = dpf_lookup[pix3]; - if (dpf_lookup_no[pix3]) { - val3 += dblpfofs[bpldualpf2of]; - } - val3 ^= bplcon4_denise_xor_val; - dpix_val3 = denise_colors.acolors[val3]; + dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix3; } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8e(); - loaded_pix = getbpl8_32(); - } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl8o(); - loaded_pix = getbpl8_32(); - } - if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_32(); - } - if (bpldat_copy[1] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[1]) { - copybpl8o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl8_32(); - } - uae_u32 sv3 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv3 = svt; - } + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4(); } + loaded_pix = getbpl4_32(); loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - } - } dtbuf[h][0] = dpix_val0; - if (sv1) { - uae_u32 spix1 = denise_render_sprites2(pix1, sv1); - if (spix1) { - dpix_val1 = denise_colors.acolors[spix1]; - } - } dtbuf[h][1] = dpix_val1; - if (sv2) { - uae_u32 spix2 = denise_render_sprites2(pix2, sv2); - if (spix2) { - dpix_val2 = denise_colors.acolors[spix2]; - } - } dtbuf[h][2] = dpix_val2; - if (sv3) { - uae_u32 spix3 = denise_render_sprites2(pix3, sv3); - if (spix3) { - dpix_val3 = denise_colors.acolors[spix3]; - } - } dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -42038,27 +84541,11 @@ static void lts_aga_fm1_dpf1_p8_ilores_dshres_spr(void) denise_cck++; } } -static void lts_aga_fm1_dpf1_p8_ilores_dshres_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb0_p8_ilores_dshres_spr(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb0_p8_ilores_dshres_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb1_p8_ilores_dshres_spr(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb1_p8_ilores_dshres_spr_filtered(void) +static void lts_aga_fm1_n0_p4_ishres_dshres_filtered(void) { lts_null(); } -static void lts_aga_fm1_ham0_p8_ilores_dshres_spr(void) +static void lts_aga_fm1_n1_p4_ishres_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -42071,7 +84558,6 @@ static void lts_aga_fm1_ham0_p8_ilores_dshres_spr(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -42079,32 +84565,20 @@ static void lts_aga_fm1_ham0_p8_ilores_dshres_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - dpix_val0 = decode_ham_pixel_aga(pix0); + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix0; } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8(); - loaded_pix = getbpl8_32(); - } - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_32(); + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4e(); } - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } + if (bpldat_copy[1] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[1]) { + copybpl4o(); } + loaded_pix = getbpl4_32(); loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; - matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { @@ -42112,32 +84586,20 @@ static void lts_aga_fm1_ham0_p8_ilores_dshres_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix1 = loaded_pixs[1]; clxdat |= bplcoltable[pix1]; - dpix_val1 = decode_ham_pixel_aga(pix1); + dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix1; } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8(); - loaded_pix = getbpl8_32(); - } - if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_32(); + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4e(); } - uae_u32 sv1 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv1 = svt; - } + if (bpldat_copy[1] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[1]) { + copybpl4o(); } + loaded_pix = getbpl4_32(); loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; - matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { @@ -42145,32 +84607,20 @@ static void lts_aga_fm1_ham0_p8_ilores_dshres_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - dpix_val2 = decode_ham_pixel_aga(pix2); + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix2; } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8(); - loaded_pix = getbpl8_32(); - } - if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_32(); + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4e(); } - uae_u32 sv2 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv2 = svt; - } + if (bpldat_copy[1] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[1]) { + copybpl4o(); } + loaded_pix = getbpl4_32(); loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; - matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { @@ -42178,59 +84628,24 @@ static void lts_aga_fm1_ham0_p8_ilores_dshres_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix3 = loaded_pixs[3]; clxdat |= bplcoltable[pix3]; - dpix_val3 = decode_ham_pixel_aga(pix3); + dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix3; } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8(); - loaded_pix = getbpl8_32(); - } - if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_32(); + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4e(); } - uae_u32 sv3 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv3 = svt; - } + if (bpldat_copy[1] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[1]) { + copybpl4o(); } + loaded_pix = getbpl4_32(); loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - } - } dtbuf[h][0] = dpix_val0; - if (sv1) { - uae_u32 spix1 = denise_render_sprites2(pix1, sv1); - if (spix1) { - dpix_val1 = denise_colors.acolors[spix1]; - } - } dtbuf[h][1] = dpix_val1; - if (sv2) { - uae_u32 spix2 = denise_render_sprites2(pix2, sv2); - if (spix2) { - dpix_val2 = denise_colors.acolors[spix2]; - } - } dtbuf[h][2] = dpix_val2; - if (sv3) { - uae_u32 spix3 = denise_render_sprites2(pix3, sv3); - if (spix3) { - dpix_val3 = denise_colors.acolors[spix3]; - } - } dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -42287,11 +84702,11 @@ static void lts_aga_fm1_ham0_p8_ilores_dshres_spr(void) denise_cck++; } } -static void lts_aga_fm1_ham0_p8_ilores_dshres_spr_filtered(void) +static void lts_aga_fm1_n1_p4_ishres_dshres_filtered(void) { lts_null(); } -static void lts_aga_fm1_ham1_p8_ilores_dshres_spr(void) +static void lts_aga_fm1_dpf0_p4_ishres_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -42304,7 +84719,6 @@ static void lts_aga_fm1_ham1_p8_ilores_dshres_spr(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -42312,43 +84726,22 @@ static void lts_aga_fm1_ham1_p8_ilores_dshres_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - dpix_val0 = decode_ham_pixel_aga(pix0); + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; } last_bpl_pix = pix0; } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8e(); - loaded_pix = getbpl8_32(); - } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl8o(); - loaded_pix = getbpl8_32(); - } - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_32(); - } - if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { - copybpl8o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl8_32(); - } - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4(); } + loaded_pix = getbpl4_32(); loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; - matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { @@ -42356,43 +84749,22 @@ static void lts_aga_fm1_ham1_p8_ilores_dshres_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix1 = loaded_pixs[1]; clxdat |= bplcoltable[pix1]; - dpix_val1 = decode_ham_pixel_aga(pix1); + uae_u8 val1 = dpf_lookup[pix1]; + if (dpf_lookup_no[pix1]) { + val1 += dblpfofs[bpldualpf2of]; + } + val1 ^= bplcon4_denise_xor_val; + dpix_val1 = denise_colors.acolors[val1]; } last_bpl_pix = pix1; } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8e(); - loaded_pix = getbpl8_32(); - } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl8o(); - loaded_pix = getbpl8_32(); - } - if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_32(); - } - if (bpldat_copy[1] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) { - copybpl8o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl8_32(); - } - uae_u32 sv1 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv1 = svt; - } + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4(); } + loaded_pix = getbpl4_32(); loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; - matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { @@ -42400,114 +84772,49 @@ static void lts_aga_fm1_ham1_p8_ilores_dshres_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - dpix_val2 = decode_ham_pixel_aga(pix2); + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; } last_bpl_pix = pix2; } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8e(); - loaded_pix = getbpl8_32(); - } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl8o(); - loaded_pix = getbpl8_32(); - } - if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_32(); - } - if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) { - copybpl8o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl8_32(); - } - uae_u32 sv2 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv2 = svt; - } + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4(); } + loaded_pix = getbpl4_32(); loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; - matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; - if (!denise_blank_active) { - dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - dpix_val3 = decode_ham_pixel_aga(pix3); - } - last_bpl_pix = pix3; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8e(); - loaded_pix = getbpl8_32(); - } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl8o(); - loaded_pix = getbpl8_32(); - } - if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_32(); - } - if (bpldat_copy[1] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[1]) { - copybpl8o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl8_32(); - } - uae_u32 sv3 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv3 = svt; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + uae_u8 val3 = dpf_lookup[pix3]; + if (dpf_lookup_no[pix3]) { + val3 += dblpfofs[bpldualpf2of]; + } + val3 ^= bplcon4_denise_xor_val; + dpix_val3 = denise_colors.acolors[val3]; } + last_bpl_pix = pix3; + } + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4(); } + loaded_pix = getbpl4_32(); loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - } - } dtbuf[h][0] = dpix_val0; - if (sv1) { - uae_u32 spix1 = denise_render_sprites2(pix1, sv1); - if (spix1) { - dpix_val1 = denise_colors.acolors[spix1]; - } - } dtbuf[h][1] = dpix_val1; - if (sv2) { - uae_u32 spix2 = denise_render_sprites2(pix2, sv2); - if (spix2) { - dpix_val2 = denise_colors.acolors[spix2]; - } - } dtbuf[h][2] = dpix_val2; - if (sv3) { - uae_u32 spix3 = denise_render_sprites2(pix3, sv3); - if (spix3) { - dpix_val3 = denise_colors.acolors[spix3]; - } - } dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -42564,27 +84871,11 @@ static void lts_aga_fm1_ham1_p8_ilores_dshres_spr(void) denise_cck++; } } -static void lts_aga_fm1_ham1_p8_ilores_dshres_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb0_p8_ilores_dshres_spr(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb0_p8_ilores_dshres_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb1_p8_ilores_dshres_spr(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb1_p8_ilores_dshres_spr_filtered(void) +static void lts_aga_fm1_dpf0_p4_ishres_dshres_filtered(void) { lts_null(); } -static void lts_aga_fm1_n0_p2_ihires_dshres(void) +static void lts_aga_fm1_dpf1_p4_ishres_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -42604,21 +84895,23 @@ static void lts_aga_fm1_n0_p2_ihires_dshres(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; } last_bpl_pix = pix0; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl2(); - loaded_pix = getbpl2_32(); + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4e(); } - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl2(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl2_32(); + if (bpldat_copy[1] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[1]) { + copybpl4o(); } + loaded_pix = getbpl4_32(); loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; uae_u8 pix1 = 0; @@ -42628,21 +84921,23 @@ static void lts_aga_fm1_n0_p2_ihires_dshres(void) if (denise_hdiw && bpl1dat_trigger) { pix1 = loaded_pixs[1]; clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; + uae_u8 val1 = dpf_lookup[pix1]; + if (dpf_lookup_no[pix1]) { + val1 += dblpfofs[bpldualpf2of]; + } + val1 ^= bplcon4_denise_xor_val; + dpix_val1 = denise_colors.acolors[val1]; } last_bpl_pix = pix1; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl2(); - loaded_pix = getbpl2_32(); + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4e(); } - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl2(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl2_32(); + if (bpldat_copy[1] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[1]) { + copybpl4o(); } + loaded_pix = getbpl4_32(); loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; uae_u8 pix2 = 0; @@ -42652,21 +84947,23 @@ static void lts_aga_fm1_n0_p2_ihires_dshres(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; } last_bpl_pix = pix2; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl2(); - loaded_pix = getbpl2_32(); + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4e(); } - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl2(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl2_32(); + if (bpldat_copy[1] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[1]) { + copybpl4o(); } + loaded_pix = getbpl4_32(); loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; uae_u8 pix3 = 0; @@ -42676,21 +84973,23 @@ static void lts_aga_fm1_n0_p2_ihires_dshres(void) if (denise_hdiw && bpl1dat_trigger) { pix3 = loaded_pixs[3]; clxdat |= bplcoltable[pix3]; - dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; + uae_u8 val3 = dpf_lookup[pix3]; + if (dpf_lookup_no[pix3]) { + val3 += dblpfofs[bpldualpf2of]; + } + val3 ^= bplcon4_denise_xor_val; + dpix_val3 = denise_colors.acolors[val3]; } last_bpl_pix = pix3; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl2(); - loaded_pix = getbpl2_32(); + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4e(); } - if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { - copybpl2(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl2_32(); + if (bpldat_copy[1] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[1]) { + copybpl4o(); } + loaded_pix = getbpl4_32(); loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { @@ -42753,11 +85052,11 @@ static void lts_aga_fm1_n0_p2_ihires_dshres(void) denise_cck++; } } -static void lts_aga_fm1_n0_p2_ihires_dshres_filtered(void) +static void lts_aga_fm1_dpf1_p4_ishres_dshres_filtered(void) { lts_null(); } -static void lts_aga_fm1_n1_p2_ihires_dshres(void) +static void lts_aga_fm1_ehb0_p4_ishres_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -42768,147 +85067,30 @@ 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; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix0; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl2e(); - loaded_pix = getbpl2_32(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl2o(); - loaded_pix = getbpl2_32(); - } - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl2e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl2_32(); - } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl2o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl2_32(); - } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix1; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl2e(); - loaded_pix = getbpl2_32(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl2o(); - loaded_pix = getbpl2_32(); - } - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl2e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl2_32(); - } - if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { - copybpl2o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl2_32(); } - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl2e(); - loaded_pix = getbpl2_32(); } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl2o(); - loaded_pix = getbpl2_32(); - } - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl2e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl2_32(); - } - if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { - copybpl2o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl2_32(); - } - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix3; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl2e(); - loaded_pix = getbpl2_32(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl2o(); - loaded_pix = getbpl2_32(); - } - if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { - copybpl2e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl2_32(); } - if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) { - copybpl2o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl2_32(); - } - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; @@ -42970,11 +85152,11 @@ static void lts_aga_fm1_n1_p2_ihires_dshres(void) denise_cck++; } } -static void lts_aga_fm1_n1_p2_ihires_dshres_filtered(void) +static void lts_aga_fm1_ehb0_p4_ishres_dshres_filtered(void) { lts_null(); } -static void lts_aga_fm1_dpf0_p2_ihires_dshres(void) +static void lts_aga_fm1_ehb1_p4_ishres_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -42985,123 +85167,30 @@ 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; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl2(); - loaded_pix = getbpl2_32(); - } - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl2(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl2_32(); } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - if (dpf_lookup_no[pix1]) { - val1 += dblpfofs[bpldualpf2of]; - } - val1 ^= bplcon4_denise_xor_val; - dpix_val1 = denise_colors.acolors[val1]; - } - last_bpl_pix = pix1; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl2(); - loaded_pix = getbpl2_32(); - } - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl2(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl2_32(); } - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl2(); - loaded_pix = getbpl2_32(); - } - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl2(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl2_32(); } - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - uae_u8 val3 = dpf_lookup[pix3]; - if (dpf_lookup_no[pix3]) { - val3 += dblpfofs[bpldualpf2of]; - } - val3 ^= bplcon4_denise_xor_val; - dpix_val3 = denise_colors.acolors[val3]; - } - last_bpl_pix = pix3; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl2(); - loaded_pix = getbpl2_32(); - } - if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { - copybpl2(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl2_32(); } - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; @@ -43163,11 +85252,11 @@ static void lts_aga_fm1_dpf0_p2_ihires_dshres(void) denise_cck++; } } -static void lts_aga_fm1_dpf0_p2_ihires_dshres_filtered(void) +static void lts_aga_fm1_ehb1_p4_ishres_dshres_filtered(void) { lts_null(); } -static void lts_aga_fm1_dpf1_p2_ihires_dshres(void) +static void lts_aga_fm1_ham0_p4_ishres_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -43178,167 +85267,30 @@ 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; - if (!denise_blank_active) { - dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl2e(); - loaded_pix = getbpl2_32(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl2o(); - loaded_pix = getbpl2_32(); - } - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl2e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl2_32(); - } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl2o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl2_32(); - } - loaded_pixs[0] = loaded_pix; - internal_pixel_cnt += 1; - uae_u8 pix1 = 0; - uae_u32 dpix_val1 = BLANK_COLOR; - if (!denise_blank_active) { - dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - if (dpf_lookup_no[pix1]) { - val1 += dblpfofs[bpldualpf2of]; - } - val1 ^= bplcon4_denise_xor_val; - dpix_val1 = denise_colors.acolors[val1]; - } - last_bpl_pix = pix1; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl2e(); - loaded_pix = getbpl2_32(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl2o(); - loaded_pix = getbpl2_32(); - } - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl2e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl2_32(); - } - if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { - copybpl2o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl2_32(); - } - loaded_pixs[1] = loaded_pix; - internal_pixel_cnt += 1; - uae_u8 pix2 = 0; - uae_u32 dpix_val2 = BLANK_COLOR; - if (!denise_blank_active) { - dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl2e(); - loaded_pix = getbpl2_32(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl2o(); - loaded_pix = getbpl2_32(); - } - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl2e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl2_32(); - } - if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { - copybpl2o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl2_32(); - } - loaded_pixs[2] = loaded_pix; - internal_pixel_cnt += 1; - uae_u8 pix3 = 0; - uae_u32 dpix_val3 = BLANK_COLOR; - if (!denise_blank_active) { - dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - uae_u8 val3 = dpf_lookup[pix3]; - if (dpf_lookup_no[pix3]) { - val3 += dblpfofs[bpldualpf2of]; - } - val3 ^= bplcon4_denise_xor_val; - dpix_val3 = denise_colors.acolors[val3]; - } - last_bpl_pix = pix3; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl2e(); - loaded_pix = getbpl2_32(); + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl2o(); - loaded_pix = getbpl2_32(); + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; } - if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { - copybpl2e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl2_32(); + internal_pixel_cnt += 1; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; } - if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) { - copybpl2o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl2_32(); + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; } - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; @@ -43400,59 +85352,11 @@ static void lts_aga_fm1_dpf1_p2_ihires_dshres(void) denise_cck++; } } -static void lts_aga_fm1_dpf1_p2_ihires_dshres_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb0_p2_ihires_dshres(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb0_p2_ihires_dshres_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb1_p2_ihires_dshres(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb1_p2_ihires_dshres_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_ham0_p2_ihires_dshres(void) -{ - lts_null(); -} -static void lts_aga_fm1_ham0_p2_ihires_dshres_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_ham1_p2_ihires_dshres(void) -{ - lts_null(); -} -static void lts_aga_fm1_ham1_p2_ihires_dshres_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb0_p2_ihires_dshres(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb0_p2_ihires_dshres_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb1_p2_ihires_dshres(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb1_p2_ihires_dshres_filtered(void) +static void lts_aga_fm1_ham0_p4_ishres_dshres_filtered(void) { lts_null(); } -static void lts_aga_fm1_n0_p4_ihires_dshres(void) +static void lts_aga_fm1_ham1_p4_ishres_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -43463,103 +85367,30 @@ 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; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4(); - loaded_pix = getbpl4_32(); - } - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4_32(); } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix1; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4(); - loaded_pix = getbpl4_32(); - } - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4_32(); } - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4(); - loaded_pix = getbpl4_32(); - } - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4_32(); } - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix3; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4(); - loaded_pix = getbpl4_32(); - } - if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4_32(); } - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; @@ -43621,11 +85452,11 @@ static void lts_aga_fm1_n0_p4_ihires_dshres(void) denise_cck++; } } -static void lts_aga_fm1_n0_p4_ihires_dshres_filtered(void) +static void lts_aga_fm1_ham1_p4_ishres_dshres_filtered(void) { lts_null(); } -static void lts_aga_fm1_n1_p4_ihires_dshres(void) +static void lts_aga_fm1_kehb0_p4_ishres_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -43636,147 +85467,30 @@ 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; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4e(); - loaded_pix = getbpl4_32(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl4o(); - loaded_pix = getbpl4_32(); - } - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4_32(); - } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl4o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl4_32(); } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix1; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4e(); - loaded_pix = getbpl4_32(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl4o(); - loaded_pix = getbpl4_32(); - } - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4_32(); - } - if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { - copybpl4o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl4_32(); } - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4e(); - loaded_pix = getbpl4_32(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl4o(); - loaded_pix = getbpl4_32(); - } - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4_32(); - } - if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { - copybpl4o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl4_32(); } - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix3; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4e(); - loaded_pix = getbpl4_32(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl4o(); - loaded_pix = getbpl4_32(); - } - if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4_32(); } - if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) { - copybpl4o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl4_32(); - } - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; @@ -43838,11 +85552,11 @@ static void lts_aga_fm1_n1_p4_ihires_dshres(void) denise_cck++; } } -static void lts_aga_fm1_n1_p4_ihires_dshres_filtered(void) +static void lts_aga_fm1_kehb0_p4_ishres_dshres_filtered(void) { lts_null(); } -static void lts_aga_fm1_dpf0_p4_ihires_dshres(void) +static void lts_aga_fm1_kehb1_p4_ishres_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -43853,123 +85567,30 @@ 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; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4(); - loaded_pix = getbpl4_32(); - } - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4_32(); } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - if (dpf_lookup_no[pix1]) { - val1 += dblpfofs[bpldualpf2of]; - } - val1 ^= bplcon4_denise_xor_val; - dpix_val1 = denise_colors.acolors[val1]; - } - last_bpl_pix = pix1; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4(); - loaded_pix = getbpl4_32(); - } - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4_32(); } - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4(); - loaded_pix = getbpl4_32(); - } - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4_32(); } - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - uae_u8 val3 = dpf_lookup[pix3]; - if (dpf_lookup_no[pix3]) { - val3 += dblpfofs[bpldualpf2of]; - } - val3 ^= bplcon4_denise_xor_val; - dpix_val3 = denise_colors.acolors[val3]; - } - last_bpl_pix = pix3; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4(); - loaded_pix = getbpl4_32(); - } - if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4_32(); } - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; @@ -44031,11 +85652,11 @@ static void lts_aga_fm1_dpf0_p4_ihires_dshres(void) denise_cck++; } } -static void lts_aga_fm1_dpf0_p4_ihires_dshres_filtered(void) +static void lts_aga_fm1_kehb1_p4_ishres_dshres_filtered(void) { lts_null(); } -static void lts_aga_fm1_dpf1_p4_ihires_dshres(void) +static void lts_aga_fm1_n0_p6_ishres_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -44046,167 +85667,130 @@ 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; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4e(); - loaded_pix = getbpl4_32(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl4o(); - loaded_pix = getbpl4_32(); - } - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4_32(); } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl4o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl4_32(); - } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - if (dpf_lookup_no[pix1]) { - val1 += dblpfofs[bpldualpf2of]; - } - val1 ^= bplcon4_denise_xor_val; - dpix_val1 = denise_colors.acolors[val1]; - } - last_bpl_pix = pix1; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4e(); - loaded_pix = getbpl4_32(); + internal_pixel_cnt += 1; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl4o(); - loaded_pix = getbpl4_32(); + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 1; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; + dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_n0_p6_ishres_dshres_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm1_n1_p6_ishres_dshres(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; } - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4_32(); + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; } - if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { - copybpl4o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl4_32(); + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; } - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4e(); - loaded_pix = getbpl4_32(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl4o(); - loaded_pix = getbpl4_32(); - } - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4_32(); } - if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { - copybpl4o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl4_32(); - } - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - uae_u8 val3 = dpf_lookup[pix3]; - if (dpf_lookup_no[pix3]) { - val3 += dblpfofs[bpldualpf2of]; - } - val3 ^= bplcon4_denise_xor_val; - dpix_val3 = denise_colors.acolors[val3]; - } - last_bpl_pix = pix3; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4e(); - loaded_pix = getbpl4_32(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl4o(); - loaded_pix = getbpl4_32(); - } - if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4_32(); - } - if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) { - copybpl4o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl4_32(); } - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; @@ -44268,59 +85852,11 @@ static void lts_aga_fm1_dpf1_p4_ihires_dshres(void) denise_cck++; } } -static void lts_aga_fm1_dpf1_p4_ihires_dshres_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb0_p4_ihires_dshres(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb0_p4_ihires_dshres_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb1_p4_ihires_dshres(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb1_p4_ihires_dshres_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_ham0_p4_ihires_dshres(void) -{ - lts_null(); -} -static void lts_aga_fm1_ham0_p4_ihires_dshres_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_ham1_p4_ihires_dshres(void) -{ - lts_null(); -} -static void lts_aga_fm1_ham1_p4_ihires_dshres_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb0_p4_ihires_dshres(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb0_p4_ihires_dshres_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb1_p4_ihires_dshres(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb1_p4_ihires_dshres_filtered(void) +static void lts_aga_fm1_n1_p6_ishres_dshres_filtered(void) { lts_null(); } -static void lts_aga_fm1_n0_p6_ihires_dshres(void) +static void lts_aga_fm1_dpf0_p6_ishres_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -44331,103 +85867,30 @@ 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; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6(); - loaded_pix = getbpl6_32(); - } - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6_32(); } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix1; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6(); - loaded_pix = getbpl6_32(); - } - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6_32(); } - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6(); - loaded_pix = getbpl6_32(); - } - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6_32(); } - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix3; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6(); - loaded_pix = getbpl6_32(); - } - if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6_32(); } - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; @@ -44489,11 +85952,11 @@ static void lts_aga_fm1_n0_p6_ihires_dshres(void) denise_cck++; } } -static void lts_aga_fm1_n0_p6_ihires_dshres_filtered(void) +static void lts_aga_fm1_dpf0_p6_ishres_dshres_filtered(void) { lts_null(); } -static void lts_aga_fm1_n1_p6_ihires_dshres(void) +static void lts_aga_fm1_dpf1_p6_ishres_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -44504,147 +85967,30 @@ 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; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6e(); - loaded_pix = getbpl6_32(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl6o(); - loaded_pix = getbpl6_32(); - } - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6_32(); - } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl6o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl6_32(); } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix1; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6e(); - loaded_pix = getbpl6_32(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl6o(); - loaded_pix = getbpl6_32(); - } - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6_32(); - } - if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { - copybpl6o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl6_32(); } - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6e(); - loaded_pix = getbpl6_32(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl6o(); - loaded_pix = getbpl6_32(); - } - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6_32(); - } - if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { - copybpl6o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl6_32(); } - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix3; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6e(); - loaded_pix = getbpl6_32(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl6o(); - loaded_pix = getbpl6_32(); - } - if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6_32(); } - if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) { - copybpl6o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl6_32(); - } - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; @@ -44706,11 +86052,11 @@ static void lts_aga_fm1_n1_p6_ihires_dshres(void) denise_cck++; } } -static void lts_aga_fm1_n1_p6_ihires_dshres_filtered(void) +static void lts_aga_fm1_dpf1_p6_ishres_dshres_filtered(void) { lts_null(); } -static void lts_aga_fm1_dpf0_p6_ihires_dshres(void) +static void lts_aga_fm1_ehb0_p6_ishres_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -44721,123 +86067,30 @@ 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; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6(); - loaded_pix = getbpl6_32(); - } - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6_32(); } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - if (dpf_lookup_no[pix1]) { - val1 += dblpfofs[bpldualpf2of]; - } - val1 ^= bplcon4_denise_xor_val; - dpix_val1 = denise_colors.acolors[val1]; - } - last_bpl_pix = pix1; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6(); - loaded_pix = getbpl6_32(); - } - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6_32(); } - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6(); - loaded_pix = getbpl6_32(); - } - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6_32(); } - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - uae_u8 val3 = dpf_lookup[pix3]; - if (dpf_lookup_no[pix3]) { - val3 += dblpfofs[bpldualpf2of]; - } - val3 ^= bplcon4_denise_xor_val; - dpix_val3 = denise_colors.acolors[val3]; - } - last_bpl_pix = pix3; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6(); - loaded_pix = getbpl6_32(); - } - if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6_32(); } - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; @@ -44899,11 +86152,11 @@ static void lts_aga_fm1_dpf0_p6_ihires_dshres(void) denise_cck++; } } -static void lts_aga_fm1_dpf0_p6_ihires_dshres_filtered(void) +static void lts_aga_fm1_ehb0_p6_ishres_dshres_filtered(void) { lts_null(); } -static void lts_aga_fm1_dpf1_p6_ihires_dshres(void) +static void lts_aga_fm1_ehb1_p6_ishres_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -44914,167 +86167,30 @@ 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; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6e(); - loaded_pix = getbpl6_32(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl6o(); - loaded_pix = getbpl6_32(); - } - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6_32(); } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl6o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl6_32(); - } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - if (dpf_lookup_no[pix1]) { - val1 += dblpfofs[bpldualpf2of]; - } - val1 ^= bplcon4_denise_xor_val; - dpix_val1 = denise_colors.acolors[val1]; - } - last_bpl_pix = pix1; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6e(); - loaded_pix = getbpl6_32(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl6o(); - loaded_pix = getbpl6_32(); - } - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6_32(); - } - if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { - copybpl6o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl6_32(); } - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6e(); - loaded_pix = getbpl6_32(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl6o(); - loaded_pix = getbpl6_32(); - } - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6_32(); - } - if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { - copybpl6o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl6_32(); } - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - uae_u8 val3 = dpf_lookup[pix3]; - if (dpf_lookup_no[pix3]) { - val3 += dblpfofs[bpldualpf2of]; - } - val3 ^= bplcon4_denise_xor_val; - dpix_val3 = denise_colors.acolors[val3]; - } - last_bpl_pix = pix3; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6e(); - loaded_pix = getbpl6_32(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl6o(); - loaded_pix = getbpl6_32(); - } - if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6_32(); - } - if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) { - copybpl6o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl6_32(); } - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; @@ -45136,11 +86252,11 @@ static void lts_aga_fm1_dpf1_p6_ihires_dshres(void) denise_cck++; } } -static void lts_aga_fm1_dpf1_p6_ihires_dshres_filtered(void) +static void lts_aga_fm1_ehb1_p6_ishres_dshres_filtered(void) { lts_null(); } -static void lts_aga_fm1_ehb0_p6_ihires_dshres(void) +static void lts_aga_fm1_ham0_p6_ishres_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -45151,127 +86267,30 @@ 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; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - pix0 ^= bplcon4_denise_xor_val; - if (!(pix0 & 0x20)) { - dpix_val0 = denise_colors.acolors[pix0]; - } else { - uae_u32 v = (denise_colors.color_regs_aga[pix0 & 0x1f] >> 1) & 0x7f7f7f; - dpix_val0 = CONVERT_RGB(v); - } - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6(); - loaded_pix = getbpl6_32(); - } - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6_32(); } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - pix1 ^= bplcon4_denise_xor_val; - if (!(pix1 & 0x20)) { - dpix_val1 = denise_colors.acolors[pix1]; - } else { - uae_u32 v = (denise_colors.color_regs_aga[pix1 & 0x1f] >> 1) & 0x7f7f7f; - dpix_val1 = CONVERT_RGB(v); - } - } - last_bpl_pix = pix1; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6(); - loaded_pix = getbpl6_32(); - } - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6_32(); } - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - pix2 ^= bplcon4_denise_xor_val; - if (!(pix2 & 0x20)) { - dpix_val2 = denise_colors.acolors[pix2]; - } else { - uae_u32 v = (denise_colors.color_regs_aga[pix2 & 0x1f] >> 1) & 0x7f7f7f; - dpix_val2 = CONVERT_RGB(v); - } - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6(); - loaded_pix = getbpl6_32(); - } - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6_32(); } - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - pix3 ^= bplcon4_denise_xor_val; - if (!(pix3 & 0x20)) { - dpix_val3 = denise_colors.acolors[pix3]; - } else { - uae_u32 v = (denise_colors.color_regs_aga[pix3 & 0x1f] >> 1) & 0x7f7f7f; - dpix_val3 = CONVERT_RGB(v); - } - } - last_bpl_pix = pix3; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6(); - loaded_pix = getbpl6_32(); - } - if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6_32(); } - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; @@ -45333,11 +86352,11 @@ static void lts_aga_fm1_ehb0_p6_ihires_dshres(void) denise_cck++; } } -static void lts_aga_fm1_ehb0_p6_ihires_dshres_filtered(void) +static void lts_aga_fm1_ham0_p6_ishres_dshres_filtered(void) { lts_null(); } -static void lts_aga_fm1_ehb1_p6_ihires_dshres(void) +static void lts_aga_fm1_ham1_p6_ishres_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -45348,171 +86367,30 @@ 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; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - pix0 ^= bplcon4_denise_xor_val; - if (!(pix0 & 0x20)) { - dpix_val0 = denise_colors.acolors[pix0]; - } else { - uae_u32 v = (denise_colors.color_regs_aga[pix0 & 0x1f] >> 1) & 0x7f7f7f; - dpix_val0 = CONVERT_RGB(v); - } - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6e(); - loaded_pix = getbpl6_32(); } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl6o(); - loaded_pix = getbpl6_32(); - } - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6_32(); - } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl6o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl6_32(); - } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - pix1 ^= bplcon4_denise_xor_val; - if (!(pix1 & 0x20)) { - dpix_val1 = denise_colors.acolors[pix1]; - } else { - uae_u32 v = (denise_colors.color_regs_aga[pix1 & 0x1f] >> 1) & 0x7f7f7f; - dpix_val1 = CONVERT_RGB(v); - } - } - last_bpl_pix = pix1; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6e(); - loaded_pix = getbpl6_32(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl6o(); - loaded_pix = getbpl6_32(); - } - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6_32(); - } - if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { - copybpl6o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl6_32(); } - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - pix2 ^= bplcon4_denise_xor_val; - if (!(pix2 & 0x20)) { - dpix_val2 = denise_colors.acolors[pix2]; - } else { - uae_u32 v = (denise_colors.color_regs_aga[pix2 & 0x1f] >> 1) & 0x7f7f7f; - dpix_val2 = CONVERT_RGB(v); - } - } - last_bpl_pix = pix2; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6e(); - loaded_pix = getbpl6_32(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl6o(); - loaded_pix = getbpl6_32(); - } - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6_32(); - } - if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { - copybpl6o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl6_32(); - } - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - pix3 ^= bplcon4_denise_xor_val; - if (!(pix3 & 0x20)) { - dpix_val3 = denise_colors.acolors[pix3]; - } else { - uae_u32 v = (denise_colors.color_regs_aga[pix3 & 0x1f] >> 1) & 0x7f7f7f; - dpix_val3 = CONVERT_RGB(v); - } - } - last_bpl_pix = pix3; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6e(); - loaded_pix = getbpl6_32(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl6o(); - loaded_pix = getbpl6_32(); - } - if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6_32(); - } - if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) { - copybpl6o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl6_32(); } - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; @@ -45574,11 +86452,11 @@ static void lts_aga_fm1_ehb1_p6_ihires_dshres(void) denise_cck++; } } -static void lts_aga_fm1_ehb1_p6_ihires_dshres_filtered(void) +static void lts_aga_fm1_ham1_p6_ishres_dshres_filtered(void) { lts_null(); } -static void lts_aga_fm1_ham0_p6_ihires_dshres(void) +static void lts_aga_fm1_kehb0_p6_ishres_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -45589,103 +86467,30 @@ 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; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = decode_ham_pixel_aga(pix0); - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6(); - loaded_pix = getbpl6_32(); - } - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6_32(); } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - dpix_val1 = decode_ham_pixel_aga(pix1); - } - last_bpl_pix = pix1; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6(); - loaded_pix = getbpl6_32(); - } - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6_32(); } - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = decode_ham_pixel_aga(pix2); - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6(); - loaded_pix = getbpl6_32(); - } - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6_32(); } - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - dpix_val3 = decode_ham_pixel_aga(pix3); - } - last_bpl_pix = pix3; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6(); - loaded_pix = getbpl6_32(); - } - if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6_32(); } - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; @@ -45747,11 +86552,11 @@ static void lts_aga_fm1_ham0_p6_ihires_dshres(void) denise_cck++; } } -static void lts_aga_fm1_ham0_p6_ihires_dshres_filtered(void) +static void lts_aga_fm1_kehb0_p6_ishres_dshres_filtered(void) { lts_null(); } -static void lts_aga_fm1_ham1_p6_ihires_dshres(void) +static void lts_aga_fm1_kehb1_p6_ishres_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -45762,147 +86567,30 @@ 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; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = decode_ham_pixel_aga(pix0); - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6e(); - loaded_pix = getbpl6_32(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl6o(); - loaded_pix = getbpl6_32(); - } - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6_32(); - } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl6o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl6_32(); } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - dpix_val1 = decode_ham_pixel_aga(pix1); - } - last_bpl_pix = pix1; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6e(); - loaded_pix = getbpl6_32(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl6o(); - loaded_pix = getbpl6_32(); - } - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6_32(); } - if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { - copybpl6o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl6_32(); - } - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = decode_ham_pixel_aga(pix2); - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6e(); - loaded_pix = getbpl6_32(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl6o(); - loaded_pix = getbpl6_32(); - } - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6_32(); - } - if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { - copybpl6o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl6_32(); - } - loaded_pixs[2] = loaded_pix; - internal_pixel_cnt += 1; - uae_u8 pix3 = 0; - uae_u32 dpix_val3 = BLANK_COLOR; - if (!denise_blank_active) { - dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - dpix_val3 = decode_ham_pixel_aga(pix3); - } - last_bpl_pix = pix3; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6e(); - loaded_pix = getbpl6_32(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl6o(); - loaded_pix = getbpl6_32(); - } - if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6_32(); } - if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) { - copybpl6o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl6_32(); + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; } - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; @@ -45964,11 +86652,11 @@ static void lts_aga_fm1_ham1_p6_ihires_dshres(void) denise_cck++; } } -static void lts_aga_fm1_ham1_p6_ihires_dshres_filtered(void) +static void lts_aga_fm1_kehb1_p6_ishres_dshres_filtered(void) { lts_null(); } -static void lts_aga_fm1_kehb0_p6_ihires_dshres(void) +static void lts_aga_fm1_n0_p8_ishres_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -45979,107 +86667,30 @@ 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; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - pix0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[pix0 & 31]; - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6(); - loaded_pix = getbpl6_32(); - } - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6_32(); } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - pix1 ^= bplcon4_denise_xor_val; - dpix_val1 = denise_colors.acolors[pix1 & 31]; - } - last_bpl_pix = pix1; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6(); - loaded_pix = getbpl6_32(); - } - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6_32(); } - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - pix2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[pix2 & 31]; - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6(); - loaded_pix = getbpl6_32(); - } - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6_32(); } - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - pix3 ^= bplcon4_denise_xor_val; - dpix_val3 = denise_colors.acolors[pix3 & 31]; - } - last_bpl_pix = pix3; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6(); - loaded_pix = getbpl6_32(); - } - if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6_32(); } - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; @@ -46141,11 +86752,11 @@ static void lts_aga_fm1_kehb0_p6_ihires_dshres(void) denise_cck++; } } -static void lts_aga_fm1_kehb0_p6_ihires_dshres_filtered(void) +static void lts_aga_fm1_n0_p8_ishres_dshres_filtered(void) { lts_null(); } -static void lts_aga_fm1_kehb1_p6_ihires_dshres(void) +static void lts_aga_fm1_n1_p8_ishres_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -46156,151 +86767,30 @@ 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; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - pix0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[pix0 & 31]; - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6e(); - loaded_pix = getbpl6_32(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl6o(); - loaded_pix = getbpl6_32(); - } - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6_32(); } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl6o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl6_32(); - } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - pix1 ^= bplcon4_denise_xor_val; - dpix_val1 = denise_colors.acolors[pix1 & 31]; - } - last_bpl_pix = pix1; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6e(); - loaded_pix = getbpl6_32(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl6o(); - loaded_pix = getbpl6_32(); - } - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6_32(); - } - if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { - copybpl6o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl6_32(); } - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - pix2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[pix2 & 31]; - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6e(); - loaded_pix = getbpl6_32(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl6o(); - loaded_pix = getbpl6_32(); - } - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6_32(); - } - if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { - copybpl6o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl6_32(); } - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - pix3 ^= bplcon4_denise_xor_val; - dpix_val3 = denise_colors.acolors[pix3 & 31]; - } - last_bpl_pix = pix3; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6e(); - loaded_pix = getbpl6_32(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl6o(); - loaded_pix = getbpl6_32(); - } - if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6_32(); - } - if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) { - copybpl6o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl6_32(); } - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; @@ -46362,11 +86852,11 @@ static void lts_aga_fm1_kehb1_p6_ihires_dshres(void) denise_cck++; } } -static void lts_aga_fm1_kehb1_p6_ihires_dshres_filtered(void) +static void lts_aga_fm1_n1_p8_ishres_dshres_filtered(void) { lts_null(); } -static void lts_aga_fm1_n0_p8_ihires_dshres(void) +static void lts_aga_fm1_dpf0_p8_ishres_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -46377,103 +86867,30 @@ 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; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8(); - loaded_pix = getbpl8_32(); - } - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_32(); } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix1; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8(); - loaded_pix = getbpl8_32(); - } - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_32(); } - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8(); - loaded_pix = getbpl8_32(); - } - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_32(); } - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix3; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8(); - loaded_pix = getbpl8_32(); - } - if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_32(); } - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; @@ -46535,11 +86952,11 @@ static void lts_aga_fm1_n0_p8_ihires_dshres(void) denise_cck++; } } -static void lts_aga_fm1_n0_p8_ihires_dshres_filtered(void) +static void lts_aga_fm1_dpf0_p8_ishres_dshres_filtered(void) { lts_null(); } -static void lts_aga_fm1_n1_p8_ihires_dshres(void) +static void lts_aga_fm1_dpf1_p8_ishres_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -46550,147 +86967,30 @@ 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; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8e(); - loaded_pix = getbpl8_32(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl8o(); - loaded_pix = getbpl8_32(); - } - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_32(); - } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl8_32(); } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix1; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8e(); - loaded_pix = getbpl8_32(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl8o(); - loaded_pix = getbpl8_32(); - } - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_32(); - } - if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl8_32(); } - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8e(); - loaded_pix = getbpl8_32(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl8o(); - loaded_pix = getbpl8_32(); - } - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_32(); - } - if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl8_32(); } - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix3; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8e(); - loaded_pix = getbpl8_32(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl8o(); - loaded_pix = getbpl8_32(); - } - if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_32(); } - if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl8_32(); - } - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; @@ -46752,11 +87052,11 @@ static void lts_aga_fm1_n1_p8_ihires_dshres(void) denise_cck++; } } -static void lts_aga_fm1_n1_p8_ihires_dshres_filtered(void) +static void lts_aga_fm1_dpf1_p8_ishres_dshres_filtered(void) { lts_null(); } -static void lts_aga_fm1_dpf0_p8_ihires_dshres(void) +static void lts_aga_fm1_ehb0_p8_ishres_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -46767,123 +87067,30 @@ 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; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8(); - loaded_pix = getbpl8_32(); - } - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_32(); } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { - dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - if (dpf_lookup_no[pix1]) { - val1 += dblpfofs[bpldualpf2of]; - } - val1 ^= bplcon4_denise_xor_val; - dpix_val1 = denise_colors.acolors[val1]; - } - last_bpl_pix = pix1; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8(); - loaded_pix = getbpl8_32(); - } - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_32(); - } - loaded_pixs[1] = loaded_pix; - internal_pixel_cnt += 1; - uae_u8 pix2 = 0; - uae_u32 dpix_val2 = BLANK_COLOR; - if (!denise_blank_active) { - dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8(); - loaded_pix = getbpl8_32(); - } - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_32(); - } - loaded_pixs[2] = loaded_pix; - internal_pixel_cnt += 1; - uae_u8 pix3 = 0; - uae_u32 dpix_val3 = BLANK_COLOR; - if (!denise_blank_active) { - dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - uae_u8 val3 = dpf_lookup[pix3]; - if (dpf_lookup_no[pix3]) { - val3 += dblpfofs[bpldualpf2of]; - } - val3 ^= bplcon4_denise_xor_val; - dpix_val3 = denise_colors.acolors[val3]; - } - last_bpl_pix = pix3; + dpix_val1 = bordercolor; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8(); - loaded_pix = getbpl8_32(); + internal_pixel_cnt += 1; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; } - if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_32(); + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; } - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; @@ -46945,11 +87152,11 @@ static void lts_aga_fm1_dpf0_p8_ihires_dshres(void) denise_cck++; } } -static void lts_aga_fm1_dpf0_p8_ihires_dshres_filtered(void) +static void lts_aga_fm1_ehb0_p8_ishres_dshres_filtered(void) { lts_null(); } -static void lts_aga_fm1_dpf1_p8_ihires_dshres(void) +static void lts_aga_fm1_ehb1_p8_ishres_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -46960,167 +87167,30 @@ 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; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8e(); - loaded_pix = getbpl8_32(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl8o(); - loaded_pix = getbpl8_32(); - } - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_32(); - } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl8_32(); } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - if (dpf_lookup_no[pix1]) { - val1 += dblpfofs[bpldualpf2of]; - } - val1 ^= bplcon4_denise_xor_val; - dpix_val1 = denise_colors.acolors[val1]; - } - last_bpl_pix = pix1; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8e(); - loaded_pix = getbpl8_32(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl8o(); - loaded_pix = getbpl8_32(); - } - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_32(); } - if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl8_32(); - } - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8e(); - loaded_pix = getbpl8_32(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl8o(); - loaded_pix = getbpl8_32(); - } - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_32(); - } - if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl8_32(); } - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - uae_u8 val3 = dpf_lookup[pix3]; - if (dpf_lookup_no[pix3]) { - val3 += dblpfofs[bpldualpf2of]; - } - val3 ^= bplcon4_denise_xor_val; - dpix_val3 = denise_colors.acolors[val3]; - } - last_bpl_pix = pix3; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8e(); - loaded_pix = getbpl8_32(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl8o(); - loaded_pix = getbpl8_32(); - } - if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_32(); - } - if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl8_32(); } - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; @@ -47182,27 +87252,11 @@ static void lts_aga_fm1_dpf1_p8_ihires_dshres(void) denise_cck++; } } -static void lts_aga_fm1_dpf1_p8_ihires_dshres_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb0_p8_ihires_dshres(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb0_p8_ihires_dshres_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb1_p8_ihires_dshres(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb1_p8_ihires_dshres_filtered(void) +static void lts_aga_fm1_ehb1_p8_ishres_dshres_filtered(void) { lts_null(); } -static void lts_aga_fm1_ham0_p8_ihires_dshres(void) +static void lts_aga_fm1_ham0_p8_ishres_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -47213,103 +87267,30 @@ 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; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = decode_ham_pixel_aga(pix0); - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8(); - loaded_pix = getbpl8_32(); - } - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_32(); } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - dpix_val1 = decode_ham_pixel_aga(pix1); - } - last_bpl_pix = pix1; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8(); - loaded_pix = getbpl8_32(); - } - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_32(); } - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = decode_ham_pixel_aga(pix2); - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8(); - loaded_pix = getbpl8_32(); - } - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_32(); } - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - dpix_val3 = decode_ham_pixel_aga(pix3); - } - last_bpl_pix = pix3; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8(); - loaded_pix = getbpl8_32(); - } - if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_32(); } - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; @@ -47371,11 +87352,11 @@ static void lts_aga_fm1_ham0_p8_ihires_dshres(void) denise_cck++; } } -static void lts_aga_fm1_ham0_p8_ihires_dshres_filtered(void) +static void lts_aga_fm1_ham0_p8_ishres_dshres_filtered(void) { lts_null(); } -static void lts_aga_fm1_ham1_p8_ihires_dshres(void) +static void lts_aga_fm1_ham1_p8_ishres_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -47386,147 +87367,30 @@ 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; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = decode_ham_pixel_aga(pix0); - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8e(); - loaded_pix = getbpl8_32(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl8o(); - loaded_pix = getbpl8_32(); - } - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_32(); - } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl8_32(); } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - dpix_val1 = decode_ham_pixel_aga(pix1); - } - last_bpl_pix = pix1; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8e(); - loaded_pix = getbpl8_32(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl8o(); - loaded_pix = getbpl8_32(); - } - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_32(); } - if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl8_32(); - } - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = decode_ham_pixel_aga(pix2); - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8e(); - loaded_pix = getbpl8_32(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl8o(); - loaded_pix = getbpl8_32(); } - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_32(); - } - if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl8_32(); - } - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - dpix_val3 = decode_ham_pixel_aga(pix3); - } - last_bpl_pix = pix3; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8e(); - loaded_pix = getbpl8_32(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl8o(); - loaded_pix = getbpl8_32(); - } - if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_32(); - } - if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl8_32(); } - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; @@ -47588,27 +87452,11 @@ static void lts_aga_fm1_ham1_p8_ihires_dshres(void) denise_cck++; } } -static void lts_aga_fm1_ham1_p8_ihires_dshres_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb0_p8_ihires_dshres(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb0_p8_ihires_dshres_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb1_p8_ihires_dshres(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb1_p8_ihires_dshres_filtered(void) +static void lts_aga_fm1_ham1_p8_ishres_dshres_filtered(void) { lts_null(); } -static void lts_aga_fm1_n0_p2_ihires_dshres_spr(void) +static void lts_aga_fm1_kehb0_p8_ishres_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -47619,168 +87467,35 @@ 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; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl2(); - loaded_pix = getbpl2_32(); - } - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl2(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl2_32(); - } - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; - matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix1; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl2(); - loaded_pix = getbpl2_32(); - } - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl2(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl2_32(); - } - uae_u32 sv1 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv1 = svt; - } } - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; - matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl2(); - loaded_pix = getbpl2_32(); } - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl2(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl2_32(); - } - uae_u32 sv2 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv2 = svt; - } - } - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; - matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix3; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl2(); - loaded_pix = getbpl2_32(); - } - if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { - copybpl2(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl2_32(); } - uae_u32 sv3 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv3 = svt; - } - } - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; - if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - } - } + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; - if (sv1) { - uae_u32 spix1 = denise_render_sprites2(pix1, sv1); - if (spix1) { - dpix_val1 = denise_colors.acolors[spix1]; - } - } dtbuf[h][1] = dpix_val1; - if (sv2) { - uae_u32 spix2 = denise_render_sprites2(pix2, sv2); - if (spix2) { - dpix_val2 = denise_colors.acolors[spix2]; - } - } dtbuf[h][2] = dpix_val2; - if (sv3) { - uae_u32 spix3 = denise_render_sprites2(pix3, sv3); - if (spix3) { - dpix_val3 = denise_colors.acolors[spix3]; - } - } dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -47837,11 +87552,11 @@ static void lts_aga_fm1_n0_p2_ihires_dshres_spr(void) denise_cck++; } } -static void lts_aga_fm1_n0_p2_ihires_dshres_spr_filtered(void) +static void lts_aga_fm1_kehb0_p8_ishres_dshres_filtered(void) { lts_null(); } -static void lts_aga_fm1_n1_p2_ihires_dshres_spr(void) +static void lts_aga_fm1_kehb1_p8_ishres_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -47852,212 +87567,35 @@ 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; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl2e(); - loaded_pix = getbpl2_32(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl2o(); - loaded_pix = getbpl2_32(); - } - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl2e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl2_32(); } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl2o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl2_32(); - } - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } - } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; - matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix1; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl2e(); - loaded_pix = getbpl2_32(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl2o(); - loaded_pix = getbpl2_32(); - } - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl2e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl2_32(); - } - if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { - copybpl2o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl2_32(); - } - uae_u32 sv1 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv1 = svt; - } } - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; - matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl2e(); - loaded_pix = getbpl2_32(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl2o(); - loaded_pix = getbpl2_32(); - } - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl2e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl2_32(); - } - if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { - copybpl2o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl2_32(); - } - uae_u32 sv2 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv2 = svt; - } } - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; - matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix3; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl2e(); - loaded_pix = getbpl2_32(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl2o(); - loaded_pix = getbpl2_32(); - } - if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { - copybpl2e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl2_32(); - } - if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) { - copybpl2o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl2_32(); - } - uae_u32 sv3 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv3 = svt; - } } - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - } - } dtbuf[h][0] = dpix_val0; - if (sv1) { - uae_u32 spix1 = denise_render_sprites2(pix1, sv1); - if (spix1) { - dpix_val1 = denise_colors.acolors[spix1]; - } - } dtbuf[h][1] = dpix_val1; - if (sv2) { - uae_u32 spix2 = denise_render_sprites2(pix2, sv2); - if (spix2) { - dpix_val2 = denise_colors.acolors[spix2]; - } - } dtbuf[h][2] = dpix_val2; - if (sv3) { - uae_u32 spix3 = denise_render_sprites2(pix3, sv3); - if (spix3) { - dpix_val3 = denise_colors.acolors[spix3]; - } - } dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -48114,11 +87652,11 @@ static void lts_aga_fm1_n1_p2_ihires_dshres_spr(void) denise_cck++; } } -static void lts_aga_fm1_n1_p2_ihires_dshres_spr_filtered(void) +static void lts_aga_fm1_kehb1_p8_ishres_dshres_filtered(void) { lts_null(); } -static void lts_aga_fm1_dpf0_p2_ihires_dshres_spr(void) +static void lts_aga_fm1_n0_p2_ishres_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -48139,26 +87677,15 @@ static void lts_aga_fm1_dpf0_p2_ihires_dshres_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix0; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl2(); - loaded_pix = getbpl2_32(); - } - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + shiftbpl2(); + if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { copybpl2(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl2_32(); } + loaded_pix = getbpl2_32(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -48177,26 +87704,15 @@ static void lts_aga_fm1_dpf0_p2_ihires_dshres_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix1 = loaded_pixs[1]; clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - if (dpf_lookup_no[pix1]) { - val1 += dblpfofs[bpldualpf2of]; - } - val1 ^= bplcon4_denise_xor_val; - dpix_val1 = denise_colors.acolors[val1]; + dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix1; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl2(); - loaded_pix = getbpl2_32(); - } - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + shiftbpl2(); + if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { copybpl2(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl2_32(); } + loaded_pix = getbpl2_32(); uae_u32 sv1 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -48215,26 +87731,15 @@ static void lts_aga_fm1_dpf0_p2_ihires_dshres_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix2; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl2(); - loaded_pix = getbpl2_32(); - } - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + shiftbpl2(); + if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { copybpl2(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl2_32(); } + loaded_pix = getbpl2_32(); uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -48253,26 +87758,15 @@ static void lts_aga_fm1_dpf0_p2_ihires_dshres_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix3 = loaded_pixs[3]; clxdat |= bplcoltable[pix3]; - uae_u8 val3 = dpf_lookup[pix3]; - if (dpf_lookup_no[pix3]) { - val3 += dblpfofs[bpldualpf2of]; - } - val3 ^= bplcon4_denise_xor_val; - dpix_val3 = denise_colors.acolors[val3]; + dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix3; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl2(); - loaded_pix = getbpl2_32(); - } - if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { + shiftbpl2(); + if (bpldat_copy[0] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[0]) { copybpl2(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl2_32(); } + loaded_pix = getbpl2_32(); uae_u32 sv3 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -48367,11 +87861,11 @@ static void lts_aga_fm1_dpf0_p2_ihires_dshres_spr(void) denise_cck++; } } -static void lts_aga_fm1_dpf0_p2_ihires_dshres_spr_filtered(void) +static void lts_aga_fm1_n0_p2_ishres_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm1_dpf1_p2_ihires_dshres_spr(void) +static void lts_aga_fm1_n1_p2_ishres_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -48392,37 +87886,18 @@ static void lts_aga_fm1_dpf1_p2_ihires_dshres_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix0; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl2e(); - loaded_pix = getbpl2_32(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl2o(); - loaded_pix = getbpl2_32(); - } - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + shiftbpl2(); + if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { copybpl2e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl2_32(); } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + if (bpldat_copy[1] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[1]) { copybpl2o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl2_32(); } + loaded_pix = getbpl2_32(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -48441,37 +87916,18 @@ static void lts_aga_fm1_dpf1_p2_ihires_dshres_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix1 = loaded_pixs[1]; clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - if (dpf_lookup_no[pix1]) { - val1 += dblpfofs[bpldualpf2of]; - } - val1 ^= bplcon4_denise_xor_val; - dpix_val1 = denise_colors.acolors[val1]; + dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix1; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl2e(); - loaded_pix = getbpl2_32(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl2o(); - loaded_pix = getbpl2_32(); - } - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + shiftbpl2(); + if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { copybpl2e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl2_32(); } - if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { + if (bpldat_copy[1] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[1]) { copybpl2o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl2_32(); } + loaded_pix = getbpl2_32(); uae_u32 sv1 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -48490,37 +87946,18 @@ static void lts_aga_fm1_dpf1_p2_ihires_dshres_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix2; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl2e(); - loaded_pix = getbpl2_32(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl2o(); - loaded_pix = getbpl2_32(); - } - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + shiftbpl2(); + if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { copybpl2e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl2_32(); } - if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { + if (bpldat_copy[1] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[1]) { copybpl2o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl2_32(); } + loaded_pix = getbpl2_32(); uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -48539,37 +87976,18 @@ static void lts_aga_fm1_dpf1_p2_ihires_dshres_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix3 = loaded_pixs[3]; clxdat |= bplcoltable[pix3]; - uae_u8 val3 = dpf_lookup[pix3]; - if (dpf_lookup_no[pix3]) { - val3 += dblpfofs[bpldualpf2of]; - } - val3 ^= bplcon4_denise_xor_val; - dpix_val3 = denise_colors.acolors[val3]; + dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix3; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl2e(); - loaded_pix = getbpl2_32(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl2o(); - loaded_pix = getbpl2_32(); - } - if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { + shiftbpl2(); + if (bpldat_copy[0] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[0]) { copybpl2e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl2_32(); } - if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) { + if (bpldat_copy[1] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[1]) { copybpl2o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl2_32(); } + loaded_pix = getbpl2_32(); uae_u32 sv3 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -48664,59 +88082,11 @@ static void lts_aga_fm1_dpf1_p2_ihires_dshres_spr(void) denise_cck++; } } -static void lts_aga_fm1_dpf1_p2_ihires_dshres_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb0_p2_ihires_dshres_spr(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb0_p2_ihires_dshres_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb1_p2_ihires_dshres_spr(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb1_p2_ihires_dshres_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_ham0_p2_ihires_dshres_spr(void) -{ - lts_null(); -} -static void lts_aga_fm1_ham0_p2_ihires_dshres_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_ham1_p2_ihires_dshres_spr(void) -{ - lts_null(); -} -static void lts_aga_fm1_ham1_p2_ihires_dshres_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb0_p2_ihires_dshres_spr(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb0_p2_ihires_dshres_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb1_p2_ihires_dshres_spr(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb1_p2_ihires_dshres_spr_filtered(void) +static void lts_aga_fm1_n1_p2_ishres_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm1_n0_p4_ihires_dshres_spr(void) +static void lts_aga_fm1_dpf0_p2_ishres_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -48737,21 +88107,20 @@ static void lts_aga_fm1_n0_p4_ihires_dshres_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; } last_bpl_pix = pix0; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4(); - loaded_pix = getbpl4_32(); - } - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4_32(); + shiftbpl2(); + if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { + copybpl2(); } + loaded_pix = getbpl2_32(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -48770,21 +88139,20 @@ static void lts_aga_fm1_n0_p4_ihires_dshres_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix1 = loaded_pixs[1]; clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; + uae_u8 val1 = dpf_lookup[pix1]; + if (dpf_lookup_no[pix1]) { + val1 += dblpfofs[bpldualpf2of]; + } + val1 ^= bplcon4_denise_xor_val; + dpix_val1 = denise_colors.acolors[val1]; } last_bpl_pix = pix1; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4(); - loaded_pix = getbpl4_32(); - } - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4_32(); + shiftbpl2(); + if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { + copybpl2(); } + loaded_pix = getbpl2_32(); uae_u32 sv1 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -48803,21 +88171,20 @@ static void lts_aga_fm1_n0_p4_ihires_dshres_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; } last_bpl_pix = pix2; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4(); - loaded_pix = getbpl4_32(); - } - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4_32(); + shiftbpl2(); + if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { + copybpl2(); } + loaded_pix = getbpl2_32(); uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -48836,21 +88203,20 @@ static void lts_aga_fm1_n0_p4_ihires_dshres_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix3 = loaded_pixs[3]; clxdat |= bplcoltable[pix3]; - dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; + uae_u8 val3 = dpf_lookup[pix3]; + if (dpf_lookup_no[pix3]) { + val3 += dblpfofs[bpldualpf2of]; + } + val3 ^= bplcon4_denise_xor_val; + dpix_val3 = denise_colors.acolors[val3]; } last_bpl_pix = pix3; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4(); - loaded_pix = getbpl4_32(); - } - if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4_32(); + shiftbpl2(); + if (bpldat_copy[0] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[0]) { + copybpl2(); } + loaded_pix = getbpl2_32(); uae_u32 sv3 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -48945,11 +88311,11 @@ static void lts_aga_fm1_n0_p4_ihires_dshres_spr(void) denise_cck++; } } -static void lts_aga_fm1_n0_p4_ihires_dshres_spr_filtered(void) +static void lts_aga_fm1_dpf0_p2_ishres_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm1_n1_p4_ihires_dshres_spr(void) +static void lts_aga_fm1_dpf1_p2_ishres_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -48970,32 +88336,23 @@ static void lts_aga_fm1_n1_p4_ihires_dshres_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; } last_bpl_pix = pix0; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4e(); - loaded_pix = getbpl4_32(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl4o(); - loaded_pix = getbpl4_32(); - } - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4_32(); + shiftbpl2(); + if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { + copybpl2e(); } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl4o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl4_32(); + if (bpldat_copy[1] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[1]) { + copybpl2o(); } + loaded_pix = getbpl2_32(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -49014,32 +88371,23 @@ static void lts_aga_fm1_n1_p4_ihires_dshres_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix1 = loaded_pixs[1]; clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; + uae_u8 val1 = dpf_lookup[pix1]; + if (dpf_lookup_no[pix1]) { + val1 += dblpfofs[bpldualpf2of]; + } + val1 ^= bplcon4_denise_xor_val; + dpix_val1 = denise_colors.acolors[val1]; } last_bpl_pix = pix1; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4e(); - loaded_pix = getbpl4_32(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl4o(); - loaded_pix = getbpl4_32(); - } - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4_32(); + shiftbpl2(); + if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { + copybpl2e(); } - if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { - copybpl4o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl4_32(); + if (bpldat_copy[1] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[1]) { + copybpl2o(); } + loaded_pix = getbpl2_32(); uae_u32 sv1 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -49058,32 +88406,23 @@ static void lts_aga_fm1_n1_p4_ihires_dshres_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; } last_bpl_pix = pix2; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4e(); - loaded_pix = getbpl4_32(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl4o(); - loaded_pix = getbpl4_32(); - } - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4_32(); + shiftbpl2(); + if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { + copybpl2e(); } - if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { - copybpl4o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl4_32(); + if (bpldat_copy[1] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[1]) { + copybpl2o(); } + loaded_pix = getbpl2_32(); uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -49102,32 +88441,23 @@ static void lts_aga_fm1_n1_p4_ihires_dshres_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix3 = loaded_pixs[3]; clxdat |= bplcoltable[pix3]; - dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; + uae_u8 val3 = dpf_lookup[pix3]; + if (dpf_lookup_no[pix3]) { + val3 += dblpfofs[bpldualpf2of]; + } + val3 ^= bplcon4_denise_xor_val; + dpix_val3 = denise_colors.acolors[val3]; } last_bpl_pix = pix3; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4e(); - loaded_pix = getbpl4_32(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl4o(); - loaded_pix = getbpl4_32(); - } - if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4_32(); + shiftbpl2(); + if (bpldat_copy[0] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[0]) { + copybpl2e(); } - if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) { - copybpl4o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl4_32(); + if (bpldat_copy[1] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[1]) { + copybpl2o(); } + loaded_pix = getbpl2_32(); uae_u32 sv3 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -49222,11 +88552,11 @@ static void lts_aga_fm1_n1_p4_ihires_dshres_spr(void) denise_cck++; } } -static void lts_aga_fm1_n1_p4_ihires_dshres_spr_filtered(void) +static void lts_aga_fm1_dpf1_p2_ishres_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm1_dpf0_p4_ihires_dshres_spr(void) +static void lts_aga_fm1_ehb0_p2_ishres_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -49237,35 +88567,12 @@ 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; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4(); - loaded_pix = getbpl4_32(); - } - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4_32(); } uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { @@ -49275,35 +88582,12 @@ static void lts_aga_fm1_dpf0_p4_ihires_dshres_spr(void) sv0 = svt; } } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - if (dpf_lookup_no[pix1]) { - val1 += dblpfofs[bpldualpf2of]; - } - val1 ^= bplcon4_denise_xor_val; - dpix_val1 = denise_colors.acolors[val1]; - } - last_bpl_pix = pix1; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4(); - loaded_pix = getbpl4_32(); - } - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4_32(); } uae_u32 sv1 = 0; if (denise_spr_nr_armeds) { @@ -49313,35 +88597,12 @@ static void lts_aga_fm1_dpf0_p4_ihires_dshres_spr(void) sv1 = svt; } } - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4(); - loaded_pix = getbpl4_32(); - } - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4_32(); } uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { @@ -49351,35 +88612,12 @@ static void lts_aga_fm1_dpf0_p4_ihires_dshres_spr(void) sv2 = svt; } } - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - uae_u8 val3 = dpf_lookup[pix3]; - if (dpf_lookup_no[pix3]) { - val3 += dblpfofs[bpldualpf2of]; - } - val3 ^= bplcon4_denise_xor_val; - dpix_val3 = denise_colors.acolors[val3]; - } - last_bpl_pix = pix3; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4(); - loaded_pix = getbpl4_32(); - } - if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4_32(); } uae_u32 sv3 = 0; if (denise_spr_nr_armeds) { @@ -49389,7 +88627,6 @@ static void lts_aga_fm1_dpf0_p4_ihires_dshres_spr(void) sv3 = svt; } } - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { @@ -49475,11 +88712,11 @@ static void lts_aga_fm1_dpf0_p4_ihires_dshres_spr(void) denise_cck++; } } -static void lts_aga_fm1_dpf0_p4_ihires_dshres_spr_filtered(void) +static void lts_aga_fm1_ehb0_p2_ishres_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm1_dpf1_p4_ihires_dshres_spr(void) +static void lts_aga_fm1_ehb1_p2_ishres_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -49490,46 +88727,12 @@ 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; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4e(); - loaded_pix = getbpl4_32(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl4o(); - loaded_pix = getbpl4_32(); - } - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4_32(); - } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl4o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl4_32(); } uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { @@ -49539,46 +88742,12 @@ static void lts_aga_fm1_dpf1_p4_ihires_dshres_spr(void) sv0 = svt; } } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - if (dpf_lookup_no[pix1]) { - val1 += dblpfofs[bpldualpf2of]; - } - val1 ^= bplcon4_denise_xor_val; - dpix_val1 = denise_colors.acolors[val1]; - } - last_bpl_pix = pix1; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4e(); - loaded_pix = getbpl4_32(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl4o(); - loaded_pix = getbpl4_32(); - } - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4_32(); - } - if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { - copybpl4o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl4_32(); } uae_u32 sv1 = 0; if (denise_spr_nr_armeds) { @@ -49588,46 +88757,12 @@ static void lts_aga_fm1_dpf1_p4_ihires_dshres_spr(void) sv1 = svt; } } - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4e(); - loaded_pix = getbpl4_32(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl4o(); - loaded_pix = getbpl4_32(); - } - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4_32(); - } - if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { - copybpl4o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl4_32(); } uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { @@ -49637,46 +88772,12 @@ static void lts_aga_fm1_dpf1_p4_ihires_dshres_spr(void) sv2 = svt; } } - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - uae_u8 val3 = dpf_lookup[pix3]; - if (dpf_lookup_no[pix3]) { - val3 += dblpfofs[bpldualpf2of]; - } - val3 ^= bplcon4_denise_xor_val; - dpix_val3 = denise_colors.acolors[val3]; - } - last_bpl_pix = pix3; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4e(); - loaded_pix = getbpl4_32(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl4o(); - loaded_pix = getbpl4_32(); - } - if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4_32(); - } - if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) { - copybpl4o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl4_32(); } uae_u32 sv3 = 0; if (denise_spr_nr_armeds) { @@ -49686,7 +88787,6 @@ static void lts_aga_fm1_dpf1_p4_ihires_dshres_spr(void) sv3 = svt; } } - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { @@ -49772,59 +88872,11 @@ static void lts_aga_fm1_dpf1_p4_ihires_dshres_spr(void) denise_cck++; } } -static void lts_aga_fm1_dpf1_p4_ihires_dshres_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb0_p4_ihires_dshres_spr(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb0_p4_ihires_dshres_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb1_p4_ihires_dshres_spr(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb1_p4_ihires_dshres_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_ham0_p4_ihires_dshres_spr(void) -{ - lts_null(); -} -static void lts_aga_fm1_ham0_p4_ihires_dshres_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_ham1_p4_ihires_dshres_spr(void) -{ - lts_null(); -} -static void lts_aga_fm1_ham1_p4_ihires_dshres_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb0_p4_ihires_dshres_spr(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb0_p4_ihires_dshres_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb1_p4_ihires_dshres_spr(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb1_p4_ihires_dshres_spr_filtered(void) +static void lts_aga_fm1_ehb1_p2_ishres_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm1_n0_p6_ihires_dshres_spr(void) +static void lts_aga_fm1_ham0_p2_ishres_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -49835,30 +88887,12 @@ 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; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6(); - loaded_pix = getbpl6_32(); - } - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6_32(); } uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { @@ -49868,30 +88902,12 @@ static void lts_aga_fm1_n0_p6_ihires_dshres_spr(void) sv0 = svt; } } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix1; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6(); - loaded_pix = getbpl6_32(); - } - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6_32(); } uae_u32 sv1 = 0; if (denise_spr_nr_armeds) { @@ -49899,32 +88915,14 @@ static void lts_aga_fm1_n0_p6_ihires_dshres_spr(void) svt = denise_render_sprites_aga(denise_spr_add); if (!denise_sprite_blank_active && !sprites_hidden) { sv1 = svt; - } - } - loaded_pixs[1] = loaded_pix; - internal_pixel_cnt += 1; - matchsprites_aga(cnt + 2); - uae_u8 pix2 = 0; - uae_u32 dpix_val2 = BLANK_COLOR; - if (!denise_blank_active) { - dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6(); - loaded_pix = getbpl6_32(); - } - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6_32(); + } + } + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; } uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { @@ -49934,30 +88932,12 @@ static void lts_aga_fm1_n0_p6_ihires_dshres_spr(void) sv2 = svt; } } - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix3; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6(); - loaded_pix = getbpl6_32(); - } - if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6_32(); } uae_u32 sv3 = 0; if (denise_spr_nr_armeds) { @@ -49967,7 +88947,6 @@ static void lts_aga_fm1_n0_p6_ihires_dshres_spr(void) sv3 = svt; } } - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { @@ -50053,11 +89032,11 @@ static void lts_aga_fm1_n0_p6_ihires_dshres_spr(void) denise_cck++; } } -static void lts_aga_fm1_n0_p6_ihires_dshres_spr_filtered(void) +static void lts_aga_fm1_ham0_p2_ishres_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm1_n1_p6_ihires_dshres_spr(void) +static void lts_aga_fm1_ham1_p2_ishres_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -50068,41 +89047,12 @@ 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; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6e(); - loaded_pix = getbpl6_32(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl6o(); - loaded_pix = getbpl6_32(); - } - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6_32(); - } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl6o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl6_32(); } uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { @@ -50112,41 +89062,12 @@ static void lts_aga_fm1_n1_p6_ihires_dshres_spr(void) sv0 = svt; } } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix1; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6e(); - loaded_pix = getbpl6_32(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl6o(); - loaded_pix = getbpl6_32(); - } - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6_32(); - } - if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { - copybpl6o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl6_32(); } uae_u32 sv1 = 0; if (denise_spr_nr_armeds) { @@ -50156,41 +89077,12 @@ static void lts_aga_fm1_n1_p6_ihires_dshres_spr(void) sv1 = svt; } } - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6e(); - loaded_pix = getbpl6_32(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl6o(); - loaded_pix = getbpl6_32(); - } - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6_32(); - } - if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { - copybpl6o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl6_32(); } uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { @@ -50200,41 +89092,12 @@ static void lts_aga_fm1_n1_p6_ihires_dshres_spr(void) sv2 = svt; } } - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix3; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6e(); - loaded_pix = getbpl6_32(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl6o(); - loaded_pix = getbpl6_32(); - } - if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6_32(); - } - if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) { - copybpl6o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl6_32(); } uae_u32 sv3 = 0; if (denise_spr_nr_armeds) { @@ -50244,7 +89107,6 @@ static void lts_aga_fm1_n1_p6_ihires_dshres_spr(void) sv3 = svt; } } - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { @@ -50330,11 +89192,11 @@ static void lts_aga_fm1_n1_p6_ihires_dshres_spr(void) denise_cck++; } } -static void lts_aga_fm1_n1_p6_ihires_dshres_spr_filtered(void) +static void lts_aga_fm1_ham1_p2_ishres_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm1_dpf0_p6_ihires_dshres_spr(void) +static void lts_aga_fm1_kehb0_p2_ishres_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -50345,35 +89207,12 @@ 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; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6(); - loaded_pix = getbpl6_32(); - } - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6_32(); } uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { @@ -50383,35 +89222,12 @@ static void lts_aga_fm1_dpf0_p6_ihires_dshres_spr(void) sv0 = svt; } } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - if (dpf_lookup_no[pix1]) { - val1 += dblpfofs[bpldualpf2of]; - } - val1 ^= bplcon4_denise_xor_val; - dpix_val1 = denise_colors.acolors[val1]; - } - last_bpl_pix = pix1; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6(); - loaded_pix = getbpl6_32(); - } - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6_32(); } uae_u32 sv1 = 0; if (denise_spr_nr_armeds) { @@ -50421,35 +89237,12 @@ static void lts_aga_fm1_dpf0_p6_ihires_dshres_spr(void) sv1 = svt; } } - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6(); - loaded_pix = getbpl6_32(); - } - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6_32(); } uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { @@ -50459,35 +89252,12 @@ static void lts_aga_fm1_dpf0_p6_ihires_dshres_spr(void) sv2 = svt; } } - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - uae_u8 val3 = dpf_lookup[pix3]; - if (dpf_lookup_no[pix3]) { - val3 += dblpfofs[bpldualpf2of]; - } - val3 ^= bplcon4_denise_xor_val; - dpix_val3 = denise_colors.acolors[val3]; - } - last_bpl_pix = pix3; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6(); - loaded_pix = getbpl6_32(); - } - if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6_32(); } uae_u32 sv3 = 0; if (denise_spr_nr_armeds) { @@ -50497,7 +89267,6 @@ static void lts_aga_fm1_dpf0_p6_ihires_dshres_spr(void) sv3 = svt; } } - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { @@ -50583,11 +89352,11 @@ static void lts_aga_fm1_dpf0_p6_ihires_dshres_spr(void) denise_cck++; } } -static void lts_aga_fm1_dpf0_p6_ihires_dshres_spr_filtered(void) +static void lts_aga_fm1_kehb0_p2_ishres_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm1_dpf1_p6_ihires_dshres_spr(void) +static void lts_aga_fm1_kehb1_p2_ishres_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -50598,46 +89367,12 @@ 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; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6e(); - loaded_pix = getbpl6_32(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl6o(); - loaded_pix = getbpl6_32(); - } - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6_32(); - } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl6o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl6_32(); } uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { @@ -50647,46 +89382,12 @@ static void lts_aga_fm1_dpf1_p6_ihires_dshres_spr(void) sv0 = svt; } } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - if (dpf_lookup_no[pix1]) { - val1 += dblpfofs[bpldualpf2of]; - } - val1 ^= bplcon4_denise_xor_val; - dpix_val1 = denise_colors.acolors[val1]; - } - last_bpl_pix = pix1; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6e(); - loaded_pix = getbpl6_32(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl6o(); - loaded_pix = getbpl6_32(); - } - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6_32(); - } - if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { - copybpl6o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl6_32(); } uae_u32 sv1 = 0; if (denise_spr_nr_armeds) { @@ -50696,46 +89397,12 @@ static void lts_aga_fm1_dpf1_p6_ihires_dshres_spr(void) sv1 = svt; } } - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6e(); - loaded_pix = getbpl6_32(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl6o(); - loaded_pix = getbpl6_32(); - } - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6_32(); - } - if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { - copybpl6o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl6_32(); } uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { @@ -50745,46 +89412,12 @@ static void lts_aga_fm1_dpf1_p6_ihires_dshres_spr(void) sv2 = svt; } } - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - uae_u8 val3 = dpf_lookup[pix3]; - if (dpf_lookup_no[pix3]) { - val3 += dblpfofs[bpldualpf2of]; - } - val3 ^= bplcon4_denise_xor_val; - dpix_val3 = denise_colors.acolors[val3]; - } - last_bpl_pix = pix3; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6e(); - loaded_pix = getbpl6_32(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl6o(); - loaded_pix = getbpl6_32(); - } - if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6_32(); - } - if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) { - copybpl6o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl6_32(); } uae_u32 sv3 = 0; if (denise_spr_nr_armeds) { @@ -50794,7 +89427,6 @@ static void lts_aga_fm1_dpf1_p6_ihires_dshres_spr(void) sv3 = svt; } } - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { @@ -50880,11 +89512,11 @@ static void lts_aga_fm1_dpf1_p6_ihires_dshres_spr(void) denise_cck++; } } -static void lts_aga_fm1_dpf1_p6_ihires_dshres_spr_filtered(void) +static void lts_aga_fm1_kehb1_p2_ishres_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm1_ehb0_p6_ihires_dshres_spr(void) +static void lts_aga_fm1_n0_p4_ishres_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -50905,27 +89537,15 @@ static void lts_aga_fm1_ehb0_p6_ihires_dshres_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - pix0 ^= bplcon4_denise_xor_val; - if (!(pix0 & 0x20)) { - dpix_val0 = denise_colors.acolors[pix0]; - } else { - uae_u32 v = (denise_colors.color_regs_aga[pix0 & 0x1f] >> 1) & 0x7f7f7f; - dpix_val0 = CONVERT_RGB(v); - } + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix0; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6(); - loaded_pix = getbpl6_32(); - } - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6_32(); + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4(); } + loaded_pix = getbpl4_32(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -50944,27 +89564,15 @@ static void lts_aga_fm1_ehb0_p6_ihires_dshres_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix1 = loaded_pixs[1]; clxdat |= bplcoltable[pix1]; - pix1 ^= bplcon4_denise_xor_val; - if (!(pix1 & 0x20)) { - dpix_val1 = denise_colors.acolors[pix1]; - } else { - uae_u32 v = (denise_colors.color_regs_aga[pix1 & 0x1f] >> 1) & 0x7f7f7f; - dpix_val1 = CONVERT_RGB(v); - } + dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix1; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6(); - loaded_pix = getbpl6_32(); - } - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6_32(); + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4(); } + loaded_pix = getbpl4_32(); uae_u32 sv1 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -50983,27 +89591,15 @@ static void lts_aga_fm1_ehb0_p6_ihires_dshres_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - pix2 ^= bplcon4_denise_xor_val; - if (!(pix2 & 0x20)) { - dpix_val2 = denise_colors.acolors[pix2]; - } else { - uae_u32 v = (denise_colors.color_regs_aga[pix2 & 0x1f] >> 1) & 0x7f7f7f; - dpix_val2 = CONVERT_RGB(v); - } + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix2; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6(); - loaded_pix = getbpl6_32(); - } - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6_32(); + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4(); } + loaded_pix = getbpl4_32(); uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -51022,27 +89618,15 @@ static void lts_aga_fm1_ehb0_p6_ihires_dshres_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix3 = loaded_pixs[3]; clxdat |= bplcoltable[pix3]; - pix3 ^= bplcon4_denise_xor_val; - if (!(pix3 & 0x20)) { - dpix_val3 = denise_colors.acolors[pix3]; - } else { - uae_u32 v = (denise_colors.color_regs_aga[pix3 & 0x1f] >> 1) & 0x7f7f7f; - dpix_val3 = CONVERT_RGB(v); - } + dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix3; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6(); - loaded_pix = getbpl6_32(); - } - if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6_32(); + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4(); } + loaded_pix = getbpl4_32(); uae_u32 sv3 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -51137,11 +89721,11 @@ static void lts_aga_fm1_ehb0_p6_ihires_dshres_spr(void) denise_cck++; } } -static void lts_aga_fm1_ehb0_p6_ihires_dshres_spr_filtered(void) +static void lts_aga_fm1_n0_p4_ishres_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm1_ehb1_p6_ihires_dshres_spr(void) +static void lts_aga_fm1_n1_p4_ishres_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -51162,38 +89746,18 @@ static void lts_aga_fm1_ehb1_p6_ihires_dshres_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - pix0 ^= bplcon4_denise_xor_val; - if (!(pix0 & 0x20)) { - dpix_val0 = denise_colors.acolors[pix0]; - } else { - uae_u32 v = (denise_colors.color_regs_aga[pix0 & 0x1f] >> 1) & 0x7f7f7f; - dpix_val0 = CONVERT_RGB(v); - } + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix0; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6e(); - loaded_pix = getbpl6_32(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl6o(); - loaded_pix = getbpl6_32(); - } - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6_32(); - } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl6o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl6_32(); + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4e(); + } + if (bpldat_copy[1] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[1]) { + copybpl4o(); } + loaded_pix = getbpl4_32(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -51212,38 +89776,18 @@ static void lts_aga_fm1_ehb1_p6_ihires_dshres_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix1 = loaded_pixs[1]; clxdat |= bplcoltable[pix1]; - pix1 ^= bplcon4_denise_xor_val; - if (!(pix1 & 0x20)) { - dpix_val1 = denise_colors.acolors[pix1]; - } else { - uae_u32 v = (denise_colors.color_regs_aga[pix1 & 0x1f] >> 1) & 0x7f7f7f; - dpix_val1 = CONVERT_RGB(v); - } + dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix1; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6e(); - loaded_pix = getbpl6_32(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl6o(); - loaded_pix = getbpl6_32(); - } - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6_32(); + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4e(); } - if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { - copybpl6o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl6_32(); + if (bpldat_copy[1] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[1]) { + copybpl4o(); } + loaded_pix = getbpl4_32(); uae_u32 sv1 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -51262,38 +89806,18 @@ static void lts_aga_fm1_ehb1_p6_ihires_dshres_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - pix2 ^= bplcon4_denise_xor_val; - if (!(pix2 & 0x20)) { - dpix_val2 = denise_colors.acolors[pix2]; - } else { - uae_u32 v = (denise_colors.color_regs_aga[pix2 & 0x1f] >> 1) & 0x7f7f7f; - dpix_val2 = CONVERT_RGB(v); - } + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix2; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6e(); - loaded_pix = getbpl6_32(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl6o(); - loaded_pix = getbpl6_32(); - } - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6_32(); + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4e(); } - if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { - copybpl6o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl6_32(); + if (bpldat_copy[1] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[1]) { + copybpl4o(); } + loaded_pix = getbpl4_32(); uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -51312,38 +89836,18 @@ static void lts_aga_fm1_ehb1_p6_ihires_dshres_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix3 = loaded_pixs[3]; clxdat |= bplcoltable[pix3]; - pix3 ^= bplcon4_denise_xor_val; - if (!(pix3 & 0x20)) { - dpix_val3 = denise_colors.acolors[pix3]; - } else { - uae_u32 v = (denise_colors.color_regs_aga[pix3 & 0x1f] >> 1) & 0x7f7f7f; - dpix_val3 = CONVERT_RGB(v); - } + dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix3; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6e(); - loaded_pix = getbpl6_32(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl6o(); - loaded_pix = getbpl6_32(); - } - if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6_32(); + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4e(); } - if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) { - copybpl6o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl6_32(); + if (bpldat_copy[1] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[1]) { + copybpl4o(); } + loaded_pix = getbpl4_32(); uae_u32 sv3 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -51438,11 +89942,11 @@ static void lts_aga_fm1_ehb1_p6_ihires_dshres_spr(void) denise_cck++; } } -static void lts_aga_fm1_ehb1_p6_ihires_dshres_spr_filtered(void) +static void lts_aga_fm1_n1_p4_ishres_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm1_ham0_p6_ihires_dshres_spr(void) +static void lts_aga_fm1_dpf0_p4_ishres_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -51463,21 +89967,20 @@ static void lts_aga_fm1_ham0_p6_ihires_dshres_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - dpix_val0 = decode_ham_pixel_aga(pix0); + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; } last_bpl_pix = pix0; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6(); - loaded_pix = getbpl6_32(); - } - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6_32(); + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4(); } + loaded_pix = getbpl4_32(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -51496,21 +89999,20 @@ static void lts_aga_fm1_ham0_p6_ihires_dshres_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix1 = loaded_pixs[1]; clxdat |= bplcoltable[pix1]; - dpix_val1 = decode_ham_pixel_aga(pix1); + uae_u8 val1 = dpf_lookup[pix1]; + if (dpf_lookup_no[pix1]) { + val1 += dblpfofs[bpldualpf2of]; + } + val1 ^= bplcon4_denise_xor_val; + dpix_val1 = denise_colors.acolors[val1]; } last_bpl_pix = pix1; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6(); - loaded_pix = getbpl6_32(); - } - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6_32(); + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4(); } + loaded_pix = getbpl4_32(); uae_u32 sv1 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -51529,21 +90031,20 @@ static void lts_aga_fm1_ham0_p6_ihires_dshres_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - dpix_val2 = decode_ham_pixel_aga(pix2); + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; } last_bpl_pix = pix2; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6(); - loaded_pix = getbpl6_32(); - } - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6_32(); + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4(); } + loaded_pix = getbpl4_32(); uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -51562,21 +90063,20 @@ static void lts_aga_fm1_ham0_p6_ihires_dshres_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix3 = loaded_pixs[3]; clxdat |= bplcoltable[pix3]; - dpix_val3 = decode_ham_pixel_aga(pix3); + uae_u8 val3 = dpf_lookup[pix3]; + if (dpf_lookup_no[pix3]) { + val3 += dblpfofs[bpldualpf2of]; + } + val3 ^= bplcon4_denise_xor_val; + dpix_val3 = denise_colors.acolors[val3]; } last_bpl_pix = pix3; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6(); - loaded_pix = getbpl6_32(); - } - if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6_32(); + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4(); } + loaded_pix = getbpl4_32(); uae_u32 sv3 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -51671,11 +90171,11 @@ static void lts_aga_fm1_ham0_p6_ihires_dshres_spr(void) denise_cck++; } } -static void lts_aga_fm1_ham0_p6_ihires_dshres_spr_filtered(void) +static void lts_aga_fm1_dpf0_p4_ishres_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm1_ham1_p6_ihires_dshres_spr(void) +static void lts_aga_fm1_dpf1_p4_ishres_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -51696,32 +90196,23 @@ static void lts_aga_fm1_ham1_p6_ihires_dshres_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - dpix_val0 = decode_ham_pixel_aga(pix0); + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; } last_bpl_pix = pix0; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6e(); - loaded_pix = getbpl6_32(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl6o(); - loaded_pix = getbpl6_32(); - } - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6_32(); + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4e(); } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl6o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl6_32(); + if (bpldat_copy[1] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[1]) { + copybpl4o(); } + loaded_pix = getbpl4_32(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -51740,32 +90231,23 @@ static void lts_aga_fm1_ham1_p6_ihires_dshres_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix1 = loaded_pixs[1]; clxdat |= bplcoltable[pix1]; - dpix_val1 = decode_ham_pixel_aga(pix1); + uae_u8 val1 = dpf_lookup[pix1]; + if (dpf_lookup_no[pix1]) { + val1 += dblpfofs[bpldualpf2of]; + } + val1 ^= bplcon4_denise_xor_val; + dpix_val1 = denise_colors.acolors[val1]; } last_bpl_pix = pix1; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6e(); - loaded_pix = getbpl6_32(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl6o(); - loaded_pix = getbpl6_32(); - } - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6_32(); + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4e(); } - if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { - copybpl6o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl6_32(); + if (bpldat_copy[1] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[1]) { + copybpl4o(); } + loaded_pix = getbpl4_32(); uae_u32 sv1 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -51784,32 +90266,23 @@ static void lts_aga_fm1_ham1_p6_ihires_dshres_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - dpix_val2 = decode_ham_pixel_aga(pix2); + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; } last_bpl_pix = pix2; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6e(); - loaded_pix = getbpl6_32(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl6o(); - loaded_pix = getbpl6_32(); - } - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6_32(); + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4e(); } - if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { - copybpl6o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl6_32(); + if (bpldat_copy[1] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[1]) { + copybpl4o(); } + loaded_pix = getbpl4_32(); uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -51828,32 +90301,23 @@ static void lts_aga_fm1_ham1_p6_ihires_dshres_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix3 = loaded_pixs[3]; clxdat |= bplcoltable[pix3]; - dpix_val3 = decode_ham_pixel_aga(pix3); + uae_u8 val3 = dpf_lookup[pix3]; + if (dpf_lookup_no[pix3]) { + val3 += dblpfofs[bpldualpf2of]; + } + val3 ^= bplcon4_denise_xor_val; + dpix_val3 = denise_colors.acolors[val3]; } last_bpl_pix = pix3; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6e(); - loaded_pix = getbpl6_32(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl6o(); - loaded_pix = getbpl6_32(); - } - if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6_32(); + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4e(); } - if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) { - copybpl6o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl6_32(); + if (bpldat_copy[1] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[1]) { + copybpl4o(); } + loaded_pix = getbpl4_32(); uae_u32 sv3 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -51948,11 +90412,11 @@ static void lts_aga_fm1_ham1_p6_ihires_dshres_spr(void) denise_cck++; } } -static void lts_aga_fm1_ham1_p6_ihires_dshres_spr_filtered(void) +static void lts_aga_fm1_dpf1_p4_ishres_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm1_kehb0_p6_ihires_dshres_spr(void) +static void lts_aga_fm1_ehb0_p4_ishres_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -51963,31 +90427,12 @@ 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; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - pix0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[pix0 & 31]; - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6(); - loaded_pix = getbpl6_32(); - } - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6_32(); } uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { @@ -51997,31 +90442,12 @@ static void lts_aga_fm1_kehb0_p6_ihires_dshres_spr(void) sv0 = svt; } } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - pix1 ^= bplcon4_denise_xor_val; - dpix_val1 = denise_colors.acolors[pix1 & 31]; - } - last_bpl_pix = pix1; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6(); - loaded_pix = getbpl6_32(); - } - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6_32(); } uae_u32 sv1 = 0; if (denise_spr_nr_armeds) { @@ -52031,31 +90457,12 @@ static void lts_aga_fm1_kehb0_p6_ihires_dshres_spr(void) sv1 = svt; } } - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - pix2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[pix2 & 31]; - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6(); - loaded_pix = getbpl6_32(); - } - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6_32(); } uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { @@ -52065,31 +90472,12 @@ static void lts_aga_fm1_kehb0_p6_ihires_dshres_spr(void) sv2 = svt; } } - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - pix3 ^= bplcon4_denise_xor_val; - dpix_val3 = denise_colors.acolors[pix3 & 31]; - } - last_bpl_pix = pix3; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6(); - loaded_pix = getbpl6_32(); - } - if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6_32(); } uae_u32 sv3 = 0; if (denise_spr_nr_armeds) { @@ -52099,7 +90487,6 @@ static void lts_aga_fm1_kehb0_p6_ihires_dshres_spr(void) sv3 = svt; } } - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { @@ -52185,11 +90572,11 @@ static void lts_aga_fm1_kehb0_p6_ihires_dshres_spr(void) denise_cck++; } } -static void lts_aga_fm1_kehb0_p6_ihires_dshres_spr_filtered(void) +static void lts_aga_fm1_ehb0_p4_ishres_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm1_kehb1_p6_ihires_dshres_spr(void) +static void lts_aga_fm1_ehb1_p4_ishres_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -52200,42 +90587,12 @@ 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; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - pix0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[pix0 & 31]; - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6e(); - loaded_pix = getbpl6_32(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl6o(); - loaded_pix = getbpl6_32(); - } - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6_32(); - } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl6o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl6_32(); } uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { @@ -52245,87 +90602,27 @@ static void lts_aga_fm1_kehb1_p6_ihires_dshres_spr(void) sv0 = svt; } } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - pix1 ^= bplcon4_denise_xor_val; - dpix_val1 = denise_colors.acolors[pix1 & 31]; - } - last_bpl_pix = pix1; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6e(); - loaded_pix = getbpl6_32(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl6o(); - loaded_pix = getbpl6_32(); - } - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6_32(); - } - if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { - copybpl6o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl6_32(); - } - uae_u32 sv1 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv1 = svt; - } - } - loaded_pixs[1] = loaded_pix; - internal_pixel_cnt += 1; - matchsprites_aga(cnt + 2); - uae_u8 pix2 = 0; - uae_u32 dpix_val2 = BLANK_COLOR; - if (!denise_blank_active) { - dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - pix2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[pix2 & 31]; - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6e(); - loaded_pix = getbpl6_32(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl6o(); - loaded_pix = getbpl6_32(); } - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6_32(); + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } } - if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { - copybpl6o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl6_32(); + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; } uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { @@ -52335,42 +90632,12 @@ static void lts_aga_fm1_kehb1_p6_ihires_dshres_spr(void) sv2 = svt; } } - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - pix3 ^= bplcon4_denise_xor_val; - dpix_val3 = denise_colors.acolors[pix3 & 31]; - } - last_bpl_pix = pix3; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6e(); - loaded_pix = getbpl6_32(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl6o(); - loaded_pix = getbpl6_32(); - } - if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6_32(); - } - if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) { - copybpl6o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl6_32(); } uae_u32 sv3 = 0; if (denise_spr_nr_armeds) { @@ -52380,7 +90647,6 @@ static void lts_aga_fm1_kehb1_p6_ihires_dshres_spr(void) sv3 = svt; } } - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { @@ -52466,11 +90732,11 @@ static void lts_aga_fm1_kehb1_p6_ihires_dshres_spr(void) denise_cck++; } } -static void lts_aga_fm1_kehb1_p6_ihires_dshres_spr_filtered(void) +static void lts_aga_fm1_ehb1_p4_ishres_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm1_n0_p8_ihires_dshres_spr(void) +static void lts_aga_fm1_ham0_p4_ishres_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -52481,30 +90747,12 @@ 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; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8(); - loaded_pix = getbpl8_32(); - } - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_32(); } uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { @@ -52514,30 +90762,12 @@ static void lts_aga_fm1_n0_p8_ihires_dshres_spr(void) sv0 = svt; } } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix1; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8(); - loaded_pix = getbpl8_32(); - } - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_32(); } uae_u32 sv1 = 0; if (denise_spr_nr_armeds) { @@ -52547,30 +90777,12 @@ static void lts_aga_fm1_n0_p8_ihires_dshres_spr(void) sv1 = svt; } } - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8(); - loaded_pix = getbpl8_32(); - } - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_32(); } uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { @@ -52580,30 +90792,12 @@ static void lts_aga_fm1_n0_p8_ihires_dshres_spr(void) sv2 = svt; } } - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix3; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8(); - loaded_pix = getbpl8_32(); - } - if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_32(); } uae_u32 sv3 = 0; if (denise_spr_nr_armeds) { @@ -52613,7 +90807,6 @@ static void lts_aga_fm1_n0_p8_ihires_dshres_spr(void) sv3 = svt; } } - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { @@ -52699,11 +90892,11 @@ static void lts_aga_fm1_n0_p8_ihires_dshres_spr(void) denise_cck++; } } -static void lts_aga_fm1_n0_p8_ihires_dshres_spr_filtered(void) +static void lts_aga_fm1_ham0_p4_ishres_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm1_n1_p8_ihires_dshres_spr(void) +static void lts_aga_fm1_ham1_p4_ishres_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -52714,41 +90907,12 @@ 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; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8e(); - loaded_pix = getbpl8_32(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl8o(); - loaded_pix = getbpl8_32(); - } - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_32(); - } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl8_32(); } uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { @@ -52758,41 +90922,12 @@ static void lts_aga_fm1_n1_p8_ihires_dshres_spr(void) sv0 = svt; } } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix1; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8e(); - loaded_pix = getbpl8_32(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl8o(); - loaded_pix = getbpl8_32(); - } - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_32(); - } - if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl8_32(); } uae_u32 sv1 = 0; if (denise_spr_nr_armeds) { @@ -52802,41 +90937,12 @@ static void lts_aga_fm1_n1_p8_ihires_dshres_spr(void) sv1 = svt; } } - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8e(); - loaded_pix = getbpl8_32(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl8o(); - loaded_pix = getbpl8_32(); - } - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_32(); - } - if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl8_32(); } uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { @@ -52846,41 +90952,12 @@ static void lts_aga_fm1_n1_p8_ihires_dshres_spr(void) sv2 = svt; } } - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix3; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8e(); - loaded_pix = getbpl8_32(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl8o(); - loaded_pix = getbpl8_32(); - } - if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_32(); - } - if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl8_32(); } uae_u32 sv3 = 0; if (denise_spr_nr_armeds) { @@ -52890,7 +90967,6 @@ static void lts_aga_fm1_n1_p8_ihires_dshres_spr(void) sv3 = svt; } } - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { @@ -52976,11 +91052,11 @@ static void lts_aga_fm1_n1_p8_ihires_dshres_spr(void) denise_cck++; } } -static void lts_aga_fm1_n1_p8_ihires_dshres_spr_filtered(void) +static void lts_aga_fm1_ham1_p4_ishres_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm1_dpf0_p8_ihires_dshres_spr(void) +static void lts_aga_fm1_kehb0_p4_ishres_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -52991,35 +91067,12 @@ 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; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8(); - loaded_pix = getbpl8_32(); - } - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_32(); } uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { @@ -53029,35 +91082,12 @@ static void lts_aga_fm1_dpf0_p8_ihires_dshres_spr(void) sv0 = svt; } } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - if (dpf_lookup_no[pix1]) { - val1 += dblpfofs[bpldualpf2of]; - } - val1 ^= bplcon4_denise_xor_val; - dpix_val1 = denise_colors.acolors[val1]; - } - last_bpl_pix = pix1; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8(); - loaded_pix = getbpl8_32(); - } - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_32(); } uae_u32 sv1 = 0; if (denise_spr_nr_armeds) { @@ -53067,35 +91097,12 @@ static void lts_aga_fm1_dpf0_p8_ihires_dshres_spr(void) sv1 = svt; } } - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8(); - loaded_pix = getbpl8_32(); - } - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_32(); } uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { @@ -53105,35 +91112,12 @@ static void lts_aga_fm1_dpf0_p8_ihires_dshres_spr(void) sv2 = svt; } } - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - uae_u8 val3 = dpf_lookup[pix3]; - if (dpf_lookup_no[pix3]) { - val3 += dblpfofs[bpldualpf2of]; - } - val3 ^= bplcon4_denise_xor_val; - dpix_val3 = denise_colors.acolors[val3]; - } - last_bpl_pix = pix3; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8(); - loaded_pix = getbpl8_32(); - } - if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_32(); } uae_u32 sv3 = 0; if (denise_spr_nr_armeds) { @@ -53143,7 +91127,6 @@ static void lts_aga_fm1_dpf0_p8_ihires_dshres_spr(void) sv3 = svt; } } - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { @@ -53229,11 +91212,11 @@ static void lts_aga_fm1_dpf0_p8_ihires_dshres_spr(void) denise_cck++; } } -static void lts_aga_fm1_dpf0_p8_ihires_dshres_spr_filtered(void) +static void lts_aga_fm1_kehb0_p4_ishres_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm1_dpf1_p8_ihires_dshres_spr(void) +static void lts_aga_fm1_kehb1_p4_ishres_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -53244,46 +91227,12 @@ 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; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8e(); - loaded_pix = getbpl8_32(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl8o(); - loaded_pix = getbpl8_32(); - } - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_32(); - } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl8_32(); } uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { @@ -53293,46 +91242,12 @@ static void lts_aga_fm1_dpf1_p8_ihires_dshres_spr(void) sv0 = svt; } } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - if (dpf_lookup_no[pix1]) { - val1 += dblpfofs[bpldualpf2of]; - } - val1 ^= bplcon4_denise_xor_val; - dpix_val1 = denise_colors.acolors[val1]; - } - last_bpl_pix = pix1; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8e(); - loaded_pix = getbpl8_32(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl8o(); - loaded_pix = getbpl8_32(); - } - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_32(); - } - if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl8_32(); } uae_u32 sv1 = 0; if (denise_spr_nr_armeds) { @@ -53342,46 +91257,12 @@ static void lts_aga_fm1_dpf1_p8_ihires_dshres_spr(void) sv1 = svt; } } - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8e(); - loaded_pix = getbpl8_32(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl8o(); - loaded_pix = getbpl8_32(); - } - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_32(); - } - if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl8_32(); } uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { @@ -53391,46 +91272,12 @@ static void lts_aga_fm1_dpf1_p8_ihires_dshres_spr(void) sv2 = svt; } } - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - uae_u8 val3 = dpf_lookup[pix3]; - if (dpf_lookup_no[pix3]) { - val3 += dblpfofs[bpldualpf2of]; - } - val3 ^= bplcon4_denise_xor_val; - dpix_val3 = denise_colors.acolors[val3]; - } - last_bpl_pix = pix3; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8e(); - loaded_pix = getbpl8_32(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl8o(); - loaded_pix = getbpl8_32(); - } - if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_32(); - } - if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl8_32(); } uae_u32 sv3 = 0; if (denise_spr_nr_armeds) { @@ -53440,7 +91287,6 @@ static void lts_aga_fm1_dpf1_p8_ihires_dshres_spr(void) sv3 = svt; } } - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { @@ -53517,36 +91363,20 @@ static void lts_aga_fm1_dpf1_p8_ihires_dshres_spr(void) } denise_pixtotal++; if (denise_pixtotal == 0) { - internal_pixel_start_cnt = internal_pixel_cnt; - } - denise_hcounter = denise_hcounter_new; - if (denise_accurate_mode) { - denise_hcounter_cmp = denise_hcounter_new; - } - denise_cck++; - } -} -static void lts_aga_fm1_dpf1_p8_ihires_dshres_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb0_p8_ihires_dshres_spr(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb0_p8_ihires_dshres_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb1_p8_ihires_dshres_spr(void) -{ - lts_null(); + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm1_ehb1_p8_ihires_dshres_spr_filtered(void) +static void lts_aga_fm1_kehb1_p4_ishres_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm1_ham0_p8_ihires_dshres_spr(void) +static void lts_aga_fm1_n0_p6_ishres_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -53557,30 +91387,12 @@ 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; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = decode_ham_pixel_aga(pix0); - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8(); - loaded_pix = getbpl8_32(); - } - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_32(); } uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { @@ -53590,30 +91402,12 @@ static void lts_aga_fm1_ham0_p8_ihires_dshres_spr(void) sv0 = svt; } } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - dpix_val1 = decode_ham_pixel_aga(pix1); - } - last_bpl_pix = pix1; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8(); - loaded_pix = getbpl8_32(); - } - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_32(); } uae_u32 sv1 = 0; if (denise_spr_nr_armeds) { @@ -53623,30 +91417,12 @@ static void lts_aga_fm1_ham0_p8_ihires_dshres_spr(void) sv1 = svt; } } - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = decode_ham_pixel_aga(pix2); - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8(); - loaded_pix = getbpl8_32(); - } - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_32(); } uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { @@ -53656,30 +91432,12 @@ static void lts_aga_fm1_ham0_p8_ihires_dshres_spr(void) sv2 = svt; } } - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - dpix_val3 = decode_ham_pixel_aga(pix3); - } - last_bpl_pix = pix3; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8(); - loaded_pix = getbpl8_32(); - } - if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_32(); } uae_u32 sv3 = 0; if (denise_spr_nr_armeds) { @@ -53689,7 +91447,6 @@ static void lts_aga_fm1_ham0_p8_ihires_dshres_spr(void) sv3 = svt; } } - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { @@ -53775,11 +91532,11 @@ static void lts_aga_fm1_ham0_p8_ihires_dshres_spr(void) denise_cck++; } } -static void lts_aga_fm1_ham0_p8_ihires_dshres_spr_filtered(void) +static void lts_aga_fm1_n0_p6_ishres_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm1_ham1_p8_ihires_dshres_spr(void) +static void lts_aga_fm1_n1_p6_ishres_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -53790,41 +91547,12 @@ 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; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = decode_ham_pixel_aga(pix0); - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8e(); - loaded_pix = getbpl8_32(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl8o(); - loaded_pix = getbpl8_32(); - } - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_32(); - } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl8_32(); } uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { @@ -53834,41 +91562,12 @@ static void lts_aga_fm1_ham1_p8_ihires_dshres_spr(void) sv0 = svt; } } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - dpix_val1 = decode_ham_pixel_aga(pix1); - } - last_bpl_pix = pix1; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8e(); - loaded_pix = getbpl8_32(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl8o(); - loaded_pix = getbpl8_32(); - } - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_32(); - } - if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl8_32(); } uae_u32 sv1 = 0; if (denise_spr_nr_armeds) { @@ -53878,41 +91577,12 @@ static void lts_aga_fm1_ham1_p8_ihires_dshres_spr(void) sv1 = svt; } } - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = decode_ham_pixel_aga(pix2); - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8e(); - loaded_pix = getbpl8_32(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl8o(); - loaded_pix = getbpl8_32(); - } - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_32(); - } - if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl8_32(); } uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { @@ -53922,41 +91592,12 @@ static void lts_aga_fm1_ham1_p8_ihires_dshres_spr(void) sv2 = svt; } } - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - dpix_val3 = decode_ham_pixel_aga(pix3); - } - last_bpl_pix = pix3; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8e(); - loaded_pix = getbpl8_32(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl8o(); - loaded_pix = getbpl8_32(); - } - if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_32(); - } - if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl8_32(); } uae_u32 sv3 = 0; if (denise_spr_nr_armeds) { @@ -53966,7 +91607,6 @@ static void lts_aga_fm1_ham1_p8_ihires_dshres_spr(void) sv3 = svt; } } - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { @@ -54052,27 +91692,11 @@ static void lts_aga_fm1_ham1_p8_ihires_dshres_spr(void) denise_cck++; } } -static void lts_aga_fm1_ham1_p8_ihires_dshres_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb0_p8_ihires_dshres_spr(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb0_p8_ihires_dshres_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb1_p8_ihires_dshres_spr(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb1_p8_ihires_dshres_spr_filtered(void) +static void lts_aga_fm1_n1_p6_ishres_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm1_n0_p2_ishres_dshres(void) +static void lts_aga_fm1_dpf0_p6_ishres_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -54083,84 +91707,95 @@ 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; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix0; } - shiftbpl2(); - if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { - copybpl2(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } } - loaded_pix = getbpl2_32(); - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix1; } - shiftbpl2(); - if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { - copybpl2(); + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } } - loaded_pix = getbpl2_32(); - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix2; } - shiftbpl2(); - if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { - copybpl2(); + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } } - loaded_pix = getbpl2_32(); - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix3; } - shiftbpl2(); - if (bpldat_copy[0] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[0]) { - copybpl2(); + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } } - loaded_pix = getbpl2_32(); - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } dtbuf[h][0] = dpix_val0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } dtbuf[h][1] = dpix_val1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } dtbuf[h][2] = dpix_val2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + } + } dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -54217,11 +91852,11 @@ static void lts_aga_fm1_n0_p2_ishres_dshres(void) denise_cck++; } } -static void lts_aga_fm1_n0_p2_ishres_dshres_filtered(void) +static void lts_aga_fm1_dpf0_p6_ishres_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm1_n1_p2_ishres_dshres(void) +static void lts_aga_fm1_dpf1_p6_ishres_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -54232,96 +91867,95 @@ 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; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix0; - } - shiftbpl2(); - if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { - copybpl2e(); } - if (bpldat_copy[1] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[1]) { - copybpl2o(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } } - loaded_pix = getbpl2_32(); - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix1; - } - shiftbpl2(); - if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { - copybpl2e(); } - if (bpldat_copy[1] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[1]) { - copybpl2o(); + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } } - loaded_pix = getbpl2_32(); - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix2; - } - shiftbpl2(); - if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { - copybpl2e(); } - if (bpldat_copy[1] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[1]) { - copybpl2o(); + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } } - loaded_pix = getbpl2_32(); - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix3; - } - shiftbpl2(); - if (bpldat_copy[0] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[0]) { - copybpl2e(); } - if (bpldat_copy[1] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[1]) { - copybpl2o(); + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } } - loaded_pix = getbpl2_32(); - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } dtbuf[h][0] = dpix_val0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } dtbuf[h][1] = dpix_val1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } dtbuf[h][2] = dpix_val2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + } + } dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -54378,11 +92012,11 @@ static void lts_aga_fm1_n1_p2_ishres_dshres(void) denise_cck++; } } -static void lts_aga_fm1_n1_p2_ishres_dshres_filtered(void) +static void lts_aga_fm1_dpf1_p6_ishres_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm1_dpf0_p2_ishres_dshres(void) +static void lts_aga_fm1_ehb0_p6_ishres_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -54393,104 +92027,95 @@ 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; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; } - shiftbpl2(); - if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { - copybpl2(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } } - loaded_pix = getbpl2_32(); - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - if (dpf_lookup_no[pix1]) { - val1 += dblpfofs[bpldualpf2of]; - } - val1 ^= bplcon4_denise_xor_val; - dpix_val1 = denise_colors.acolors[val1]; - } - last_bpl_pix = pix1; } - shiftbpl2(); - if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { - copybpl2(); + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } } - loaded_pix = getbpl2_32(); - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; - uae_u32 dpix_val2 = BLANK_COLOR; - if (!denise_blank_active) { - dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; - } - last_bpl_pix = pix2; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; } - shiftbpl2(); - if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { - copybpl2(); + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } } - loaded_pix = getbpl2_32(); - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - uae_u8 val3 = dpf_lookup[pix3]; - if (dpf_lookup_no[pix3]) { - val3 += dblpfofs[bpldualpf2of]; - } - val3 ^= bplcon4_denise_xor_val; - dpix_val3 = denise_colors.acolors[val3]; - } - last_bpl_pix = pix3; } - shiftbpl2(); - if (bpldat_copy[0] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[0]) { - copybpl2(); + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } } - loaded_pix = getbpl2_32(); - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } dtbuf[h][0] = dpix_val0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } dtbuf[h][1] = dpix_val1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } dtbuf[h][2] = dpix_val2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + } + } dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -54547,11 +92172,11 @@ static void lts_aga_fm1_dpf0_p2_ishres_dshres(void) denise_cck++; } } -static void lts_aga_fm1_dpf0_p2_ishres_dshres_filtered(void) +static void lts_aga_fm1_ehb0_p6_ishres_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm1_dpf1_p2_ishres_dshres(void) +static void lts_aga_fm1_ehb1_p6_ishres_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -54562,116 +92187,95 @@ 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; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; } - shiftbpl2(); - if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { - copybpl2e(); - } - if (bpldat_copy[1] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[1]) { - copybpl2o(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } } - loaded_pix = getbpl2_32(); - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - if (dpf_lookup_no[pix1]) { - val1 += dblpfofs[bpldualpf2of]; - } - val1 ^= bplcon4_denise_xor_val; - dpix_val1 = denise_colors.acolors[val1]; - } - last_bpl_pix = pix1; - } - shiftbpl2(); - if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { - copybpl2e(); } - if (bpldat_copy[1] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[1]) { - copybpl2o(); + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } } - loaded_pix = getbpl2_32(); - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; - } - last_bpl_pix = pix2; - } - shiftbpl2(); - if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { - copybpl2e(); } - if (bpldat_copy[1] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[1]) { - copybpl2o(); + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } } - loaded_pix = getbpl2_32(); - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - uae_u8 val3 = dpf_lookup[pix3]; - if (dpf_lookup_no[pix3]) { - val3 += dblpfofs[bpldualpf2of]; - } - val3 ^= bplcon4_denise_xor_val; - dpix_val3 = denise_colors.acolors[val3]; - } - last_bpl_pix = pix3; - } - shiftbpl2(); - if (bpldat_copy[0] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[0]) { - copybpl2e(); } - if (bpldat_copy[1] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[1]) { - copybpl2o(); + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } } - loaded_pix = getbpl2_32(); - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } dtbuf[h][0] = dpix_val0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } dtbuf[h][1] = dpix_val1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } dtbuf[h][2] = dpix_val2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + } + } dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -54728,59 +92332,11 @@ static void lts_aga_fm1_dpf1_p2_ishres_dshres(void) denise_cck++; } } -static void lts_aga_fm1_dpf1_p2_ishres_dshres_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb0_p2_ishres_dshres(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb0_p2_ishres_dshres_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb1_p2_ishres_dshres(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb1_p2_ishres_dshres_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_ham0_p2_ishres_dshres(void) -{ - lts_null(); -} -static void lts_aga_fm1_ham0_p2_ishres_dshres_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_ham1_p2_ishres_dshres(void) -{ - lts_null(); -} -static void lts_aga_fm1_ham1_p2_ishres_dshres_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb0_p2_ishres_dshres(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb0_p2_ishres_dshres_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb1_p2_ishres_dshres(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb1_p2_ishres_dshres_filtered(void) +static void lts_aga_fm1_ehb1_p6_ishres_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm1_n0_p4_ishres_dshres(void) +static void lts_aga_fm1_ham0_p6_ishres_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -54791,84 +92347,95 @@ 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; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix0; } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } } - loaded_pix = getbpl4_32(); - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix1; } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4(); + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } } - loaded_pix = getbpl4_32(); - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix2; } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4(); + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } } - loaded_pix = getbpl4_32(); - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix3; } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4(); + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } } - loaded_pix = getbpl4_32(); - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } dtbuf[h][0] = dpix_val0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } dtbuf[h][1] = dpix_val1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } dtbuf[h][2] = dpix_val2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + } + } dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -54925,11 +92492,11 @@ static void lts_aga_fm1_n0_p4_ishres_dshres(void) denise_cck++; } } -static void lts_aga_fm1_n0_p4_ishres_dshres_filtered(void) +static void lts_aga_fm1_ham0_p6_ishres_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm1_n1_p4_ishres_dshres(void) +static void lts_aga_fm1_ham1_p6_ishres_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -54940,96 +92507,95 @@ 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; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix0; - } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4e(); } - if (bpldat_copy[1] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[1]) { - copybpl4o(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } } - loaded_pix = getbpl4_32(); - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix1; - } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4e(); } - if (bpldat_copy[1] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[1]) { - copybpl4o(); + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } } - loaded_pix = getbpl4_32(); - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix2; - } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4e(); } - if (bpldat_copy[1] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[1]) { - copybpl4o(); + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } } - loaded_pix = getbpl4_32(); - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix3; - } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4e(); } - if (bpldat_copy[1] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[1]) { - copybpl4o(); + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } } - loaded_pix = getbpl4_32(); - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } dtbuf[h][0] = dpix_val0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } dtbuf[h][1] = dpix_val1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } dtbuf[h][2] = dpix_val2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + } + } dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -55086,11 +92652,11 @@ static void lts_aga_fm1_n1_p4_ishres_dshres(void) denise_cck++; } } -static void lts_aga_fm1_n1_p4_ishres_dshres_filtered(void) +static void lts_aga_fm1_ham1_p6_ishres_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm1_dpf0_p4_ishres_dshres(void) +static void lts_aga_fm1_kehb0_p6_ishres_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -55101,104 +92667,95 @@ 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; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } } - loaded_pix = getbpl4_32(); - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - if (dpf_lookup_no[pix1]) { - val1 += dblpfofs[bpldualpf2of]; - } - val1 ^= bplcon4_denise_xor_val; - dpix_val1 = denise_colors.acolors[val1]; + } + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; } - last_bpl_pix = pix1; - } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4(); } - loaded_pix = getbpl4_32(); - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; - } - last_bpl_pix = pix2; } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4(); + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } } - loaded_pix = getbpl4_32(); - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - uae_u8 val3 = dpf_lookup[pix3]; - if (dpf_lookup_no[pix3]) { - val3 += dblpfofs[bpldualpf2of]; - } - val3 ^= bplcon4_denise_xor_val; - dpix_val3 = denise_colors.acolors[val3]; - } - last_bpl_pix = pix3; } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4(); + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } } - loaded_pix = getbpl4_32(); - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } dtbuf[h][0] = dpix_val0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } dtbuf[h][1] = dpix_val1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } dtbuf[h][2] = dpix_val2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + } + } dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -55255,11 +92812,11 @@ static void lts_aga_fm1_dpf0_p4_ishres_dshres(void) denise_cck++; } } -static void lts_aga_fm1_dpf0_p4_ishres_dshres_filtered(void) +static void lts_aga_fm1_kehb0_p6_ishres_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm1_dpf1_p4_ishres_dshres(void) +static void lts_aga_fm1_kehb1_p6_ishres_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -55270,116 +92827,95 @@ 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; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; - } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4e(); } - if (bpldat_copy[1] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[1]) { - copybpl4o(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } } - loaded_pix = getbpl4_32(); - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - if (dpf_lookup_no[pix1]) { - val1 += dblpfofs[bpldualpf2of]; - } - val1 ^= bplcon4_denise_xor_val; - dpix_val1 = denise_colors.acolors[val1]; - } - last_bpl_pix = pix1; - } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4e(); } - if (bpldat_copy[1] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[1]) { - copybpl4o(); + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } } - loaded_pix = getbpl4_32(); - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; - } - last_bpl_pix = pix2; - } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4e(); } - if (bpldat_copy[1] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[1]) { - copybpl4o(); + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } } - loaded_pix = getbpl4_32(); - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - uae_u8 val3 = dpf_lookup[pix3]; - if (dpf_lookup_no[pix3]) { - val3 += dblpfofs[bpldualpf2of]; - } - val3 ^= bplcon4_denise_xor_val; - dpix_val3 = denise_colors.acolors[val3]; - } - last_bpl_pix = pix3; - } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4e(); } - if (bpldat_copy[1] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[1]) { - copybpl4o(); + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } } - loaded_pix = getbpl4_32(); - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } dtbuf[h][0] = dpix_val0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } dtbuf[h][1] = dpix_val1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } dtbuf[h][2] = dpix_val2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + } + } dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -55436,219 +92972,171 @@ static void lts_aga_fm1_dpf1_p4_ishres_dshres(void) denise_cck++; } } -static void lts_aga_fm1_dpf1_p4_ishres_dshres_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb0_p4_ishres_dshres(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb0_p4_ishres_dshres_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb1_p4_ishres_dshres(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb1_p4_ishres_dshres_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_ham0_p4_ishres_dshres(void) -{ - lts_null(); -} -static void lts_aga_fm1_ham0_p4_ishres_dshres_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_ham1_p4_ishres_dshres(void) -{ - lts_null(); -} -static void lts_aga_fm1_ham1_p4_ishres_dshres_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb0_p4_ishres_dshres(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb0_p4_ishres_dshres_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb1_p4_ishres_dshres(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb1_p4_ishres_dshres_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_n0_p6_ishres_dshres(void) -{ - lts_null(); -} -static void lts_aga_fm1_n0_p6_ishres_dshres_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_n1_p6_ishres_dshres(void) -{ - lts_null(); -} -static void lts_aga_fm1_n1_p6_ishres_dshres_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_dpf0_p6_ishres_dshres(void) -{ - lts_null(); -} -static void lts_aga_fm1_dpf0_p6_ishres_dshres_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_dpf1_p6_ishres_dshres(void) -{ - lts_null(); -} -static void lts_aga_fm1_dpf1_p6_ishres_dshres_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb0_p6_ishres_dshres(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb0_p6_ishres_dshres_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb1_p6_ishres_dshres(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb1_p6_ishres_dshres_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_ham0_p6_ishres_dshres(void) -{ - lts_null(); -} -static void lts_aga_fm1_ham0_p6_ishres_dshres_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_ham1_p6_ishres_dshres(void) -{ - lts_null(); -} -static void lts_aga_fm1_ham1_p6_ishres_dshres_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb0_p6_ishres_dshres(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb0_p6_ishres_dshres_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb1_p6_ishres_dshres(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb1_p6_ishres_dshres_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_n0_p8_ishres_dshres(void) -{ - lts_null(); -} -static void lts_aga_fm1_n0_p8_ishres_dshres_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_n1_p8_ishres_dshres(void) -{ - lts_null(); -} -static void lts_aga_fm1_n1_p8_ishres_dshres_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_dpf0_p8_ishres_dshres(void) -{ - lts_null(); -} -static void lts_aga_fm1_dpf0_p8_ishres_dshres_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_dpf1_p8_ishres_dshres(void) -{ - lts_null(); -} -static void lts_aga_fm1_dpf1_p8_ishres_dshres_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb0_p8_ishres_dshres(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb0_p8_ishres_dshres_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb1_p8_ishres_dshres(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb1_p8_ishres_dshres_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_ham0_p8_ishres_dshres(void) -{ - lts_null(); -} -static void lts_aga_fm1_ham0_p8_ishres_dshres_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_ham1_p8_ishres_dshres(void) -{ - lts_null(); -} -static void lts_aga_fm1_ham1_p8_ishres_dshres_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb0_p8_ishres_dshres(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb0_p8_ishres_dshres_filtered(void) +static void lts_aga_fm1_kehb1_p6_ishres_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm1_kehb1_p8_ishres_dshres(void) +static void lts_aga_fm1_n0_p8_ishres_dshres_spr(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } + } + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } + } + internal_pixel_cnt += 1; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } + dtbuf[h][1] = dpix_val1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + } + } + dtbuf[h][3] = dpix_val3; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm1_kehb1_p8_ishres_dshres_filtered(void) +static void lts_aga_fm1_n0_p8_ishres_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm1_n0_p2_ishres_dshres_spr(void) +static void lts_aga_fm1_n1_p8_ishres_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -55659,25 +93147,13 @@ 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; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix0; - } - shiftbpl2(); - if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { - copybpl2(); } - loaded_pix = getbpl2_32(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -55686,25 +93162,13 @@ static void lts_aga_fm1_n0_p2_ishres_dshres_spr(void) sv0 = svt; } } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix1; - } - shiftbpl2(); - if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { - copybpl2(); } - loaded_pix = getbpl2_32(); uae_u32 sv1 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -55713,25 +93177,13 @@ static void lts_aga_fm1_n0_p2_ishres_dshres_spr(void) sv1 = svt; } } - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix2; - } - shiftbpl2(); - if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { - copybpl2(); } - loaded_pix = getbpl2_32(); uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -55740,25 +93192,13 @@ static void lts_aga_fm1_n0_p2_ishres_dshres_spr(void) sv2 = svt; } } - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix3; - } - shiftbpl2(); - if (bpldat_copy[0] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[0]) { - copybpl2(); } - loaded_pix = getbpl2_32(); uae_u32 sv3 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -55767,7 +93207,6 @@ static void lts_aga_fm1_n0_p2_ishres_dshres_spr(void) sv3 = svt; } } - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { @@ -55853,11 +93292,11 @@ static void lts_aga_fm1_n0_p2_ishres_dshres_spr(void) denise_cck++; } } -static void lts_aga_fm1_n0_p2_ishres_dshres_spr_filtered(void) +static void lts_aga_fm1_n1_p8_ishres_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm1_n1_p2_ishres_dshres_spr(void) +static void lts_aga_fm1_dpf0_p8_ishres_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -55868,28 +93307,13 @@ 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; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix0; - } - shiftbpl2(); - if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { - copybpl2e(); - } - if (bpldat_copy[1] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[1]) { - copybpl2o(); } - loaded_pix = getbpl2_32(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -55898,28 +93322,13 @@ static void lts_aga_fm1_n1_p2_ishres_dshres_spr(void) sv0 = svt; } } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix1; - } - shiftbpl2(); - if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { - copybpl2e(); - } - if (bpldat_copy[1] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[1]) { - copybpl2o(); } - loaded_pix = getbpl2_32(); uae_u32 sv1 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -55928,28 +93337,13 @@ static void lts_aga_fm1_n1_p2_ishres_dshres_spr(void) sv1 = svt; } } - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix2; } - shiftbpl2(); - if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { - copybpl2e(); - } - if (bpldat_copy[1] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[1]) { - copybpl2o(); - } - loaded_pix = getbpl2_32(); uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -55958,28 +93352,13 @@ static void lts_aga_fm1_n1_p2_ishres_dshres_spr(void) sv2 = svt; } } - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix3; - } - shiftbpl2(); - if (bpldat_copy[0] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[0]) { - copybpl2e(); - } - if (bpldat_copy[1] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[1]) { - copybpl2o(); } - loaded_pix = getbpl2_32(); uae_u32 sv3 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -55988,7 +93367,6 @@ static void lts_aga_fm1_n1_p2_ishres_dshres_spr(void) sv3 = svt; } } - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { @@ -56074,11 +93452,11 @@ static void lts_aga_fm1_n1_p2_ishres_dshres_spr(void) denise_cck++; } } -static void lts_aga_fm1_n1_p2_ishres_dshres_spr_filtered(void) +static void lts_aga_fm1_dpf0_p8_ishres_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm1_dpf0_p2_ishres_dshres_spr(void) +static void lts_aga_fm1_dpf1_p8_ishres_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -56089,30 +93467,13 @@ 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; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; } - shiftbpl2(); - if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { - copybpl2(); - } - loaded_pix = getbpl2_32(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -56121,30 +93482,13 @@ static void lts_aga_fm1_dpf0_p2_ishres_dshres_spr(void) sv0 = svt; } } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - if (dpf_lookup_no[pix1]) { - val1 += dblpfofs[bpldualpf2of]; - } - val1 ^= bplcon4_denise_xor_val; - dpix_val1 = denise_colors.acolors[val1]; - } - last_bpl_pix = pix1; - } - shiftbpl2(); - if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { - copybpl2(); } - loaded_pix = getbpl2_32(); uae_u32 sv1 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -56153,30 +93497,13 @@ static void lts_aga_fm1_dpf0_p2_ishres_dshres_spr(void) sv1 = svt; } } - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; - } - last_bpl_pix = pix2; - } - shiftbpl2(); - if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { - copybpl2(); } - loaded_pix = getbpl2_32(); uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -56185,30 +93512,13 @@ static void lts_aga_fm1_dpf0_p2_ishres_dshres_spr(void) sv2 = svt; } } - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - uae_u8 val3 = dpf_lookup[pix3]; - if (dpf_lookup_no[pix3]) { - val3 += dblpfofs[bpldualpf2of]; - } - val3 ^= bplcon4_denise_xor_val; - dpix_val3 = denise_colors.acolors[val3]; - } - last_bpl_pix = pix3; - } - shiftbpl2(); - if (bpldat_copy[0] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[0]) { - copybpl2(); } - loaded_pix = getbpl2_32(); uae_u32 sv3 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -56217,7 +93527,6 @@ static void lts_aga_fm1_dpf0_p2_ishres_dshres_spr(void) sv3 = svt; } } - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { @@ -56303,11 +93612,11 @@ static void lts_aga_fm1_dpf0_p2_ishres_dshres_spr(void) denise_cck++; } } -static void lts_aga_fm1_dpf0_p2_ishres_dshres_spr_filtered(void) +static void lts_aga_fm1_dpf1_p8_ishres_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm1_dpf1_p2_ishres_dshres_spr(void) +static void lts_aga_fm1_ehb0_p8_ishres_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -56318,33 +93627,13 @@ 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; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; - } - shiftbpl2(); - if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { - copybpl2e(); - } - if (bpldat_copy[1] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[1]) { - copybpl2o(); } - loaded_pix = getbpl2_32(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -56353,33 +93642,13 @@ static void lts_aga_fm1_dpf1_p2_ishres_dshres_spr(void) sv0 = svt; } } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - if (dpf_lookup_no[pix1]) { - val1 += dblpfofs[bpldualpf2of]; - } - val1 ^= bplcon4_denise_xor_val; - dpix_val1 = denise_colors.acolors[val1]; - } - last_bpl_pix = pix1; - } - shiftbpl2(); - if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { - copybpl2e(); - } - if (bpldat_copy[1] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[1]) { - copybpl2o(); } - loaded_pix = getbpl2_32(); uae_u32 sv1 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -56388,33 +93657,13 @@ static void lts_aga_fm1_dpf1_p2_ishres_dshres_spr(void) sv1 = svt; } } - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; - } - last_bpl_pix = pix2; - } - shiftbpl2(); - if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { - copybpl2e(); - } - if (bpldat_copy[1] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[1]) { - copybpl2o(); } - loaded_pix = getbpl2_32(); uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -56423,33 +93672,13 @@ static void lts_aga_fm1_dpf1_p2_ishres_dshres_spr(void) sv2 = svt; } } - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - uae_u8 val3 = dpf_lookup[pix3]; - if (dpf_lookup_no[pix3]) { - val3 += dblpfofs[bpldualpf2of]; - } - val3 ^= bplcon4_denise_xor_val; - dpix_val3 = denise_colors.acolors[val3]; - } - last_bpl_pix = pix3; - } - shiftbpl2(); - if (bpldat_copy[0] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[0]) { - copybpl2e(); - } - if (bpldat_copy[1] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[1]) { - copybpl2o(); } - loaded_pix = getbpl2_32(); uae_u32 sv3 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -56458,7 +93687,6 @@ static void lts_aga_fm1_dpf1_p2_ishres_dshres_spr(void) sv3 = svt; } } - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { @@ -56544,59 +93772,171 @@ static void lts_aga_fm1_dpf1_p2_ishres_dshres_spr(void) denise_cck++; } } -static void lts_aga_fm1_dpf1_p2_ishres_dshres_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb0_p2_ishres_dshres_spr(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb0_p2_ishres_dshres_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb1_p2_ishres_dshres_spr(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb1_p2_ishres_dshres_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_ham0_p2_ishres_dshres_spr(void) -{ - lts_null(); -} -static void lts_aga_fm1_ham0_p2_ishres_dshres_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_ham1_p2_ishres_dshres_spr(void) -{ - lts_null(); -} -static void lts_aga_fm1_ham1_p2_ishres_dshres_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb0_p2_ishres_dshres_spr(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb0_p2_ishres_dshres_spr_filtered(void) +static void lts_aga_fm1_ehb0_p8_ishres_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm1_kehb1_p2_ishres_dshres_spr(void) +static void lts_aga_fm1_ehb1_p8_ishres_dshres_spr(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } + } + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } + } + internal_pixel_cnt += 1; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } + dtbuf[h][1] = dpix_val1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + } + } + dtbuf[h][3] = dpix_val3; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm1_kehb1_p2_ishres_dshres_spr_filtered(void) +static void lts_aga_fm1_ehb1_p8_ishres_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm1_n0_p4_ishres_dshres_spr(void) +static void lts_aga_fm1_ham0_p8_ishres_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -56607,25 +93947,13 @@ 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; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix0; - } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4(); } - loaded_pix = getbpl4_32(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -56634,25 +93962,13 @@ static void lts_aga_fm1_n0_p4_ishres_dshres_spr(void) sv0 = svt; } } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix1; - } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4(); } - loaded_pix = getbpl4_32(); uae_u32 sv1 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -56661,25 +93977,13 @@ static void lts_aga_fm1_n0_p4_ishres_dshres_spr(void) sv1 = svt; } } - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix2; - } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4(); } - loaded_pix = getbpl4_32(); uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -56688,25 +93992,13 @@ static void lts_aga_fm1_n0_p4_ishres_dshres_spr(void) sv2 = svt; } } - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix3; - } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4(); } - loaded_pix = getbpl4_32(); uae_u32 sv3 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -56715,7 +94007,6 @@ static void lts_aga_fm1_n0_p4_ishres_dshres_spr(void) sv3 = svt; } } - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { @@ -56801,11 +94092,11 @@ static void lts_aga_fm1_n0_p4_ishres_dshres_spr(void) denise_cck++; } } -static void lts_aga_fm1_n0_p4_ishres_dshres_spr_filtered(void) +static void lts_aga_fm1_ham0_p8_ishres_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm1_n1_p4_ishres_dshres_spr(void) +static void lts_aga_fm1_ham1_p8_ishres_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -56816,28 +94107,13 @@ 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; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix0; - } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4e(); } - if (bpldat_copy[1] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[1]) { - copybpl4o(); - } - loaded_pix = getbpl4_32(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -56846,28 +94122,13 @@ static void lts_aga_fm1_n1_p4_ishres_dshres_spr(void) sv0 = svt; } } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix1; - } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4e(); - } - if (bpldat_copy[1] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[1]) { - copybpl4o(); } - loaded_pix = getbpl4_32(); uae_u32 sv1 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -56876,28 +94137,13 @@ static void lts_aga_fm1_n1_p4_ishres_dshres_spr(void) sv1 = svt; } } - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix2; - } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4e(); - } - if (bpldat_copy[1] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[1]) { - copybpl4o(); } - loaded_pix = getbpl4_32(); uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -56906,28 +94152,13 @@ static void lts_aga_fm1_n1_p4_ishres_dshres_spr(void) sv2 = svt; } } - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix3; - } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4e(); - } - if (bpldat_copy[1] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[1]) { - copybpl4o(); } - loaded_pix = getbpl4_32(); uae_u32 sv3 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -56936,7 +94167,6 @@ static void lts_aga_fm1_n1_p4_ishres_dshres_spr(void) sv3 = svt; } } - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { @@ -57022,11 +94252,11 @@ static void lts_aga_fm1_n1_p4_ishres_dshres_spr(void) denise_cck++; } } -static void lts_aga_fm1_n1_p4_ishres_dshres_spr_filtered(void) +static void lts_aga_fm1_ham1_p8_ishres_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm1_dpf0_p4_ishres_dshres_spr(void) +static void lts_aga_fm1_kehb0_p8_ishres_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -57037,30 +94267,13 @@ 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; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; - } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4(); } - loaded_pix = getbpl4_32(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -57069,30 +94282,13 @@ static void lts_aga_fm1_dpf0_p4_ishres_dshres_spr(void) sv0 = svt; } } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - if (dpf_lookup_no[pix1]) { - val1 += dblpfofs[bpldualpf2of]; - } - val1 ^= bplcon4_denise_xor_val; - dpix_val1 = denise_colors.acolors[val1]; - } - last_bpl_pix = pix1; - } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4(); } - loaded_pix = getbpl4_32(); uae_u32 sv1 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -57101,30 +94297,13 @@ static void lts_aga_fm1_dpf0_p4_ishres_dshres_spr(void) sv1 = svt; } } - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; - } - last_bpl_pix = pix2; - } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4(); } - loaded_pix = getbpl4_32(); uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -57133,30 +94312,13 @@ static void lts_aga_fm1_dpf0_p4_ishres_dshres_spr(void) sv2 = svt; } } - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - uae_u8 val3 = dpf_lookup[pix3]; - if (dpf_lookup_no[pix3]) { - val3 += dblpfofs[bpldualpf2of]; - } - val3 ^= bplcon4_denise_xor_val; - dpix_val3 = denise_colors.acolors[val3]; - } - last_bpl_pix = pix3; - } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4(); } - loaded_pix = getbpl4_32(); uae_u32 sv3 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -57165,7 +94327,6 @@ static void lts_aga_fm1_dpf0_p4_ishres_dshres_spr(void) sv3 = svt; } } - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { @@ -57251,11 +94412,11 @@ static void lts_aga_fm1_dpf0_p4_ishres_dshres_spr(void) denise_cck++; } } -static void lts_aga_fm1_dpf0_p4_ishres_dshres_spr_filtered(void) +static void lts_aga_fm1_kehb0_p8_ishres_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm1_dpf1_p4_ishres_dshres_spr(void) +static void lts_aga_fm1_kehb1_p8_ishres_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -57266,33 +94427,13 @@ 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; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; - } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4e(); - } - if (bpldat_copy[1] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[1]) { - copybpl4o(); } - loaded_pix = getbpl4_32(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -57301,33 +94442,13 @@ static void lts_aga_fm1_dpf1_p4_ishres_dshres_spr(void) sv0 = svt; } } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - if (dpf_lookup_no[pix1]) { - val1 += dblpfofs[bpldualpf2of]; - } - val1 ^= bplcon4_denise_xor_val; - dpix_val1 = denise_colors.acolors[val1]; - } - last_bpl_pix = pix1; - } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4e(); - } - if (bpldat_copy[1] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[1]) { - copybpl4o(); } - loaded_pix = getbpl4_32(); uae_u32 sv1 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -57336,33 +94457,13 @@ static void lts_aga_fm1_dpf1_p4_ishres_dshres_spr(void) sv1 = svt; } } - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; - } - last_bpl_pix = pix2; - } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4e(); - } - if (bpldat_copy[1] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[1]) { - copybpl4o(); } - loaded_pix = getbpl4_32(); uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -57371,33 +94472,13 @@ static void lts_aga_fm1_dpf1_p4_ishres_dshres_spr(void) sv2 = svt; } } - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - uae_u8 val3 = dpf_lookup[pix3]; - if (dpf_lookup_no[pix3]) { - val3 += dblpfofs[bpldualpf2of]; - } - val3 ^= bplcon4_denise_xor_val; - dpix_val3 = denise_colors.acolors[val3]; - } - last_bpl_pix = pix3; - } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4e(); - } - if (bpldat_copy[1] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[1]) { - copybpl4o(); } - loaded_pix = getbpl4_32(); uae_u32 sv3 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -57406,7 +94487,6 @@ static void lts_aga_fm1_dpf1_p4_ishres_dshres_spr(void) sv3 = svt; } } - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { @@ -57492,214 +94572,6 @@ static void lts_aga_fm1_dpf1_p4_ishres_dshres_spr(void) denise_cck++; } } -static void lts_aga_fm1_dpf1_p4_ishres_dshres_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb0_p4_ishres_dshres_spr(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb0_p4_ishres_dshres_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb1_p4_ishres_dshres_spr(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb1_p4_ishres_dshres_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_ham0_p4_ishres_dshres_spr(void) -{ - lts_null(); -} -static void lts_aga_fm1_ham0_p4_ishres_dshres_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_ham1_p4_ishres_dshres_spr(void) -{ - lts_null(); -} -static void lts_aga_fm1_ham1_p4_ishres_dshres_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb0_p4_ishres_dshres_spr(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb0_p4_ishres_dshres_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb1_p4_ishres_dshres_spr(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb1_p4_ishres_dshres_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_n0_p6_ishres_dshres_spr(void) -{ - lts_null(); -} -static void lts_aga_fm1_n0_p6_ishres_dshres_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_n1_p6_ishres_dshres_spr(void) -{ - lts_null(); -} -static void lts_aga_fm1_n1_p6_ishres_dshres_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_dpf0_p6_ishres_dshres_spr(void) -{ - lts_null(); -} -static void lts_aga_fm1_dpf0_p6_ishres_dshres_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_dpf1_p6_ishres_dshres_spr(void) -{ - lts_null(); -} -static void lts_aga_fm1_dpf1_p6_ishres_dshres_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb0_p6_ishres_dshres_spr(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb0_p6_ishres_dshres_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb1_p6_ishres_dshres_spr(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb1_p6_ishres_dshres_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_ham0_p6_ishres_dshres_spr(void) -{ - lts_null(); -} -static void lts_aga_fm1_ham0_p6_ishres_dshres_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_ham1_p6_ishres_dshres_spr(void) -{ - lts_null(); -} -static void lts_aga_fm1_ham1_p6_ishres_dshres_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb0_p6_ishres_dshres_spr(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb0_p6_ishres_dshres_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb1_p6_ishres_dshres_spr(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb1_p6_ishres_dshres_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_n0_p8_ishres_dshres_spr(void) -{ - lts_null(); -} -static void lts_aga_fm1_n0_p8_ishres_dshres_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_n1_p8_ishres_dshres_spr(void) -{ - lts_null(); -} -static void lts_aga_fm1_n1_p8_ishres_dshres_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_dpf0_p8_ishres_dshres_spr(void) -{ - lts_null(); -} -static void lts_aga_fm1_dpf0_p8_ishres_dshres_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_dpf1_p8_ishres_dshres_spr(void) -{ - lts_null(); -} -static void lts_aga_fm1_dpf1_p8_ishres_dshres_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb0_p8_ishres_dshres_spr(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb0_p8_ishres_dshres_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb1_p8_ishres_dshres_spr(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb1_p8_ishres_dshres_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_ham0_p8_ishres_dshres_spr(void) -{ - lts_null(); -} -static void lts_aga_fm1_ham0_p8_ishres_dshres_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_ham1_p8_ishres_dshres_spr(void) -{ - lts_null(); -} -static void lts_aga_fm1_ham1_p8_ishres_dshres_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb0_p8_ishres_dshres_spr(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb0_p8_ishres_dshres_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb1_p8_ishres_dshres_spr(void) -{ - lts_null(); -} static void lts_aga_fm1_kehb1_p8_ishres_dshres_spr_filtered(void) { lts_null(); diff --git a/linetoscr_aga_fm1_genlock.cpp b/linetoscr_aga_fm1_genlock.cpp index d65aa921..2853a915 100644 --- a/linetoscr_aga_fm1_genlock.cpp +++ b/linetoscr_aga_fm1_genlock.cpp @@ -313,54 +313,6 @@ static void lts_aga_fm1_dpf1_p4_ilores_dlores_filtered_genlock(void) lts_null(); } static void lts_aga_fm1_ehb0_p4_ilores_dlores_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb0_p4_ilores_dlores_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb1_p4_ilores_dlores_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb1_p4_ilores_dlores_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_ham0_p4_ilores_dlores_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_ham0_p4_ilores_dlores_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_ham1_p4_ilores_dlores_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_ham1_p4_ilores_dlores_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb0_p4_ilores_dlores_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb0_p4_ilores_dlores_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb1_p4_ilores_dlores_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb1_p4_ilores_dlores_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_n0_p8_ilores_dlores_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -371,7 +323,6 @@ 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; @@ -379,20 +330,7 @@ static void lts_aga_fm1_n0_p8_ilores_dlores_genlock(void) if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); - } - last_bpl_pix = pix0; } - shiftbpl8(); - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8(); - } - loaded_pix = getbpl8_32(); - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; @@ -429,11 +367,11 @@ static void lts_aga_fm1_n0_p8_ilores_dlores_genlock(void) denise_cck++; } } -static void lts_aga_fm1_n0_p8_ilores_dlores_filtered_genlock(void) +static void lts_aga_fm1_ehb0_p4_ilores_dlores_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm1_n1_p8_ilores_dlores_genlock(void) +static void lts_aga_fm1_ehb1_p4_ilores_dlores_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -444,7 +382,6 @@ 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; @@ -452,23 +389,7 @@ static void lts_aga_fm1_n1_p8_ilores_dlores_genlock(void) if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); - } - last_bpl_pix = pix0; - } - shiftbpl8(); - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8e(); - } - if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { - copybpl8o(); } - loaded_pix = getbpl8_32(); - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; @@ -505,11 +426,11 @@ static void lts_aga_fm1_n1_p8_ilores_dlores_genlock(void) denise_cck++; } } -static void lts_aga_fm1_n1_p8_ilores_dlores_filtered_genlock(void) +static void lts_aga_fm1_ehb1_p4_ilores_dlores_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm1_dpf0_p8_ilores_dlores_genlock(void) +static void lts_aga_fm1_ham0_p4_ilores_dlores_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -520,7 +441,6 @@ 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; @@ -528,25 +448,7 @@ static void lts_aga_fm1_dpf0_p8_ilores_dlores_genlock(void) if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - gpix0 = get_genlock_transparency(dpf_lookup[pix0]); - } - last_bpl_pix = pix0; - } - shiftbpl8(); - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8(); } - loaded_pix = getbpl8_32(); - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; @@ -583,11 +485,11 @@ static void lts_aga_fm1_dpf0_p8_ilores_dlores_genlock(void) denise_cck++; } } -static void lts_aga_fm1_dpf0_p8_ilores_dlores_filtered_genlock(void) +static void lts_aga_fm1_ham0_p4_ilores_dlores_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm1_dpf1_p8_ilores_dlores_genlock(void) +static void lts_aga_fm1_ham1_p4_ilores_dlores_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -598,7 +500,6 @@ 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; @@ -606,28 +507,7 @@ static void lts_aga_fm1_dpf1_p8_ilores_dlores_genlock(void) if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - gpix0 = get_genlock_transparency(dpf_lookup[pix0]); - } - last_bpl_pix = pix0; } - shiftbpl8(); - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8e(); - } - if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { - copybpl8o(); - } - loaded_pix = getbpl8_32(); - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; @@ -664,27 +544,11 @@ static void lts_aga_fm1_dpf1_p8_ilores_dlores_genlock(void) denise_cck++; } } -static void lts_aga_fm1_dpf1_p8_ilores_dlores_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb0_p8_ilores_dlores_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb0_p8_ilores_dlores_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb1_p8_ilores_dlores_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb1_p8_ilores_dlores_filtered_genlock(void) +static void lts_aga_fm1_ham1_p4_ilores_dlores_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm1_ham0_p8_ilores_dlores_genlock(void) +static void lts_aga_fm1_kehb0_p4_ilores_dlores_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -695,7 +559,6 @@ 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; @@ -703,20 +566,7 @@ static void lts_aga_fm1_ham0_p8_ilores_dlores_genlock(void) if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = decode_ham_pixel_aga(pix0); - gpix0 = get_genlock_transparency((pix0 >> 2) & 63); - } - last_bpl_pix = pix0; - } - shiftbpl8(); - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8(); } - loaded_pix = getbpl8_32(); - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; @@ -753,11 +603,11 @@ static void lts_aga_fm1_ham0_p8_ilores_dlores_genlock(void) denise_cck++; } } -static void lts_aga_fm1_ham0_p8_ilores_dlores_filtered_genlock(void) +static void lts_aga_fm1_kehb0_p4_ilores_dlores_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm1_ham1_p8_ilores_dlores_genlock(void) +static void lts_aga_fm1_kehb1_p4_ilores_dlores_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -768,7 +618,6 @@ 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; @@ -776,23 +625,7 @@ static void lts_aga_fm1_ham1_p8_ilores_dlores_genlock(void) if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = decode_ham_pixel_aga(pix0); - gpix0 = get_genlock_transparency((pix0 >> 2) & 63); - } - last_bpl_pix = pix0; - } - shiftbpl8(); - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8e(); } - if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { - copybpl8o(); - } - loaded_pix = getbpl8_32(); - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; @@ -829,27 +662,11 @@ static void lts_aga_fm1_ham1_p8_ilores_dlores_genlock(void) denise_cck++; } } -static void lts_aga_fm1_ham1_p8_ilores_dlores_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb0_p8_ilores_dlores_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb0_p8_ilores_dlores_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb1_p8_ilores_dlores_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb1_p8_ilores_dlores_filtered_genlock(void) +static void lts_aga_fm1_kehb1_p4_ilores_dlores_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm1_n0_p4_ilores_dlores_spr_genlock(void) +static void lts_aga_fm1_n0_p8_ilores_dlores_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -862,7 +679,6 @@ static void lts_aga_fm1_n0_p4_ilores_dlores_spr_genlock(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; @@ -877,30 +693,14 @@ static void lts_aga_fm1_n0_p4_ilores_dlores_spr_genlock(void) } last_bpl_pix = pix0; } - shiftbpl4(); + shiftbpl8(); if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl4(); - } - loaded_pix = getbpl4_32(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } + copybpl8(); } + loaded_pix = getbpl8_32(); loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - gpix0 = get_genlock_transparency(spix0); - - } - } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; uae_u32 t0 = dtbuf[h ^ lol][0]; @@ -935,11 +735,11 @@ static void lts_aga_fm1_n0_p4_ilores_dlores_spr_genlock(void) denise_cck++; } } -static void lts_aga_fm1_n0_p4_ilores_dlores_spr_filtered_genlock(void) +static void lts_aga_fm1_n0_p8_ilores_dlores_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm1_n1_p4_ilores_dlores_spr_genlock(void) +static void lts_aga_fm1_n1_p8_ilores_dlores_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -952,7 +752,6 @@ static void lts_aga_fm1_n1_p4_ilores_dlores_spr_genlock(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; @@ -967,33 +766,17 @@ static void lts_aga_fm1_n1_p4_ilores_dlores_spr_genlock(void) } last_bpl_pix = pix0; } - shiftbpl4(); + shiftbpl8(); if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl4e(); + copybpl8e(); } if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { - copybpl4o(); - } - loaded_pix = getbpl4_32(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } + copybpl8o(); } + loaded_pix = getbpl8_32(); loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - gpix0 = get_genlock_transparency(spix0); - - } - } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; uae_u32 t0 = dtbuf[h ^ lol][0]; @@ -1028,11 +811,11 @@ static void lts_aga_fm1_n1_p4_ilores_dlores_spr_genlock(void) denise_cck++; } } -static void lts_aga_fm1_n1_p4_ilores_dlores_spr_filtered_genlock(void) +static void lts_aga_fm1_n1_p8_ilores_dlores_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm1_dpf0_p4_ilores_dlores_spr_genlock(void) +static void lts_aga_fm1_dpf0_p8_ilores_dlores_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -1045,7 +828,6 @@ static void lts_aga_fm1_dpf0_p4_ilores_dlores_spr_genlock(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; @@ -1065,30 +847,14 @@ static void lts_aga_fm1_dpf0_p4_ilores_dlores_spr_genlock(void) } last_bpl_pix = pix0; } - shiftbpl4(); + shiftbpl8(); if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl4(); - } - loaded_pix = getbpl4_32(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } + copybpl8(); } + loaded_pix = getbpl8_32(); loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - gpix0 = get_genlock_transparency(spix0); - - } - } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; uae_u32 t0 = dtbuf[h ^ lol][0]; @@ -1123,11 +889,11 @@ static void lts_aga_fm1_dpf0_p4_ilores_dlores_spr_genlock(void) denise_cck++; } } -static void lts_aga_fm1_dpf0_p4_ilores_dlores_spr_filtered_genlock(void) +static void lts_aga_fm1_dpf0_p8_ilores_dlores_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm1_dpf1_p4_ilores_dlores_spr_genlock(void) +static void lts_aga_fm1_dpf1_p8_ilores_dlores_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -1140,7 +906,6 @@ static void lts_aga_fm1_dpf1_p4_ilores_dlores_spr_genlock(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; @@ -1160,33 +925,17 @@ static void lts_aga_fm1_dpf1_p4_ilores_dlores_spr_genlock(void) } last_bpl_pix = pix0; } - shiftbpl4(); + shiftbpl8(); if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl4e(); + copybpl8e(); } if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { - copybpl4o(); - } - loaded_pix = getbpl4_32(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } + copybpl8o(); } + loaded_pix = getbpl8_32(); loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - gpix0 = get_genlock_transparency(spix0); - - } - } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; uae_u32 t0 = dtbuf[h ^ lol][0]; @@ -1221,59 +970,11 @@ static void lts_aga_fm1_dpf1_p4_ilores_dlores_spr_genlock(void) denise_cck++; } } -static void lts_aga_fm1_dpf1_p4_ilores_dlores_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb0_p4_ilores_dlores_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb0_p4_ilores_dlores_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb1_p4_ilores_dlores_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb1_p4_ilores_dlores_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_ham0_p4_ilores_dlores_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_ham0_p4_ilores_dlores_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_ham1_p4_ilores_dlores_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_ham1_p4_ilores_dlores_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb0_p4_ilores_dlores_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb0_p4_ilores_dlores_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb1_p4_ilores_dlores_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb1_p4_ilores_dlores_spr_filtered_genlock(void) +static void lts_aga_fm1_dpf1_p8_ilores_dlores_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm1_n0_p8_ilores_dlores_spr_genlock(void) +static void lts_aga_fm1_ehb0_p8_ilores_dlores_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -1284,47 +985,16 @@ 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; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); - } - last_bpl_pix = pix0; - } - shiftbpl8(); - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8(); - } - loaded_pix = getbpl8_32(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - gpix0 = get_genlock_transparency(spix0); - - } - } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; uae_u32 t0 = dtbuf[h ^ lol][0]; @@ -1359,11 +1029,11 @@ static void lts_aga_fm1_n0_p8_ilores_dlores_spr_genlock(void) denise_cck++; } } -static void lts_aga_fm1_n0_p8_ilores_dlores_spr_filtered_genlock(void) +static void lts_aga_fm1_ehb0_p8_ilores_dlores_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm1_n1_p8_ilores_dlores_spr_genlock(void) +static void lts_aga_fm1_ehb1_p8_ilores_dlores_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -1374,50 +1044,16 @@ 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; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); - } - last_bpl_pix = pix0; - } - shiftbpl8(); - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8e(); - } - if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { - copybpl8o(); - } - loaded_pix = getbpl8_32(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - gpix0 = get_genlock_transparency(spix0); - - } - } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; uae_u32 t0 = dtbuf[h ^ lol][0]; @@ -1452,11 +1088,11 @@ static void lts_aga_fm1_n1_p8_ilores_dlores_spr_genlock(void) denise_cck++; } } -static void lts_aga_fm1_n1_p8_ilores_dlores_spr_filtered_genlock(void) +static void lts_aga_fm1_ehb1_p8_ilores_dlores_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm1_dpf0_p8_ilores_dlores_spr_genlock(void) +static void lts_aga_fm1_ham0_p8_ilores_dlores_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -1469,7 +1105,6 @@ static void lts_aga_fm1_dpf0_p8_ilores_dlores_spr_genlock(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; @@ -1479,13 +1114,8 @@ static void lts_aga_fm1_dpf0_p8_ilores_dlores_spr_genlock(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - gpix0 = get_genlock_transparency(dpf_lookup[pix0]); + dpix_val0 = decode_ham_pixel_aga(pix0); + gpix0 = get_genlock_transparency((pix0 >> 2) & 63); } last_bpl_pix = pix0; } @@ -1494,25 +1124,9 @@ static void lts_aga_fm1_dpf0_p8_ilores_dlores_spr_genlock(void) copybpl8(); } loaded_pix = getbpl8_32(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } - } loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - gpix0 = get_genlock_transparency(spix0); - - } - } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; uae_u32 t0 = dtbuf[h ^ lol][0]; @@ -1547,11 +1161,11 @@ static void lts_aga_fm1_dpf0_p8_ilores_dlores_spr_genlock(void) denise_cck++; } } -static void lts_aga_fm1_dpf0_p8_ilores_dlores_spr_filtered_genlock(void) +static void lts_aga_fm1_ham0_p8_ilores_dlores_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm1_dpf1_p8_ilores_dlores_spr_genlock(void) +static void lts_aga_fm1_ham1_p8_ilores_dlores_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -1564,7 +1178,6 @@ static void lts_aga_fm1_dpf1_p8_ilores_dlores_spr_genlock(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; @@ -1574,13 +1187,8 @@ static void lts_aga_fm1_dpf1_p8_ilores_dlores_spr_genlock(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - gpix0 = get_genlock_transparency(dpf_lookup[pix0]); + dpix_val0 = decode_ham_pixel_aga(pix0); + gpix0 = get_genlock_transparency((pix0 >> 2) & 63); } last_bpl_pix = pix0; } @@ -1592,25 +1200,9 @@ static void lts_aga_fm1_dpf1_p8_ilores_dlores_spr_genlock(void) copybpl8o(); } loaded_pix = getbpl8_32(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } - } loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - gpix0 = get_genlock_transparency(spix0); - - } - } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; uae_u32 t0 = dtbuf[h ^ lol][0]; @@ -1645,27 +1237,11 @@ static void lts_aga_fm1_dpf1_p8_ilores_dlores_spr_genlock(void) denise_cck++; } } -static void lts_aga_fm1_dpf1_p8_ilores_dlores_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb0_p8_ilores_dlores_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb0_p8_ilores_dlores_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb1_p8_ilores_dlores_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb1_p8_ilores_dlores_spr_filtered_genlock(void) +static void lts_aga_fm1_ham1_p8_ilores_dlores_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm1_ham0_p8_ilores_dlores_spr_genlock(void) +static void lts_aga_fm1_kehb0_p8_ilores_dlores_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -1676,47 +1252,16 @@ 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; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = decode_ham_pixel_aga(pix0); - gpix0 = get_genlock_transparency((pix0 >> 2) & 63); - } - last_bpl_pix = pix0; - } - shiftbpl8(); - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8(); - } - loaded_pix = getbpl8_32(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - gpix0 = get_genlock_transparency(spix0); - - } - } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; uae_u32 t0 = dtbuf[h ^ lol][0]; @@ -1751,11 +1296,11 @@ static void lts_aga_fm1_ham0_p8_ilores_dlores_spr_genlock(void) denise_cck++; } } -static void lts_aga_fm1_ham0_p8_ilores_dlores_spr_filtered_genlock(void) +static void lts_aga_fm1_kehb0_p8_ilores_dlores_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm1_ham1_p8_ilores_dlores_spr_genlock(void) +static void lts_aga_fm1_kehb1_p8_ilores_dlores_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -1766,50 +1311,16 @@ 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; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = decode_ham_pixel_aga(pix0); - gpix0 = get_genlock_transparency((pix0 >> 2) & 63); - } - last_bpl_pix = pix0; - } - shiftbpl8(); - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8e(); - } - if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { - copybpl8o(); - } - loaded_pix = getbpl8_32(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - gpix0 = get_genlock_transparency(spix0); - - } - } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; uae_u32 t0 = dtbuf[h ^ lol][0]; @@ -1844,27 +1355,11 @@ static void lts_aga_fm1_ham1_p8_ilores_dlores_spr_genlock(void) denise_cck++; } } -static void lts_aga_fm1_ham1_p8_ilores_dlores_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb0_p8_ilores_dlores_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb0_p8_ilores_dlores_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb1_p8_ilores_dlores_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb1_p8_ilores_dlores_spr_filtered_genlock(void) +static void lts_aga_fm1_kehb1_p8_ilores_dlores_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm1_n0_p4_ihires_dlores_genlock(void) +static void lts_aga_fm1_n0_p4_ilores_dlores_spr_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -1877,6 +1372,7 @@ static void lts_aga_fm1_n0_p4_ihires_dlores_genlock(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; @@ -1892,14 +1388,29 @@ static void lts_aga_fm1_n0_p4_ihires_dlores_genlock(void) last_bpl_pix = pix0; } shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { copybpl4(); } loaded_pix = getbpl4_32(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } loaded_pixs[0] = loaded_pix; - shiftbpl4(); internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; uae_u32 t0 = dtbuf[h ^ lol][0]; @@ -1934,7 +1445,11 @@ static void lts_aga_fm1_n0_p4_ihires_dlores_genlock(void) denise_cck++; } } -static void lts_aga_fm1_n0_p4_ihires_dlores_filtered_genlock(void) +static void lts_aga_fm1_n0_p4_ilores_dlores_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm1_n1_p4_ilores_dlores_spr_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -1947,6 +1462,7 @@ static void lts_aga_fm1_n0_p4_ihires_dlores_filtered_genlock(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; @@ -1962,35 +1478,32 @@ static void lts_aga_fm1_n0_p4_ihires_dlores_filtered_genlock(void) last_bpl_pix = pix0; } shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4(); + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl4e(); + } + if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { + copybpl4o(); } loaded_pix = getbpl4_32(); - loaded_pixs[0] = loaded_pix; - uae_u8 pix1 = 0; - uae_u8 gpix1 = 0xff; - uae_u32 dpix_val1 = BLANK_COLOR; - if (!denise_blank_active) { - gpix1 = get_genlock_transparency_border(); - dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; - gpix1 = get_genlock_transparency(pix1 ^ bplcon4_denise_xor_val); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; } - last_bpl_pix = pix1; - } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4(); } - loaded_pix = getbpl4_32(); - loaded_pixs[1] = loaded_pix; + loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - dpix_val0 = filter_pixel(dpix_val0, dpix_val1); - gpix0 = filter_pixel_genlock(gpix0, gpix1); + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; uae_u32 t0 = dtbuf[h ^ lol][0]; @@ -2025,7 +1538,11 @@ static void lts_aga_fm1_n0_p4_ihires_dlores_filtered_genlock(void) denise_cck++; } } -static void lts_aga_fm1_n1_p4_ihires_dlores_genlock(void) +static void lts_aga_fm1_n1_p4_ilores_dlores_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm1_dpf0_p4_ilores_dlores_spr_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -2038,6 +1555,7 @@ static void lts_aga_fm1_n1_p4_ihires_dlores_genlock(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; @@ -2047,23 +1565,40 @@ static void lts_aga_fm1_n1_p4_ihires_dlores_genlock(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + gpix0 = get_genlock_transparency(dpf_lookup[pix0]); } last_bpl_pix = pix0; } shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4e(); - } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl4o(); + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl4(); } loaded_pix = getbpl4_32(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } loaded_pixs[0] = loaded_pix; - shiftbpl4(); internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; uae_u32 t0 = dtbuf[h ^ lol][0]; @@ -2098,7 +1633,11 @@ static void lts_aga_fm1_n1_p4_ihires_dlores_genlock(void) denise_cck++; } } -static void lts_aga_fm1_n1_p4_ihires_dlores_filtered_genlock(void) +static void lts_aga_fm1_dpf0_p4_ilores_dlores_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm1_dpf1_p4_ilores_dlores_spr_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -2111,6 +1650,7 @@ static void lts_aga_fm1_n1_p4_ihires_dlores_filtered_genlock(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; @@ -2120,47 +1660,43 @@ static void lts_aga_fm1_n1_p4_ihires_dlores_filtered_genlock(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + gpix0 = get_genlock_transparency(dpf_lookup[pix0]); } last_bpl_pix = pix0; } shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { copybpl4e(); } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { copybpl4o(); } loaded_pix = getbpl4_32(); - loaded_pixs[0] = loaded_pix; - uae_u8 pix1 = 0; - uae_u8 gpix1 = 0xff; - uae_u32 dpix_val1 = BLANK_COLOR; - if (!denise_blank_active) { - gpix1 = get_genlock_transparency_border(); - dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; - gpix1 = get_genlock_transparency(pix1 ^ bplcon4_denise_xor_val); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; } - last_bpl_pix = pix1; - } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4e(); } - if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { - copybpl4o(); - } - loaded_pix = getbpl4_32(); - loaded_pixs[1] = loaded_pix; + loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - dpix_val0 = filter_pixel(dpix_val0, dpix_val1); - gpix0 = filter_pixel_genlock(gpix0, gpix1); + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; uae_u32 t0 = dtbuf[h ^ lol][0]; @@ -2195,7 +1731,11 @@ static void lts_aga_fm1_n1_p4_ihires_dlores_filtered_genlock(void) denise_cck++; } } -static void lts_aga_fm1_dpf0_p4_ihires_dlores_genlock(void) +static void lts_aga_fm1_dpf1_p4_ilores_dlores_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm1_ehb0_p4_ilores_dlores_spr_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -2206,36 +1746,33 @@ 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; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - gpix0 = get_genlock_transparency(dpf_lookup[pix0]); - } - last_bpl_pix = pix0; - } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4(); } - loaded_pix = getbpl4_32(); - loaded_pixs[0] = loaded_pix; - shiftbpl4(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; uae_u32 t0 = dtbuf[h ^ lol][0]; @@ -2270,7 +1807,11 @@ static void lts_aga_fm1_dpf0_p4_ihires_dlores_genlock(void) denise_cck++; } } -static void lts_aga_fm1_dpf0_p4_ihires_dlores_filtered_genlock(void) +static void lts_aga_fm1_ehb0_p4_ilores_dlores_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm1_ehb1_p4_ilores_dlores_spr_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -2281,62 +1822,33 @@ 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; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - gpix0 = get_genlock_transparency(dpf_lookup[pix0]); - } - last_bpl_pix = pix0; - } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4(); } - loaded_pix = getbpl4_32(); - loaded_pixs[0] = loaded_pix; - uae_u8 pix1 = 0; - uae_u8 gpix1 = 0xff; - uae_u32 dpix_val1 = BLANK_COLOR; - if (!denise_blank_active) { - gpix1 = get_genlock_transparency_border(); - dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - if (dpf_lookup_no[pix1]) { - val1 += dblpfofs[bpldualpf2of]; - } - val1 ^= bplcon4_denise_xor_val; - dpix_val1 = denise_colors.acolors[val1]; - gpix1 = get_genlock_transparency(dpf_lookup[pix1]); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; } - last_bpl_pix = pix1; - } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4(); } - loaded_pix = getbpl4_32(); - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - dpix_val0 = filter_pixel(dpix_val0, dpix_val1); - gpix0 = filter_pixel_genlock(gpix0, gpix1); + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; uae_u32 t0 = dtbuf[h ^ lol][0]; @@ -2371,7 +1883,11 @@ static void lts_aga_fm1_dpf0_p4_ihires_dlores_filtered_genlock(void) denise_cck++; } } -static void lts_aga_fm1_dpf1_p4_ihires_dlores_genlock(void) +static void lts_aga_fm1_ehb1_p4_ilores_dlores_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm1_ham0_p4_ilores_dlores_spr_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -2382,39 +1898,33 @@ 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; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - gpix0 = get_genlock_transparency(dpf_lookup[pix0]); - } - last_bpl_pix = pix0; } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4e(); - } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl4o(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } } - loaded_pix = getbpl4_32(); - loaded_pixs[0] = loaded_pix; - shiftbpl4(); internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; uae_u32 t0 = dtbuf[h ^ lol][0]; @@ -2449,7 +1959,11 @@ static void lts_aga_fm1_dpf1_p4_ihires_dlores_genlock(void) denise_cck++; } } -static void lts_aga_fm1_dpf1_p4_ihires_dlores_filtered_genlock(void) +static void lts_aga_fm1_ham0_p4_ilores_dlores_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm1_ham1_p4_ilores_dlores_spr_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -2460,68 +1974,33 @@ 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; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - gpix0 = get_genlock_transparency(dpf_lookup[pix0]); - } - last_bpl_pix = pix0; - } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4e(); } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl4o(); - } - loaded_pix = getbpl4_32(); - loaded_pixs[0] = loaded_pix; - uae_u8 pix1 = 0; - uae_u8 gpix1 = 0xff; - uae_u32 dpix_val1 = BLANK_COLOR; - if (!denise_blank_active) { - gpix1 = get_genlock_transparency_border(); - dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - if (dpf_lookup_no[pix1]) { - val1 += dblpfofs[bpldualpf2of]; - } - val1 ^= bplcon4_denise_xor_val; - dpix_val1 = denise_colors.acolors[val1]; - gpix1 = get_genlock_transparency(dpf_lookup[pix1]); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; } - last_bpl_pix = pix1; - } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4e(); } - if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { - copybpl4o(); - } - loaded_pix = getbpl4_32(); - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - dpix_val0 = filter_pixel(dpix_val0, dpix_val1); - gpix0 = filter_pixel_genlock(gpix0, gpix1); + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; uae_u32 t0 = dtbuf[h ^ lol][0]; @@ -2556,55 +2035,11 @@ static void lts_aga_fm1_dpf1_p4_ihires_dlores_filtered_genlock(void) denise_cck++; } } -static void lts_aga_fm1_ehb0_p4_ihires_dlores_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb0_p4_ihires_dlores_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb1_p4_ihires_dlores_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb1_p4_ihires_dlores_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_ham0_p4_ihires_dlores_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_ham0_p4_ihires_dlores_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_ham1_p4_ihires_dlores_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_ham1_p4_ihires_dlores_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb0_p4_ihires_dlores_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb0_p4_ihires_dlores_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb1_p4_ihires_dlores_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb1_p4_ihires_dlores_filtered_genlock(void) +static void lts_aga_fm1_ham1_p4_ilores_dlores_spr_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm1_n0_p8_ihires_dlores_genlock(void) +static void lts_aga_fm1_kehb0_p4_ilores_dlores_spr_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -2615,31 +2050,33 @@ 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; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); - } - last_bpl_pix = pix0; } - shiftbpl8(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } } - loaded_pix = getbpl8_32(); - loaded_pixs[0] = loaded_pix; - shiftbpl8(); internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; uae_u32 t0 = dtbuf[h ^ lol][0]; @@ -2674,7 +2111,11 @@ static void lts_aga_fm1_n0_p8_ihires_dlores_genlock(void) denise_cck++; } } -static void lts_aga_fm1_n0_p8_ihires_dlores_filtered_genlock(void) +static void lts_aga_fm1_kehb0_p4_ilores_dlores_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm1_kehb1_p4_ilores_dlores_spr_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -2685,52 +2126,33 @@ 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; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); - } - last_bpl_pix = pix0; - } - shiftbpl8(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8(); } - loaded_pix = getbpl8_32(); - loaded_pixs[0] = loaded_pix; - uae_u8 pix1 = 0; - uae_u8 gpix1 = 0xff; - uae_u32 dpix_val1 = BLANK_COLOR; - if (!denise_blank_active) { - gpix1 = get_genlock_transparency_border(); - dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; - gpix1 = get_genlock_transparency(pix1 ^ bplcon4_denise_xor_val); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; } - last_bpl_pix = pix1; - } - shiftbpl8(); - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8(); } - loaded_pix = getbpl8_32(); - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - dpix_val0 = filter_pixel(dpix_val0, dpix_val1); - gpix0 = filter_pixel_genlock(gpix0, gpix1); + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; uae_u32 t0 = dtbuf[h ^ lol][0]; @@ -2765,7 +2187,11 @@ static void lts_aga_fm1_n0_p8_ihires_dlores_filtered_genlock(void) denise_cck++; } } -static void lts_aga_fm1_n1_p8_ihires_dlores_genlock(void) +static void lts_aga_fm1_kehb1_p4_ilores_dlores_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm1_n0_p8_ilores_dlores_spr_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -2778,6 +2204,7 @@ static void lts_aga_fm1_n1_p8_ihires_dlores_genlock(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; @@ -2793,17 +2220,29 @@ static void lts_aga_fm1_n1_p8_ihires_dlores_genlock(void) last_bpl_pix = pix0; } shiftbpl8(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e(); - } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o(); + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8(); } loaded_pix = getbpl8_32(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } loaded_pixs[0] = loaded_pix; - shiftbpl8(); internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; uae_u32 t0 = dtbuf[h ^ lol][0]; @@ -2838,7 +2277,11 @@ static void lts_aga_fm1_n1_p8_ihires_dlores_genlock(void) denise_cck++; } } -static void lts_aga_fm1_n1_p8_ihires_dlores_filtered_genlock(void) +static void lts_aga_fm1_n0_p8_ilores_dlores_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm1_n1_p8_ilores_dlores_spr_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -2851,6 +2294,7 @@ static void lts_aga_fm1_n1_p8_ihires_dlores_filtered_genlock(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; @@ -2866,41 +2310,32 @@ static void lts_aga_fm1_n1_p8_ihires_dlores_filtered_genlock(void) last_bpl_pix = pix0; } shiftbpl8(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { copybpl8e(); } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { copybpl8o(); } loaded_pix = getbpl8_32(); - loaded_pixs[0] = loaded_pix; - uae_u8 pix1 = 0; - uae_u8 gpix1 = 0xff; - uae_u32 dpix_val1 = BLANK_COLOR; - if (!denise_blank_active) { - gpix1 = get_genlock_transparency_border(); - dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; - gpix1 = get_genlock_transparency(pix1 ^ bplcon4_denise_xor_val); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; } - last_bpl_pix = pix1; - } - shiftbpl8(); - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e(); - } - if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o(); } - loaded_pix = getbpl8_32(); - loaded_pixs[1] = loaded_pix; + loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - dpix_val0 = filter_pixel(dpix_val0, dpix_val1); - gpix0 = filter_pixel_genlock(gpix0, gpix1); + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; uae_u32 t0 = dtbuf[h ^ lol][0]; @@ -2935,7 +2370,11 @@ static void lts_aga_fm1_n1_p8_ihires_dlores_filtered_genlock(void) denise_cck++; } } -static void lts_aga_fm1_dpf0_p8_ihires_dlores_genlock(void) +static void lts_aga_fm1_n1_p8_ilores_dlores_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm1_dpf0_p8_ilores_dlores_spr_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -2948,6 +2387,7 @@ static void lts_aga_fm1_dpf0_p8_ihires_dlores_genlock(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; @@ -2968,14 +2408,29 @@ static void lts_aga_fm1_dpf0_p8_ihires_dlores_genlock(void) last_bpl_pix = pix0; } shiftbpl8(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { copybpl8(); } loaded_pix = getbpl8_32(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } loaded_pixs[0] = loaded_pix; - shiftbpl8(); internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; uae_u32 t0 = dtbuf[h ^ lol][0]; @@ -3010,7 +2465,11 @@ static void lts_aga_fm1_dpf0_p8_ihires_dlores_genlock(void) denise_cck++; } } -static void lts_aga_fm1_dpf0_p8_ihires_dlores_filtered_genlock(void) +static void lts_aga_fm1_dpf0_p8_ilores_dlores_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm1_dpf1_p8_ilores_dlores_spr_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -3023,6 +2482,7 @@ static void lts_aga_fm1_dpf0_p8_ihires_dlores_filtered_genlock(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; @@ -3043,40 +2503,32 @@ static void lts_aga_fm1_dpf0_p8_ihires_dlores_filtered_genlock(void) last_bpl_pix = pix0; } shiftbpl8(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8(); + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8e(); + } + if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { + copybpl8o(); } loaded_pix = getbpl8_32(); - loaded_pixs[0] = loaded_pix; - uae_u8 pix1 = 0; - uae_u8 gpix1 = 0xff; - uae_u32 dpix_val1 = BLANK_COLOR; - if (!denise_blank_active) { - gpix1 = get_genlock_transparency_border(); - dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - if (dpf_lookup_no[pix1]) { - val1 += dblpfofs[bpldualpf2of]; - } - val1 ^= bplcon4_denise_xor_val; - dpix_val1 = denise_colors.acolors[val1]; - gpix1 = get_genlock_transparency(dpf_lookup[pix1]); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; } - last_bpl_pix = pix1; - } - shiftbpl8(); - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8(); } - loaded_pix = getbpl8_32(); - loaded_pixs[1] = loaded_pix; + loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - dpix_val0 = filter_pixel(dpix_val0, dpix_val1); - gpix0 = filter_pixel_genlock(gpix0, gpix1); + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; uae_u32 t0 = dtbuf[h ^ lol][0]; @@ -3111,7 +2563,11 @@ static void lts_aga_fm1_dpf0_p8_ihires_dlores_filtered_genlock(void) denise_cck++; } } -static void lts_aga_fm1_dpf1_p8_ihires_dlores_genlock(void) +static void lts_aga_fm1_dpf1_p8_ilores_dlores_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm1_ehb0_p8_ilores_dlores_spr_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -3122,39 +2578,33 @@ 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; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - gpix0 = get_genlock_transparency(dpf_lookup[pix0]); - } - last_bpl_pix = pix0; } - shiftbpl8(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e(); - } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } } - loaded_pix = getbpl8_32(); - loaded_pixs[0] = loaded_pix; - shiftbpl8(); internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; uae_u32 t0 = dtbuf[h ^ lol][0]; @@ -3189,7 +2639,11 @@ static void lts_aga_fm1_dpf1_p8_ihires_dlores_genlock(void) denise_cck++; } } -static void lts_aga_fm1_dpf1_p8_ihires_dlores_filtered_genlock(void) +static void lts_aga_fm1_ehb0_p8_ilores_dlores_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm1_ehb1_p8_ilores_dlores_spr_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -3200,68 +2654,33 @@ 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; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - gpix0 = get_genlock_transparency(dpf_lookup[pix0]); - } - last_bpl_pix = pix0; } - shiftbpl8(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e(); - } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o(); - } - loaded_pix = getbpl8_32(); - loaded_pixs[0] = loaded_pix; - uae_u8 pix1 = 0; - uae_u8 gpix1 = 0xff; - uae_u32 dpix_val1 = BLANK_COLOR; - if (!denise_blank_active) { - gpix1 = get_genlock_transparency_border(); - dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - if (dpf_lookup_no[pix1]) { - val1 += dblpfofs[bpldualpf2of]; - } - val1 ^= bplcon4_denise_xor_val; - dpix_val1 = denise_colors.acolors[val1]; - gpix1 = get_genlock_transparency(dpf_lookup[pix1]); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; } - last_bpl_pix = pix1; } - shiftbpl8(); - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e(); - } - if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o(); - } - loaded_pix = getbpl8_32(); - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - dpix_val0 = filter_pixel(dpix_val0, dpix_val1); - gpix0 = filter_pixel_genlock(gpix0, gpix1); + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; uae_u32 t0 = dtbuf[h ^ lol][0]; @@ -3296,23 +2715,11 @@ static void lts_aga_fm1_dpf1_p8_ihires_dlores_filtered_genlock(void) denise_cck++; } } -static void lts_aga_fm1_ehb0_p8_ihires_dlores_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb0_p8_ihires_dlores_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb1_p8_ihires_dlores_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb1_p8_ihires_dlores_filtered_genlock(void) +static void lts_aga_fm1_ehb1_p8_ilores_dlores_spr_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm1_ham0_p8_ihires_dlores_genlock(void) +static void lts_aga_fm1_ham0_p8_ilores_dlores_spr_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -3325,6 +2732,7 @@ static void lts_aga_fm1_ham0_p8_ihires_dlores_genlock(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; @@ -3340,30 +2748,29 @@ static void lts_aga_fm1_ham0_p8_ihires_dlores_genlock(void) last_bpl_pix = pix0; } shiftbpl8(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { copybpl8(); } loaded_pix = getbpl8_32(); - loaded_pixs[0] = loaded_pix; - uae_u8 pix1 = 0; - uae_u8 gpix1 = 0xff; - uae_u32 dpix_val1 = BLANK_COLOR; - if (!denise_blank_active) { - dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - decode_ham_pixel_aga(pix1); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; } - last_bpl_pix = pix1; - } - shiftbpl8(); - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8(); } - loaded_pix = getbpl8_32(); - loaded_pixs[1] = loaded_pix; + loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; uae_u32 t0 = dtbuf[h ^ lol][0]; @@ -3398,7 +2805,11 @@ static void lts_aga_fm1_ham0_p8_ihires_dlores_genlock(void) denise_cck++; } } -static void lts_aga_fm1_ham0_p8_ihires_dlores_filtered_genlock(void) +static void lts_aga_fm1_ham0_p8_ilores_dlores_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm1_ham1_p8_ilores_dlores_spr_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -3411,6 +2822,7 @@ static void lts_aga_fm1_ham0_p8_ihires_dlores_filtered_genlock(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; @@ -3426,35 +2838,32 @@ static void lts_aga_fm1_ham0_p8_ihires_dlores_filtered_genlock(void) last_bpl_pix = pix0; } shiftbpl8(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8(); + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8e(); + } + if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { + copybpl8o(); } loaded_pix = getbpl8_32(); - loaded_pixs[0] = loaded_pix; - uae_u8 pix1 = 0; - uae_u8 gpix1 = 0xff; - uae_u32 dpix_val1 = BLANK_COLOR; - if (!denise_blank_active) { - gpix1 = get_genlock_transparency_border(); - dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - dpix_val1 = decode_ham_pixel_aga(pix1); - gpix1 = get_genlock_transparency((pix1 >> 2) & 63); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; } - last_bpl_pix = pix1; } - shiftbpl8(); - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8(); - } - loaded_pix = getbpl8_32(); - loaded_pixs[1] = loaded_pix; + loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - dpix_val0 = filter_pixel(dpix_val0, dpix_val1); - gpix0 = filter_pixel_genlock(gpix0, gpix1); + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; uae_u32 t0 = dtbuf[h ^ lol][0]; @@ -3489,7 +2898,11 @@ static void lts_aga_fm1_ham0_p8_ihires_dlores_filtered_genlock(void) denise_cck++; } } -static void lts_aga_fm1_ham1_p8_ihires_dlores_genlock(void) +static void lts_aga_fm1_ham1_p8_ilores_dlores_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm1_kehb0_p8_ilores_dlores_spr_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -3500,53 +2913,33 @@ 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; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = decode_ham_pixel_aga(pix0); - gpix0 = get_genlock_transparency((pix0 >> 2) & 63); - } - last_bpl_pix = pix0; - } - shiftbpl8(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e(); - } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o(); } - loaded_pix = getbpl8_32(); - loaded_pixs[0] = loaded_pix; - uae_u8 pix1 = 0; - uae_u8 gpix1 = 0xff; - uae_u32 dpix_val1 = BLANK_COLOR; - if (!denise_blank_active) { - dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - decode_ham_pixel_aga(pix1); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; } - last_bpl_pix = pix1; } - shiftbpl8(); - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e(); - } - if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o(); - } - loaded_pix = getbpl8_32(); - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; uae_u32 t0 = dtbuf[h ^ lol][0]; @@ -3581,7 +2974,11 @@ static void lts_aga_fm1_ham1_p8_ihires_dlores_genlock(void) denise_cck++; } } -static void lts_aga_fm1_ham1_p8_ihires_dlores_filtered_genlock(void) +static void lts_aga_fm1_kehb0_p8_ilores_dlores_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm1_kehb1_p8_ilores_dlores_spr_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -3592,58 +2989,33 @@ 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; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = decode_ham_pixel_aga(pix0); - gpix0 = get_genlock_transparency((pix0 >> 2) & 63); - } - last_bpl_pix = pix0; - } - shiftbpl8(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e(); } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o(); - } - loaded_pix = getbpl8_32(); - loaded_pixs[0] = loaded_pix; - uae_u8 pix1 = 0; - uae_u8 gpix1 = 0xff; - uae_u32 dpix_val1 = BLANK_COLOR; - if (!denise_blank_active) { - gpix1 = get_genlock_transparency_border(); - dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - dpix_val1 = decode_ham_pixel_aga(pix1); - gpix1 = get_genlock_transparency((pix1 >> 2) & 63); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; } - last_bpl_pix = pix1; } - shiftbpl8(); - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e(); - } - if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o(); - } - loaded_pix = getbpl8_32(); - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - dpix_val0 = filter_pixel(dpix_val0, dpix_val1); - gpix0 = filter_pixel_genlock(gpix0, gpix1); + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; uae_u32 t0 = dtbuf[h ^ lol][0]; @@ -3678,23 +3050,11 @@ static void lts_aga_fm1_ham1_p8_ihires_dlores_filtered_genlock(void) denise_cck++; } } -static void lts_aga_fm1_kehb0_p8_ihires_dlores_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb0_p8_ihires_dlores_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb1_p8_ihires_dlores_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb1_p8_ihires_dlores_filtered_genlock(void) +static void lts_aga_fm1_kehb1_p8_ilores_dlores_spr_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm1_n0_p4_ihires_dlores_spr_genlock(void) +static void lts_aga_fm1_n0_p4_ihires_dlores_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -3707,7 +3067,6 @@ static void lts_aga_fm1_n0_p4_ihires_dlores_spr_genlock(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; @@ -3727,26 +3086,10 @@ static void lts_aga_fm1_n0_p4_ihires_dlores_spr_genlock(void) copybpl4(); } loaded_pix = getbpl4_32(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } - } loaded_pixs[0] = loaded_pix; shiftbpl4(); internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - gpix0 = get_genlock_transparency(spix0); - - } - } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; uae_u32 t0 = dtbuf[h ^ lol][0]; @@ -3781,7 +3124,7 @@ static void lts_aga_fm1_n0_p4_ihires_dlores_spr_genlock(void) denise_cck++; } } -static void lts_aga_fm1_n0_p4_ihires_dlores_spr_filtered_genlock(void) +static void lts_aga_fm1_n0_p4_ihires_dlores_filtered_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -3794,7 +3137,6 @@ static void lts_aga_fm1_n0_p4_ihires_dlores_spr_filtered_genlock(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; @@ -3814,14 +3156,6 @@ static void lts_aga_fm1_n0_p4_ihires_dlores_spr_filtered_genlock(void) copybpl4(); } loaded_pix = getbpl4_32(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } - } loaded_pixs[0] = loaded_pix; uae_u8 pix1 = 0; uae_u8 gpix1 = 0xff; @@ -3845,15 +3179,6 @@ static void lts_aga_fm1_n0_p4_ihires_dlores_spr_filtered_genlock(void) loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - gpix0 = get_genlock_transparency(spix0); - - dpix_val1 = dpix_val0; - } - } dpix_val0 = filter_pixel(dpix_val0, dpix_val1); gpix0 = filter_pixel_genlock(gpix0, gpix1); dtbuf[h][0] = dpix_val0; @@ -3890,7 +3215,7 @@ static void lts_aga_fm1_n0_p4_ihires_dlores_spr_filtered_genlock(void) denise_cck++; } } -static void lts_aga_fm1_n1_p4_ihires_dlores_spr_genlock(void) +static void lts_aga_fm1_n1_p4_ihires_dlores_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -3903,7 +3228,6 @@ static void lts_aga_fm1_n1_p4_ihires_dlores_spr_genlock(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; @@ -3926,26 +3250,10 @@ static void lts_aga_fm1_n1_p4_ihires_dlores_spr_genlock(void) copybpl4o(); } loaded_pix = getbpl4_32(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } - } loaded_pixs[0] = loaded_pix; shiftbpl4(); internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - gpix0 = get_genlock_transparency(spix0); - - } - } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; uae_u32 t0 = dtbuf[h ^ lol][0]; @@ -3980,7 +3288,7 @@ static void lts_aga_fm1_n1_p4_ihires_dlores_spr_genlock(void) denise_cck++; } } -static void lts_aga_fm1_n1_p4_ihires_dlores_spr_filtered_genlock(void) +static void lts_aga_fm1_n1_p4_ihires_dlores_filtered_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -3993,7 +3301,6 @@ static void lts_aga_fm1_n1_p4_ihires_dlores_spr_filtered_genlock(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; @@ -4016,14 +3323,6 @@ static void lts_aga_fm1_n1_p4_ihires_dlores_spr_filtered_genlock(void) copybpl4o(); } loaded_pix = getbpl4_32(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } - } loaded_pixs[0] = loaded_pix; uae_u8 pix1 = 0; uae_u8 gpix1 = 0xff; @@ -4050,15 +3349,6 @@ static void lts_aga_fm1_n1_p4_ihires_dlores_spr_filtered_genlock(void) loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - gpix0 = get_genlock_transparency(spix0); - - dpix_val1 = dpix_val0; - } - } dpix_val0 = filter_pixel(dpix_val0, dpix_val1); gpix0 = filter_pixel_genlock(gpix0, gpix1); dtbuf[h][0] = dpix_val0; @@ -4095,7 +3385,7 @@ static void lts_aga_fm1_n1_p4_ihires_dlores_spr_filtered_genlock(void) denise_cck++; } } -static void lts_aga_fm1_dpf0_p4_ihires_dlores_spr_genlock(void) +static void lts_aga_fm1_dpf0_p4_ihires_dlores_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -4108,7 +3398,6 @@ static void lts_aga_fm1_dpf0_p4_ihires_dlores_spr_genlock(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; @@ -4133,26 +3422,10 @@ static void lts_aga_fm1_dpf0_p4_ihires_dlores_spr_genlock(void) copybpl4(); } loaded_pix = getbpl4_32(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } - } loaded_pixs[0] = loaded_pix; shiftbpl4(); internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - gpix0 = get_genlock_transparency(spix0); - - } - } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; uae_u32 t0 = dtbuf[h ^ lol][0]; @@ -4187,7 +3460,7 @@ static void lts_aga_fm1_dpf0_p4_ihires_dlores_spr_genlock(void) denise_cck++; } } -static void lts_aga_fm1_dpf0_p4_ihires_dlores_spr_filtered_genlock(void) +static void lts_aga_fm1_dpf0_p4_ihires_dlores_filtered_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -4200,7 +3473,6 @@ static void lts_aga_fm1_dpf0_p4_ihires_dlores_spr_filtered_genlock(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; @@ -4225,14 +3497,6 @@ static void lts_aga_fm1_dpf0_p4_ihires_dlores_spr_filtered_genlock(void) copybpl4(); } loaded_pix = getbpl4_32(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } - } loaded_pixs[0] = loaded_pix; uae_u8 pix1 = 0; uae_u8 gpix1 = 0xff; @@ -4261,15 +3525,6 @@ static void lts_aga_fm1_dpf0_p4_ihires_dlores_spr_filtered_genlock(void) loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - gpix0 = get_genlock_transparency(spix0); - - dpix_val1 = dpix_val0; - } - } dpix_val0 = filter_pixel(dpix_val0, dpix_val1); gpix0 = filter_pixel_genlock(gpix0, gpix1); dtbuf[h][0] = dpix_val0; @@ -4306,7 +3561,7 @@ static void lts_aga_fm1_dpf0_p4_ihires_dlores_spr_filtered_genlock(void) denise_cck++; } } -static void lts_aga_fm1_dpf1_p4_ihires_dlores_spr_genlock(void) +static void lts_aga_fm1_dpf1_p4_ihires_dlores_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -4319,7 +3574,6 @@ static void lts_aga_fm1_dpf1_p4_ihires_dlores_spr_genlock(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; @@ -4347,26 +3601,10 @@ static void lts_aga_fm1_dpf1_p4_ihires_dlores_spr_genlock(void) copybpl4o(); } loaded_pix = getbpl4_32(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } - } loaded_pixs[0] = loaded_pix; shiftbpl4(); internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - gpix0 = get_genlock_transparency(spix0); - - } - } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; uae_u32 t0 = dtbuf[h ^ lol][0]; @@ -4401,7 +3639,7 @@ static void lts_aga_fm1_dpf1_p4_ihires_dlores_spr_genlock(void) denise_cck++; } } -static void lts_aga_fm1_dpf1_p4_ihires_dlores_spr_filtered_genlock(void) +static void lts_aga_fm1_dpf1_p4_ihires_dlores_filtered_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -4414,7 +3652,6 @@ static void lts_aga_fm1_dpf1_p4_ihires_dlores_spr_filtered_genlock(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; @@ -4442,14 +3679,6 @@ static void lts_aga_fm1_dpf1_p4_ihires_dlores_spr_filtered_genlock(void) copybpl4o(); } loaded_pix = getbpl4_32(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } - } loaded_pixs[0] = loaded_pix; uae_u8 pix1 = 0; uae_u8 gpix1 = 0xff; @@ -4481,15 +3710,6 @@ static void lts_aga_fm1_dpf1_p4_ihires_dlores_spr_filtered_genlock(void) loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - gpix0 = get_genlock_transparency(spix0); - - dpix_val1 = dpix_val0; - } - } dpix_val0 = filter_pixel(dpix_val0, dpix_val1); gpix0 = filter_pixel_genlock(gpix0, gpix1); dtbuf[h][0] = dpix_val0; @@ -4526,55 +3746,7 @@ static void lts_aga_fm1_dpf1_p4_ihires_dlores_spr_filtered_genlock(void) denise_cck++; } } -static void lts_aga_fm1_ehb0_p4_ihires_dlores_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb0_p4_ihires_dlores_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb1_p4_ihires_dlores_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb1_p4_ihires_dlores_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_ham0_p4_ihires_dlores_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_ham0_p4_ihires_dlores_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_ham1_p4_ihires_dlores_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_ham1_p4_ihires_dlores_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb0_p4_ihires_dlores_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb0_p4_ihires_dlores_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb1_p4_ihires_dlores_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb1_p4_ihires_dlores_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_n0_p8_ihires_dlores_spr_genlock(void) +static void lts_aga_fm1_ehb0_p4_ihires_dlores_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -4585,48 +3757,16 @@ 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; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); - } - last_bpl_pix = pix0; - } - shiftbpl8(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8(); - } - loaded_pix = getbpl8_32(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } } - loaded_pixs[0] = loaded_pix; - shiftbpl8(); internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - gpix0 = get_genlock_transparency(spix0); - - } - } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; uae_u32 t0 = dtbuf[h ^ lol][0]; @@ -4661,7 +3801,7 @@ static void lts_aga_fm1_n0_p8_ihires_dlores_spr_genlock(void) denise_cck++; } } -static void lts_aga_fm1_n0_p8_ihires_dlores_spr_filtered_genlock(void) +static void lts_aga_fm1_ehb0_p4_ihires_dlores_filtered_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -4672,68 +3812,23 @@ 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; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); - } - last_bpl_pix = pix0; - } - shiftbpl8(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8(); - } - loaded_pix = getbpl8_32(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } } - loaded_pixs[0] = loaded_pix; uae_u8 pix1 = 0; uae_u8 gpix1 = 0xff; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { gpix1 = get_genlock_transparency_border(); dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; - gpix1 = get_genlock_transparency(pix1 ^ bplcon4_denise_xor_val); - } - last_bpl_pix = pix1; - } - shiftbpl8(); - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8(); } - loaded_pix = getbpl8_32(); - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - gpix0 = get_genlock_transparency(spix0); - - dpix_val1 = dpix_val0; - } - } dpix_val0 = filter_pixel(dpix_val0, dpix_val1); gpix0 = filter_pixel_genlock(gpix0, gpix1); dtbuf[h][0] = dpix_val0; @@ -4770,7 +3865,7 @@ static void lts_aga_fm1_n0_p8_ihires_dlores_spr_filtered_genlock(void) denise_cck++; } } -static void lts_aga_fm1_n1_p8_ihires_dlores_spr_genlock(void) +static void lts_aga_fm1_ehb1_p4_ihires_dlores_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -4781,51 +3876,16 @@ 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; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); - } - last_bpl_pix = pix0; - } - shiftbpl8(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e(); - } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o(); - } - loaded_pix = getbpl8_32(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } } - loaded_pixs[0] = loaded_pix; - shiftbpl8(); internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - gpix0 = get_genlock_transparency(spix0); - - } - } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; uae_u32 t0 = dtbuf[h ^ lol][0]; @@ -4860,7 +3920,7 @@ static void lts_aga_fm1_n1_p8_ihires_dlores_spr_genlock(void) denise_cck++; } } -static void lts_aga_fm1_n1_p8_ihires_dlores_spr_filtered_genlock(void) +static void lts_aga_fm1_ehb1_p4_ihires_dlores_filtered_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -4871,74 +3931,23 @@ 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; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); - } - last_bpl_pix = pix0; - } - shiftbpl8(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e(); } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o(); - } - loaded_pix = getbpl8_32(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } - } - loaded_pixs[0] = loaded_pix; uae_u8 pix1 = 0; uae_u8 gpix1 = 0xff; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { gpix1 = get_genlock_transparency_border(); dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; - gpix1 = get_genlock_transparency(pix1 ^ bplcon4_denise_xor_val); - } - last_bpl_pix = pix1; - } - shiftbpl8(); - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e(); } - if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o(); - } - loaded_pix = getbpl8_32(); - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - gpix0 = get_genlock_transparency(spix0); - - dpix_val1 = dpix_val0; - } - } dpix_val0 = filter_pixel(dpix_val0, dpix_val1); gpix0 = filter_pixel_genlock(gpix0, gpix1); dtbuf[h][0] = dpix_val0; @@ -4975,7 +3984,7 @@ static void lts_aga_fm1_n1_p8_ihires_dlores_spr_filtered_genlock(void) denise_cck++; } } -static void lts_aga_fm1_dpf0_p8_ihires_dlores_spr_genlock(void) +static void lts_aga_fm1_ham0_p4_ihires_dlores_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -4986,53 +3995,22 @@ 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; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - gpix0 = get_genlock_transparency(dpf_lookup[pix0]); - } - last_bpl_pix = pix0; - } - shiftbpl8(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8(); } - loaded_pix = getbpl8_32(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; } - loaded_pixs[0] = loaded_pix; - shiftbpl8(); internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - gpix0 = get_genlock_transparency(spix0); - - } - } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; uae_u32 t0 = dtbuf[h ^ lol][0]; @@ -5067,7 +4045,7 @@ static void lts_aga_fm1_dpf0_p8_ihires_dlores_spr_genlock(void) denise_cck++; } } -static void lts_aga_fm1_dpf0_p8_ihires_dlores_spr_filtered_genlock(void) +static void lts_aga_fm1_ham0_p4_ihires_dlores_filtered_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -5078,78 +4056,23 @@ 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; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - gpix0 = get_genlock_transparency(dpf_lookup[pix0]); - } - last_bpl_pix = pix0; - } - shiftbpl8(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8(); - } - loaded_pix = getbpl8_32(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } } - loaded_pixs[0] = loaded_pix; uae_u8 pix1 = 0; uae_u8 gpix1 = 0xff; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { gpix1 = get_genlock_transparency_border(); dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - if (dpf_lookup_no[pix1]) { - val1 += dblpfofs[bpldualpf2of]; - } - val1 ^= bplcon4_denise_xor_val; - dpix_val1 = denise_colors.acolors[val1]; - gpix1 = get_genlock_transparency(dpf_lookup[pix1]); - } - last_bpl_pix = pix1; - } - shiftbpl8(); - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8(); } - loaded_pix = getbpl8_32(); - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - gpix0 = get_genlock_transparency(spix0); - - dpix_val1 = dpix_val0; - } - } dpix_val0 = filter_pixel(dpix_val0, dpix_val1); gpix0 = filter_pixel_genlock(gpix0, gpix1); dtbuf[h][0] = dpix_val0; @@ -5186,7 +4109,7 @@ static void lts_aga_fm1_dpf0_p8_ihires_dlores_spr_filtered_genlock(void) denise_cck++; } } -static void lts_aga_fm1_dpf1_p8_ihires_dlores_spr_genlock(void) +static void lts_aga_fm1_ham1_p4_ihires_dlores_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -5197,56 +4120,22 @@ 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; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - gpix0 = get_genlock_transparency(dpf_lookup[pix0]); - } - last_bpl_pix = pix0; - } - shiftbpl8(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e(); - } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o(); } - loaded_pix = getbpl8_32(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; } - loaded_pixs[0] = loaded_pix; - shiftbpl8(); internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - gpix0 = get_genlock_transparency(spix0); - - } - } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; uae_u32 t0 = dtbuf[h ^ lol][0]; @@ -5281,7 +4170,7 @@ static void lts_aga_fm1_dpf1_p8_ihires_dlores_spr_genlock(void) denise_cck++; } } -static void lts_aga_fm1_dpf1_p8_ihires_dlores_spr_filtered_genlock(void) +static void lts_aga_fm1_ham1_p4_ihires_dlores_filtered_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -5292,84 +4181,23 @@ 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; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - gpix0 = get_genlock_transparency(dpf_lookup[pix0]); - } - last_bpl_pix = pix0; - } - shiftbpl8(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e(); - } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o(); - } - loaded_pix = getbpl8_32(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } } - loaded_pixs[0] = loaded_pix; uae_u8 pix1 = 0; uae_u8 gpix1 = 0xff; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { gpix1 = get_genlock_transparency_border(); dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - if (dpf_lookup_no[pix1]) { - val1 += dblpfofs[bpldualpf2of]; - } - val1 ^= bplcon4_denise_xor_val; - dpix_val1 = denise_colors.acolors[val1]; - gpix1 = get_genlock_transparency(dpf_lookup[pix1]); - } - last_bpl_pix = pix1; - } - shiftbpl8(); - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e(); - } - if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o(); } - loaded_pix = getbpl8_32(); - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - gpix0 = get_genlock_transparency(spix0); - - dpix_val1 = dpix_val0; - } - } dpix_val0 = filter_pixel(dpix_val0, dpix_val1); gpix0 = filter_pixel_genlock(gpix0, gpix1); dtbuf[h][0] = dpix_val0; @@ -5406,23 +4234,126 @@ static void lts_aga_fm1_dpf1_p8_ihires_dlores_spr_filtered_genlock(void) denise_cck++; } } -static void lts_aga_fm1_ehb0_p8_ihires_dlores_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb0_p8_ihires_dlores_spr_filtered_genlock(void) +static void lts_aga_fm1_kehb0_p4_ihires_dlores_genlock(void) { - lts_null(); -} -static void lts_aga_fm1_ehb1_p8_ihires_dlores_spr_genlock(void) -{ - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm1_ehb1_p8_ihires_dlores_spr_filtered_genlock(void) +static void lts_aga_fm1_kehb0_p4_ihires_dlores_filtered_genlock(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + gpix0 = filter_pixel_genlock(gpix0, gpix1); + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm1_ham0_p8_ihires_dlores_spr_genlock(void) +static void lts_aga_fm1_kehb1_p4_ihires_dlores_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -5433,64 +4364,150 @@ 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; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = decode_ham_pixel_aga(pix0); - gpix0 = get_genlock_transparency((pix0 >> 2) & 63); + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); } - last_bpl_pix = pix0; + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; } - shiftbpl8(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8(); + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_kehb1_p4_ihires_dlores_filtered_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; } - loaded_pix = getbpl8_32(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; } - loaded_pixs[0] = loaded_pix; uae_u8 pix1 = 0; uae_u8 gpix1 = 0xff; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); dpix_val1 = bordercolor; + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + gpix0 = filter_pixel_genlock(gpix0, gpix1); + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_n0_p8_ihires_dlores_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_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; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - decode_ham_pixel_aga(pix1); + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); } - last_bpl_pix = pix1; + last_bpl_pix = pix0; } shiftbpl8(); - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { copybpl8(); } loaded_pix = getbpl8_32(); - loaded_pixs[1] = loaded_pix; + loaded_pixs[0] = loaded_pix; + shiftbpl8(); internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - gpix0 = get_genlock_transparency(spix0); - - } - } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; uae_u32 t0 = dtbuf[h ^ lol][0]; @@ -5525,7 +4542,7 @@ static void lts_aga_fm1_ham0_p8_ihires_dlores_spr_genlock(void) denise_cck++; } } -static void lts_aga_fm1_ham0_p8_ihires_dlores_spr_filtered_genlock(void) +static void lts_aga_fm1_n0_p8_ihires_dlores_filtered_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -5538,7 +4555,6 @@ static void lts_aga_fm1_ham0_p8_ihires_dlores_spr_filtered_genlock(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; @@ -5548,8 +4564,8 @@ static void lts_aga_fm1_ham0_p8_ihires_dlores_spr_filtered_genlock(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - dpix_val0 = decode_ham_pixel_aga(pix0); - gpix0 = get_genlock_transparency((pix0 >> 2) & 63); + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); } last_bpl_pix = pix0; } @@ -5558,14 +4574,6 @@ static void lts_aga_fm1_ham0_p8_ihires_dlores_spr_filtered_genlock(void) copybpl8(); } loaded_pix = getbpl8_32(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } - } loaded_pixs[0] = loaded_pix; uae_u8 pix1 = 0; uae_u8 gpix1 = 0xff; @@ -5576,8 +4584,8 @@ static void lts_aga_fm1_ham0_p8_ihires_dlores_spr_filtered_genlock(void) if (denise_hdiw && bpl1dat_trigger) { pix1 = loaded_pixs[1]; clxdat |= bplcoltable[pix1]; - dpix_val1 = decode_ham_pixel_aga(pix1); - gpix1 = get_genlock_transparency((pix1 >> 2) & 63); + dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; + gpix1 = get_genlock_transparency(pix1 ^ bplcon4_denise_xor_val); } last_bpl_pix = pix1; } @@ -5589,15 +4597,6 @@ static void lts_aga_fm1_ham0_p8_ihires_dlores_spr_filtered_genlock(void) loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - gpix0 = get_genlock_transparency(spix0); - - dpix_val1 = dpix_val0; - } - } dpix_val0 = filter_pixel(dpix_val0, dpix_val1); gpix0 = filter_pixel_genlock(gpix0, gpix1); dtbuf[h][0] = dpix_val0; @@ -5634,7 +4633,7 @@ static void lts_aga_fm1_ham0_p8_ihires_dlores_spr_filtered_genlock(void) denise_cck++; } } -static void lts_aga_fm1_ham1_p8_ihires_dlores_spr_genlock(void) +static void lts_aga_fm1_n1_p8_ihires_dlores_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -5647,7 +4646,6 @@ static void lts_aga_fm1_ham1_p8_ihires_dlores_spr_genlock(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; @@ -5657,8 +4655,8 @@ static void lts_aga_fm1_ham1_p8_ihires_dlores_spr_genlock(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - dpix_val0 = decode_ham_pixel_aga(pix0); - gpix0 = get_genlock_transparency((pix0 >> 2) & 63); + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); } last_bpl_pix = pix0; } @@ -5670,45 +4668,10 @@ static void lts_aga_fm1_ham1_p8_ihires_dlores_spr_genlock(void) copybpl8o(); } loaded_pix = getbpl8_32(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } - } loaded_pixs[0] = loaded_pix; - uae_u8 pix1 = 0; - uae_u8 gpix1 = 0xff; - uae_u32 dpix_val1 = BLANK_COLOR; - if (!denise_blank_active) { - dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - decode_ham_pixel_aga(pix1); - } - last_bpl_pix = pix1; - } shiftbpl8(); - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e(); - } - if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o(); - } - loaded_pix = getbpl8_32(); - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - gpix0 = get_genlock_transparency(spix0); - - } - } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; uae_u32 t0 = dtbuf[h ^ lol][0]; @@ -5743,7 +4706,7 @@ static void lts_aga_fm1_ham1_p8_ihires_dlores_spr_genlock(void) denise_cck++; } } -static void lts_aga_fm1_ham1_p8_ihires_dlores_spr_filtered_genlock(void) +static void lts_aga_fm1_n1_p8_ihires_dlores_filtered_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -5756,7 +4719,6 @@ static void lts_aga_fm1_ham1_p8_ihires_dlores_spr_filtered_genlock(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; @@ -5766,8 +4728,8 @@ static void lts_aga_fm1_ham1_p8_ihires_dlores_spr_filtered_genlock(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - dpix_val0 = decode_ham_pixel_aga(pix0); - gpix0 = get_genlock_transparency((pix0 >> 2) & 63); + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); } last_bpl_pix = pix0; } @@ -5779,14 +4741,6 @@ static void lts_aga_fm1_ham1_p8_ihires_dlores_spr_filtered_genlock(void) copybpl8o(); } loaded_pix = getbpl8_32(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } - } loaded_pixs[0] = loaded_pix; uae_u8 pix1 = 0; uae_u8 gpix1 = 0xff; @@ -5797,8 +4751,8 @@ static void lts_aga_fm1_ham1_p8_ihires_dlores_spr_filtered_genlock(void) if (denise_hdiw && bpl1dat_trigger) { pix1 = loaded_pixs[1]; clxdat |= bplcoltable[pix1]; - dpix_val1 = decode_ham_pixel_aga(pix1); - gpix1 = get_genlock_transparency((pix1 >> 2) & 63); + dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; + gpix1 = get_genlock_transparency(pix1 ^ bplcon4_denise_xor_val); } last_bpl_pix = pix1; } @@ -5813,15 +4767,6 @@ static void lts_aga_fm1_ham1_p8_ihires_dlores_spr_filtered_genlock(void) loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - gpix0 = get_genlock_transparency(spix0); - - dpix_val1 = dpix_val0; - } - } dpix_val0 = filter_pixel(dpix_val0, dpix_val1); gpix0 = filter_pixel_genlock(gpix0, gpix1); dtbuf[h][0] = dpix_val0; @@ -5858,343 +4803,82 @@ static void lts_aga_fm1_ham1_p8_ihires_dlores_spr_filtered_genlock(void) denise_cck++; } } -static void lts_aga_fm1_kehb0_p8_ihires_dlores_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb0_p8_ihires_dlores_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb1_p8_ihires_dlores_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb1_p8_ihires_dlores_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_n0_p4_ishres_dlores_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_n0_p4_ishres_dlores_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_n1_p4_ishres_dlores_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_n1_p4_ishres_dlores_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_dpf0_p4_ishres_dlores_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_dpf0_p4_ishres_dlores_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_dpf1_p4_ishres_dlores_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_dpf1_p4_ishres_dlores_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb0_p4_ishres_dlores_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb0_p4_ishres_dlores_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb1_p4_ishres_dlores_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb1_p4_ishres_dlores_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_ham0_p4_ishres_dlores_genlock(void) +static void lts_aga_fm1_dpf0_p8_ihires_dlores_genlock(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_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; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + gpix0 = get_genlock_transparency(dpf_lookup[pix0]); + } + last_bpl_pix = pix0; + } + shiftbpl8(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8(); + } + loaded_pix = getbpl8_32(); + loaded_pixs[0] = loaded_pix; + shiftbpl8(); + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm1_ham0_p4_ishres_dlores_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_ham1_p4_ishres_dlores_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_ham1_p4_ishres_dlores_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb0_p4_ishres_dlores_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb0_p4_ishres_dlores_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb1_p4_ishres_dlores_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb1_p4_ishres_dlores_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_n0_p8_ishres_dlores_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_n0_p8_ishres_dlores_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_n1_p8_ishres_dlores_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_n1_p8_ishres_dlores_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_dpf0_p8_ishres_dlores_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_dpf0_p8_ishres_dlores_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_dpf1_p8_ishres_dlores_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_dpf1_p8_ishres_dlores_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb0_p8_ishres_dlores_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb0_p8_ishres_dlores_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb1_p8_ishres_dlores_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb1_p8_ishres_dlores_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_ham0_p8_ishres_dlores_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_ham0_p8_ishres_dlores_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_ham1_p8_ishres_dlores_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_ham1_p8_ishres_dlores_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb0_p8_ishres_dlores_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb0_p8_ishres_dlores_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb1_p8_ishres_dlores_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb1_p8_ishres_dlores_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_n0_p4_ishres_dlores_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_n0_p4_ishres_dlores_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_n1_p4_ishres_dlores_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_n1_p4_ishres_dlores_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_dpf0_p4_ishres_dlores_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_dpf0_p4_ishres_dlores_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_dpf1_p4_ishres_dlores_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_dpf1_p4_ishres_dlores_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb0_p4_ishres_dlores_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb0_p4_ishres_dlores_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb1_p4_ishres_dlores_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb1_p4_ishres_dlores_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_ham0_p4_ishres_dlores_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_ham0_p4_ishres_dlores_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_ham1_p4_ishres_dlores_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_ham1_p4_ishres_dlores_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb0_p4_ishres_dlores_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb0_p4_ishres_dlores_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb1_p4_ishres_dlores_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb1_p4_ishres_dlores_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_n0_p8_ishres_dlores_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_n0_p8_ishres_dlores_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_n1_p8_ishres_dlores_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_n1_p8_ishres_dlores_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_dpf0_p8_ishres_dlores_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_dpf0_p8_ishres_dlores_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_dpf1_p8_ishres_dlores_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_dpf1_p8_ishres_dlores_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb0_p8_ishres_dlores_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb0_p8_ishres_dlores_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb1_p8_ishres_dlores_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb1_p8_ishres_dlores_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_ham0_p8_ishres_dlores_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_ham0_p8_ishres_dlores_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_ham1_p8_ishres_dlores_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_ham1_p8_ishres_dlores_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb0_p8_ishres_dlores_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb0_p8_ishres_dlores_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb1_p8_ishres_dlores_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb1_p8_ishres_dlores_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_n0_p4_ilores_dhires_genlock(void) +static void lts_aga_fm1_dpf0_p8_ihires_dlores_filtered_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -6216,56 +4900,53 @@ static void lts_aga_fm1_n0_p4_ilores_dhires_genlock(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + gpix0 = get_genlock_transparency(dpf_lookup[pix0]); } last_bpl_pix = pix0; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4(); - loaded_pix = getbpl4_32(); - } - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl4(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4_32(); + shiftbpl8(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8(); } + loaded_pix = getbpl8_32(); loaded_pixs[0] = loaded_pix; - internal_pixel_cnt += 2; - uae_u8 pix2 = 0; - uae_u8 gpix2 = 0xff; - uae_u32 dpix_val2 = BLANK_COLOR; + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { - gpix2 = get_genlock_transparency_border(); - dpix_val2 = bordercolor; + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; - gpix2 = get_genlock_transparency(pix2 ^ bplcon4_denise_xor_val); + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + uae_u8 val1 = dpf_lookup[pix1]; + if (dpf_lookup_no[pix1]) { + val1 += dblpfofs[bpldualpf2of]; + } + val1 ^= bplcon4_denise_xor_val; + dpix_val1 = denise_colors.acolors[val1]; + gpix1 = get_genlock_transparency(dpf_lookup[pix1]); } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4(); - loaded_pix = getbpl4_32(); + last_bpl_pix = pix1; } - if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { - copybpl4(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4_32(); + shiftbpl8(); + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8(); } - loaded_pixs[2] = loaded_pix; - internal_pixel_cnt += 2; + loaded_pix = getbpl8_32(); + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + gpix0 = filter_pixel_genlock(gpix0, gpix1); dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; - dtbuf[h][2] = dpix_val2; - dtgbuf[h][2] = gpix2; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -6275,15 +4956,6 @@ static void lts_aga_fm1_n0_p4_ilores_dhires_genlock(void) *buf1++ = t0; *buf2++ = t0; *gbuf++ = dtgbuf[h ^ lol][0]; - uae_u32 t2 = dtbuf[h ^ lol][2]; - #ifdef DEBUGGER - if (decode_specials_debug) { - t2 = decode_denise_specials_debug(t2, cnt + 2); - } - #endif - *buf1++ = t2; - *buf2++ = t2; - *gbuf++ = dtgbuf[h ^ lol][2]; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -6307,11 +4979,7 @@ static void lts_aga_fm1_n0_p4_ilores_dhires_genlock(void) denise_cck++; } } -static void lts_aga_fm1_n0_p4_ilores_dhires_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_n1_p4_ilores_dhires_genlock(void) +static void lts_aga_fm1_dpf1_p8_ihires_dlores_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -6333,78 +5001,30 @@ static void lts_aga_fm1_n1_p4_ilores_dhires_genlock(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + gpix0 = get_genlock_transparency(dpf_lookup[pix0]); } last_bpl_pix = pix0; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4e(); - loaded_pix = getbpl4_32(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl4o(); - loaded_pix = getbpl4_32(); - } - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl4e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4_32(); + shiftbpl8(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8e(); } - if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { - copybpl4o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl4_32(); + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o(); } + loaded_pix = getbpl8_32(); loaded_pixs[0] = loaded_pix; - internal_pixel_cnt += 2; - uae_u8 pix2 = 0; - uae_u8 gpix2 = 0xff; - uae_u32 dpix_val2 = BLANK_COLOR; - if (!denise_blank_active) { - gpix2 = get_genlock_transparency_border(); - dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; - gpix2 = get_genlock_transparency(pix2 ^ bplcon4_denise_xor_val); - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4e(); - loaded_pix = getbpl4_32(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl4o(); - loaded_pix = getbpl4_32(); - } - if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { - copybpl4e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4_32(); - } - if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) { - copybpl4o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl4_32(); - } - loaded_pixs[2] = loaded_pix; - internal_pixel_cnt += 2; + shiftbpl8(); + internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; - dtbuf[h][2] = dpix_val2; - dtgbuf[h][2] = gpix2; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -6414,15 +5034,6 @@ static void lts_aga_fm1_n1_p4_ilores_dhires_genlock(void) *buf1++ = t0; *buf2++ = t0; *gbuf++ = dtgbuf[h ^ lol][0]; - uae_u32 t2 = dtbuf[h ^ lol][2]; - #ifdef DEBUGGER - if (decode_specials_debug) { - t2 = decode_denise_specials_debug(t2, cnt + 2); - } - #endif - *buf1++ = t2; - *buf2++ = t2; - *gbuf++ = dtgbuf[h ^ lol][2]; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -6446,11 +5057,7 @@ static void lts_aga_fm1_n1_p4_ilores_dhires_genlock(void) denise_cck++; } } -static void lts_aga_fm1_n1_p4_ilores_dhires_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_dpf0_p4_ilores_dhires_genlock(void) +static void lts_aga_fm1_dpf1_p8_ihires_dlores_filtered_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -6482,56 +5089,49 @@ static void lts_aga_fm1_dpf0_p4_ilores_dhires_genlock(void) } last_bpl_pix = pix0; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4(); - loaded_pix = getbpl4_32(); + shiftbpl8(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8e(); } - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl4(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4_32(); + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o(); } + loaded_pix = getbpl8_32(); loaded_pixs[0] = loaded_pix; - internal_pixel_cnt += 2; - uae_u8 pix2 = 0; - uae_u8 gpix2 = 0xff; - uae_u32 dpix_val2 = BLANK_COLOR; + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { - gpix2 = get_genlock_transparency_border(); - dpix_val2 = bordercolor; + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + uae_u8 val1 = dpf_lookup[pix1]; + if (dpf_lookup_no[pix1]) { + val1 += dblpfofs[bpldualpf2of]; } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; - gpix2 = get_genlock_transparency(dpf_lookup[pix2]); + val1 ^= bplcon4_denise_xor_val; + dpix_val1 = denise_colors.acolors[val1]; + gpix1 = get_genlock_transparency(dpf_lookup[pix1]); } - last_bpl_pix = pix2; + last_bpl_pix = pix1; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4(); - loaded_pix = getbpl4_32(); + shiftbpl8(); + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8e(); } - if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { - copybpl4(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4_32(); + if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o(); } - loaded_pixs[2] = loaded_pix; - internal_pixel_cnt += 2; + loaded_pix = getbpl8_32(); + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + gpix0 = filter_pixel_genlock(gpix0, gpix1); dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; - dtbuf[h][2] = dpix_val2; - dtgbuf[h][2] = gpix2; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -6541,15 +5141,6 @@ static void lts_aga_fm1_dpf0_p4_ilores_dhires_genlock(void) *buf1++ = t0; *buf2++ = t0; *gbuf++ = dtgbuf[h ^ lol][0]; - uae_u32 t2 = dtbuf[h ^ lol][2]; - #ifdef DEBUGGER - if (decode_specials_debug) { - t2 = decode_denise_specials_debug(t2, cnt + 2); - } - #endif - *buf1++ = t2; - *buf2++ = t2; - *gbuf++ = dtgbuf[h ^ lol][2]; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -6573,11 +5164,7 @@ static void lts_aga_fm1_dpf0_p4_ilores_dhires_genlock(void) denise_cck++; } } -static void lts_aga_fm1_dpf0_p4_ilores_dhires_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_dpf1_p4_ilores_dhires_genlock(void) +static void lts_aga_fm1_ehb0_p8_ihires_dlores_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -6588,7 +5175,6 @@ 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; @@ -6596,91 +5182,11 @@ static void lts_aga_fm1_dpf1_p4_ilores_dhires_genlock(void) if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - gpix0 = get_genlock_transparency(dpf_lookup[pix0]); - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4e(); - loaded_pix = getbpl4_32(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl4o(); - loaded_pix = getbpl4_32(); - } - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl4e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4_32(); - } - if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { - copybpl4o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl4_32(); - } - loaded_pixs[0] = loaded_pix; - internal_pixel_cnt += 2; - uae_u8 pix2 = 0; - uae_u8 gpix2 = 0xff; - uae_u32 dpix_val2 = BLANK_COLOR; - if (!denise_blank_active) { - gpix2 = get_genlock_transparency_border(); - dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; - gpix2 = get_genlock_transparency(dpf_lookup[pix2]); - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4e(); - loaded_pix = getbpl4_32(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl4o(); - loaded_pix = getbpl4_32(); - } - if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { - copybpl4e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4_32(); - } - if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) { - copybpl4o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl4_32(); } - loaded_pixs[2] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; - dtbuf[h][2] = dpix_val2; - dtgbuf[h][2] = gpix2; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -6690,15 +5196,6 @@ static void lts_aga_fm1_dpf1_p4_ilores_dhires_genlock(void) *buf1++ = t0; *buf2++ = t0; *gbuf++ = dtgbuf[h ^ lol][0]; - uae_u32 t2 = dtbuf[h ^ lol][2]; - #ifdef DEBUGGER - if (decode_specials_debug) { - t2 = decode_denise_specials_debug(t2, cnt + 2); - } - #endif - *buf1++ = t2; - *buf2++ = t2; - *gbuf++ = dtgbuf[h ^ lol][2]; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -6722,59 +5219,7 @@ static void lts_aga_fm1_dpf1_p4_ilores_dhires_genlock(void) denise_cck++; } } -static void lts_aga_fm1_dpf1_p4_ilores_dhires_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb0_p4_ilores_dhires_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb0_p4_ilores_dhires_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb1_p4_ilores_dhires_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb1_p4_ilores_dhires_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_ham0_p4_ilores_dhires_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_ham0_p4_ilores_dhires_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_ham1_p4_ilores_dhires_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_ham1_p4_ilores_dhires_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb0_p4_ilores_dhires_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb0_p4_ilores_dhires_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb1_p4_ilores_dhires_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb1_p4_ilores_dhires_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_n0_p8_ilores_dhires_genlock(void) +static void lts_aga_fm1_ehb0_p8_ihires_dlores_filtered_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -6785,7 +5230,6 @@ 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; @@ -6793,59 +5237,20 @@ static void lts_aga_fm1_n0_p8_ilores_dhires_genlock(void) if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8(); - loaded_pix = getbpl8_32(); } - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_32(); - } - loaded_pixs[0] = loaded_pix; - internal_pixel_cnt += 2; - uae_u8 pix2 = 0; - uae_u8 gpix2 = 0xff; - uae_u32 dpix_val2 = BLANK_COLOR; + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { - gpix2 = get_genlock_transparency_border(); - dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; - gpix2 = get_genlock_transparency(pix2 ^ bplcon4_denise_xor_val); - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8(); - loaded_pix = getbpl8_32(); - } - if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_32(); + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; } - loaded_pixs[2] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + gpix0 = filter_pixel_genlock(gpix0, gpix1); dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; - dtbuf[h][2] = dpix_val2; - dtgbuf[h][2] = gpix2; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -6855,15 +5260,6 @@ static void lts_aga_fm1_n0_p8_ilores_dhires_genlock(void) *buf1++ = t0; *buf2++ = t0; *gbuf++ = dtgbuf[h ^ lol][0]; - uae_u32 t2 = dtbuf[h ^ lol][2]; - #ifdef DEBUGGER - if (decode_specials_debug) { - t2 = decode_denise_specials_debug(t2, cnt + 2); - } - #endif - *buf1++ = t2; - *buf2++ = t2; - *gbuf++ = dtgbuf[h ^ lol][2]; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -6887,11 +5283,7 @@ static void lts_aga_fm1_n0_p8_ilores_dhires_genlock(void) denise_cck++; } } -static void lts_aga_fm1_n0_p8_ilores_dhires_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_n1_p8_ilores_dhires_genlock(void) +static void lts_aga_fm1_ehb1_p8_ihires_dlores_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -6902,7 +5294,6 @@ 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; @@ -6910,81 +5301,11 @@ static void lts_aga_fm1_n1_p8_ilores_dhires_genlock(void) if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8e(); - loaded_pix = getbpl8_32(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl8o(); - loaded_pix = getbpl8_32(); - } - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_32(); - } - if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { - copybpl8o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl8_32(); - } - loaded_pixs[0] = loaded_pix; - internal_pixel_cnt += 2; - uae_u8 pix2 = 0; - uae_u8 gpix2 = 0xff; - uae_u32 dpix_val2 = BLANK_COLOR; - if (!denise_blank_active) { - gpix2 = get_genlock_transparency_border(); - dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; - gpix2 = get_genlock_transparency(pix2 ^ bplcon4_denise_xor_val); - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8e(); - loaded_pix = getbpl8_32(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl8o(); - loaded_pix = getbpl8_32(); - } - if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_32(); } - if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) { - copybpl8o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl8_32(); - } - loaded_pixs[2] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; - dtbuf[h][2] = dpix_val2; - dtgbuf[h][2] = gpix2; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -6994,15 +5315,6 @@ static void lts_aga_fm1_n1_p8_ilores_dhires_genlock(void) *buf1++ = t0; *buf2++ = t0; *gbuf++ = dtgbuf[h ^ lol][0]; - uae_u32 t2 = dtbuf[h ^ lol][2]; - #ifdef DEBUGGER - if (decode_specials_debug) { - t2 = decode_denise_specials_debug(t2, cnt + 2); - } - #endif - *buf1++ = t2; - *buf2++ = t2; - *gbuf++ = dtgbuf[h ^ lol][2]; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -7026,11 +5338,7 @@ static void lts_aga_fm1_n1_p8_ilores_dhires_genlock(void) denise_cck++; } } -static void lts_aga_fm1_n1_p8_ilores_dhires_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_dpf0_p8_ilores_dhires_genlock(void) +static void lts_aga_fm1_ehb1_p8_ihires_dlores_filtered_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -7041,7 +5349,6 @@ 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; @@ -7049,69 +5356,20 @@ static void lts_aga_fm1_dpf0_p8_ilores_dhires_genlock(void) if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - gpix0 = get_genlock_transparency(dpf_lookup[pix0]); - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8(); - loaded_pix = getbpl8_32(); - } - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_32(); } - loaded_pixs[0] = loaded_pix; - internal_pixel_cnt += 2; - uae_u8 pix2 = 0; - uae_u8 gpix2 = 0xff; - uae_u32 dpix_val2 = BLANK_COLOR; + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { - gpix2 = get_genlock_transparency_border(); - dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; - gpix2 = get_genlock_transparency(dpf_lookup[pix2]); - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8(); - loaded_pix = getbpl8_32(); - } - if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_32(); + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; } - loaded_pixs[2] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + gpix0 = filter_pixel_genlock(gpix0, gpix1); dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; - dtbuf[h][2] = dpix_val2; - dtgbuf[h][2] = gpix2; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -7121,15 +5379,6 @@ static void lts_aga_fm1_dpf0_p8_ilores_dhires_genlock(void) *buf1++ = t0; *buf2++ = t0; *gbuf++ = dtgbuf[h ^ lol][0]; - uae_u32 t2 = dtbuf[h ^ lol][2]; - #ifdef DEBUGGER - if (decode_specials_debug) { - t2 = decode_denise_specials_debug(t2, cnt + 2); - } - #endif - *buf1++ = t2; - *buf2++ = t2; - *gbuf++ = dtgbuf[h ^ lol][2]; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -7153,11 +5402,7 @@ static void lts_aga_fm1_dpf0_p8_ilores_dhires_genlock(void) denise_cck++; } } -static void lts_aga_fm1_dpf0_p8_ilores_dhires_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_dpf1_p8_ilores_dhires_genlock(void) +static void lts_aga_fm1_ham0_p8_ihires_dlores_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -7179,88 +5424,38 @@ static void lts_aga_fm1_dpf1_p8_ilores_dhires_genlock(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - gpix0 = get_genlock_transparency(dpf_lookup[pix0]); + dpix_val0 = decode_ham_pixel_aga(pix0); + gpix0 = get_genlock_transparency((pix0 >> 2) & 63); } last_bpl_pix = pix0; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8e(); - loaded_pix = getbpl8_32(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl8o(); - loaded_pix = getbpl8_32(); - } - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_32(); - } - if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { - copybpl8o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl8_32(); + shiftbpl8(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8(); } + loaded_pix = getbpl8_32(); loaded_pixs[0] = loaded_pix; - internal_pixel_cnt += 2; - uae_u8 pix2 = 0; - uae_u8 gpix2 = 0xff; - uae_u32 dpix_val2 = BLANK_COLOR; + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { - gpix2 = get_genlock_transparency_border(); - dpix_val2 = bordercolor; + dpix_val1 = bordercolor; if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; - gpix2 = get_genlock_transparency(dpf_lookup[pix2]); + pix1 = loaded_pixs[1]; + decode_ham_pixel_aga(pix1); } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8e(); - loaded_pix = getbpl8_32(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl8o(); - loaded_pix = getbpl8_32(); - } - if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_32(); + last_bpl_pix = pix1; } - if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) { - copybpl8o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl8_32(); + shiftbpl8(); + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8(); } - loaded_pixs[2] = loaded_pix; - internal_pixel_cnt += 2; + loaded_pix = getbpl8_32(); + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; - dtbuf[h][2] = dpix_val2; - dtgbuf[h][2] = gpix2; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -7270,15 +5465,6 @@ static void lts_aga_fm1_dpf1_p8_ilores_dhires_genlock(void) *buf1++ = t0; *buf2++ = t0; *gbuf++ = dtgbuf[h ^ lol][0]; - uae_u32 t2 = dtbuf[h ^ lol][2]; - #ifdef DEBUGGER - if (decode_specials_debug) { - t2 = decode_denise_specials_debug(t2, cnt + 2); - } - #endif - *buf1++ = t2; - *buf2++ = t2; - *gbuf++ = dtgbuf[h ^ lol][2]; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -7302,27 +5488,7 @@ static void lts_aga_fm1_dpf1_p8_ilores_dhires_genlock(void) denise_cck++; } } -static void lts_aga_fm1_dpf1_p8_ilores_dhires_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb0_p8_ilores_dhires_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb0_p8_ilores_dhires_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb1_p8_ilores_dhires_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb1_p8_ilores_dhires_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_ham0_p8_ilores_dhires_genlock(void) +static void lts_aga_fm1_ham0_p8_ihires_dlores_filtered_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -7349,51 +5515,38 @@ static void lts_aga_fm1_ham0_p8_ilores_dhires_genlock(void) } last_bpl_pix = pix0; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8(); - loaded_pix = getbpl8_32(); - } - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + shiftbpl8(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { copybpl8(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_32(); } + loaded_pix = getbpl8_32(); loaded_pixs[0] = loaded_pix; - internal_pixel_cnt += 2; - uae_u8 pix2 = 0; - uae_u8 gpix2 = 0xff; - uae_u32 dpix_val2 = BLANK_COLOR; + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { - gpix2 = get_genlock_transparency_border(); - dpix_val2 = bordercolor; + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = decode_ham_pixel_aga(pix2); - gpix2 = get_genlock_transparency((pix2 >> 2) & 63); + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + dpix_val1 = decode_ham_pixel_aga(pix1); + gpix1 = get_genlock_transparency((pix1 >> 2) & 63); } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8(); - loaded_pix = getbpl8_32(); + last_bpl_pix = pix1; } - if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { + shiftbpl8(); + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { copybpl8(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_32(); } - loaded_pixs[2] = loaded_pix; - internal_pixel_cnt += 2; + loaded_pix = getbpl8_32(); + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + gpix0 = filter_pixel_genlock(gpix0, gpix1); dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; - dtbuf[h][2] = dpix_val2; - dtgbuf[h][2] = gpix2; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -7403,15 +5556,6 @@ static void lts_aga_fm1_ham0_p8_ilores_dhires_genlock(void) *buf1++ = t0; *buf2++ = t0; *gbuf++ = dtgbuf[h ^ lol][0]; - uae_u32 t2 = dtbuf[h ^ lol][2]; - #ifdef DEBUGGER - if (decode_specials_debug) { - t2 = decode_denise_specials_debug(t2, cnt + 2); - } - #endif - *buf1++ = t2; - *buf2++ = t2; - *gbuf++ = dtgbuf[h ^ lol][2]; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -7435,11 +5579,7 @@ static void lts_aga_fm1_ham0_p8_ilores_dhires_genlock(void) denise_cck++; } } -static void lts_aga_fm1_ham0_p8_ilores_dhires_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_ham1_p8_ilores_dhires_genlock(void) +static void lts_aga_fm1_ham1_p8_ihires_dlores_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -7466,73 +5606,39 @@ static void lts_aga_fm1_ham1_p8_ilores_dhires_genlock(void) } last_bpl_pix = pix0; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8e(); - loaded_pix = getbpl8_32(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl8o(); - loaded_pix = getbpl8_32(); - } - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + shiftbpl8(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { copybpl8e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_32(); } - if (bpldat_copy[1] && ((cmp | 0) & 127) == 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(); } + loaded_pix = getbpl8_32(); loaded_pixs[0] = loaded_pix; - internal_pixel_cnt += 2; - uae_u8 pix2 = 0; - uae_u8 gpix2 = 0xff; - uae_u32 dpix_val2 = BLANK_COLOR; + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { - gpix2 = get_genlock_transparency_border(); - dpix_val2 = bordercolor; + dpix_val1 = bordercolor; if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = decode_ham_pixel_aga(pix2); - gpix2 = get_genlock_transparency((pix2 >> 2) & 63); + pix1 = loaded_pixs[1]; + decode_ham_pixel_aga(pix1); } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8e(); - loaded_pix = getbpl8_32(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl8o(); - loaded_pix = getbpl8_32(); + last_bpl_pix = pix1; } - if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { + shiftbpl8(); + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { copybpl8e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_32(); } - if (bpldat_copy[1] && ((cmp | 2) & 127) == 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(); } - loaded_pixs[2] = loaded_pix; - internal_pixel_cnt += 2; + loaded_pix = getbpl8_32(); + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; - dtbuf[h][2] = dpix_val2; - dtgbuf[h][2] = gpix2; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -7542,15 +5648,6 @@ static void lts_aga_fm1_ham1_p8_ilores_dhires_genlock(void) *buf1++ = t0; *buf2++ = t0; *gbuf++ = dtgbuf[h ^ lol][0]; - uae_u32 t2 = dtbuf[h ^ lol][2]; - #ifdef DEBUGGER - if (decode_specials_debug) { - t2 = decode_denise_specials_debug(t2, cnt + 2); - } - #endif - *buf1++ = t2; - *buf2++ = t2; - *gbuf++ = dtgbuf[h ^ lol][2]; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -7574,27 +5671,7 @@ static void lts_aga_fm1_ham1_p8_ilores_dhires_genlock(void) denise_cck++; } } -static void lts_aga_fm1_ham1_p8_ilores_dhires_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb0_p8_ilores_dhires_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb0_p8_ilores_dhires_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb1_p8_ilores_dhires_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb1_p8_ilores_dhires_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_n0_p4_ilores_dhires_spr_genlock(void) +static void lts_aga_fm1_ham1_p8_ihires_dlores_filtered_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -7607,7 +5684,6 @@ static void lts_aga_fm1_n0_p4_ilores_dhires_spr_genlock(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; @@ -7617,89 +5693,49 @@ static void lts_aga_fm1_n0_p4_ilores_dhires_spr_genlock(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); + dpix_val0 = decode_ham_pixel_aga(pix0); + gpix0 = get_genlock_transparency((pix0 >> 2) & 63); } last_bpl_pix = pix0; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4(); - loaded_pix = getbpl4_32(); - } - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl4(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4_32(); + shiftbpl8(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8e(); } - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o(); } + loaded_pix = getbpl8_32(); loaded_pixs[0] = loaded_pix; - internal_pixel_cnt += 2; - matchsprites_aga(cnt + 2); - uae_u8 pix2 = 0; - uae_u8 gpix2 = 0xff; - uae_u32 dpix_val2 = BLANK_COLOR; + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { - gpix2 = get_genlock_transparency_border(); - dpix_val2 = bordercolor; + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; - gpix2 = get_genlock_transparency(pix2 ^ bplcon4_denise_xor_val); + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + dpix_val1 = decode_ham_pixel_aga(pix1); + gpix1 = get_genlock_transparency((pix1 >> 2) & 63); } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4(); - loaded_pix = getbpl4_32(); + last_bpl_pix = pix1; } - if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { - copybpl4(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4_32(); + shiftbpl8(); + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8e(); } - uae_u32 sv2 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv2 = svt; - } + if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o(); } - loaded_pixs[2] = loaded_pix; - internal_pixel_cnt += 2; + loaded_pix = getbpl8_32(); + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - gpix0 = get_genlock_transparency(spix0); - - } - } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + gpix0 = filter_pixel_genlock(gpix0, gpix1); dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; - if (sv2) { - uae_u32 spix2 = denise_render_sprites2(pix2, sv2); - if (spix2) { - dpix_val2 = denise_colors.acolors[spix2]; - gpix2 = get_genlock_transparency(spix2); - - } - } - dtbuf[h][2] = dpix_val2; - dtgbuf[h][2] = gpix2; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -7709,15 +5745,6 @@ static void lts_aga_fm1_n0_p4_ilores_dhires_spr_genlock(void) *buf1++ = t0; *buf2++ = t0; *gbuf++ = dtgbuf[h ^ lol][0]; - uae_u32 t2 = dtbuf[h ^ lol][2]; - #ifdef DEBUGGER - if (decode_specials_debug) { - t2 = decode_denise_specials_debug(t2, cnt + 2); - } - #endif - *buf1++ = t2; - *buf2++ = t2; - *gbuf++ = dtgbuf[h ^ lol][2]; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -7741,11 +5768,7 @@ static void lts_aga_fm1_n0_p4_ilores_dhires_spr_genlock(void) denise_cck++; } } -static void lts_aga_fm1_n0_p4_ilores_dhires_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_n1_p4_ilores_dhires_spr_genlock(void) +static void lts_aga_fm1_kehb0_p8_ihires_dlores_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -7756,123 +5779,18 @@ 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; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4e(); - loaded_pix = getbpl4_32(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl4o(); - loaded_pix = getbpl4_32(); - } - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl4e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4_32(); - } - if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { - copybpl4o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl4_32(); - } - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } - } - loaded_pixs[0] = loaded_pix; - internal_pixel_cnt += 2; - matchsprites_aga(cnt + 2); - uae_u8 pix2 = 0; - uae_u8 gpix2 = 0xff; - uae_u32 dpix_val2 = BLANK_COLOR; - if (!denise_blank_active) { - gpix2 = get_genlock_transparency_border(); - dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; - gpix2 = get_genlock_transparency(pix2 ^ bplcon4_denise_xor_val); - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4e(); - loaded_pix = getbpl4_32(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl4o(); - loaded_pix = getbpl4_32(); - } - if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { - copybpl4e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4_32(); - } - if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) { - copybpl4o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl4_32(); - } - uae_u32 sv2 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv2 = svt; - } } - loaded_pixs[2] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - gpix0 = get_genlock_transparency(spix0); - - } - } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; - if (sv2) { - uae_u32 spix2 = denise_render_sprites2(pix2, sv2); - if (spix2) { - dpix_val2 = denise_colors.acolors[spix2]; - gpix2 = get_genlock_transparency(spix2); - - } - } - dtbuf[h][2] = dpix_val2; - dtgbuf[h][2] = gpix2; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -7882,15 +5800,6 @@ static void lts_aga_fm1_n1_p4_ilores_dhires_spr_genlock(void) *buf1++ = t0; *buf2++ = t0; *gbuf++ = dtgbuf[h ^ lol][0]; - uae_u32 t2 = dtbuf[h ^ lol][2]; - #ifdef DEBUGGER - if (decode_specials_debug) { - t2 = decode_denise_specials_debug(t2, cnt + 2); - } - #endif - *buf1++ = t2; - *buf2++ = t2; - *gbuf++ = dtgbuf[h ^ lol][2]; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -7914,11 +5823,7 @@ static void lts_aga_fm1_n1_p4_ilores_dhires_spr_genlock(void) denise_cck++; } } -static void lts_aga_fm1_n1_p4_ilores_dhires_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_dpf0_p4_ilores_dhires_spr_genlock(void) +static void lts_aga_fm1_kehb0_p8_ihires_dlores_filtered_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -7929,111 +5834,27 @@ 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; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - gpix0 = get_genlock_transparency(dpf_lookup[pix0]); - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4(); - loaded_pix = getbpl4_32(); - } - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl4(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4_32(); - } - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } } - loaded_pixs[0] = loaded_pix; - internal_pixel_cnt += 2; - matchsprites_aga(cnt + 2); - uae_u8 pix2 = 0; - uae_u8 gpix2 = 0xff; - uae_u32 dpix_val2 = BLANK_COLOR; + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { - gpix2 = get_genlock_transparency_border(); - dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; - gpix2 = get_genlock_transparency(dpf_lookup[pix2]); - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4(); - loaded_pix = getbpl4_32(); - } - if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { - copybpl4(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4_32(); - } - uae_u32 sv2 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv2 = svt; - } + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; } - loaded_pixs[2] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - gpix0 = get_genlock_transparency(spix0); - - } - } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + gpix0 = filter_pixel_genlock(gpix0, gpix1); dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; - if (sv2) { - uae_u32 spix2 = denise_render_sprites2(pix2, sv2); - if (spix2) { - dpix_val2 = denise_colors.acolors[spix2]; - gpix2 = get_genlock_transparency(spix2); - - } - } - dtbuf[h][2] = dpix_val2; - dtgbuf[h][2] = gpix2; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -8043,15 +5864,6 @@ static void lts_aga_fm1_dpf0_p4_ilores_dhires_spr_genlock(void) *buf1++ = t0; *buf2++ = t0; *gbuf++ = dtgbuf[h ^ lol][0]; - uae_u32 t2 = dtbuf[h ^ lol][2]; - #ifdef DEBUGGER - if (decode_specials_debug) { - t2 = decode_denise_specials_debug(t2, cnt + 2); - } - #endif - *buf1++ = t2; - *buf2++ = t2; - *gbuf++ = dtgbuf[h ^ lol][2]; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -8075,11 +5887,7 @@ static void lts_aga_fm1_dpf0_p4_ilores_dhires_spr_genlock(void) denise_cck++; } } -static void lts_aga_fm1_dpf0_p4_ilores_dhires_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_dpf1_p4_ilores_dhires_spr_genlock(void) +static void lts_aga_fm1_kehb1_p8_ihires_dlores_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -8090,133 +5898,18 @@ 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; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - gpix0 = get_genlock_transparency(dpf_lookup[pix0]); - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4e(); - loaded_pix = getbpl4_32(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl4o(); - loaded_pix = getbpl4_32(); - } - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl4e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4_32(); - } - if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { - copybpl4o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl4_32(); - } - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } - } - loaded_pixs[0] = loaded_pix; - internal_pixel_cnt += 2; - matchsprites_aga(cnt + 2); - uae_u8 pix2 = 0; - uae_u8 gpix2 = 0xff; - uae_u32 dpix_val2 = BLANK_COLOR; - if (!denise_blank_active) { - gpix2 = get_genlock_transparency_border(); - dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; - gpix2 = get_genlock_transparency(dpf_lookup[pix2]); - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4e(); - loaded_pix = getbpl4_32(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl4o(); - loaded_pix = getbpl4_32(); - } - if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { - copybpl4e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4_32(); } - if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) { - copybpl4o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl4_32(); - } - uae_u32 sv2 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv2 = svt; - } - } - loaded_pixs[2] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - gpix0 = get_genlock_transparency(spix0); - - } - } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; - if (sv2) { - uae_u32 spix2 = denise_render_sprites2(pix2, sv2); - if (spix2) { - dpix_val2 = denise_colors.acolors[spix2]; - gpix2 = get_genlock_transparency(spix2); - - } - } - dtbuf[h][2] = dpix_val2; - dtgbuf[h][2] = gpix2; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -8226,15 +5919,6 @@ static void lts_aga_fm1_dpf1_p4_ilores_dhires_spr_genlock(void) *buf1++ = t0; *buf2++ = t0; *gbuf++ = dtgbuf[h ^ lol][0]; - uae_u32 t2 = dtbuf[h ^ lol][2]; - #ifdef DEBUGGER - if (decode_specials_debug) { - t2 = decode_denise_specials_debug(t2, cnt + 2); - } - #endif - *buf1++ = t2; - *buf2++ = t2; - *gbuf++ = dtgbuf[h ^ lol][2]; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -8258,59 +5942,7 @@ static void lts_aga_fm1_dpf1_p4_ilores_dhires_spr_genlock(void) denise_cck++; } } -static void lts_aga_fm1_dpf1_p4_ilores_dhires_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb0_p4_ilores_dhires_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb0_p4_ilores_dhires_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb1_p4_ilores_dhires_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb1_p4_ilores_dhires_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_ham0_p4_ilores_dhires_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_ham0_p4_ilores_dhires_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_ham1_p4_ilores_dhires_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_ham1_p4_ilores_dhires_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb0_p4_ilores_dhires_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb0_p4_ilores_dhires_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb1_p4_ilores_dhires_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb1_p4_ilores_dhires_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_n0_p8_ilores_dhires_spr_genlock(void) +static void lts_aga_fm1_kehb1_p8_ihires_dlores_filtered_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -8321,101 +5953,27 @@ 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; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8(); - loaded_pix = getbpl8_32(); } - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_32(); - } - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } - } - loaded_pixs[0] = loaded_pix; - internal_pixel_cnt += 2; - matchsprites_aga(cnt + 2); - uae_u8 pix2 = 0; - uae_u8 gpix2 = 0xff; - uae_u32 dpix_val2 = BLANK_COLOR; + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { - gpix2 = get_genlock_transparency_border(); - dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; - gpix2 = get_genlock_transparency(pix2 ^ bplcon4_denise_xor_val); - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8(); - loaded_pix = getbpl8_32(); - } - if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_32(); - } - uae_u32 sv2 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv2 = svt; - } + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; } - loaded_pixs[2] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - gpix0 = get_genlock_transparency(spix0); - - } - } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + gpix0 = filter_pixel_genlock(gpix0, gpix1); dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; - if (sv2) { - uae_u32 spix2 = denise_render_sprites2(pix2, sv2); - if (spix2) { - dpix_val2 = denise_colors.acolors[spix2]; - gpix2 = get_genlock_transparency(spix2); - - } - } - dtbuf[h][2] = dpix_val2; - dtgbuf[h][2] = gpix2; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -8425,15 +5983,6 @@ static void lts_aga_fm1_n0_p8_ilores_dhires_spr_genlock(void) *buf1++ = t0; *buf2++ = t0; *gbuf++ = dtgbuf[h ^ lol][0]; - uae_u32 t2 = dtbuf[h ^ lol][2]; - #ifdef DEBUGGER - if (decode_specials_debug) { - t2 = decode_denise_specials_debug(t2, cnt + 2); - } - #endif - *buf1++ = t2; - *buf2++ = t2; - *gbuf++ = dtgbuf[h ^ lol][2]; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -8457,11 +6006,7 @@ static void lts_aga_fm1_n0_p8_ilores_dhires_spr_genlock(void) denise_cck++; } } -static void lts_aga_fm1_n0_p8_ilores_dhires_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_n1_p8_ilores_dhires_spr_genlock(void) +static void lts_aga_fm1_n0_p4_ihires_dlores_spr_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -8489,28 +6034,11 @@ static void lts_aga_fm1_n1_p8_ilores_dhires_spr_genlock(void) } last_bpl_pix = pix0; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8e(); - loaded_pix = getbpl8_32(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl8o(); - loaded_pix = getbpl8_32(); - } - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_32(); - } - if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { - copybpl8o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl8_32(); + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4(); } + loaded_pix = getbpl4_32(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -8520,54 +6048,8 @@ static void lts_aga_fm1_n1_p8_ilores_dhires_spr_genlock(void) } } loaded_pixs[0] = loaded_pix; - internal_pixel_cnt += 2; - matchsprites_aga(cnt + 2); - uae_u8 pix2 = 0; - uae_u8 gpix2 = 0xff; - uae_u32 dpix_val2 = BLANK_COLOR; - if (!denise_blank_active) { - gpix2 = get_genlock_transparency_border(); - dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; - gpix2 = get_genlock_transparency(pix2 ^ bplcon4_denise_xor_val); - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8e(); - loaded_pix = getbpl8_32(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl8o(); - loaded_pix = getbpl8_32(); - } - if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_32(); - } - if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) { - copybpl8o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl8_32(); - } - uae_u32 sv2 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv2 = svt; - } - } - loaded_pixs[2] = loaded_pix; - internal_pixel_cnt += 2; + shiftbpl4(); + internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { uae_u32 spix0 = denise_render_sprites2(pix0, sv0); @@ -8579,16 +6061,6 @@ static void lts_aga_fm1_n1_p8_ilores_dhires_spr_genlock(void) } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; - if (sv2) { - uae_u32 spix2 = denise_render_sprites2(pix2, sv2); - if (spix2) { - dpix_val2 = denise_colors.acolors[spix2]; - gpix2 = get_genlock_transparency(spix2); - - } - } - dtbuf[h][2] = dpix_val2; - dtgbuf[h][2] = gpix2; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -8598,15 +6070,6 @@ static void lts_aga_fm1_n1_p8_ilores_dhires_spr_genlock(void) *buf1++ = t0; *buf2++ = t0; *gbuf++ = dtgbuf[h ^ lol][0]; - uae_u32 t2 = dtbuf[h ^ lol][2]; - #ifdef DEBUGGER - if (decode_specials_debug) { - t2 = decode_denise_specials_debug(t2, cnt + 2); - } - #endif - *buf1++ = t2; - *buf2++ = t2; - *gbuf++ = dtgbuf[h ^ lol][2]; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -8630,11 +6093,7 @@ static void lts_aga_fm1_n1_p8_ilores_dhires_spr_genlock(void) denise_cck++; } } -static void lts_aga_fm1_n1_p8_ilores_dhires_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_dpf0_p8_ilores_dhires_spr_genlock(void) +static void lts_aga_fm1_n0_p4_ihires_dlores_spr_filtered_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -8657,27 +6116,16 @@ static void lts_aga_fm1_dpf0_p8_ilores_dhires_spr_genlock(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - gpix0 = get_genlock_transparency(dpf_lookup[pix0]); + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); } last_bpl_pix = pix0; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8(); - loaded_pix = getbpl8_32(); - } - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_32(); + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4(); } + loaded_pix = getbpl4_32(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -8687,48 +6135,27 @@ static void lts_aga_fm1_dpf0_p8_ilores_dhires_spr_genlock(void) } } loaded_pixs[0] = loaded_pix; - internal_pixel_cnt += 2; - matchsprites_aga(cnt + 2); - uae_u8 pix2 = 0; - uae_u8 gpix2 = 0xff; - uae_u32 dpix_val2 = BLANK_COLOR; + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { - gpix2 = get_genlock_transparency_border(); - dpix_val2 = bordercolor; + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; - gpix2 = get_genlock_transparency(dpf_lookup[pix2]); + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; + gpix1 = get_genlock_transparency(pix1 ^ bplcon4_denise_xor_val); } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8(); - loaded_pix = getbpl8_32(); - } - if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_32(); + last_bpl_pix = pix1; } - uae_u32 sv2 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv2 = svt; - } + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4(); } - loaded_pixs[2] = loaded_pix; - internal_pixel_cnt += 2; + loaded_pix = getbpl4_32(); + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { uae_u32 spix0 = denise_render_sprites2(pix0, sv0); @@ -8736,20 +6163,13 @@ static void lts_aga_fm1_dpf0_p8_ilores_dhires_spr_genlock(void) dpix_val0 = denise_colors.acolors[spix0]; gpix0 = get_genlock_transparency(spix0); + dpix_val1 = dpix_val0; } } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + gpix0 = filter_pixel_genlock(gpix0, gpix1); dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; - if (sv2) { - uae_u32 spix2 = denise_render_sprites2(pix2, sv2); - if (spix2) { - dpix_val2 = denise_colors.acolors[spix2]; - gpix2 = get_genlock_transparency(spix2); - - } - } - dtbuf[h][2] = dpix_val2; - dtgbuf[h][2] = gpix2; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -8759,15 +6179,6 @@ static void lts_aga_fm1_dpf0_p8_ilores_dhires_spr_genlock(void) *buf1++ = t0; *buf2++ = t0; *gbuf++ = dtgbuf[h ^ lol][0]; - uae_u32 t2 = dtbuf[h ^ lol][2]; - #ifdef DEBUGGER - if (decode_specials_debug) { - t2 = decode_denise_specials_debug(t2, cnt + 2); - } - #endif - *buf1++ = t2; - *buf2++ = t2; - *gbuf++ = dtgbuf[h ^ lol][2]; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -8791,11 +6202,7 @@ static void lts_aga_fm1_dpf0_p8_ilores_dhires_spr_genlock(void) denise_cck++; } } -static void lts_aga_fm1_dpf0_p8_ilores_dhires_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_dpf1_p8_ilores_dhires_spr_genlock(void) +static void lts_aga_fm1_n1_p4_ihires_dlores_spr_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -8818,38 +6225,19 @@ static void lts_aga_fm1_dpf1_p8_ilores_dhires_spr_genlock(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - gpix0 = get_genlock_transparency(dpf_lookup[pix0]); + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); } last_bpl_pix = pix0; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8e(); - loaded_pix = getbpl8_32(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl8o(); - loaded_pix = getbpl8_32(); - } - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_32(); + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4e(); } - if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { - copybpl8o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl8_32(); + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl4o(); } + loaded_pix = getbpl4_32(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -8859,59 +6247,8 @@ static void lts_aga_fm1_dpf1_p8_ilores_dhires_spr_genlock(void) } } loaded_pixs[0] = loaded_pix; - internal_pixel_cnt += 2; - matchsprites_aga(cnt + 2); - uae_u8 pix2 = 0; - uae_u8 gpix2 = 0xff; - uae_u32 dpix_val2 = BLANK_COLOR; - if (!denise_blank_active) { - gpix2 = get_genlock_transparency_border(); - dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; - gpix2 = get_genlock_transparency(dpf_lookup[pix2]); - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8e(); - loaded_pix = getbpl8_32(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl8o(); - loaded_pix = getbpl8_32(); - } - if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_32(); - } - if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) { - copybpl8o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl8_32(); - } - uae_u32 sv2 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv2 = svt; - } - } - loaded_pixs[2] = loaded_pix; - internal_pixel_cnt += 2; + shiftbpl4(); + internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { uae_u32 spix0 = denise_render_sprites2(pix0, sv0); @@ -8923,16 +6260,6 @@ static void lts_aga_fm1_dpf1_p8_ilores_dhires_spr_genlock(void) } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; - if (sv2) { - uae_u32 spix2 = denise_render_sprites2(pix2, sv2); - if (spix2) { - dpix_val2 = denise_colors.acolors[spix2]; - gpix2 = get_genlock_transparency(spix2); - - } - } - dtbuf[h][2] = dpix_val2; - dtgbuf[h][2] = gpix2; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -8942,15 +6269,6 @@ static void lts_aga_fm1_dpf1_p8_ilores_dhires_spr_genlock(void) *buf1++ = t0; *buf2++ = t0; *gbuf++ = dtgbuf[h ^ lol][0]; - uae_u32 t2 = dtbuf[h ^ lol][2]; - #ifdef DEBUGGER - if (decode_specials_debug) { - t2 = decode_denise_specials_debug(t2, cnt + 2); - } - #endif - *buf1++ = t2; - *buf2++ = t2; - *gbuf++ = dtgbuf[h ^ lol][2]; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -8974,27 +6292,7 @@ static void lts_aga_fm1_dpf1_p8_ilores_dhires_spr_genlock(void) denise_cck++; } } -static void lts_aga_fm1_dpf1_p8_ilores_dhires_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb0_p8_ilores_dhires_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb0_p8_ilores_dhires_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb1_p8_ilores_dhires_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb1_p8_ilores_dhires_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_ham0_p8_ilores_dhires_spr_genlock(void) +static void lts_aga_fm1_n1_p4_ihires_dlores_spr_filtered_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -9017,22 +6315,19 @@ static void lts_aga_fm1_ham0_p8_ilores_dhires_spr_genlock(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - dpix_val0 = decode_ham_pixel_aga(pix0); - gpix0 = get_genlock_transparency((pix0 >> 2) & 63); + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); } last_bpl_pix = pix0; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8(); - loaded_pix = getbpl8_32(); + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4e(); } - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_32(); + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl4o(); } + loaded_pix = getbpl4_32(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -9042,43 +6337,30 @@ static void lts_aga_fm1_ham0_p8_ilores_dhires_spr_genlock(void) } } loaded_pixs[0] = loaded_pix; - internal_pixel_cnt += 2; - matchsprites_aga(cnt + 2); - uae_u8 pix2 = 0; - uae_u8 gpix2 = 0xff; - uae_u32 dpix_val2 = BLANK_COLOR; + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { - gpix2 = get_genlock_transparency_border(); - dpix_val2 = bordercolor; + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = decode_ham_pixel_aga(pix2); - gpix2 = get_genlock_transparency((pix2 >> 2) & 63); + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; + gpix1 = get_genlock_transparency(pix1 ^ bplcon4_denise_xor_val); } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8(); - loaded_pix = getbpl8_32(); + last_bpl_pix = pix1; } - if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_32(); + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4e(); } - uae_u32 sv2 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv2 = svt; - } + if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { + copybpl4o(); } - loaded_pixs[2] = loaded_pix; - internal_pixel_cnt += 2; + loaded_pix = getbpl4_32(); + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { uae_u32 spix0 = denise_render_sprites2(pix0, sv0); @@ -9086,20 +6368,13 @@ static void lts_aga_fm1_ham0_p8_ilores_dhires_spr_genlock(void) dpix_val0 = denise_colors.acolors[spix0]; gpix0 = get_genlock_transparency(spix0); + dpix_val1 = dpix_val0; } } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + gpix0 = filter_pixel_genlock(gpix0, gpix1); dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; - if (sv2) { - uae_u32 spix2 = denise_render_sprites2(pix2, sv2); - if (spix2) { - dpix_val2 = denise_colors.acolors[spix2]; - gpix2 = get_genlock_transparency(spix2); - - } - } - dtbuf[h][2] = dpix_val2; - dtgbuf[h][2] = gpix2; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -9109,15 +6384,6 @@ static void lts_aga_fm1_ham0_p8_ilores_dhires_spr_genlock(void) *buf1++ = t0; *buf2++ = t0; *gbuf++ = dtgbuf[h ^ lol][0]; - uae_u32 t2 = dtbuf[h ^ lol][2]; - #ifdef DEBUGGER - if (decode_specials_debug) { - t2 = decode_denise_specials_debug(t2, cnt + 2); - } - #endif - *buf1++ = t2; - *buf2++ = t2; - *gbuf++ = dtgbuf[h ^ lol][2]; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -9141,11 +6407,7 @@ static void lts_aga_fm1_ham0_p8_ilores_dhires_spr_genlock(void) denise_cck++; } } -static void lts_aga_fm1_ham0_p8_ilores_dhires_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_ham1_p8_ilores_dhires_spr_genlock(void) +static void lts_aga_fm1_dpf0_p4_ihires_dlores_spr_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -9168,33 +6430,21 @@ static void lts_aga_fm1_ham1_p8_ilores_dhires_spr_genlock(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - dpix_val0 = decode_ham_pixel_aga(pix0); - gpix0 = get_genlock_transparency((pix0 >> 2) & 63); + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + gpix0 = get_genlock_transparency(dpf_lookup[pix0]); } last_bpl_pix = pix0; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8e(); - loaded_pix = getbpl8_32(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl8o(); - loaded_pix = getbpl8_32(); - } - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_32(); - } - if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { - copybpl8o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl8_32(); + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4(); } + loaded_pix = getbpl4_32(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -9204,54 +6454,8 @@ static void lts_aga_fm1_ham1_p8_ilores_dhires_spr_genlock(void) } } loaded_pixs[0] = loaded_pix; - internal_pixel_cnt += 2; - matchsprites_aga(cnt + 2); - uae_u8 pix2 = 0; - uae_u8 gpix2 = 0xff; - uae_u32 dpix_val2 = BLANK_COLOR; - if (!denise_blank_active) { - gpix2 = get_genlock_transparency_border(); - dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = decode_ham_pixel_aga(pix2); - gpix2 = get_genlock_transparency((pix2 >> 2) & 63); - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8e(); - loaded_pix = getbpl8_32(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl8o(); - loaded_pix = getbpl8_32(); - } - if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_32(); - } - if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) { - copybpl8o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl8_32(); - } - uae_u32 sv2 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv2 = svt; - } - } - loaded_pixs[2] = loaded_pix; - internal_pixel_cnt += 2; + shiftbpl4(); + internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { uae_u32 spix0 = denise_render_sprites2(pix0, sv0); @@ -9263,16 +6467,6 @@ static void lts_aga_fm1_ham1_p8_ilores_dhires_spr_genlock(void) } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; - if (sv2) { - uae_u32 spix2 = denise_render_sprites2(pix2, sv2); - if (spix2) { - dpix_val2 = denise_colors.acolors[spix2]; - gpix2 = get_genlock_transparency(spix2); - - } - } - dtbuf[h][2] = dpix_val2; - dtgbuf[h][2] = gpix2; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -9282,15 +6476,6 @@ static void lts_aga_fm1_ham1_p8_ilores_dhires_spr_genlock(void) *buf1++ = t0; *buf2++ = t0; *gbuf++ = dtgbuf[h ^ lol][0]; - uae_u32 t2 = dtbuf[h ^ lol][2]; - #ifdef DEBUGGER - if (decode_specials_debug) { - t2 = decode_denise_specials_debug(t2, cnt + 2); - } - #endif - *buf1++ = t2; - *buf2++ = t2; - *gbuf++ = dtgbuf[h ^ lol][2]; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -9314,27 +6499,7 @@ static void lts_aga_fm1_ham1_p8_ilores_dhires_spr_genlock(void) denise_cck++; } } -static void lts_aga_fm1_ham1_p8_ilores_dhires_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb0_p8_ilores_dhires_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb0_p8_ilores_dhires_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb1_p8_ilores_dhires_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb1_p8_ilores_dhires_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_n0_p4_ihires_dhires_genlock(void) +static void lts_aga_fm1_dpf0_p4_ihires_dlores_spr_filtered_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -9347,6 +6512,7 @@ static void lts_aga_fm1_n0_p4_ihires_dhires_genlock(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; @@ -9356,8 +6522,13 @@ static void lts_aga_fm1_n0_p4_ihires_dhires_genlock(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + gpix0 = get_genlock_transparency(dpf_lookup[pix0]); } last_bpl_pix = pix0; } @@ -9366,34 +6537,55 @@ static void lts_aga_fm1_n0_p4_ihires_dhires_genlock(void) copybpl4(); } loaded_pix = getbpl4_32(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } loaded_pixs[0] = loaded_pix; - internal_pixel_cnt += 2; - uae_u8 pix2 = 0; - uae_u8 gpix2 = 0xff; - uae_u32 dpix_val2 = BLANK_COLOR; + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { - gpix2 = get_genlock_transparency_border(); - dpix_val2 = bordercolor; + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; - gpix2 = get_genlock_transparency(pix2 ^ bplcon4_denise_xor_val); + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + uae_u8 val1 = dpf_lookup[pix1]; + if (dpf_lookup_no[pix1]) { + val1 += dblpfofs[bpldualpf2of]; + } + val1 ^= bplcon4_denise_xor_val; + dpix_val1 = denise_colors.acolors[val1]; + gpix1 = get_genlock_transparency(dpf_lookup[pix1]); } - last_bpl_pix = pix2; + last_bpl_pix = pix1; } shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { copybpl4(); } loaded_pix = getbpl4_32(); - loaded_pixs[2] = loaded_pix; - internal_pixel_cnt += 2; + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + gpix0 = filter_pixel_genlock(gpix0, gpix1); dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; - dtbuf[h][2] = dpix_val2; - dtgbuf[h][2] = gpix2; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -9403,15 +6595,6 @@ static void lts_aga_fm1_n0_p4_ihires_dhires_genlock(void) *buf1++ = t0; *buf2++ = t0; *gbuf++ = dtgbuf[h ^ lol][0]; - uae_u32 t2 = dtbuf[h ^ lol][2]; - #ifdef DEBUGGER - if (decode_specials_debug) { - t2 = decode_denise_specials_debug(t2, cnt + 2); - } - #endif - *buf1++ = t2; - *buf2++ = t2; - *gbuf++ = dtgbuf[h ^ lol][2]; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -9435,11 +6618,7 @@ static void lts_aga_fm1_n0_p4_ihires_dhires_genlock(void) denise_cck++; } } -static void lts_aga_fm1_n0_p4_ihires_dhires_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_n1_p4_ihires_dhires_genlock(void) +static void lts_aga_fm1_dpf1_p4_ihires_dlores_spr_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -9452,6 +6631,7 @@ static void lts_aga_fm1_n1_p4_ihires_dhires_genlock(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; @@ -9461,8 +6641,13 @@ static void lts_aga_fm1_n1_p4_ihires_dhires_genlock(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + gpix0 = get_genlock_transparency(dpf_lookup[pix0]); } last_bpl_pix = pix0; } @@ -9474,37 +6659,28 @@ static void lts_aga_fm1_n1_p4_ihires_dhires_genlock(void) copybpl4o(); } loaded_pix = getbpl4_32(); - loaded_pixs[0] = loaded_pix; - internal_pixel_cnt += 2; - uae_u8 pix2 = 0; - uae_u8 gpix2 = 0xff; - uae_u32 dpix_val2 = BLANK_COLOR; - if (!denise_blank_active) { - gpix2 = get_genlock_transparency_border(); - dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; - gpix2 = get_genlock_transparency(pix2 ^ bplcon4_denise_xor_val); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; } - last_bpl_pix = pix2; } + loaded_pixs[0] = loaded_pix; shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4e(); - } - if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { - copybpl4o(); - } - loaded_pix = getbpl4_32(); - loaded_pixs[2] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; - dtbuf[h][2] = dpix_val2; - dtgbuf[h][2] = gpix2; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -9514,15 +6690,6 @@ static void lts_aga_fm1_n1_p4_ihires_dhires_genlock(void) *buf1++ = t0; *buf2++ = t0; *gbuf++ = dtgbuf[h ^ lol][0]; - uae_u32 t2 = dtbuf[h ^ lol][2]; - #ifdef DEBUGGER - if (decode_specials_debug) { - t2 = decode_denise_specials_debug(t2, cnt + 2); - } - #endif - *buf1++ = t2; - *buf2++ = t2; - *gbuf++ = dtgbuf[h ^ lol][2]; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -9546,11 +6713,7 @@ static void lts_aga_fm1_n1_p4_ihires_dhires_genlock(void) denise_cck++; } } -static void lts_aga_fm1_n1_p4_ihires_dhires_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_dpf0_p4_ihires_dhires_genlock(void) +static void lts_aga_fm1_dpf1_p4_ihires_dlores_spr_filtered_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -9563,6 +6726,7 @@ static void lts_aga_fm1_dpf0_p4_ihires_dhires_genlock(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; @@ -9584,42 +6748,64 @@ static void lts_aga_fm1_dpf0_p4_ihires_dhires_genlock(void) } shiftbpl4(); if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4(); + copybpl4e(); + } + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl4o(); } loaded_pix = getbpl4_32(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } loaded_pixs[0] = loaded_pix; - internal_pixel_cnt += 2; - uae_u8 pix2 = 0; - uae_u8 gpix2 = 0xff; - uae_u32 dpix_val2 = BLANK_COLOR; + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { - gpix2 = get_genlock_transparency_border(); - dpix_val2 = bordercolor; + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + uae_u8 val1 = dpf_lookup[pix1]; + if (dpf_lookup_no[pix1]) { + val1 += dblpfofs[bpldualpf2of]; } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; - gpix2 = get_genlock_transparency(dpf_lookup[pix2]); + val1 ^= bplcon4_denise_xor_val; + dpix_val1 = denise_colors.acolors[val1]; + gpix1 = get_genlock_transparency(dpf_lookup[pix1]); } - last_bpl_pix = pix2; + last_bpl_pix = pix1; } shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4(); + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4e(); + } + if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { + copybpl4o(); } loaded_pix = getbpl4_32(); - loaded_pixs[2] = loaded_pix; - internal_pixel_cnt += 2; + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + gpix0 = filter_pixel_genlock(gpix0, gpix1); dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; - dtbuf[h][2] = dpix_val2; - dtgbuf[h][2] = gpix2; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -9629,15 +6815,6 @@ static void lts_aga_fm1_dpf0_p4_ihires_dhires_genlock(void) *buf1++ = t0; *buf2++ = t0; *gbuf++ = dtgbuf[h ^ lol][0]; - uae_u32 t2 = dtbuf[h ^ lol][2]; - #ifdef DEBUGGER - if (decode_specials_debug) { - t2 = decode_denise_specials_debug(t2, cnt + 2); - } - #endif - *buf1++ = t2; - *buf2++ = t2; - *gbuf++ = dtgbuf[h ^ lol][2]; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -9661,11 +6838,7 @@ static void lts_aga_fm1_dpf0_p4_ihires_dhires_genlock(void) denise_cck++; } } -static void lts_aga_fm1_dpf0_p4_ihires_dhires_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_dpf1_p4_ihires_dhires_genlock(void) +static void lts_aga_fm1_ehb0_p4_ihires_dlores_spr_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -9676,71 +6849,35 @@ 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; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - gpix0 = get_genlock_transparency(dpf_lookup[pix0]); - } - last_bpl_pix = pix0; - } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4e(); - } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl4o(); } - loaded_pix = getbpl4_32(); - loaded_pixs[0] = loaded_pix; - internal_pixel_cnt += 2; - uae_u8 pix2 = 0; - uae_u8 gpix2 = 0xff; - uae_u32 dpix_val2 = BLANK_COLOR; - if (!denise_blank_active) { - gpix2 = get_genlock_transparency_border(); - dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; - gpix2 = get_genlock_transparency(dpf_lookup[pix2]); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; } - last_bpl_pix = pix2; - } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4e(); - } - if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { - copybpl4o(); } - loaded_pix = getbpl4_32(); - loaded_pixs[2] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; - dtbuf[h][2] = dpix_val2; - dtgbuf[h][2] = gpix2; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -9750,15 +6887,6 @@ static void lts_aga_fm1_dpf1_p4_ihires_dhires_genlock(void) *buf1++ = t0; *buf2++ = t0; *gbuf++ = dtgbuf[h ^ lol][0]; - uae_u32 t2 = dtbuf[h ^ lol][2]; - #ifdef DEBUGGER - if (decode_specials_debug) { - t2 = decode_denise_specials_debug(t2, cnt + 2); - } - #endif - *buf1++ = t2; - *buf2++ = t2; - *gbuf++ = dtgbuf[h ^ lol][2]; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -9782,59 +6910,7 @@ static void lts_aga_fm1_dpf1_p4_ihires_dhires_genlock(void) denise_cck++; } } -static void lts_aga_fm1_dpf1_p4_ihires_dhires_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb0_p4_ihires_dhires_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb0_p4_ihires_dhires_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb1_p4_ihires_dhires_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb1_p4_ihires_dhires_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_ham0_p4_ihires_dhires_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_ham0_p4_ihires_dhires_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_ham1_p4_ihires_dhires_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_ham1_p4_ihires_dhires_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb0_p4_ihires_dhires_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb0_p4_ihires_dhires_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb1_p4_ihires_dhires_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb1_p4_ihires_dhires_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_n0_p8_ihires_dhires_genlock(void) +static void lts_aga_fm1_ehb0_p4_ihires_dlores_spr_filtered_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -9845,55 +6921,45 @@ 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; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); - } - last_bpl_pix = pix0; - } - shiftbpl8(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8(); } - loaded_pix = getbpl8_32(); - loaded_pixs[0] = loaded_pix; - internal_pixel_cnt += 2; - uae_u8 pix2 = 0; - uae_u8 gpix2 = 0xff; - uae_u32 dpix_val2 = BLANK_COLOR; - if (!denise_blank_active) { - gpix2 = get_genlock_transparency_border(); - dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; - gpix2 = get_genlock_transparency(pix2 ^ bplcon4_denise_xor_val); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; } - last_bpl_pix = pix2; } - shiftbpl8(); - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8(); + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; } - loaded_pix = getbpl8_32(); - loaded_pixs[2] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + gpix0 = filter_pixel_genlock(gpix0, gpix1); dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; - dtbuf[h][2] = dpix_val2; - dtgbuf[h][2] = gpix2; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -9903,15 +6969,6 @@ static void lts_aga_fm1_n0_p8_ihires_dhires_genlock(void) *buf1++ = t0; *buf2++ = t0; *gbuf++ = dtgbuf[h ^ lol][0]; - uae_u32 t2 = dtbuf[h ^ lol][2]; - #ifdef DEBUGGER - if (decode_specials_debug) { - t2 = decode_denise_specials_debug(t2, cnt + 2); - } - #endif - *buf1++ = t2; - *buf2++ = t2; - *gbuf++ = dtgbuf[h ^ lol][2]; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -9935,11 +6992,7 @@ static void lts_aga_fm1_n0_p8_ihires_dhires_genlock(void) denise_cck++; } } -static void lts_aga_fm1_n0_p8_ihires_dhires_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_n1_p8_ihires_dhires_genlock(void) +static void lts_aga_fm1_ehb1_p4_ihires_dlores_spr_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -9950,61 +7003,35 @@ 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; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); - } - last_bpl_pix = pix0; - } - shiftbpl8(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e(); - } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o(); } - loaded_pix = getbpl8_32(); - loaded_pixs[0] = loaded_pix; - internal_pixel_cnt += 2; - uae_u8 pix2 = 0; - uae_u8 gpix2 = 0xff; - uae_u32 dpix_val2 = BLANK_COLOR; - if (!denise_blank_active) { - gpix2 = get_genlock_transparency_border(); - dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; - gpix2 = get_genlock_transparency(pix2 ^ bplcon4_denise_xor_val); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; } - last_bpl_pix = pix2; - } - shiftbpl8(); - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e(); - } - if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o(); } - loaded_pix = getbpl8_32(); - loaded_pixs[2] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; - dtbuf[h][2] = dpix_val2; - dtgbuf[h][2] = gpix2; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -10014,15 +7041,6 @@ static void lts_aga_fm1_n1_p8_ihires_dhires_genlock(void) *buf1++ = t0; *buf2++ = t0; *gbuf++ = dtgbuf[h ^ lol][0]; - uae_u32 t2 = dtbuf[h ^ lol][2]; - #ifdef DEBUGGER - if (decode_specials_debug) { - t2 = decode_denise_specials_debug(t2, cnt + 2); - } - #endif - *buf1++ = t2; - *buf2++ = t2; - *gbuf++ = dtgbuf[h ^ lol][2]; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -10046,11 +7064,7 @@ static void lts_aga_fm1_n1_p8_ihires_dhires_genlock(void) denise_cck++; } } -static void lts_aga_fm1_n1_p8_ihires_dhires_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_dpf0_p8_ihires_dhires_genlock(void) +static void lts_aga_fm1_ehb1_p4_ihires_dlores_spr_filtered_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -10061,65 +7075,45 @@ 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; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - gpix0 = get_genlock_transparency(dpf_lookup[pix0]); - } - last_bpl_pix = pix0; - } - shiftbpl8(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8(); } - loaded_pix = getbpl8_32(); - loaded_pixs[0] = loaded_pix; - internal_pixel_cnt += 2; - uae_u8 pix2 = 0; - uae_u8 gpix2 = 0xff; - uae_u32 dpix_val2 = BLANK_COLOR; - if (!denise_blank_active) { - gpix2 = get_genlock_transparency_border(); - dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; - gpix2 = get_genlock_transparency(dpf_lookup[pix2]); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; } - last_bpl_pix = pix2; } - shiftbpl8(); - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8(); + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; } - loaded_pix = getbpl8_32(); - loaded_pixs[2] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + gpix0 = filter_pixel_genlock(gpix0, gpix1); dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; - dtbuf[h][2] = dpix_val2; - dtgbuf[h][2] = gpix2; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -10129,15 +7123,6 @@ static void lts_aga_fm1_dpf0_p8_ihires_dhires_genlock(void) *buf1++ = t0; *buf2++ = t0; *gbuf++ = dtgbuf[h ^ lol][0]; - uae_u32 t2 = dtbuf[h ^ lol][2]; - #ifdef DEBUGGER - if (decode_specials_debug) { - t2 = decode_denise_specials_debug(t2, cnt + 2); - } - #endif - *buf1++ = t2; - *buf2++ = t2; - *gbuf++ = dtgbuf[h ^ lol][2]; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -10161,11 +7146,7 @@ static void lts_aga_fm1_dpf0_p8_ihires_dhires_genlock(void) denise_cck++; } } -static void lts_aga_fm1_dpf0_p8_ihires_dhires_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_dpf1_p8_ihires_dhires_genlock(void) +static void lts_aga_fm1_ham0_p4_ihires_dlores_spr_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -10176,71 +7157,41 @@ 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; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - gpix0 = get_genlock_transparency(dpf_lookup[pix0]); - } - last_bpl_pix = pix0; - } - shiftbpl8(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e(); - } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o(); } - loaded_pix = getbpl8_32(); - loaded_pixs[0] = loaded_pix; - internal_pixel_cnt += 2; - uae_u8 pix2 = 0; - uae_u8 gpix2 = 0xff; - uae_u32 dpix_val2 = BLANK_COLOR; - if (!denise_blank_active) { - gpix2 = get_genlock_transparency_border(); - dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; - gpix2 = get_genlock_transparency(dpf_lookup[pix2]); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; } - last_bpl_pix = pix2; - } - shiftbpl8(); - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e(); } - if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o(); + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; } - loaded_pix = getbpl8_32(); - loaded_pixs[2] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; - dtbuf[h][2] = dpix_val2; - dtgbuf[h][2] = gpix2; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -10250,15 +7201,6 @@ static void lts_aga_fm1_dpf1_p8_ihires_dhires_genlock(void) *buf1++ = t0; *buf2++ = t0; *gbuf++ = dtgbuf[h ^ lol][0]; - uae_u32 t2 = dtbuf[h ^ lol][2]; - #ifdef DEBUGGER - if (decode_specials_debug) { - t2 = decode_denise_specials_debug(t2, cnt + 2); - } - #endif - *buf1++ = t2; - *buf2++ = t2; - *gbuf++ = dtgbuf[h ^ lol][2]; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -10282,27 +7224,7 @@ static void lts_aga_fm1_dpf1_p8_ihires_dhires_genlock(void) denise_cck++; } } -static void lts_aga_fm1_dpf1_p8_ihires_dhires_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb0_p8_ihires_dhires_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb0_p8_ihires_dhires_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb1_p8_ihires_dhires_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb1_p8_ihires_dhires_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_ham0_p8_ihires_dhires_genlock(void) +static void lts_aga_fm1_ham0_p4_ihires_dlores_spr_filtered_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -10313,55 +7235,45 @@ 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; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = decode_ham_pixel_aga(pix0); - gpix0 = get_genlock_transparency((pix0 >> 2) & 63); - } - last_bpl_pix = pix0; - } - shiftbpl8(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8(); } - loaded_pix = getbpl8_32(); - loaded_pixs[0] = loaded_pix; - internal_pixel_cnt += 2; - uae_u8 pix2 = 0; - uae_u8 gpix2 = 0xff; - uae_u32 dpix_val2 = BLANK_COLOR; - if (!denise_blank_active) { - gpix2 = get_genlock_transparency_border(); - dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = decode_ham_pixel_aga(pix2); - gpix2 = get_genlock_transparency((pix2 >> 2) & 63); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; } - last_bpl_pix = pix2; } - shiftbpl8(); - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8(); + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; } - loaded_pix = getbpl8_32(); - loaded_pixs[2] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + gpix0 = filter_pixel_genlock(gpix0, gpix1); dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; - dtbuf[h][2] = dpix_val2; - dtgbuf[h][2] = gpix2; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -10371,15 +7283,6 @@ static void lts_aga_fm1_ham0_p8_ihires_dhires_genlock(void) *buf1++ = t0; *buf2++ = t0; *gbuf++ = dtgbuf[h ^ lol][0]; - uae_u32 t2 = dtbuf[h ^ lol][2]; - #ifdef DEBUGGER - if (decode_specials_debug) { - t2 = decode_denise_specials_debug(t2, cnt + 2); - } - #endif - *buf1++ = t2; - *buf2++ = t2; - *gbuf++ = dtgbuf[h ^ lol][2]; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -10403,11 +7306,7 @@ static void lts_aga_fm1_ham0_p8_ihires_dhires_genlock(void) denise_cck++; } } -static void lts_aga_fm1_ham0_p8_ihires_dhires_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_ham1_p8_ihires_dhires_genlock(void) +static void lts_aga_fm1_ham1_p4_ihires_dlores_spr_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -10418,61 +7317,41 @@ 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; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = decode_ham_pixel_aga(pix0); - gpix0 = get_genlock_transparency((pix0 >> 2) & 63); - } - last_bpl_pix = pix0; - } - shiftbpl8(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e(); - } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o(); } - loaded_pix = getbpl8_32(); - loaded_pixs[0] = loaded_pix; - internal_pixel_cnt += 2; - uae_u8 pix2 = 0; - uae_u8 gpix2 = 0xff; - uae_u32 dpix_val2 = BLANK_COLOR; - if (!denise_blank_active) { - gpix2 = get_genlock_transparency_border(); - dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = decode_ham_pixel_aga(pix2); - gpix2 = get_genlock_transparency((pix2 >> 2) & 63); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; } - last_bpl_pix = pix2; - } - shiftbpl8(); - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e(); } - if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o(); + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; } - loaded_pix = getbpl8_32(); - loaded_pixs[2] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; - dtbuf[h][2] = dpix_val2; - dtgbuf[h][2] = gpix2; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -10482,15 +7361,6 @@ static void lts_aga_fm1_ham1_p8_ihires_dhires_genlock(void) *buf1++ = t0; *buf2++ = t0; *gbuf++ = dtgbuf[h ^ lol][0]; - uae_u32 t2 = dtbuf[h ^ lol][2]; - #ifdef DEBUGGER - if (decode_specials_debug) { - t2 = decode_denise_specials_debug(t2, cnt + 2); - } - #endif - *buf1++ = t2; - *buf2++ = t2; - *gbuf++ = dtgbuf[h ^ lol][2]; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -10514,27 +7384,7 @@ static void lts_aga_fm1_ham1_p8_ihires_dhires_genlock(void) denise_cck++; } } -static void lts_aga_fm1_ham1_p8_ihires_dhires_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb0_p8_ihires_dhires_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb0_p8_ihires_dhires_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb1_p8_ihires_dhires_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb1_p8_ihires_dhires_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_n0_p4_ihires_dhires_spr_genlock(void) +static void lts_aga_fm1_ham1_p4_ihires_dlores_spr_filtered_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -10545,7 +7395,6 @@ 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; @@ -10554,19 +7403,7 @@ static void lts_aga_fm1_n0_p4_ihires_dhires_spr_genlock(void) if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); - } - last_bpl_pix = pix0; - } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4(); } - loaded_pix = getbpl4_32(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -10575,38 +7412,14 @@ static void lts_aga_fm1_n0_p4_ihires_dhires_spr_genlock(void) sv0 = svt; } } - loaded_pixs[0] = loaded_pix; - internal_pixel_cnt += 2; - matchsprites_aga(cnt + 2); - uae_u8 pix2 = 0; - uae_u8 gpix2 = 0xff; - uae_u32 dpix_val2 = BLANK_COLOR; + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { - gpix2 = get_genlock_transparency_border(); - dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; - gpix2 = get_genlock_transparency(pix2 ^ bplcon4_denise_xor_val); - } - last_bpl_pix = pix2; - } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4(); - } - loaded_pix = getbpl4_32(); - uae_u32 sv2 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv2 = svt; - } + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; } - loaded_pixs[2] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { uae_u32 spix0 = denise_render_sprites2(pix0, sv0); @@ -10614,20 +7427,13 @@ static void lts_aga_fm1_n0_p4_ihires_dhires_spr_genlock(void) dpix_val0 = denise_colors.acolors[spix0]; gpix0 = get_genlock_transparency(spix0); + dpix_val1 = dpix_val0; } } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + gpix0 = filter_pixel_genlock(gpix0, gpix1); dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; - if (sv2) { - uae_u32 spix2 = denise_render_sprites2(pix2, sv2); - if (spix2) { - dpix_val2 = denise_colors.acolors[spix2]; - gpix2 = get_genlock_transparency(spix2); - - } - } - dtbuf[h][2] = dpix_val2; - dtgbuf[h][2] = gpix2; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -10637,15 +7443,6 @@ static void lts_aga_fm1_n0_p4_ihires_dhires_spr_genlock(void) *buf1++ = t0; *buf2++ = t0; *gbuf++ = dtgbuf[h ^ lol][0]; - uae_u32 t2 = dtbuf[h ^ lol][2]; - #ifdef DEBUGGER - if (decode_specials_debug) { - t2 = decode_denise_specials_debug(t2, cnt + 2); - } - #endif - *buf1++ = t2; - *buf2++ = t2; - *gbuf++ = dtgbuf[h ^ lol][2]; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -10669,11 +7466,7 @@ static void lts_aga_fm1_n0_p4_ihires_dhires_spr_genlock(void) denise_cck++; } } -static void lts_aga_fm1_n0_p4_ihires_dhires_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_n1_p4_ihires_dhires_spr_genlock(void) +static void lts_aga_fm1_kehb0_p4_ihires_dlores_spr_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -10684,7 +7477,6 @@ 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; @@ -10693,22 +7485,7 @@ static void lts_aga_fm1_n1_p4_ihires_dhires_spr_genlock(void) if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); - } - last_bpl_pix = pix0; } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4e(); - } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl4o(); - } - loaded_pix = getbpl4_32(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -10717,41 +7494,7 @@ static void lts_aga_fm1_n1_p4_ihires_dhires_spr_genlock(void) sv0 = svt; } } - loaded_pixs[0] = loaded_pix; - internal_pixel_cnt += 2; - matchsprites_aga(cnt + 2); - uae_u8 pix2 = 0; - uae_u8 gpix2 = 0xff; - uae_u32 dpix_val2 = BLANK_COLOR; - if (!denise_blank_active) { - gpix2 = get_genlock_transparency_border(); - dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; - gpix2 = get_genlock_transparency(pix2 ^ bplcon4_denise_xor_val); - } - last_bpl_pix = pix2; - } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4e(); - } - if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { - copybpl4o(); - } - loaded_pix = getbpl4_32(); - uae_u32 sv2 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv2 = svt; - } - } - loaded_pixs[2] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { uae_u32 spix0 = denise_render_sprites2(pix0, sv0); @@ -10763,16 +7506,6 @@ static void lts_aga_fm1_n1_p4_ihires_dhires_spr_genlock(void) } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; - if (sv2) { - uae_u32 spix2 = denise_render_sprites2(pix2, sv2); - if (spix2) { - dpix_val2 = denise_colors.acolors[spix2]; - gpix2 = get_genlock_transparency(spix2); - - } - } - dtbuf[h][2] = dpix_val2; - dtgbuf[h][2] = gpix2; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -10782,15 +7515,6 @@ static void lts_aga_fm1_n1_p4_ihires_dhires_spr_genlock(void) *buf1++ = t0; *buf2++ = t0; *gbuf++ = dtgbuf[h ^ lol][0]; - uae_u32 t2 = dtbuf[h ^ lol][2]; - #ifdef DEBUGGER - if (decode_specials_debug) { - t2 = decode_denise_specials_debug(t2, cnt + 2); - } - #endif - *buf1++ = t2; - *buf2++ = t2; - *gbuf++ = dtgbuf[h ^ lol][2]; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -10814,11 +7538,7 @@ static void lts_aga_fm1_n1_p4_ihires_dhires_spr_genlock(void) denise_cck++; } } -static void lts_aga_fm1_n1_p4_ihires_dhires_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_dpf0_p4_ihires_dhires_spr_genlock(void) +static void lts_aga_fm1_kehb0_p4_ihires_dlores_spr_filtered_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -10829,7 +7549,6 @@ 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; @@ -10838,24 +7557,7 @@ static void lts_aga_fm1_dpf0_p4_ihires_dhires_spr_genlock(void) if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - gpix0 = get_genlock_transparency(dpf_lookup[pix0]); - } - last_bpl_pix = pix0; - } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4(); } - loaded_pix = getbpl4_32(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -10864,43 +7566,14 @@ static void lts_aga_fm1_dpf0_p4_ihires_dhires_spr_genlock(void) sv0 = svt; } } - loaded_pixs[0] = loaded_pix; - internal_pixel_cnt += 2; - matchsprites_aga(cnt + 2); - uae_u8 pix2 = 0; - uae_u8 gpix2 = 0xff; - uae_u32 dpix_val2 = BLANK_COLOR; + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { - gpix2 = get_genlock_transparency_border(); - dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; - gpix2 = get_genlock_transparency(dpf_lookup[pix2]); - } - last_bpl_pix = pix2; - } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4(); - } - loaded_pix = getbpl4_32(); - uae_u32 sv2 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv2 = svt; - } + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; } - loaded_pixs[2] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { uae_u32 spix0 = denise_render_sprites2(pix0, sv0); @@ -10908,20 +7581,13 @@ static void lts_aga_fm1_dpf0_p4_ihires_dhires_spr_genlock(void) dpix_val0 = denise_colors.acolors[spix0]; gpix0 = get_genlock_transparency(spix0); + dpix_val1 = dpix_val0; } } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + gpix0 = filter_pixel_genlock(gpix0, gpix1); dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; - if (sv2) { - uae_u32 spix2 = denise_render_sprites2(pix2, sv2); - if (spix2) { - dpix_val2 = denise_colors.acolors[spix2]; - gpix2 = get_genlock_transparency(spix2); - - } - } - dtbuf[h][2] = dpix_val2; - dtgbuf[h][2] = gpix2; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -10931,15 +7597,6 @@ static void lts_aga_fm1_dpf0_p4_ihires_dhires_spr_genlock(void) *buf1++ = t0; *buf2++ = t0; *gbuf++ = dtgbuf[h ^ lol][0]; - uae_u32 t2 = dtbuf[h ^ lol][2]; - #ifdef DEBUGGER - if (decode_specials_debug) { - t2 = decode_denise_specials_debug(t2, cnt + 2); - } - #endif - *buf1++ = t2; - *buf2++ = t2; - *gbuf++ = dtgbuf[h ^ lol][2]; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -10963,11 +7620,7 @@ static void lts_aga_fm1_dpf0_p4_ihires_dhires_spr_genlock(void) denise_cck++; } } -static void lts_aga_fm1_dpf0_p4_ihires_dhires_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_dpf1_p4_ihires_dhires_spr_genlock(void) +static void lts_aga_fm1_kehb1_p4_ihires_dlores_spr_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -10978,7 +7631,6 @@ 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; @@ -10987,27 +7639,7 @@ static void lts_aga_fm1_dpf1_p4_ihires_dhires_spr_genlock(void) if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - gpix0 = get_genlock_transparency(dpf_lookup[pix0]); - } - last_bpl_pix = pix0; - } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4e(); - } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl4o(); } - loaded_pix = getbpl4_32(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -11016,46 +7648,7 @@ static void lts_aga_fm1_dpf1_p4_ihires_dhires_spr_genlock(void) sv0 = svt; } } - loaded_pixs[0] = loaded_pix; - internal_pixel_cnt += 2; - matchsprites_aga(cnt + 2); - uae_u8 pix2 = 0; - uae_u8 gpix2 = 0xff; - uae_u32 dpix_val2 = BLANK_COLOR; - if (!denise_blank_active) { - gpix2 = get_genlock_transparency_border(); - dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; - gpix2 = get_genlock_transparency(dpf_lookup[pix2]); - } - last_bpl_pix = pix2; - } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4e(); - } - if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { - copybpl4o(); - } - loaded_pix = getbpl4_32(); - uae_u32 sv2 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv2 = svt; - } - } - loaded_pixs[2] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { uae_u32 spix0 = denise_render_sprites2(pix0, sv0); @@ -11067,16 +7660,6 @@ static void lts_aga_fm1_dpf1_p4_ihires_dhires_spr_genlock(void) } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; - if (sv2) { - uae_u32 spix2 = denise_render_sprites2(pix2, sv2); - if (spix2) { - dpix_val2 = denise_colors.acolors[spix2]; - gpix2 = get_genlock_transparency(spix2); - - } - } - dtbuf[h][2] = dpix_val2; - dtgbuf[h][2] = gpix2; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -11086,15 +7669,6 @@ static void lts_aga_fm1_dpf1_p4_ihires_dhires_spr_genlock(void) *buf1++ = t0; *buf2++ = t0; *gbuf++ = dtgbuf[h ^ lol][0]; - uae_u32 t2 = dtbuf[h ^ lol][2]; - #ifdef DEBUGGER - if (decode_specials_debug) { - t2 = decode_denise_specials_debug(t2, cnt + 2); - } - #endif - *buf1++ = t2; - *buf2++ = t2; - *gbuf++ = dtgbuf[h ^ lol][2]; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -11118,59 +7692,7 @@ static void lts_aga_fm1_dpf1_p4_ihires_dhires_spr_genlock(void) denise_cck++; } } -static void lts_aga_fm1_dpf1_p4_ihires_dhires_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb0_p4_ihires_dhires_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb0_p4_ihires_dhires_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb1_p4_ihires_dhires_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb1_p4_ihires_dhires_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_ham0_p4_ihires_dhires_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_ham0_p4_ihires_dhires_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_ham1_p4_ihires_dhires_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_ham1_p4_ihires_dhires_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb0_p4_ihires_dhires_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb0_p4_ihires_dhires_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb1_p4_ihires_dhires_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb1_p4_ihires_dhires_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_n0_p8_ihires_dhires_spr_genlock(void) +static void lts_aga_fm1_kehb1_p4_ihires_dlores_spr_filtered_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -11181,7 +7703,6 @@ 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; @@ -11190,19 +7711,7 @@ static void lts_aga_fm1_n0_p8_ihires_dhires_spr_genlock(void) if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); - } - last_bpl_pix = pix0; - } - shiftbpl8(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8(); } - loaded_pix = getbpl8_32(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -11211,38 +7720,14 @@ static void lts_aga_fm1_n0_p8_ihires_dhires_spr_genlock(void) sv0 = svt; } } - loaded_pixs[0] = loaded_pix; - internal_pixel_cnt += 2; - matchsprites_aga(cnt + 2); - uae_u8 pix2 = 0; - uae_u8 gpix2 = 0xff; - uae_u32 dpix_val2 = BLANK_COLOR; + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { - gpix2 = get_genlock_transparency_border(); - dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; - gpix2 = get_genlock_transparency(pix2 ^ bplcon4_denise_xor_val); - } - last_bpl_pix = pix2; - } - shiftbpl8(); - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8(); - } - loaded_pix = getbpl8_32(); - uae_u32 sv2 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv2 = svt; - } + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; } - loaded_pixs[2] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { uae_u32 spix0 = denise_render_sprites2(pix0, sv0); @@ -11250,20 +7735,13 @@ static void lts_aga_fm1_n0_p8_ihires_dhires_spr_genlock(void) dpix_val0 = denise_colors.acolors[spix0]; gpix0 = get_genlock_transparency(spix0); + dpix_val1 = dpix_val0; } } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + gpix0 = filter_pixel_genlock(gpix0, gpix1); dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; - if (sv2) { - uae_u32 spix2 = denise_render_sprites2(pix2, sv2); - if (spix2) { - dpix_val2 = denise_colors.acolors[spix2]; - gpix2 = get_genlock_transparency(spix2); - - } - } - dtbuf[h][2] = dpix_val2; - dtgbuf[h][2] = gpix2; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -11273,15 +7751,6 @@ static void lts_aga_fm1_n0_p8_ihires_dhires_spr_genlock(void) *buf1++ = t0; *buf2++ = t0; *gbuf++ = dtgbuf[h ^ lol][0]; - uae_u32 t2 = dtbuf[h ^ lol][2]; - #ifdef DEBUGGER - if (decode_specials_debug) { - t2 = decode_denise_specials_debug(t2, cnt + 2); - } - #endif - *buf1++ = t2; - *buf2++ = t2; - *gbuf++ = dtgbuf[h ^ lol][2]; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -11305,11 +7774,7 @@ static void lts_aga_fm1_n0_p8_ihires_dhires_spr_genlock(void) denise_cck++; } } -static void lts_aga_fm1_n0_p8_ihires_dhires_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_n1_p8_ihires_dhires_spr_genlock(void) +static void lts_aga_fm1_n0_p8_ihires_dlores_spr_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -11339,10 +7804,7 @@ static void lts_aga_fm1_n1_p8_ihires_dhires_spr_genlock(void) } shiftbpl8(); if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e(); - } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o(); + copybpl8(); } loaded_pix = getbpl8_32(); uae_u32 sv0 = 0; @@ -11354,40 +7816,8 @@ static void lts_aga_fm1_n1_p8_ihires_dhires_spr_genlock(void) } } loaded_pixs[0] = loaded_pix; - internal_pixel_cnt += 2; - matchsprites_aga(cnt + 2); - uae_u8 pix2 = 0; - uae_u8 gpix2 = 0xff; - uae_u32 dpix_val2 = BLANK_COLOR; - if (!denise_blank_active) { - gpix2 = get_genlock_transparency_border(); - dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; - gpix2 = get_genlock_transparency(pix2 ^ bplcon4_denise_xor_val); - } - last_bpl_pix = pix2; - } shiftbpl8(); - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e(); - } - if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o(); - } - loaded_pix = getbpl8_32(); - uae_u32 sv2 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv2 = svt; - } - } - loaded_pixs[2] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { uae_u32 spix0 = denise_render_sprites2(pix0, sv0); @@ -11399,16 +7829,6 @@ static void lts_aga_fm1_n1_p8_ihires_dhires_spr_genlock(void) } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; - if (sv2) { - uae_u32 spix2 = denise_render_sprites2(pix2, sv2); - if (spix2) { - dpix_val2 = denise_colors.acolors[spix2]; - gpix2 = get_genlock_transparency(spix2); - - } - } - dtbuf[h][2] = dpix_val2; - dtgbuf[h][2] = gpix2; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -11418,15 +7838,6 @@ static void lts_aga_fm1_n1_p8_ihires_dhires_spr_genlock(void) *buf1++ = t0; *buf2++ = t0; *gbuf++ = dtgbuf[h ^ lol][0]; - uae_u32 t2 = dtbuf[h ^ lol][2]; - #ifdef DEBUGGER - if (decode_specials_debug) { - t2 = decode_denise_specials_debug(t2, cnt + 2); - } - #endif - *buf1++ = t2; - *buf2++ = t2; - *gbuf++ = dtgbuf[h ^ lol][2]; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -11450,11 +7861,7 @@ static void lts_aga_fm1_n1_p8_ihires_dhires_spr_genlock(void) denise_cck++; } } -static void lts_aga_fm1_n1_p8_ihires_dhires_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_dpf0_p8_ihires_dhires_spr_genlock(void) +static void lts_aga_fm1_n0_p8_ihires_dlores_spr_filtered_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -11477,13 +7884,8 @@ static void lts_aga_fm1_dpf0_p8_ihires_dhires_spr_genlock(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - gpix0 = get_genlock_transparency(dpf_lookup[pix0]); + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); } last_bpl_pix = pix0; } @@ -11501,42 +7903,27 @@ static void lts_aga_fm1_dpf0_p8_ihires_dhires_spr_genlock(void) } } loaded_pixs[0] = loaded_pix; - internal_pixel_cnt += 2; - matchsprites_aga(cnt + 2); - uae_u8 pix2 = 0; - uae_u8 gpix2 = 0xff; - uae_u32 dpix_val2 = BLANK_COLOR; + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { - gpix2 = get_genlock_transparency_border(); - dpix_val2 = bordercolor; + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; - gpix2 = get_genlock_transparency(dpf_lookup[pix2]); + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; + gpix1 = get_genlock_transparency(pix1 ^ bplcon4_denise_xor_val); } - last_bpl_pix = pix2; + last_bpl_pix = pix1; } shiftbpl8(); - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { copybpl8(); } loaded_pix = getbpl8_32(); - uae_u32 sv2 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv2 = svt; - } - } - loaded_pixs[2] = loaded_pix; - internal_pixel_cnt += 2; + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { uae_u32 spix0 = denise_render_sprites2(pix0, sv0); @@ -11544,20 +7931,13 @@ static void lts_aga_fm1_dpf0_p8_ihires_dhires_spr_genlock(void) dpix_val0 = denise_colors.acolors[spix0]; gpix0 = get_genlock_transparency(spix0); + dpix_val1 = dpix_val0; } } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + gpix0 = filter_pixel_genlock(gpix0, gpix1); dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; - if (sv2) { - uae_u32 spix2 = denise_render_sprites2(pix2, sv2); - if (spix2) { - dpix_val2 = denise_colors.acolors[spix2]; - gpix2 = get_genlock_transparency(spix2); - - } - } - dtbuf[h][2] = dpix_val2; - dtgbuf[h][2] = gpix2; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -11567,15 +7947,6 @@ static void lts_aga_fm1_dpf0_p8_ihires_dhires_spr_genlock(void) *buf1++ = t0; *buf2++ = t0; *gbuf++ = dtgbuf[h ^ lol][0]; - uae_u32 t2 = dtbuf[h ^ lol][2]; - #ifdef DEBUGGER - if (decode_specials_debug) { - t2 = decode_denise_specials_debug(t2, cnt + 2); - } - #endif - *buf1++ = t2; - *buf2++ = t2; - *gbuf++ = dtgbuf[h ^ lol][2]; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -11599,11 +7970,7 @@ static void lts_aga_fm1_dpf0_p8_ihires_dhires_spr_genlock(void) denise_cck++; } } -static void lts_aga_fm1_dpf0_p8_ihires_dhires_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_dpf1_p8_ihires_dhires_spr_genlock(void) +static void lts_aga_fm1_n1_p8_ihires_dlores_spr_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -11626,13 +7993,8 @@ static void lts_aga_fm1_dpf1_p8_ihires_dhires_spr_genlock(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - gpix0 = get_genlock_transparency(dpf_lookup[pix0]); + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); } last_bpl_pix = pix0; } @@ -11653,45 +8015,8 @@ static void lts_aga_fm1_dpf1_p8_ihires_dhires_spr_genlock(void) } } loaded_pixs[0] = loaded_pix; - internal_pixel_cnt += 2; - matchsprites_aga(cnt + 2); - uae_u8 pix2 = 0; - uae_u8 gpix2 = 0xff; - uae_u32 dpix_val2 = BLANK_COLOR; - if (!denise_blank_active) { - gpix2 = get_genlock_transparency_border(); - dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; - gpix2 = get_genlock_transparency(dpf_lookup[pix2]); - } - last_bpl_pix = pix2; - } shiftbpl8(); - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e(); - } - if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o(); - } - loaded_pix = getbpl8_32(); - uae_u32 sv2 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv2 = svt; - } - } - loaded_pixs[2] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { uae_u32 spix0 = denise_render_sprites2(pix0, sv0); @@ -11703,16 +8028,6 @@ static void lts_aga_fm1_dpf1_p8_ihires_dhires_spr_genlock(void) } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; - if (sv2) { - uae_u32 spix2 = denise_render_sprites2(pix2, sv2); - if (spix2) { - dpix_val2 = denise_colors.acolors[spix2]; - gpix2 = get_genlock_transparency(spix2); - - } - } - dtbuf[h][2] = dpix_val2; - dtgbuf[h][2] = gpix2; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -11722,15 +8037,6 @@ static void lts_aga_fm1_dpf1_p8_ihires_dhires_spr_genlock(void) *buf1++ = t0; *buf2++ = t0; *gbuf++ = dtgbuf[h ^ lol][0]; - uae_u32 t2 = dtbuf[h ^ lol][2]; - #ifdef DEBUGGER - if (decode_specials_debug) { - t2 = decode_denise_specials_debug(t2, cnt + 2); - } - #endif - *buf1++ = t2; - *buf2++ = t2; - *gbuf++ = dtgbuf[h ^ lol][2]; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -11754,27 +8060,7 @@ static void lts_aga_fm1_dpf1_p8_ihires_dhires_spr_genlock(void) denise_cck++; } } -static void lts_aga_fm1_dpf1_p8_ihires_dhires_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb0_p8_ihires_dhires_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb0_p8_ihires_dhires_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb1_p8_ihires_dhires_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb1_p8_ihires_dhires_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_ham0_p8_ihires_dhires_spr_genlock(void) +static void lts_aga_fm1_n1_p8_ihires_dlores_spr_filtered_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -11797,14 +8083,17 @@ static void lts_aga_fm1_ham0_p8_ihires_dhires_spr_genlock(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - dpix_val0 = decode_ham_pixel_aga(pix0); - gpix0 = get_genlock_transparency((pix0 >> 2) & 63); + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); } last_bpl_pix = pix0; } shiftbpl8(); if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8(); + copybpl8e(); + } + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o(); } loaded_pix = getbpl8_32(); uae_u32 sv0 = 0; @@ -11816,37 +8105,30 @@ static void lts_aga_fm1_ham0_p8_ihires_dhires_spr_genlock(void) } } loaded_pixs[0] = loaded_pix; - internal_pixel_cnt += 2; - matchsprites_aga(cnt + 2); - uae_u8 pix2 = 0; - uae_u8 gpix2 = 0xff; - uae_u32 dpix_val2 = BLANK_COLOR; + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { - gpix2 = get_genlock_transparency_border(); - dpix_val2 = bordercolor; + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = decode_ham_pixel_aga(pix2); - gpix2 = get_genlock_transparency((pix2 >> 2) & 63); + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; + gpix1 = get_genlock_transparency(pix1 ^ bplcon4_denise_xor_val); } - last_bpl_pix = pix2; + last_bpl_pix = pix1; } shiftbpl8(); - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8(); + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8e(); } - loaded_pix = getbpl8_32(); - uae_u32 sv2 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv2 = svt; - } + if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o(); } - loaded_pixs[2] = loaded_pix; - internal_pixel_cnt += 2; + loaded_pix = getbpl8_32(); + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { uae_u32 spix0 = denise_render_sprites2(pix0, sv0); @@ -11854,20 +8136,13 @@ static void lts_aga_fm1_ham0_p8_ihires_dhires_spr_genlock(void) dpix_val0 = denise_colors.acolors[spix0]; gpix0 = get_genlock_transparency(spix0); + dpix_val1 = dpix_val0; } } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + gpix0 = filter_pixel_genlock(gpix0, gpix1); dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; - if (sv2) { - uae_u32 spix2 = denise_render_sprites2(pix2, sv2); - if (spix2) { - dpix_val2 = denise_colors.acolors[spix2]; - gpix2 = get_genlock_transparency(spix2); - - } - } - dtbuf[h][2] = dpix_val2; - dtgbuf[h][2] = gpix2; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -11877,15 +8152,6 @@ static void lts_aga_fm1_ham0_p8_ihires_dhires_spr_genlock(void) *buf1++ = t0; *buf2++ = t0; *gbuf++ = dtgbuf[h ^ lol][0]; - uae_u32 t2 = dtbuf[h ^ lol][2]; - #ifdef DEBUGGER - if (decode_specials_debug) { - t2 = decode_denise_specials_debug(t2, cnt + 2); - } - #endif - *buf1++ = t2; - *buf2++ = t2; - *gbuf++ = dtgbuf[h ^ lol][2]; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -11909,11 +8175,7 @@ static void lts_aga_fm1_ham0_p8_ihires_dhires_spr_genlock(void) denise_cck++; } } -static void lts_aga_fm1_ham0_p8_ihires_dhires_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_ham1_p8_ihires_dhires_spr_genlock(void) +static void lts_aga_fm1_dpf0_p8_ihires_dlores_spr_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -11936,17 +8198,19 @@ static void lts_aga_fm1_ham1_p8_ihires_dhires_spr_genlock(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - dpix_val0 = decode_ham_pixel_aga(pix0); - gpix0 = get_genlock_transparency((pix0 >> 2) & 63); + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + gpix0 = get_genlock_transparency(dpf_lookup[pix0]); } last_bpl_pix = pix0; } shiftbpl8(); if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e(); - } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o(); + copybpl8(); } loaded_pix = getbpl8_32(); uae_u32 sv0 = 0; @@ -11958,40 +8222,8 @@ static void lts_aga_fm1_ham1_p8_ihires_dhires_spr_genlock(void) } } loaded_pixs[0] = loaded_pix; - internal_pixel_cnt += 2; - matchsprites_aga(cnt + 2); - uae_u8 pix2 = 0; - uae_u8 gpix2 = 0xff; - uae_u32 dpix_val2 = BLANK_COLOR; - if (!denise_blank_active) { - gpix2 = get_genlock_transparency_border(); - dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = decode_ham_pixel_aga(pix2); - gpix2 = get_genlock_transparency((pix2 >> 2) & 63); - } - last_bpl_pix = pix2; - } shiftbpl8(); - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e(); - } - if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o(); - } - loaded_pix = getbpl8_32(); - uae_u32 sv2 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv2 = svt; - } - } - loaded_pixs[2] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { uae_u32 spix0 = denise_render_sprites2(pix0, sv0); @@ -12003,16 +8235,6 @@ static void lts_aga_fm1_ham1_p8_ihires_dhires_spr_genlock(void) } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; - if (sv2) { - uae_u32 spix2 = denise_render_sprites2(pix2, sv2); - if (spix2) { - dpix_val2 = denise_colors.acolors[spix2]; - gpix2 = get_genlock_transparency(spix2); - - } - } - dtbuf[h][2] = dpix_val2; - dtgbuf[h][2] = gpix2; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -12022,15 +8244,6 @@ static void lts_aga_fm1_ham1_p8_ihires_dhires_spr_genlock(void) *buf1++ = t0; *buf2++ = t0; *gbuf++ = dtgbuf[h ^ lol][0]; - uae_u32 t2 = dtbuf[h ^ lol][2]; - #ifdef DEBUGGER - if (decode_specials_debug) { - t2 = decode_denise_specials_debug(t2, cnt + 2); - } - #endif - *buf1++ = t2; - *buf2++ = t2; - *gbuf++ = dtgbuf[h ^ lol][2]; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -12054,27 +8267,7 @@ static void lts_aga_fm1_ham1_p8_ihires_dhires_spr_genlock(void) denise_cck++; } } -static void lts_aga_fm1_ham1_p8_ihires_dhires_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb0_p8_ihires_dhires_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb0_p8_ihires_dhires_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb1_p8_ihires_dhires_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb1_p8_ihires_dhires_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_n0_p4_ishres_dhires_genlock(void) +static void lts_aga_fm1_dpf0_p8_ihires_dlores_spr_filtered_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -12087,6 +8280,7 @@ static void lts_aga_fm1_n0_p4_ishres_dhires_genlock(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; @@ -12096,46 +8290,70 @@ static void lts_aga_fm1_n0_p4_ishres_dhires_genlock(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + gpix0 = get_genlock_transparency(dpf_lookup[pix0]); } last_bpl_pix = pix0; } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4(); + shiftbpl8(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8(); + } + loaded_pix = getbpl8_32(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } } - loaded_pix = getbpl4_32(); loaded_pixs[0] = loaded_pix; - shiftbpl4(); - internal_pixel_cnt += 2; - uae_u8 pix2 = 0; - uae_u8 gpix2 = 0xff; - uae_u32 dpix_val2 = BLANK_COLOR; + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { - gpix2 = get_genlock_transparency_border(); - dpix_val2 = bordercolor; + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; - gpix2 = get_genlock_transparency(pix2 ^ bplcon4_denise_xor_val); + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + uae_u8 val1 = dpf_lookup[pix1]; + if (dpf_lookup_no[pix1]) { + val1 += dblpfofs[bpldualpf2of]; + } + val1 ^= bplcon4_denise_xor_val; + dpix_val1 = denise_colors.acolors[val1]; + gpix1 = get_genlock_transparency(dpf_lookup[pix1]); } - last_bpl_pix = pix2; + last_bpl_pix = pix1; } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4(); + shiftbpl8(); + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8(); } - loaded_pix = getbpl4_32(); - loaded_pixs[2] = loaded_pix; - shiftbpl4(); - internal_pixel_cnt += 2; + loaded_pix = getbpl8_32(); + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + gpix0 = filter_pixel_genlock(gpix0, gpix1); dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; - dtbuf[h][2] = dpix_val2; - dtgbuf[h][2] = gpix2; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -12145,15 +8363,6 @@ static void lts_aga_fm1_n0_p4_ishres_dhires_genlock(void) *buf1++ = t0; *buf2++ = t0; *gbuf++ = dtgbuf[h ^ lol][0]; - uae_u32 t2 = dtbuf[h ^ lol][2]; - #ifdef DEBUGGER - if (decode_specials_debug) { - t2 = decode_denise_specials_debug(t2, cnt + 2); - } - #endif - *buf1++ = t2; - *buf2++ = t2; - *gbuf++ = dtgbuf[h ^ lol][2]; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -12177,7 +8386,7 @@ static void lts_aga_fm1_n0_p4_ishres_dhires_genlock(void) denise_cck++; } } -static void lts_aga_fm1_n0_p4_ishres_dhires_filtered_genlock(void) +static void lts_aga_fm1_dpf1_p8_ihires_dlores_spr_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -12190,6 +8399,7 @@ static void lts_aga_fm1_n0_p4_ishres_dhires_filtered_genlock(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; @@ -12199,88 +8409,46 @@ static void lts_aga_fm1_n0_p4_ishres_dhires_filtered_genlock(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + gpix0 = get_genlock_transparency(dpf_lookup[pix0]); } last_bpl_pix = pix0; } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4(); - } - loaded_pix = getbpl4_32(); - loaded_pixs[0] = loaded_pix; - uae_u8 pix1 = 0; - uae_u8 gpix1 = 0xff; - uae_u32 dpix_val1 = BLANK_COLOR; - if (!denise_blank_active) { - gpix1 = get_genlock_transparency_border(); - dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; - gpix1 = get_genlock_transparency(pix1 ^ bplcon4_denise_xor_val); - } - last_bpl_pix = pix1; - } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4(); - } - loaded_pix = getbpl4_32(); - loaded_pixs[1] = loaded_pix; - internal_pixel_cnt += 2; - uae_u8 pix2 = 0; - uae_u8 gpix2 = 0xff; - uae_u32 dpix_val2 = BLANK_COLOR; - if (!denise_blank_active) { - gpix2 = get_genlock_transparency_border(); - dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; - gpix2 = get_genlock_transparency(pix2 ^ bplcon4_denise_xor_val); - } - last_bpl_pix = pix2; + shiftbpl8(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8e(); } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4(); + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o(); } - loaded_pix = getbpl4_32(); - loaded_pixs[2] = loaded_pix; - uae_u8 pix3 = 0; - uae_u8 gpix3 = 0xff; - uae_u32 dpix_val3 = BLANK_COLOR; - if (!denise_blank_active) { - gpix3 = get_genlock_transparency_border(); - dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; - gpix3 = get_genlock_transparency(pix3 ^ bplcon4_denise_xor_val); + loaded_pix = getbpl8_32(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; } - last_bpl_pix = pix3; - } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4(); } - loaded_pix = getbpl4_32(); - loaded_pixs[3] = loaded_pix; - internal_pixel_cnt += 2; + loaded_pixs[0] = loaded_pix; + shiftbpl8(); + internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - dpix_val0 = filter_pixel(dpix_val0, dpix_val1); - gpix0 = filter_pixel_genlock(gpix0, gpix1); + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; - dpix_val2 = filter_pixel(dpix_val2, dpix_val3); - gpix2 = filter_pixel_genlock(gpix2, gpix3); - dtbuf[h][2] = dpix_val2; - dtgbuf[h][2] = gpix2; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -12290,15 +8458,6 @@ static void lts_aga_fm1_n0_p4_ishres_dhires_filtered_genlock(void) *buf1++ = t0; *buf2++ = t0; *gbuf++ = dtgbuf[h ^ lol][0]; - uae_u32 t2 = dtbuf[h ^ lol][2]; - #ifdef DEBUGGER - if (decode_specials_debug) { - t2 = decode_denise_specials_debug(t2, cnt + 2); - } - #endif - *buf1++ = t2; - *buf2++ = t2; - *gbuf++ = dtgbuf[h ^ lol][2]; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -12322,7 +8481,7 @@ static void lts_aga_fm1_n0_p4_ishres_dhires_filtered_genlock(void) denise_cck++; } } -static void lts_aga_fm1_n1_p4_ishres_dhires_genlock(void) +static void lts_aga_fm1_dpf1_p8_ihires_dlores_spr_filtered_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -12335,6 +8494,7 @@ static void lts_aga_fm1_n1_p4_ishres_dhires_genlock(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; @@ -12344,52 +8504,76 @@ static void lts_aga_fm1_n1_p4_ishres_dhires_genlock(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + gpix0 = get_genlock_transparency(dpf_lookup[pix0]); } last_bpl_pix = pix0; } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4e(); + shiftbpl8(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8e(); } - if (bpldat_copy[1] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[1]) { - copybpl4o(); + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o(); + } + loaded_pix = getbpl8_32(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } } - loaded_pix = getbpl4_32(); loaded_pixs[0] = loaded_pix; - shiftbpl4(); - internal_pixel_cnt += 2; - uae_u8 pix2 = 0; - uae_u8 gpix2 = 0xff; - uae_u32 dpix_val2 = BLANK_COLOR; + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { - gpix2 = get_genlock_transparency_border(); - dpix_val2 = bordercolor; + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; - gpix2 = get_genlock_transparency(pix2 ^ bplcon4_denise_xor_val); + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + uae_u8 val1 = dpf_lookup[pix1]; + if (dpf_lookup_no[pix1]) { + val1 += dblpfofs[bpldualpf2of]; + } + val1 ^= bplcon4_denise_xor_val; + dpix_val1 = denise_colors.acolors[val1]; + gpix1 = get_genlock_transparency(dpf_lookup[pix1]); } - last_bpl_pix = pix2; + last_bpl_pix = pix1; } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4e(); + shiftbpl8(); + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8e(); } - if (bpldat_copy[1] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[1]) { - copybpl4o(); + if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o(); } - loaded_pix = getbpl4_32(); - loaded_pixs[2] = loaded_pix; - shiftbpl4(); - internal_pixel_cnt += 2; + loaded_pix = getbpl8_32(); + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + gpix0 = filter_pixel_genlock(gpix0, gpix1); dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; - dtbuf[h][2] = dpix_val2; - dtgbuf[h][2] = gpix2; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -12399,15 +8583,6 @@ static void lts_aga_fm1_n1_p4_ishres_dhires_genlock(void) *buf1++ = t0; *buf2++ = t0; *gbuf++ = dtgbuf[h ^ lol][0]; - uae_u32 t2 = dtbuf[h ^ lol][2]; - #ifdef DEBUGGER - if (decode_specials_debug) { - t2 = decode_denise_specials_debug(t2, cnt + 2); - } - #endif - *buf1++ = t2; - *buf2++ = t2; - *gbuf++ = dtgbuf[h ^ lol][2]; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -12431,7 +8606,7 @@ static void lts_aga_fm1_n1_p4_ishres_dhires_genlock(void) denise_cck++; } } -static void lts_aga_fm1_n1_p4_ishres_dhires_filtered_genlock(void) +static void lts_aga_fm1_ehb0_p8_ihires_dlores_spr_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -12442,111 +8617,35 @@ 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; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); - } - last_bpl_pix = pix0; - } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4e(); - } - if (bpldat_copy[1] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[1]) { - copybpl4o(); - } - loaded_pix = getbpl4_32(); - loaded_pixs[0] = loaded_pix; - uae_u8 pix1 = 0; - uae_u8 gpix1 = 0xff; - uae_u32 dpix_val1 = BLANK_COLOR; - if (!denise_blank_active) { - gpix1 = get_genlock_transparency_border(); - dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; - gpix1 = get_genlock_transparency(pix1 ^ bplcon4_denise_xor_val); - } - last_bpl_pix = pix1; - } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4e(); - } - if (bpldat_copy[1] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[1]) { - copybpl4o(); - } - loaded_pix = getbpl4_32(); - loaded_pixs[1] = loaded_pix; - internal_pixel_cnt += 2; - uae_u8 pix2 = 0; - uae_u8 gpix2 = 0xff; - uae_u32 dpix_val2 = BLANK_COLOR; - if (!denise_blank_active) { - gpix2 = get_genlock_transparency_border(); - dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; - gpix2 = get_genlock_transparency(pix2 ^ bplcon4_denise_xor_val); - } - last_bpl_pix = pix2; - } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4e(); } - if (bpldat_copy[1] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[1]) { - copybpl4o(); - } - loaded_pix = getbpl4_32(); - loaded_pixs[2] = loaded_pix; - uae_u8 pix3 = 0; - uae_u8 gpix3 = 0xff; - uae_u32 dpix_val3 = BLANK_COLOR; - if (!denise_blank_active) { - gpix3 = get_genlock_transparency_border(); - dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; - gpix3 = get_genlock_transparency(pix3 ^ bplcon4_denise_xor_val); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; } - last_bpl_pix = pix3; - } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4e(); - } - if (bpldat_copy[1] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[1]) { - copybpl4o(); } - loaded_pix = getbpl4_32(); - loaded_pixs[3] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - dpix_val0 = filter_pixel(dpix_val0, dpix_val1); - gpix0 = filter_pixel_genlock(gpix0, gpix1); + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; - dpix_val2 = filter_pixel(dpix_val2, dpix_val3); - gpix2 = filter_pixel_genlock(gpix2, gpix3); - dtbuf[h][2] = dpix_val2; - dtgbuf[h][2] = gpix2; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -12556,15 +8655,6 @@ static void lts_aga_fm1_n1_p4_ishres_dhires_filtered_genlock(void) *buf1++ = t0; *buf2++ = t0; *gbuf++ = dtgbuf[h ^ lol][0]; - uae_u32 t2 = dtbuf[h ^ lol][2]; - #ifdef DEBUGGER - if (decode_specials_debug) { - t2 = decode_denise_specials_debug(t2, cnt + 2); - } - #endif - *buf1++ = t2; - *buf2++ = t2; - *gbuf++ = dtgbuf[h ^ lol][2]; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -12588,7 +8678,7 @@ static void lts_aga_fm1_n1_p4_ishres_dhires_filtered_genlock(void) denise_cck++; } } -static void lts_aga_fm1_dpf0_p4_ishres_dhires_genlock(void) +static void lts_aga_fm1_ehb0_p8_ihires_dlores_spr_filtered_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -12599,67 +8689,45 @@ 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; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - gpix0 = get_genlock_transparency(dpf_lookup[pix0]); - } - last_bpl_pix = pix0; - } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4(); } - loaded_pix = getbpl4_32(); - loaded_pixs[0] = loaded_pix; - shiftbpl4(); - internal_pixel_cnt += 2; - uae_u8 pix2 = 0; - uae_u8 gpix2 = 0xff; - uae_u32 dpix_val2 = BLANK_COLOR; - if (!denise_blank_active) { - gpix2 = get_genlock_transparency_border(); - dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; - gpix2 = get_genlock_transparency(dpf_lookup[pix2]); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; } - last_bpl_pix = pix2; } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4(); + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; } - loaded_pix = getbpl4_32(); - loaded_pixs[2] = loaded_pix; - shiftbpl4(); - internal_pixel_cnt += 2; + internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + gpix0 = filter_pixel_genlock(gpix0, gpix1); dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; - dtbuf[h][2] = dpix_val2; - dtgbuf[h][2] = gpix2; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -12669,15 +8737,6 @@ static void lts_aga_fm1_dpf0_p4_ishres_dhires_genlock(void) *buf1++ = t0; *buf2++ = t0; *gbuf++ = dtgbuf[h ^ lol][0]; - uae_u32 t2 = dtbuf[h ^ lol][2]; - #ifdef DEBUGGER - if (decode_specials_debug) { - t2 = decode_denise_specials_debug(t2, cnt + 2); - } - #endif - *buf1++ = t2; - *buf2++ = t2; - *gbuf++ = dtgbuf[h ^ lol][2]; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -12701,7 +8760,7 @@ static void lts_aga_fm1_dpf0_p4_ishres_dhires_genlock(void) denise_cck++; } } -static void lts_aga_fm1_dpf0_p4_ishres_dhires_filtered_genlock(void) +static void lts_aga_fm1_ehb1_p8_ihires_dlores_spr_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -12712,119 +8771,117 @@ 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; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - gpix0 = get_genlock_transparency(dpf_lookup[pix0]); } - last_bpl_pix = pix0; + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_ehb1_p8_ihires_dlores_spr_filtered_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } } - loaded_pix = getbpl4_32(); - loaded_pixs[0] = loaded_pix; uae_u8 pix1 = 0; uae_u8 gpix1 = 0xff; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { gpix1 = get_genlock_transparency_border(); dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - if (dpf_lookup_no[pix1]) { - val1 += dblpfofs[bpldualpf2of]; - } - val1 ^= bplcon4_denise_xor_val; - dpix_val1 = denise_colors.acolors[val1]; - gpix1 = get_genlock_transparency(dpf_lookup[pix1]); - } - last_bpl_pix = pix1; - } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4(); - } - loaded_pix = getbpl4_32(); - loaded_pixs[1] = loaded_pix; - internal_pixel_cnt += 2; - uae_u8 pix2 = 0; - uae_u8 gpix2 = 0xff; - uae_u32 dpix_val2 = BLANK_COLOR; - if (!denise_blank_active) { - gpix2 = get_genlock_transparency_border(); - dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; - gpix2 = get_genlock_transparency(dpf_lookup[pix2]); - } - last_bpl_pix = pix2; - } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4(); } - loaded_pix = getbpl4_32(); - loaded_pixs[2] = loaded_pix; - uae_u8 pix3 = 0; - uae_u8 gpix3 = 0xff; - uae_u32 dpix_val3 = BLANK_COLOR; - if (!denise_blank_active) { - gpix3 = get_genlock_transparency_border(); - dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - uae_u8 val3 = dpf_lookup[pix3]; - if (dpf_lookup_no[pix3]) { - val3 += dblpfofs[bpldualpf2of]; + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + dpix_val1 = dpix_val0; } - val3 ^= bplcon4_denise_xor_val; - dpix_val3 = denise_colors.acolors[val3]; - gpix3 = get_genlock_transparency(dpf_lookup[pix3]); } - last_bpl_pix = pix3; - } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4(); - } - loaded_pix = getbpl4_32(); - loaded_pixs[3] = loaded_pix; - internal_pixel_cnt += 2; - if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dpix_val0 = filter_pixel(dpix_val0, dpix_val1); gpix0 = filter_pixel_genlock(gpix0, gpix1); dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; - dpix_val2 = filter_pixel(dpix_val2, dpix_val3); - gpix2 = filter_pixel_genlock(gpix2, gpix3); - dtbuf[h][2] = dpix_val2; - dtgbuf[h][2] = gpix2; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -12834,15 +8891,6 @@ static void lts_aga_fm1_dpf0_p4_ishres_dhires_filtered_genlock(void) *buf1++ = t0; *buf2++ = t0; *gbuf++ = dtgbuf[h ^ lol][0]; - uae_u32 t2 = dtbuf[h ^ lol][2]; - #ifdef DEBUGGER - if (decode_specials_debug) { - t2 = decode_denise_specials_debug(t2, cnt + 2); - } - #endif - *buf1++ = t2; - *buf2++ = t2; - *gbuf++ = dtgbuf[h ^ lol][2]; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -12866,7 +8914,7 @@ static void lts_aga_fm1_dpf0_p4_ishres_dhires_filtered_genlock(void) denise_cck++; } } -static void lts_aga_fm1_dpf1_p4_ishres_dhires_genlock(void) +static void lts_aga_fm1_ham0_p8_ihires_dlores_spr_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -12879,6 +8927,7 @@ static void lts_aga_fm1_dpf1_p4_ishres_dhires_genlock(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; @@ -12888,62 +8937,54 @@ static void lts_aga_fm1_dpf1_p4_ishres_dhires_genlock(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - gpix0 = get_genlock_transparency(dpf_lookup[pix0]); + dpix_val0 = decode_ham_pixel_aga(pix0); + gpix0 = get_genlock_transparency((pix0 >> 2) & 63); } last_bpl_pix = pix0; } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4e(); + shiftbpl8(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8(); } - if (bpldat_copy[1] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[1]) { - copybpl4o(); + loaded_pix = getbpl8_32(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } } - loaded_pix = getbpl4_32(); loaded_pixs[0] = loaded_pix; - shiftbpl4(); - internal_pixel_cnt += 2; - uae_u8 pix2 = 0; - uae_u8 gpix2 = 0xff; - uae_u32 dpix_val2 = BLANK_COLOR; + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { - gpix2 = get_genlock_transparency_border(); - dpix_val2 = bordercolor; + dpix_val1 = bordercolor; if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; - gpix2 = get_genlock_transparency(dpf_lookup[pix2]); + pix1 = loaded_pixs[1]; + decode_ham_pixel_aga(pix1); } - last_bpl_pix = pix2; - } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4e(); + last_bpl_pix = pix1; } - if (bpldat_copy[1] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[1]) { - copybpl4o(); + shiftbpl8(); + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8(); } - loaded_pix = getbpl4_32(); - loaded_pixs[2] = loaded_pix; - shiftbpl4(); - internal_pixel_cnt += 2; + loaded_pix = getbpl8_32(); + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; - dtbuf[h][2] = dpix_val2; - dtgbuf[h][2] = gpix2; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -12953,15 +8994,6 @@ static void lts_aga_fm1_dpf1_p4_ishres_dhires_genlock(void) *buf1++ = t0; *buf2++ = t0; *gbuf++ = dtgbuf[h ^ lol][0]; - uae_u32 t2 = dtbuf[h ^ lol][2]; - #ifdef DEBUGGER - if (decode_specials_debug) { - t2 = decode_denise_specials_debug(t2, cnt + 2); - } - #endif - *buf1++ = t2; - *buf2++ = t2; - *gbuf++ = dtgbuf[h ^ lol][2]; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -12985,7 +9017,7 @@ static void lts_aga_fm1_dpf1_p4_ishres_dhires_genlock(void) denise_cck++; } } -static void lts_aga_fm1_dpf1_p4_ishres_dhires_filtered_genlock(void) +static void lts_aga_fm1_ham0_p8_ihires_dlores_spr_filtered_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -12998,6 +9030,7 @@ static void lts_aga_fm1_dpf1_p4_ishres_dhires_filtered_genlock(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; @@ -13007,24 +9040,24 @@ static void lts_aga_fm1_dpf1_p4_ishres_dhires_filtered_genlock(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - gpix0 = get_genlock_transparency(dpf_lookup[pix0]); + dpix_val0 = decode_ham_pixel_aga(pix0); + gpix0 = get_genlock_transparency((pix0 >> 2) & 63); } last_bpl_pix = pix0; } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4e(); + shiftbpl8(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8(); } - if (bpldat_copy[1] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[1]) { - copybpl4o(); + loaded_pix = getbpl8_32(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } } - loaded_pix = getbpl4_32(); loaded_pixs[0] = loaded_pix; uae_u8 pix1 = 0; uae_u8 gpix1 = 0xff; @@ -13035,92 +9068,141 @@ static void lts_aga_fm1_dpf1_p4_ishres_dhires_filtered_genlock(void) if (denise_hdiw && bpl1dat_trigger) { pix1 = loaded_pixs[1]; clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - if (dpf_lookup_no[pix1]) { - val1 += dblpfofs[bpldualpf2of]; - } - val1 ^= bplcon4_denise_xor_val; - dpix_val1 = denise_colors.acolors[val1]; - gpix1 = get_genlock_transparency(dpf_lookup[pix1]); + dpix_val1 = decode_ham_pixel_aga(pix1); + gpix1 = get_genlock_transparency((pix1 >> 2) & 63); } last_bpl_pix = pix1; } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4e(); - } - if (bpldat_copy[1] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[1]) { - copybpl4o(); + shiftbpl8(); + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8(); } - loaded_pix = getbpl4_32(); + loaded_pix = getbpl8_32(); loaded_pixs[1] = loaded_pix; - internal_pixel_cnt += 2; - uae_u8 pix2 = 0; - uae_u8 gpix2 = 0xff; - uae_u32 dpix_val2 = BLANK_COLOR; + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + gpix0 = filter_pixel_genlock(gpix0, gpix1); + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_ham1_p8_ihires_dlores_spr_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { - gpix2 = get_genlock_transparency_border(); - dpix_val2 = bordercolor; + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; - gpix2 = get_genlock_transparency(dpf_lookup[pix2]); + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = decode_ham_pixel_aga(pix0); + gpix0 = get_genlock_transparency((pix0 >> 2) & 63); } - last_bpl_pix = pix2; + last_bpl_pix = pix0; } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4e(); + shiftbpl8(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8e(); } - if (bpldat_copy[1] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[1]) { - copybpl4o(); + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o(); } - loaded_pix = getbpl4_32(); - loaded_pixs[2] = loaded_pix; - uae_u8 pix3 = 0; - uae_u8 gpix3 = 0xff; - uae_u32 dpix_val3 = BLANK_COLOR; + loaded_pix = getbpl8_32(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { - gpix3 = get_genlock_transparency_border(); - dpix_val3 = bordercolor; + dpix_val1 = bordercolor; if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - uae_u8 val3 = dpf_lookup[pix3]; - if (dpf_lookup_no[pix3]) { - val3 += dblpfofs[bpldualpf2of]; - } - val3 ^= bplcon4_denise_xor_val; - dpix_val3 = denise_colors.acolors[val3]; - gpix3 = get_genlock_transparency(dpf_lookup[pix3]); + pix1 = loaded_pixs[1]; + decode_ham_pixel_aga(pix1); } - last_bpl_pix = pix3; + last_bpl_pix = pix1; } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4e(); + shiftbpl8(); + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8e(); } - if (bpldat_copy[1] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[1]) { - copybpl4o(); + if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o(); } - loaded_pix = getbpl4_32(); - loaded_pixs[3] = loaded_pix; - internal_pixel_cnt += 2; + loaded_pix = getbpl8_32(); + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - dpix_val0 = filter_pixel(dpix_val0, dpix_val1); - gpix0 = filter_pixel_genlock(gpix0, gpix1); + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; - dpix_val2 = filter_pixel(dpix_val2, dpix_val3); - gpix2 = filter_pixel_genlock(gpix2, gpix3); - dtbuf[h][2] = dpix_val2; - dtgbuf[h][2] = gpix2; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -13130,15 +9212,6 @@ static void lts_aga_fm1_dpf1_p4_ishres_dhires_filtered_genlock(void) *buf1++ = t0; *buf2++ = t0; *gbuf++ = dtgbuf[h ^ lol][0]; - uae_u32 t2 = dtbuf[h ^ lol][2]; - #ifdef DEBUGGER - if (decode_specials_debug) { - t2 = decode_denise_specials_debug(t2, cnt + 2); - } - #endif - *buf1++ = t2; - *buf2++ = t2; - *gbuf++ = dtgbuf[h ^ lol][2]; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -13162,135 +9235,31190 @@ static void lts_aga_fm1_dpf1_p4_ishres_dhires_filtered_genlock(void) denise_cck++; } } -static void lts_aga_fm1_ehb0_p4_ishres_dhires_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb0_p4_ishres_dhires_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb1_p4_ishres_dhires_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb1_p4_ishres_dhires_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_ham0_p4_ishres_dhires_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_ham0_p4_ishres_dhires_filtered_genlock(void) +static void lts_aga_fm1_ham1_p8_ihires_dlores_spr_filtered_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = decode_ham_pixel_aga(pix0); + gpix0 = get_genlock_transparency((pix0 >> 2) & 63); + } + last_bpl_pix = pix0; + } + shiftbpl8(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8e(); + } + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o(); + } + loaded_pix = getbpl8_32(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + dpix_val1 = decode_ham_pixel_aga(pix1); + gpix1 = get_genlock_transparency((pix1 >> 2) & 63); + } + last_bpl_pix = pix1; + } + shiftbpl8(); + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8e(); + } + if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o(); + } + loaded_pix = getbpl8_32(); + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + gpix0 = filter_pixel_genlock(gpix0, gpix1); + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_kehb0_p8_ihires_dlores_spr_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_kehb0_p8_ihires_dlores_spr_filtered_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + gpix0 = filter_pixel_genlock(gpix0, gpix1); + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_kehb1_p8_ihires_dlores_spr_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_kehb1_p8_ihires_dlores_spr_filtered_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + gpix0 = filter_pixel_genlock(gpix0, gpix1); + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_n0_p4_ishres_dlores_genlock(void) { lts_null(); } -static void lts_aga_fm1_ham1_p4_ishres_dhires_genlock(void) +static void lts_aga_fm1_n0_p4_ishres_dlores_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm1_ham1_p4_ishres_dhires_filtered_genlock(void) +static void lts_aga_fm1_n1_p4_ishres_dlores_genlock(void) { lts_null(); } -static void lts_aga_fm1_kehb0_p4_ishres_dhires_genlock(void) +static void lts_aga_fm1_n1_p4_ishres_dlores_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm1_kehb0_p4_ishres_dhires_filtered_genlock(void) +static void lts_aga_fm1_dpf0_p4_ishres_dlores_genlock(void) { lts_null(); } -static void lts_aga_fm1_kehb1_p4_ishres_dhires_genlock(void) +static void lts_aga_fm1_dpf0_p4_ishres_dlores_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm1_kehb1_p4_ishres_dhires_filtered_genlock(void) +static void lts_aga_fm1_dpf1_p4_ishres_dlores_genlock(void) { lts_null(); } -static void lts_aga_fm1_n0_p8_ishres_dhires_genlock(void) +static void lts_aga_fm1_dpf1_p4_ishres_dlores_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm1_n0_p8_ishres_dhires_filtered_genlock(void) +static void lts_aga_fm1_ehb0_p4_ishres_dlores_genlock(void) { lts_null(); } -static void lts_aga_fm1_n1_p8_ishres_dhires_genlock(void) +static void lts_aga_fm1_ehb0_p4_ishres_dlores_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm1_n1_p8_ishres_dhires_filtered_genlock(void) +static void lts_aga_fm1_ehb1_p4_ishres_dlores_genlock(void) { lts_null(); } -static void lts_aga_fm1_dpf0_p8_ishres_dhires_genlock(void) +static void lts_aga_fm1_ehb1_p4_ishres_dlores_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm1_dpf0_p8_ishres_dhires_filtered_genlock(void) +static void lts_aga_fm1_ham0_p4_ishres_dlores_genlock(void) { lts_null(); } -static void lts_aga_fm1_dpf1_p8_ishres_dhires_genlock(void) +static void lts_aga_fm1_ham0_p4_ishres_dlores_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm1_dpf1_p8_ishres_dhires_filtered_genlock(void) +static void lts_aga_fm1_ham1_p4_ishres_dlores_genlock(void) { lts_null(); } -static void lts_aga_fm1_ehb0_p8_ishres_dhires_genlock(void) +static void lts_aga_fm1_ham1_p4_ishres_dlores_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm1_ehb0_p8_ishres_dhires_filtered_genlock(void) +static void lts_aga_fm1_kehb0_p4_ishres_dlores_genlock(void) { lts_null(); } -static void lts_aga_fm1_ehb1_p8_ishres_dhires_genlock(void) +static void lts_aga_fm1_kehb0_p4_ishres_dlores_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm1_ehb1_p8_ishres_dhires_filtered_genlock(void) +static void lts_aga_fm1_kehb1_p4_ishres_dlores_genlock(void) { lts_null(); } -static void lts_aga_fm1_ham0_p8_ishres_dhires_genlock(void) +static void lts_aga_fm1_kehb1_p4_ishres_dlores_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm1_ham0_p8_ishres_dhires_filtered_genlock(void) +static void lts_aga_fm1_n0_p8_ishres_dlores_genlock(void) { lts_null(); } -static void lts_aga_fm1_ham1_p8_ishres_dhires_genlock(void) +static void lts_aga_fm1_n0_p8_ishres_dlores_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm1_ham1_p8_ishres_dhires_filtered_genlock(void) +static void lts_aga_fm1_n1_p8_ishres_dlores_genlock(void) { lts_null(); } -static void lts_aga_fm1_kehb0_p8_ishres_dhires_genlock(void) +static void lts_aga_fm1_n1_p8_ishres_dlores_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm1_kehb0_p8_ishres_dhires_filtered_genlock(void) +static void lts_aga_fm1_dpf0_p8_ishres_dlores_genlock(void) { lts_null(); } -static void lts_aga_fm1_kehb1_p8_ishres_dhires_genlock(void) +static void lts_aga_fm1_dpf0_p8_ishres_dlores_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm1_dpf1_p8_ishres_dlores_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm1_dpf1_p8_ishres_dlores_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm1_ehb0_p8_ishres_dlores_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm1_ehb0_p8_ishres_dlores_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm1_ehb1_p8_ishres_dlores_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm1_ehb1_p8_ishres_dlores_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm1_ham0_p8_ishres_dlores_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm1_ham0_p8_ishres_dlores_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm1_ham1_p8_ishres_dlores_genlock(void) { lts_null(); } -static void lts_aga_fm1_kehb1_p8_ishres_dhires_filtered_genlock(void) +static void lts_aga_fm1_ham1_p8_ishres_dlores_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm1_kehb0_p8_ishres_dlores_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm1_kehb0_p8_ishres_dlores_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm1_kehb1_p8_ishres_dlores_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm1_kehb1_p8_ishres_dlores_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm1_n0_p4_ishres_dlores_spr_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm1_n0_p4_ishres_dlores_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm1_n1_p4_ishres_dlores_spr_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm1_n1_p4_ishres_dlores_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm1_dpf0_p4_ishres_dlores_spr_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm1_dpf0_p4_ishres_dlores_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm1_dpf1_p4_ishres_dlores_spr_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm1_dpf1_p4_ishres_dlores_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm1_ehb0_p4_ishres_dlores_spr_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm1_ehb0_p4_ishres_dlores_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm1_ehb1_p4_ishres_dlores_spr_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm1_ehb1_p4_ishres_dlores_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm1_ham0_p4_ishres_dlores_spr_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm1_ham0_p4_ishres_dlores_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm1_ham1_p4_ishres_dlores_spr_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm1_ham1_p4_ishres_dlores_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm1_kehb0_p4_ishres_dlores_spr_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm1_kehb0_p4_ishres_dlores_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm1_kehb1_p4_ishres_dlores_spr_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm1_kehb1_p4_ishres_dlores_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm1_n0_p8_ishres_dlores_spr_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm1_n0_p8_ishres_dlores_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm1_n1_p8_ishres_dlores_spr_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm1_n1_p8_ishres_dlores_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm1_dpf0_p8_ishres_dlores_spr_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm1_dpf0_p8_ishres_dlores_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm1_dpf1_p8_ishres_dlores_spr_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm1_dpf1_p8_ishres_dlores_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm1_ehb0_p8_ishres_dlores_spr_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm1_ehb0_p8_ishres_dlores_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm1_ehb1_p8_ishres_dlores_spr_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm1_ehb1_p8_ishres_dlores_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm1_ham0_p8_ishres_dlores_spr_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm1_ham0_p8_ishres_dlores_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm1_ham1_p8_ishres_dlores_spr_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm1_ham1_p8_ishres_dlores_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm1_kehb0_p8_ishres_dlores_spr_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm1_kehb0_p8_ishres_dlores_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm1_kehb1_p8_ishres_dlores_spr_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm1_kehb1_p8_ishres_dlores_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm1_n0_p4_ilores_dhires_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_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; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4(); + loaded_pix = getbpl4_32(); + } + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl4(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4_32(); + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + gpix2 = get_genlock_transparency(pix2 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4(); + loaded_pix = getbpl4_32(); + } + if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { + copybpl4(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4_32(); + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_n0_p4_ilores_dhires_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm1_n1_p4_ilores_dhires_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_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; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4e(); + loaded_pix = getbpl4_32(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl4o(); + loaded_pix = getbpl4_32(); + } + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl4e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4_32(); + } + if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { + copybpl4o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl4_32(); + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + gpix2 = get_genlock_transparency(pix2 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4e(); + loaded_pix = getbpl4_32(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl4o(); + loaded_pix = getbpl4_32(); + } + if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { + copybpl4e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4_32(); + } + if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) { + copybpl4o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl4_32(); + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_n1_p4_ilores_dhires_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm1_dpf0_p4_ilores_dhires_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_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; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + gpix0 = get_genlock_transparency(dpf_lookup[pix0]); + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4(); + loaded_pix = getbpl4_32(); + } + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl4(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4_32(); + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; + gpix2 = get_genlock_transparency(dpf_lookup[pix2]); + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4(); + loaded_pix = getbpl4_32(); + } + if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { + copybpl4(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4_32(); + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_dpf0_p4_ilores_dhires_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm1_dpf1_p4_ilores_dhires_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_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; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + gpix0 = get_genlock_transparency(dpf_lookup[pix0]); + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4e(); + loaded_pix = getbpl4_32(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl4o(); + loaded_pix = getbpl4_32(); + } + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl4e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4_32(); + } + if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { + copybpl4o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl4_32(); + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; + gpix2 = get_genlock_transparency(dpf_lookup[pix2]); + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4e(); + loaded_pix = getbpl4_32(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl4o(); + loaded_pix = getbpl4_32(); + } + if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { + copybpl4e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4_32(); + } + if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) { + copybpl4o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl4_32(); + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_dpf1_p4_ilores_dhires_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm1_ehb0_p4_ilores_dhires_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_ehb0_p4_ilores_dhires_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm1_ehb1_p4_ilores_dhires_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_ehb1_p4_ilores_dhires_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm1_ham0_p4_ilores_dhires_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_ham0_p4_ilores_dhires_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm1_ham1_p4_ilores_dhires_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_ham1_p4_ilores_dhires_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm1_kehb0_p4_ilores_dhires_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_kehb0_p4_ilores_dhires_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm1_kehb1_p4_ilores_dhires_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_kehb1_p4_ilores_dhires_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm1_n0_p8_ilores_dhires_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_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; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8(); + loaded_pix = getbpl8_32(); + } + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8_32(); + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + gpix2 = get_genlock_transparency(pix2 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8(); + loaded_pix = getbpl8_32(); + } + if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8_32(); + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_n0_p8_ilores_dhires_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm1_n1_p8_ilores_dhires_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_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; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8e(); + loaded_pix = getbpl8_32(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl8o(); + loaded_pix = getbpl8_32(); + } + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8_32(); + } + if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { + copybpl8o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl8_32(); + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + gpix2 = get_genlock_transparency(pix2 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8e(); + loaded_pix = getbpl8_32(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl8o(); + loaded_pix = getbpl8_32(); + } + if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8_32(); + } + if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) { + copybpl8o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl8_32(); + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_n1_p8_ilores_dhires_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm1_dpf0_p8_ilores_dhires_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_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; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + gpix0 = get_genlock_transparency(dpf_lookup[pix0]); + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8(); + loaded_pix = getbpl8_32(); + } + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8_32(); + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; + gpix2 = get_genlock_transparency(dpf_lookup[pix2]); + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8(); + loaded_pix = getbpl8_32(); + } + if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8_32(); + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_dpf0_p8_ilores_dhires_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm1_dpf1_p8_ilores_dhires_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_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; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + gpix0 = get_genlock_transparency(dpf_lookup[pix0]); + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8e(); + loaded_pix = getbpl8_32(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl8o(); + loaded_pix = getbpl8_32(); + } + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8_32(); + } + if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { + copybpl8o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl8_32(); + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; + gpix2 = get_genlock_transparency(dpf_lookup[pix2]); + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8e(); + loaded_pix = getbpl8_32(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl8o(); + loaded_pix = getbpl8_32(); + } + if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8_32(); + } + if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) { + copybpl8o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl8_32(); + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_dpf1_p8_ilores_dhires_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm1_ehb0_p8_ilores_dhires_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_ehb0_p8_ilores_dhires_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm1_ehb1_p8_ilores_dhires_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_ehb1_p8_ilores_dhires_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm1_ham0_p8_ilores_dhires_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_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; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = decode_ham_pixel_aga(pix0); + gpix0 = get_genlock_transparency((pix0 >> 2) & 63); + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8(); + loaded_pix = getbpl8_32(); + } + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8_32(); + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = decode_ham_pixel_aga(pix2); + gpix2 = get_genlock_transparency((pix2 >> 2) & 63); + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8(); + loaded_pix = getbpl8_32(); + } + if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8_32(); + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_ham0_p8_ilores_dhires_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm1_ham1_p8_ilores_dhires_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_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; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = decode_ham_pixel_aga(pix0); + gpix0 = get_genlock_transparency((pix0 >> 2) & 63); + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8e(); + loaded_pix = getbpl8_32(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl8o(); + loaded_pix = getbpl8_32(); + } + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8_32(); + } + if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { + copybpl8o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl8_32(); + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = decode_ham_pixel_aga(pix2); + gpix2 = get_genlock_transparency((pix2 >> 2) & 63); + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8e(); + loaded_pix = getbpl8_32(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl8o(); + loaded_pix = getbpl8_32(); + } + if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8_32(); + } + if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) { + copybpl8o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl8_32(); + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_ham1_p8_ilores_dhires_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm1_kehb0_p8_ilores_dhires_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_kehb0_p8_ilores_dhires_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm1_kehb1_p8_ilores_dhires_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_kehb1_p8_ilores_dhires_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm1_n0_p4_ilores_dhires_spr_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4(); + loaded_pix = getbpl4_32(); + } + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl4(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4_32(); + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + gpix2 = get_genlock_transparency(pix2 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4(); + loaded_pix = getbpl4_32(); + } + if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { + copybpl4(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4_32(); + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_n0_p4_ilores_dhires_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm1_n1_p4_ilores_dhires_spr_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4e(); + loaded_pix = getbpl4_32(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl4o(); + loaded_pix = getbpl4_32(); + } + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl4e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4_32(); + } + if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { + copybpl4o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl4_32(); + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + gpix2 = get_genlock_transparency(pix2 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4e(); + loaded_pix = getbpl4_32(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl4o(); + loaded_pix = getbpl4_32(); + } + if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { + copybpl4e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4_32(); + } + if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) { + copybpl4o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl4_32(); + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_n1_p4_ilores_dhires_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm1_dpf0_p4_ilores_dhires_spr_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + gpix0 = get_genlock_transparency(dpf_lookup[pix0]); + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4(); + loaded_pix = getbpl4_32(); + } + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl4(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4_32(); + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; + gpix2 = get_genlock_transparency(dpf_lookup[pix2]); + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4(); + loaded_pix = getbpl4_32(); + } + if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { + copybpl4(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4_32(); + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_dpf0_p4_ilores_dhires_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm1_dpf1_p4_ilores_dhires_spr_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + gpix0 = get_genlock_transparency(dpf_lookup[pix0]); + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4e(); + loaded_pix = getbpl4_32(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl4o(); + loaded_pix = getbpl4_32(); + } + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl4e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4_32(); + } + if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { + copybpl4o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl4_32(); + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; + gpix2 = get_genlock_transparency(dpf_lookup[pix2]); + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4e(); + loaded_pix = getbpl4_32(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl4o(); + loaded_pix = getbpl4_32(); + } + if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { + copybpl4e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4_32(); + } + if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) { + copybpl4o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl4_32(); + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_dpf1_p4_ilores_dhires_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm1_ehb0_p4_ilores_dhires_spr_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_ehb0_p4_ilores_dhires_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm1_ehb1_p4_ilores_dhires_spr_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_ehb1_p4_ilores_dhires_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm1_ham0_p4_ilores_dhires_spr_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_ham0_p4_ilores_dhires_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm1_ham1_p4_ilores_dhires_spr_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_ham1_p4_ilores_dhires_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm1_kehb0_p4_ilores_dhires_spr_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_kehb0_p4_ilores_dhires_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm1_kehb1_p4_ilores_dhires_spr_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_kehb1_p4_ilores_dhires_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm1_n0_p8_ilores_dhires_spr_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8(); + loaded_pix = getbpl8_32(); + } + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8_32(); + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + gpix2 = get_genlock_transparency(pix2 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8(); + loaded_pix = getbpl8_32(); + } + if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8_32(); + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_n0_p8_ilores_dhires_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm1_n1_p8_ilores_dhires_spr_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8e(); + loaded_pix = getbpl8_32(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl8o(); + loaded_pix = getbpl8_32(); + } + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8_32(); + } + if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { + copybpl8o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl8_32(); + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + gpix2 = get_genlock_transparency(pix2 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8e(); + loaded_pix = getbpl8_32(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl8o(); + loaded_pix = getbpl8_32(); + } + if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8_32(); + } + if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) { + copybpl8o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl8_32(); + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_n1_p8_ilores_dhires_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm1_dpf0_p8_ilores_dhires_spr_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + gpix0 = get_genlock_transparency(dpf_lookup[pix0]); + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8(); + loaded_pix = getbpl8_32(); + } + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8_32(); + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; + gpix2 = get_genlock_transparency(dpf_lookup[pix2]); + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8(); + loaded_pix = getbpl8_32(); + } + if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8_32(); + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_dpf0_p8_ilores_dhires_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm1_dpf1_p8_ilores_dhires_spr_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + gpix0 = get_genlock_transparency(dpf_lookup[pix0]); + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8e(); + loaded_pix = getbpl8_32(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl8o(); + loaded_pix = getbpl8_32(); + } + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8_32(); + } + if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { + copybpl8o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl8_32(); + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; + gpix2 = get_genlock_transparency(dpf_lookup[pix2]); + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8e(); + loaded_pix = getbpl8_32(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl8o(); + loaded_pix = getbpl8_32(); + } + if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8_32(); + } + if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) { + copybpl8o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl8_32(); + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_dpf1_p8_ilores_dhires_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm1_ehb0_p8_ilores_dhires_spr_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_ehb0_p8_ilores_dhires_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm1_ehb1_p8_ilores_dhires_spr_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_ehb1_p8_ilores_dhires_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm1_ham0_p8_ilores_dhires_spr_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = decode_ham_pixel_aga(pix0); + gpix0 = get_genlock_transparency((pix0 >> 2) & 63); + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8(); + loaded_pix = getbpl8_32(); + } + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8_32(); + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = decode_ham_pixel_aga(pix2); + gpix2 = get_genlock_transparency((pix2 >> 2) & 63); + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8(); + loaded_pix = getbpl8_32(); + } + if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8_32(); + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_ham0_p8_ilores_dhires_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm1_ham1_p8_ilores_dhires_spr_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = decode_ham_pixel_aga(pix0); + gpix0 = get_genlock_transparency((pix0 >> 2) & 63); + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8e(); + loaded_pix = getbpl8_32(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl8o(); + loaded_pix = getbpl8_32(); + } + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8_32(); + } + if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { + copybpl8o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl8_32(); + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = decode_ham_pixel_aga(pix2); + gpix2 = get_genlock_transparency((pix2 >> 2) & 63); + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8e(); + loaded_pix = getbpl8_32(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl8o(); + loaded_pix = getbpl8_32(); + } + if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8_32(); + } + if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) { + copybpl8o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl8_32(); + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_ham1_p8_ilores_dhires_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm1_kehb0_p8_ilores_dhires_spr_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_kehb0_p8_ilores_dhires_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm1_kehb1_p8_ilores_dhires_spr_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_kehb1_p8_ilores_dhires_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm1_n0_p4_ihires_dhires_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_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; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix0; + } + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4(); + } + loaded_pix = getbpl4_32(); + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + gpix2 = get_genlock_transparency(pix2 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix2; + } + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4(); + } + loaded_pix = getbpl4_32(); + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_n0_p4_ihires_dhires_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm1_n1_p4_ihires_dhires_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_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; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix0; + } + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4e(); + } + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl4o(); + } + loaded_pix = getbpl4_32(); + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + gpix2 = get_genlock_transparency(pix2 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix2; + } + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4e(); + } + if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { + copybpl4o(); + } + loaded_pix = getbpl4_32(); + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_n1_p4_ihires_dhires_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm1_dpf0_p4_ihires_dhires_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_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; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + gpix0 = get_genlock_transparency(dpf_lookup[pix0]); + } + last_bpl_pix = pix0; + } + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4(); + } + loaded_pix = getbpl4_32(); + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; + gpix2 = get_genlock_transparency(dpf_lookup[pix2]); + } + last_bpl_pix = pix2; + } + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4(); + } + loaded_pix = getbpl4_32(); + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_dpf0_p4_ihires_dhires_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm1_dpf1_p4_ihires_dhires_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_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; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + gpix0 = get_genlock_transparency(dpf_lookup[pix0]); + } + last_bpl_pix = pix0; + } + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4e(); + } + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl4o(); + } + loaded_pix = getbpl4_32(); + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; + gpix2 = get_genlock_transparency(dpf_lookup[pix2]); + } + last_bpl_pix = pix2; + } + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4e(); + } + if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { + copybpl4o(); + } + loaded_pix = getbpl4_32(); + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_dpf1_p4_ihires_dhires_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm1_ehb0_p4_ihires_dhires_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_ehb0_p4_ihires_dhires_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm1_ehb1_p4_ihires_dhires_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_ehb1_p4_ihires_dhires_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm1_ham0_p4_ihires_dhires_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_ham0_p4_ihires_dhires_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm1_ham1_p4_ihires_dhires_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_ham1_p4_ihires_dhires_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm1_kehb0_p4_ihires_dhires_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_kehb0_p4_ihires_dhires_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm1_kehb1_p4_ihires_dhires_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_kehb1_p4_ihires_dhires_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm1_n0_p8_ihires_dhires_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_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; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix0; + } + shiftbpl8(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8(); + } + loaded_pix = getbpl8_32(); + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + gpix2 = get_genlock_transparency(pix2 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix2; + } + shiftbpl8(); + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8(); + } + loaded_pix = getbpl8_32(); + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_n0_p8_ihires_dhires_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm1_n1_p8_ihires_dhires_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_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; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix0; + } + shiftbpl8(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8e(); + } + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o(); + } + loaded_pix = getbpl8_32(); + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + gpix2 = get_genlock_transparency(pix2 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix2; + } + shiftbpl8(); + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8e(); + } + if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o(); + } + loaded_pix = getbpl8_32(); + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_n1_p8_ihires_dhires_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm1_dpf0_p8_ihires_dhires_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_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; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + gpix0 = get_genlock_transparency(dpf_lookup[pix0]); + } + last_bpl_pix = pix0; + } + shiftbpl8(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8(); + } + loaded_pix = getbpl8_32(); + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; + gpix2 = get_genlock_transparency(dpf_lookup[pix2]); + } + last_bpl_pix = pix2; + } + shiftbpl8(); + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8(); + } + loaded_pix = getbpl8_32(); + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_dpf0_p8_ihires_dhires_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm1_dpf1_p8_ihires_dhires_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_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; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + gpix0 = get_genlock_transparency(dpf_lookup[pix0]); + } + last_bpl_pix = pix0; + } + shiftbpl8(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8e(); + } + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o(); + } + loaded_pix = getbpl8_32(); + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; + gpix2 = get_genlock_transparency(dpf_lookup[pix2]); + } + last_bpl_pix = pix2; + } + shiftbpl8(); + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8e(); + } + if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o(); + } + loaded_pix = getbpl8_32(); + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_dpf1_p8_ihires_dhires_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm1_ehb0_p8_ihires_dhires_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_ehb0_p8_ihires_dhires_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm1_ehb1_p8_ihires_dhires_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_ehb1_p8_ihires_dhires_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm1_ham0_p8_ihires_dhires_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_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; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = decode_ham_pixel_aga(pix0); + gpix0 = get_genlock_transparency((pix0 >> 2) & 63); + } + last_bpl_pix = pix0; + } + shiftbpl8(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8(); + } + loaded_pix = getbpl8_32(); + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = decode_ham_pixel_aga(pix2); + gpix2 = get_genlock_transparency((pix2 >> 2) & 63); + } + last_bpl_pix = pix2; + } + shiftbpl8(); + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8(); + } + loaded_pix = getbpl8_32(); + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_ham0_p8_ihires_dhires_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm1_ham1_p8_ihires_dhires_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_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; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = decode_ham_pixel_aga(pix0); + gpix0 = get_genlock_transparency((pix0 >> 2) & 63); + } + last_bpl_pix = pix0; + } + shiftbpl8(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8e(); + } + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o(); + } + loaded_pix = getbpl8_32(); + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = decode_ham_pixel_aga(pix2); + gpix2 = get_genlock_transparency((pix2 >> 2) & 63); + } + last_bpl_pix = pix2; + } + shiftbpl8(); + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8e(); + } + if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o(); + } + loaded_pix = getbpl8_32(); + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_ham1_p8_ihires_dhires_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm1_kehb0_p8_ihires_dhires_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_kehb0_p8_ihires_dhires_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm1_kehb1_p8_ihires_dhires_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_kehb1_p8_ihires_dhires_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm1_n0_p4_ihires_dhires_spr_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix0; + } + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4(); + } + loaded_pix = getbpl4_32(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + gpix2 = get_genlock_transparency(pix2 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix2; + } + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4(); + } + loaded_pix = getbpl4_32(); + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_n0_p4_ihires_dhires_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm1_n1_p4_ihires_dhires_spr_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix0; + } + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4e(); + } + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl4o(); + } + loaded_pix = getbpl4_32(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + gpix2 = get_genlock_transparency(pix2 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix2; + } + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4e(); + } + if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { + copybpl4o(); + } + loaded_pix = getbpl4_32(); + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_n1_p4_ihires_dhires_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm1_dpf0_p4_ihires_dhires_spr_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + gpix0 = get_genlock_transparency(dpf_lookup[pix0]); + } + last_bpl_pix = pix0; + } + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4(); + } + loaded_pix = getbpl4_32(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; + gpix2 = get_genlock_transparency(dpf_lookup[pix2]); + } + last_bpl_pix = pix2; + } + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4(); + } + loaded_pix = getbpl4_32(); + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_dpf0_p4_ihires_dhires_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm1_dpf1_p4_ihires_dhires_spr_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + gpix0 = get_genlock_transparency(dpf_lookup[pix0]); + } + last_bpl_pix = pix0; + } + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4e(); + } + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl4o(); + } + loaded_pix = getbpl4_32(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; + gpix2 = get_genlock_transparency(dpf_lookup[pix2]); + } + last_bpl_pix = pix2; + } + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4e(); + } + if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { + copybpl4o(); + } + loaded_pix = getbpl4_32(); + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_dpf1_p4_ihires_dhires_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm1_ehb0_p4_ihires_dhires_spr_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_ehb0_p4_ihires_dhires_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm1_ehb1_p4_ihires_dhires_spr_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_ehb1_p4_ihires_dhires_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm1_ham0_p4_ihires_dhires_spr_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_ham0_p4_ihires_dhires_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm1_ham1_p4_ihires_dhires_spr_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_ham1_p4_ihires_dhires_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm1_kehb0_p4_ihires_dhires_spr_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_kehb0_p4_ihires_dhires_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm1_kehb1_p4_ihires_dhires_spr_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_kehb1_p4_ihires_dhires_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm1_n0_p8_ihires_dhires_spr_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix0; + } + shiftbpl8(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8(); + } + loaded_pix = getbpl8_32(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + gpix2 = get_genlock_transparency(pix2 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix2; + } + shiftbpl8(); + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8(); + } + loaded_pix = getbpl8_32(); + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_n0_p8_ihires_dhires_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm1_n1_p8_ihires_dhires_spr_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix0; + } + shiftbpl8(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8e(); + } + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o(); + } + loaded_pix = getbpl8_32(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + gpix2 = get_genlock_transparency(pix2 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix2; + } + shiftbpl8(); + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8e(); + } + if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o(); + } + loaded_pix = getbpl8_32(); + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_n1_p8_ihires_dhires_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm1_dpf0_p8_ihires_dhires_spr_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + gpix0 = get_genlock_transparency(dpf_lookup[pix0]); + } + last_bpl_pix = pix0; + } + shiftbpl8(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8(); + } + loaded_pix = getbpl8_32(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; + gpix2 = get_genlock_transparency(dpf_lookup[pix2]); + } + last_bpl_pix = pix2; + } + shiftbpl8(); + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8(); + } + loaded_pix = getbpl8_32(); + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_dpf0_p8_ihires_dhires_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm1_dpf1_p8_ihires_dhires_spr_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + gpix0 = get_genlock_transparency(dpf_lookup[pix0]); + } + last_bpl_pix = pix0; + } + shiftbpl8(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8e(); + } + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o(); + } + loaded_pix = getbpl8_32(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; + gpix2 = get_genlock_transparency(dpf_lookup[pix2]); + } + last_bpl_pix = pix2; + } + shiftbpl8(); + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8e(); + } + if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o(); + } + loaded_pix = getbpl8_32(); + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_dpf1_p8_ihires_dhires_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm1_ehb0_p8_ihires_dhires_spr_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_ehb0_p8_ihires_dhires_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm1_ehb1_p8_ihires_dhires_spr_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_ehb1_p8_ihires_dhires_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm1_ham0_p8_ihires_dhires_spr_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = decode_ham_pixel_aga(pix0); + gpix0 = get_genlock_transparency((pix0 >> 2) & 63); + } + last_bpl_pix = pix0; + } + shiftbpl8(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8(); + } + loaded_pix = getbpl8_32(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = decode_ham_pixel_aga(pix2); + gpix2 = get_genlock_transparency((pix2 >> 2) & 63); + } + last_bpl_pix = pix2; + } + shiftbpl8(); + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8(); + } + loaded_pix = getbpl8_32(); + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_ham0_p8_ihires_dhires_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm1_ham1_p8_ihires_dhires_spr_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = decode_ham_pixel_aga(pix0); + gpix0 = get_genlock_transparency((pix0 >> 2) & 63); + } + last_bpl_pix = pix0; + } + shiftbpl8(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8e(); + } + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o(); + } + loaded_pix = getbpl8_32(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = decode_ham_pixel_aga(pix2); + gpix2 = get_genlock_transparency((pix2 >> 2) & 63); + } + last_bpl_pix = pix2; + } + shiftbpl8(); + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8e(); + } + if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o(); + } + loaded_pix = getbpl8_32(); + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_ham1_p8_ihires_dhires_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm1_kehb0_p8_ihires_dhires_spr_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_kehb0_p8_ihires_dhires_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm1_kehb1_p8_ihires_dhires_spr_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_kehb1_p8_ihires_dhires_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm1_n0_p4_ishres_dhires_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_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; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix0; + } + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4(); + } + loaded_pix = getbpl4_32(); + loaded_pixs[0] = loaded_pix; + shiftbpl4(); + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + gpix2 = get_genlock_transparency(pix2 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix2; + } + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4(); + } + loaded_pix = getbpl4_32(); + loaded_pixs[2] = loaded_pix; + shiftbpl4(); + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_n0_p4_ishres_dhires_filtered_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_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; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix0; + } + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4(); + } + loaded_pix = getbpl4_32(); + loaded_pixs[0] = loaded_pix; + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; + gpix1 = get_genlock_transparency(pix1 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix1; + } + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4(); + } + loaded_pix = getbpl4_32(); + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + gpix2 = get_genlock_transparency(pix2 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix2; + } + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4(); + } + loaded_pix = getbpl4_32(); + loaded_pixs[2] = loaded_pix; + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; + gpix3 = get_genlock_transparency(pix3 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix3; + } + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4(); + } + loaded_pix = getbpl4_32(); + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + gpix0 = filter_pixel_genlock(gpix0, gpix1); + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + gpix2 = filter_pixel_genlock(gpix2, gpix3); + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_n1_p4_ishres_dhires_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_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; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix0; + } + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4e(); + } + if (bpldat_copy[1] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[1]) { + copybpl4o(); + } + loaded_pix = getbpl4_32(); + loaded_pixs[0] = loaded_pix; + shiftbpl4(); + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + gpix2 = get_genlock_transparency(pix2 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix2; + } + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4e(); + } + if (bpldat_copy[1] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[1]) { + copybpl4o(); + } + loaded_pix = getbpl4_32(); + loaded_pixs[2] = loaded_pix; + shiftbpl4(); + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_n1_p4_ishres_dhires_filtered_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_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; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix0; + } + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4e(); + } + if (bpldat_copy[1] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[1]) { + copybpl4o(); + } + loaded_pix = getbpl4_32(); + loaded_pixs[0] = loaded_pix; + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; + gpix1 = get_genlock_transparency(pix1 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix1; + } + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4e(); + } + if (bpldat_copy[1] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[1]) { + copybpl4o(); + } + loaded_pix = getbpl4_32(); + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + gpix2 = get_genlock_transparency(pix2 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix2; + } + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4e(); + } + if (bpldat_copy[1] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[1]) { + copybpl4o(); + } + loaded_pix = getbpl4_32(); + loaded_pixs[2] = loaded_pix; + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; + gpix3 = get_genlock_transparency(pix3 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix3; + } + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4e(); + } + if (bpldat_copy[1] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[1]) { + copybpl4o(); + } + loaded_pix = getbpl4_32(); + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + gpix0 = filter_pixel_genlock(gpix0, gpix1); + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + gpix2 = filter_pixel_genlock(gpix2, gpix3); + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_dpf0_p4_ishres_dhires_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_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; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + gpix0 = get_genlock_transparency(dpf_lookup[pix0]); + } + last_bpl_pix = pix0; + } + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4(); + } + loaded_pix = getbpl4_32(); + loaded_pixs[0] = loaded_pix; + shiftbpl4(); + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; + gpix2 = get_genlock_transparency(dpf_lookup[pix2]); + } + last_bpl_pix = pix2; + } + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4(); + } + loaded_pix = getbpl4_32(); + loaded_pixs[2] = loaded_pix; + shiftbpl4(); + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_dpf0_p4_ishres_dhires_filtered_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_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; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + gpix0 = get_genlock_transparency(dpf_lookup[pix0]); + } + last_bpl_pix = pix0; + } + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4(); + } + loaded_pix = getbpl4_32(); + loaded_pixs[0] = loaded_pix; + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + uae_u8 val1 = dpf_lookup[pix1]; + if (dpf_lookup_no[pix1]) { + val1 += dblpfofs[bpldualpf2of]; + } + val1 ^= bplcon4_denise_xor_val; + dpix_val1 = denise_colors.acolors[val1]; + gpix1 = get_genlock_transparency(dpf_lookup[pix1]); + } + last_bpl_pix = pix1; + } + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4(); + } + loaded_pix = getbpl4_32(); + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; + gpix2 = get_genlock_transparency(dpf_lookup[pix2]); + } + last_bpl_pix = pix2; + } + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4(); + } + loaded_pix = getbpl4_32(); + loaded_pixs[2] = loaded_pix; + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + uae_u8 val3 = dpf_lookup[pix3]; + if (dpf_lookup_no[pix3]) { + val3 += dblpfofs[bpldualpf2of]; + } + val3 ^= bplcon4_denise_xor_val; + dpix_val3 = denise_colors.acolors[val3]; + gpix3 = get_genlock_transparency(dpf_lookup[pix3]); + } + last_bpl_pix = pix3; + } + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4(); + } + loaded_pix = getbpl4_32(); + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + gpix0 = filter_pixel_genlock(gpix0, gpix1); + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + gpix2 = filter_pixel_genlock(gpix2, gpix3); + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_dpf1_p4_ishres_dhires_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_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; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + gpix0 = get_genlock_transparency(dpf_lookup[pix0]); + } + last_bpl_pix = pix0; + } + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4e(); + } + if (bpldat_copy[1] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[1]) { + copybpl4o(); + } + loaded_pix = getbpl4_32(); + loaded_pixs[0] = loaded_pix; + shiftbpl4(); + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; + gpix2 = get_genlock_transparency(dpf_lookup[pix2]); + } + last_bpl_pix = pix2; + } + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4e(); + } + if (bpldat_copy[1] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[1]) { + copybpl4o(); + } + loaded_pix = getbpl4_32(); + loaded_pixs[2] = loaded_pix; + shiftbpl4(); + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_dpf1_p4_ishres_dhires_filtered_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_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; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + gpix0 = get_genlock_transparency(dpf_lookup[pix0]); + } + last_bpl_pix = pix0; + } + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4e(); + } + if (bpldat_copy[1] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[1]) { + copybpl4o(); + } + loaded_pix = getbpl4_32(); + loaded_pixs[0] = loaded_pix; + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + uae_u8 val1 = dpf_lookup[pix1]; + if (dpf_lookup_no[pix1]) { + val1 += dblpfofs[bpldualpf2of]; + } + val1 ^= bplcon4_denise_xor_val; + dpix_val1 = denise_colors.acolors[val1]; + gpix1 = get_genlock_transparency(dpf_lookup[pix1]); + } + last_bpl_pix = pix1; + } + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4e(); + } + if (bpldat_copy[1] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[1]) { + copybpl4o(); + } + loaded_pix = getbpl4_32(); + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; + gpix2 = get_genlock_transparency(dpf_lookup[pix2]); + } + last_bpl_pix = pix2; + } + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4e(); + } + if (bpldat_copy[1] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[1]) { + copybpl4o(); + } + loaded_pix = getbpl4_32(); + loaded_pixs[2] = loaded_pix; + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + uae_u8 val3 = dpf_lookup[pix3]; + if (dpf_lookup_no[pix3]) { + val3 += dblpfofs[bpldualpf2of]; + } + val3 ^= bplcon4_denise_xor_val; + dpix_val3 = denise_colors.acolors[val3]; + gpix3 = get_genlock_transparency(dpf_lookup[pix3]); + } + last_bpl_pix = pix3; + } + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4e(); + } + if (bpldat_copy[1] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[1]) { + copybpl4o(); + } + loaded_pix = getbpl4_32(); + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + gpix0 = filter_pixel_genlock(gpix0, gpix1); + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + gpix2 = filter_pixel_genlock(gpix2, gpix3); + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_ehb0_p4_ishres_dhires_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_ehb0_p4_ishres_dhires_filtered_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + gpix0 = filter_pixel_genlock(gpix0, gpix1); + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + gpix2 = filter_pixel_genlock(gpix2, gpix3); + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_ehb1_p4_ishres_dhires_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_ehb1_p4_ishres_dhires_filtered_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + gpix0 = filter_pixel_genlock(gpix0, gpix1); + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + gpix2 = filter_pixel_genlock(gpix2, gpix3); + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_ham0_p4_ishres_dhires_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_ham0_p4_ishres_dhires_filtered_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + gpix0 = filter_pixel_genlock(gpix0, gpix1); + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + gpix2 = filter_pixel_genlock(gpix2, gpix3); + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_ham1_p4_ishres_dhires_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_ham1_p4_ishres_dhires_filtered_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + gpix0 = filter_pixel_genlock(gpix0, gpix1); + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + gpix2 = filter_pixel_genlock(gpix2, gpix3); + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_kehb0_p4_ishres_dhires_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_kehb0_p4_ishres_dhires_filtered_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + gpix0 = filter_pixel_genlock(gpix0, gpix1); + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + gpix2 = filter_pixel_genlock(gpix2, gpix3); + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_kehb1_p4_ishres_dhires_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_kehb1_p4_ishres_dhires_filtered_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + gpix0 = filter_pixel_genlock(gpix0, gpix1); + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + gpix2 = filter_pixel_genlock(gpix2, gpix3); + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_n0_p8_ishres_dhires_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_n0_p8_ishres_dhires_filtered_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + gpix0 = filter_pixel_genlock(gpix0, gpix1); + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + gpix2 = filter_pixel_genlock(gpix2, gpix3); + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_n1_p8_ishres_dhires_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_n1_p8_ishres_dhires_filtered_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + gpix0 = filter_pixel_genlock(gpix0, gpix1); + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + gpix2 = filter_pixel_genlock(gpix2, gpix3); + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_dpf0_p8_ishres_dhires_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_dpf0_p8_ishres_dhires_filtered_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + gpix0 = filter_pixel_genlock(gpix0, gpix1); + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + gpix2 = filter_pixel_genlock(gpix2, gpix3); + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_dpf1_p8_ishres_dhires_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_dpf1_p8_ishres_dhires_filtered_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + gpix0 = filter_pixel_genlock(gpix0, gpix1); + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + gpix2 = filter_pixel_genlock(gpix2, gpix3); + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_ehb0_p8_ishres_dhires_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_ehb0_p8_ishres_dhires_filtered_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + gpix0 = filter_pixel_genlock(gpix0, gpix1); + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + gpix2 = filter_pixel_genlock(gpix2, gpix3); + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_ehb1_p8_ishres_dhires_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_ehb1_p8_ishres_dhires_filtered_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + gpix0 = filter_pixel_genlock(gpix0, gpix1); + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + gpix2 = filter_pixel_genlock(gpix2, gpix3); + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_ham0_p8_ishres_dhires_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_ham0_p8_ishres_dhires_filtered_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + gpix0 = filter_pixel_genlock(gpix0, gpix1); + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + gpix2 = filter_pixel_genlock(gpix2, gpix3); + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_ham1_p8_ishres_dhires_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_ham1_p8_ishres_dhires_filtered_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + gpix0 = filter_pixel_genlock(gpix0, gpix1); + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + gpix2 = filter_pixel_genlock(gpix2, gpix3); + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_kehb0_p8_ishres_dhires_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_kehb0_p8_ishres_dhires_filtered_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + gpix0 = filter_pixel_genlock(gpix0, gpix1); + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + gpix2 = filter_pixel_genlock(gpix2, gpix3); + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_kehb1_p8_ishres_dhires_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_kehb1_p8_ishres_dhires_filtered_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + gpix0 = filter_pixel_genlock(gpix0, gpix1); + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + gpix2 = filter_pixel_genlock(gpix2, gpix3); + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_n0_p4_ishres_dhires_spr_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix0; + } + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4(); + } + loaded_pix = getbpl4_32(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + shiftbpl4(); + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + gpix2 = get_genlock_transparency(pix2 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix2; + } + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4(); + } + loaded_pix = getbpl4_32(); + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + shiftbpl4(); + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_n0_p4_ishres_dhires_spr_filtered_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix0; + } + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4(); + } + loaded_pix = getbpl4_32(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; + gpix1 = get_genlock_transparency(pix1 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix1; + } + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4(); + } + loaded_pix = getbpl4_32(); + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + gpix2 = get_genlock_transparency(pix2 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix2; + } + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4(); + } + loaded_pix = getbpl4_32(); + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; + gpix3 = get_genlock_transparency(pix3 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix3; + } + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4(); + } + loaded_pix = getbpl4_32(); + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + gpix0 = filter_pixel_genlock(gpix0, gpix1); + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + dpix_val3 = dpix_val2; + } + } + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + gpix2 = filter_pixel_genlock(gpix2, gpix3); + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_n1_p4_ishres_dhires_spr_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix0; + } + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4e(); + } + if (bpldat_copy[1] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[1]) { + copybpl4o(); + } + loaded_pix = getbpl4_32(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + shiftbpl4(); + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + gpix2 = get_genlock_transparency(pix2 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix2; + } + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4e(); + } + if (bpldat_copy[1] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[1]) { + copybpl4o(); + } + loaded_pix = getbpl4_32(); + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + shiftbpl4(); + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_n1_p4_ishres_dhires_spr_filtered_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix0; + } + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4e(); + } + if (bpldat_copy[1] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[1]) { + copybpl4o(); + } + loaded_pix = getbpl4_32(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; + gpix1 = get_genlock_transparency(pix1 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix1; + } + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4e(); + } + if (bpldat_copy[1] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[1]) { + copybpl4o(); + } + loaded_pix = getbpl4_32(); + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + gpix2 = get_genlock_transparency(pix2 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix2; + } + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4e(); + } + if (bpldat_copy[1] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[1]) { + copybpl4o(); + } + loaded_pix = getbpl4_32(); + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; + gpix3 = get_genlock_transparency(pix3 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix3; + } + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4e(); + } + if (bpldat_copy[1] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[1]) { + copybpl4o(); + } + loaded_pix = getbpl4_32(); + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + gpix0 = filter_pixel_genlock(gpix0, gpix1); + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + dpix_val3 = dpix_val2; + } + } + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + gpix2 = filter_pixel_genlock(gpix2, gpix3); + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_dpf0_p4_ishres_dhires_spr_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + gpix0 = get_genlock_transparency(dpf_lookup[pix0]); + } + last_bpl_pix = pix0; + } + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4(); + } + loaded_pix = getbpl4_32(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + shiftbpl4(); + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; + gpix2 = get_genlock_transparency(dpf_lookup[pix2]); + } + last_bpl_pix = pix2; + } + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4(); + } + loaded_pix = getbpl4_32(); + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + shiftbpl4(); + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_dpf0_p4_ishres_dhires_spr_filtered_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + gpix0 = get_genlock_transparency(dpf_lookup[pix0]); + } + last_bpl_pix = pix0; + } + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4(); + } + loaded_pix = getbpl4_32(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + uae_u8 val1 = dpf_lookup[pix1]; + if (dpf_lookup_no[pix1]) { + val1 += dblpfofs[bpldualpf2of]; + } + val1 ^= bplcon4_denise_xor_val; + dpix_val1 = denise_colors.acolors[val1]; + gpix1 = get_genlock_transparency(dpf_lookup[pix1]); + } + last_bpl_pix = pix1; + } + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4(); + } + loaded_pix = getbpl4_32(); + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; + gpix2 = get_genlock_transparency(dpf_lookup[pix2]); + } + last_bpl_pix = pix2; + } + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4(); + } + loaded_pix = getbpl4_32(); + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + uae_u8 val3 = dpf_lookup[pix3]; + if (dpf_lookup_no[pix3]) { + val3 += dblpfofs[bpldualpf2of]; + } + val3 ^= bplcon4_denise_xor_val; + dpix_val3 = denise_colors.acolors[val3]; + gpix3 = get_genlock_transparency(dpf_lookup[pix3]); + } + last_bpl_pix = pix3; + } + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4(); + } + loaded_pix = getbpl4_32(); + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + gpix0 = filter_pixel_genlock(gpix0, gpix1); + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + dpix_val3 = dpix_val2; + } + } + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + gpix2 = filter_pixel_genlock(gpix2, gpix3); + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_dpf1_p4_ishres_dhires_spr_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + gpix0 = get_genlock_transparency(dpf_lookup[pix0]); + } + last_bpl_pix = pix0; + } + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4e(); + } + if (bpldat_copy[1] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[1]) { + copybpl4o(); + } + loaded_pix = getbpl4_32(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + shiftbpl4(); + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; + gpix2 = get_genlock_transparency(dpf_lookup[pix2]); + } + last_bpl_pix = pix2; + } + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4e(); + } + if (bpldat_copy[1] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[1]) { + copybpl4o(); + } + loaded_pix = getbpl4_32(); + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + shiftbpl4(); + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_dpf1_p4_ishres_dhires_spr_filtered_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + gpix0 = get_genlock_transparency(dpf_lookup[pix0]); + } + last_bpl_pix = pix0; + } + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4e(); + } + if (bpldat_copy[1] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[1]) { + copybpl4o(); + } + loaded_pix = getbpl4_32(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + uae_u8 val1 = dpf_lookup[pix1]; + if (dpf_lookup_no[pix1]) { + val1 += dblpfofs[bpldualpf2of]; + } + val1 ^= bplcon4_denise_xor_val; + dpix_val1 = denise_colors.acolors[val1]; + gpix1 = get_genlock_transparency(dpf_lookup[pix1]); + } + last_bpl_pix = pix1; + } + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4e(); + } + if (bpldat_copy[1] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[1]) { + copybpl4o(); + } + loaded_pix = getbpl4_32(); + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; + gpix2 = get_genlock_transparency(dpf_lookup[pix2]); + } + last_bpl_pix = pix2; + } + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4e(); + } + if (bpldat_copy[1] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[1]) { + copybpl4o(); + } + loaded_pix = getbpl4_32(); + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + uae_u8 val3 = dpf_lookup[pix3]; + if (dpf_lookup_no[pix3]) { + val3 += dblpfofs[bpldualpf2of]; + } + val3 ^= bplcon4_denise_xor_val; + dpix_val3 = denise_colors.acolors[val3]; + gpix3 = get_genlock_transparency(dpf_lookup[pix3]); + } + last_bpl_pix = pix3; + } + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4e(); + } + if (bpldat_copy[1] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[1]) { + copybpl4o(); + } + loaded_pix = getbpl4_32(); + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + gpix0 = filter_pixel_genlock(gpix0, gpix1); + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + dpix_val3 = dpix_val2; + } + } + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + gpix2 = filter_pixel_genlock(gpix2, gpix3); + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_ehb0_p4_ishres_dhires_spr_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_ehb0_p4_ishres_dhires_spr_filtered_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + gpix0 = filter_pixel_genlock(gpix0, gpix1); + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + dpix_val3 = dpix_val2; + } + } + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + gpix2 = filter_pixel_genlock(gpix2, gpix3); + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_ehb1_p4_ishres_dhires_spr_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_ehb1_p4_ishres_dhires_spr_filtered_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + gpix0 = filter_pixel_genlock(gpix0, gpix1); + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + dpix_val3 = dpix_val2; + } + } + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + gpix2 = filter_pixel_genlock(gpix2, gpix3); + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_ham0_p4_ishres_dhires_spr_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_ham0_p4_ishres_dhires_spr_filtered_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + gpix0 = filter_pixel_genlock(gpix0, gpix1); + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + dpix_val3 = dpix_val2; + } + } + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + gpix2 = filter_pixel_genlock(gpix2, gpix3); + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_ham1_p4_ishres_dhires_spr_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_ham1_p4_ishres_dhires_spr_filtered_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + gpix0 = filter_pixel_genlock(gpix0, gpix1); + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + dpix_val3 = dpix_val2; + } + } + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + gpix2 = filter_pixel_genlock(gpix2, gpix3); + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_kehb0_p4_ishres_dhires_spr_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_kehb0_p4_ishres_dhires_spr_filtered_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + gpix0 = filter_pixel_genlock(gpix0, gpix1); + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + dpix_val3 = dpix_val2; + } + } + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + gpix2 = filter_pixel_genlock(gpix2, gpix3); + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_kehb1_p4_ishres_dhires_spr_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_kehb1_p4_ishres_dhires_spr_filtered_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + gpix0 = filter_pixel_genlock(gpix0, gpix1); + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + dpix_val3 = dpix_val2; + } + } + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + gpix2 = filter_pixel_genlock(gpix2, gpix3); + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_n0_p8_ishres_dhires_spr_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_n0_p8_ishres_dhires_spr_filtered_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + gpix0 = filter_pixel_genlock(gpix0, gpix1); + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + dpix_val3 = dpix_val2; + } + } + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + gpix2 = filter_pixel_genlock(gpix2, gpix3); + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_n1_p8_ishres_dhires_spr_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_n1_p8_ishres_dhires_spr_filtered_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + gpix0 = filter_pixel_genlock(gpix0, gpix1); + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + dpix_val3 = dpix_val2; + } + } + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + gpix2 = filter_pixel_genlock(gpix2, gpix3); + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_dpf0_p8_ishres_dhires_spr_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_dpf0_p8_ishres_dhires_spr_filtered_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + gpix0 = filter_pixel_genlock(gpix0, gpix1); + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + dpix_val3 = dpix_val2; + } + } + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + gpix2 = filter_pixel_genlock(gpix2, gpix3); + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_dpf1_p8_ishres_dhires_spr_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_dpf1_p8_ishres_dhires_spr_filtered_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + gpix0 = filter_pixel_genlock(gpix0, gpix1); + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + dpix_val3 = dpix_val2; + } + } + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + gpix2 = filter_pixel_genlock(gpix2, gpix3); + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_ehb0_p8_ishres_dhires_spr_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_ehb0_p8_ishres_dhires_spr_filtered_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + gpix0 = filter_pixel_genlock(gpix0, gpix1); + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + dpix_val3 = dpix_val2; + } + } + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + gpix2 = filter_pixel_genlock(gpix2, gpix3); + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_ehb1_p8_ishres_dhires_spr_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_ehb1_p8_ishres_dhires_spr_filtered_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + gpix0 = filter_pixel_genlock(gpix0, gpix1); + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + dpix_val3 = dpix_val2; + } + } + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + gpix2 = filter_pixel_genlock(gpix2, gpix3); + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_ham0_p8_ishres_dhires_spr_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_ham0_p8_ishres_dhires_spr_filtered_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + gpix0 = filter_pixel_genlock(gpix0, gpix1); + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + dpix_val3 = dpix_val2; + } + } + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + gpix2 = filter_pixel_genlock(gpix2, gpix3); + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_ham1_p8_ishres_dhires_spr_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_ham1_p8_ishres_dhires_spr_filtered_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + gpix0 = filter_pixel_genlock(gpix0, gpix1); + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + dpix_val3 = dpix_val2; + } + } + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + gpix2 = filter_pixel_genlock(gpix2, gpix3); + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_kehb0_p8_ishres_dhires_spr_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_kehb0_p8_ishres_dhires_spr_filtered_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + gpix0 = filter_pixel_genlock(gpix0, gpix1); + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + dpix_val3 = dpix_val2; + } + } + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + gpix2 = filter_pixel_genlock(gpix2, gpix3); + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_kehb1_p8_ishres_dhires_spr_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_kehb1_p8_ishres_dhires_spr_filtered_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + gpix0 = filter_pixel_genlock(gpix0, gpix1); + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + dpix_val3 = dpix_val2; + } + } + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + gpix2 = filter_pixel_genlock(gpix2, gpix3); + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_n0_p4_ilores_dshres_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_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; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4(); + loaded_pix = getbpl4_32(); + } + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl4(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4_32(); + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; + gpix1 = get_genlock_transparency(pix1 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix1; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4(); + loaded_pix = getbpl4_32(); + } + if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { + copybpl4(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4_32(); + } + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 1; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + gpix2 = get_genlock_transparency(pix2 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4(); + loaded_pix = getbpl4_32(); + } + if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { + copybpl4(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4_32(); + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; + gpix3 = get_genlock_transparency(pix3 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix3; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4(); + loaded_pix = getbpl4_32(); + } + if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { + copybpl4(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4_32(); + } + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 1; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][1] = dpix_val1; + dtgbuf[h][1] = gpix1; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + dtbuf[h][3] = dpix_val3; + dtgbuf[h][3] = gpix3; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = dtgbuf[h ^ lol][1]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + *gbuf++ = dtgbuf[h ^ lol][3]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_n0_p4_ilores_dshres_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm1_n1_p4_ilores_dshres_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_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; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4e(); + loaded_pix = getbpl4_32(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl4o(); + loaded_pix = getbpl4_32(); + } + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl4e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4_32(); + } + if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { + copybpl4o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl4_32(); + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; + gpix1 = get_genlock_transparency(pix1 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix1; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4e(); + loaded_pix = getbpl4_32(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl4o(); + loaded_pix = getbpl4_32(); + } + if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { + copybpl4e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4_32(); + } + if (bpldat_copy[1] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) { + copybpl4o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl4_32(); + } + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 1; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + gpix2 = get_genlock_transparency(pix2 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4e(); + loaded_pix = getbpl4_32(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl4o(); + loaded_pix = getbpl4_32(); + } + if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { + copybpl4e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4_32(); + } + if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) { + copybpl4o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl4_32(); + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; + gpix3 = get_genlock_transparency(pix3 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix3; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4e(); + loaded_pix = getbpl4_32(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl4o(); + loaded_pix = getbpl4_32(); + } + if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { + copybpl4e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4_32(); + } + if (bpldat_copy[1] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[1]) { + copybpl4o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl4_32(); + } + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 1; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][1] = dpix_val1; + dtgbuf[h][1] = gpix1; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + dtbuf[h][3] = dpix_val3; + dtgbuf[h][3] = gpix3; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = dtgbuf[h ^ lol][1]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + *gbuf++ = dtgbuf[h ^ lol][3]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_n1_p4_ilores_dshres_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm1_dpf0_p4_ilores_dshres_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_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; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + gpix0 = get_genlock_transparency(dpf_lookup[pix0]); + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4(); + loaded_pix = getbpl4_32(); + } + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl4(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4_32(); + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + uae_u8 val1 = dpf_lookup[pix1]; + if (dpf_lookup_no[pix1]) { + val1 += dblpfofs[bpldualpf2of]; + } + val1 ^= bplcon4_denise_xor_val; + dpix_val1 = denise_colors.acolors[val1]; + gpix1 = get_genlock_transparency(dpf_lookup[pix1]); + } + last_bpl_pix = pix1; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4(); + loaded_pix = getbpl4_32(); + } + if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { + copybpl4(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4_32(); + } + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 1; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; + gpix2 = get_genlock_transparency(dpf_lookup[pix2]); + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4(); + loaded_pix = getbpl4_32(); + } + if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { + copybpl4(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4_32(); + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + uae_u8 val3 = dpf_lookup[pix3]; + if (dpf_lookup_no[pix3]) { + val3 += dblpfofs[bpldualpf2of]; + } + val3 ^= bplcon4_denise_xor_val; + dpix_val3 = denise_colors.acolors[val3]; + gpix3 = get_genlock_transparency(dpf_lookup[pix3]); + } + last_bpl_pix = pix3; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4(); + loaded_pix = getbpl4_32(); + } + if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { + copybpl4(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4_32(); + } + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 1; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][1] = dpix_val1; + dtgbuf[h][1] = gpix1; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + dtbuf[h][3] = dpix_val3; + dtgbuf[h][3] = gpix3; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = dtgbuf[h ^ lol][1]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + *gbuf++ = dtgbuf[h ^ lol][3]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_dpf0_p4_ilores_dshres_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm1_dpf1_p4_ilores_dshres_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_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; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + gpix0 = get_genlock_transparency(dpf_lookup[pix0]); + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4e(); + loaded_pix = getbpl4_32(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl4o(); + loaded_pix = getbpl4_32(); + } + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl4e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4_32(); + } + if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { + copybpl4o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl4_32(); + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + uae_u8 val1 = dpf_lookup[pix1]; + if (dpf_lookup_no[pix1]) { + val1 += dblpfofs[bpldualpf2of]; + } + val1 ^= bplcon4_denise_xor_val; + dpix_val1 = denise_colors.acolors[val1]; + gpix1 = get_genlock_transparency(dpf_lookup[pix1]); + } + last_bpl_pix = pix1; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4e(); + loaded_pix = getbpl4_32(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl4o(); + loaded_pix = getbpl4_32(); + } + if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { + copybpl4e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4_32(); + } + if (bpldat_copy[1] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) { + copybpl4o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl4_32(); + } + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 1; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; + gpix2 = get_genlock_transparency(dpf_lookup[pix2]); + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4e(); + loaded_pix = getbpl4_32(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl4o(); + loaded_pix = getbpl4_32(); + } + if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { + copybpl4e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4_32(); + } + if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) { + copybpl4o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl4_32(); + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + uae_u8 val3 = dpf_lookup[pix3]; + if (dpf_lookup_no[pix3]) { + val3 += dblpfofs[bpldualpf2of]; + } + val3 ^= bplcon4_denise_xor_val; + dpix_val3 = denise_colors.acolors[val3]; + gpix3 = get_genlock_transparency(dpf_lookup[pix3]); + } + last_bpl_pix = pix3; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4e(); + loaded_pix = getbpl4_32(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl4o(); + loaded_pix = getbpl4_32(); + } + if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { + copybpl4e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4_32(); + } + if (bpldat_copy[1] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[1]) { + copybpl4o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl4_32(); + } + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 1; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][1] = dpix_val1; + dtgbuf[h][1] = gpix1; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + dtbuf[h][3] = dpix_val3; + dtgbuf[h][3] = gpix3; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = dtgbuf[h ^ lol][1]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + *gbuf++ = dtgbuf[h ^ lol][3]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_dpf1_p4_ilores_dshres_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm1_ehb0_p4_ilores_dshres_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 1; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 1; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][1] = dpix_val1; + dtgbuf[h][1] = gpix1; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + dtbuf[h][3] = dpix_val3; + dtgbuf[h][3] = gpix3; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = dtgbuf[h ^ lol][1]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + *gbuf++ = dtgbuf[h ^ lol][3]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_ehb0_p4_ilores_dshres_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm1_ehb1_p4_ilores_dshres_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 1; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 1; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][1] = dpix_val1; + dtgbuf[h][1] = gpix1; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + dtbuf[h][3] = dpix_val3; + dtgbuf[h][3] = gpix3; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = dtgbuf[h ^ lol][1]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + *gbuf++ = dtgbuf[h ^ lol][3]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_ehb1_p4_ilores_dshres_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm1_ham0_p4_ilores_dshres_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 1; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 1; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][1] = dpix_val1; + dtgbuf[h][1] = gpix1; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + dtbuf[h][3] = dpix_val3; + dtgbuf[h][3] = gpix3; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = dtgbuf[h ^ lol][1]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + *gbuf++ = dtgbuf[h ^ lol][3]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_ham0_p4_ilores_dshres_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm1_ham1_p4_ilores_dshres_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 1; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 1; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][1] = dpix_val1; + dtgbuf[h][1] = gpix1; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + dtbuf[h][3] = dpix_val3; + dtgbuf[h][3] = gpix3; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = dtgbuf[h ^ lol][1]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + *gbuf++ = dtgbuf[h ^ lol][3]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_ham1_p4_ilores_dshres_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm1_kehb0_p4_ilores_dshres_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 1; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 1; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][1] = dpix_val1; + dtgbuf[h][1] = gpix1; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + dtbuf[h][3] = dpix_val3; + dtgbuf[h][3] = gpix3; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = dtgbuf[h ^ lol][1]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + *gbuf++ = dtgbuf[h ^ lol][3]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_kehb0_p4_ilores_dshres_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm1_kehb1_p4_ilores_dshres_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 1; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 1; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][1] = dpix_val1; + dtgbuf[h][1] = gpix1; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + dtbuf[h][3] = dpix_val3; + dtgbuf[h][3] = gpix3; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = dtgbuf[h ^ lol][1]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + *gbuf++ = dtgbuf[h ^ lol][3]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_kehb1_p4_ilores_dshres_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm1_n0_p8_ilores_dshres_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_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; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8(); + loaded_pix = getbpl8_32(); + } + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8_32(); + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; + gpix1 = get_genlock_transparency(pix1 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix1; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8(); + loaded_pix = getbpl8_32(); + } + if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8_32(); + } + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 1; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + gpix2 = get_genlock_transparency(pix2 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8(); + loaded_pix = getbpl8_32(); + } + if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8_32(); + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; + gpix3 = get_genlock_transparency(pix3 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix3; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8(); + loaded_pix = getbpl8_32(); + } + if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8_32(); + } + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 1; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][1] = dpix_val1; + dtgbuf[h][1] = gpix1; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + dtbuf[h][3] = dpix_val3; + dtgbuf[h][3] = gpix3; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = dtgbuf[h ^ lol][1]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + *gbuf++ = dtgbuf[h ^ lol][3]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_n0_p8_ilores_dshres_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm1_n1_p8_ilores_dshres_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_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; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8e(); + loaded_pix = getbpl8_32(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl8o(); + loaded_pix = getbpl8_32(); + } + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8_32(); + } + if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { + copybpl8o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl8_32(); + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; + gpix1 = get_genlock_transparency(pix1 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix1; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8e(); + loaded_pix = getbpl8_32(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl8o(); + loaded_pix = getbpl8_32(); + } + if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8_32(); + } + if (bpldat_copy[1] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) { + copybpl8o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl8_32(); + } + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 1; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + gpix2 = get_genlock_transparency(pix2 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8e(); + loaded_pix = getbpl8_32(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl8o(); + loaded_pix = getbpl8_32(); + } + if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8_32(); + } + if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) { + copybpl8o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl8_32(); + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; + gpix3 = get_genlock_transparency(pix3 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix3; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8e(); + loaded_pix = getbpl8_32(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl8o(); + loaded_pix = getbpl8_32(); + } + if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8_32(); + } + if (bpldat_copy[1] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[1]) { + copybpl8o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl8_32(); + } + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 1; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][1] = dpix_val1; + dtgbuf[h][1] = gpix1; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + dtbuf[h][3] = dpix_val3; + dtgbuf[h][3] = gpix3; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = dtgbuf[h ^ lol][1]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + *gbuf++ = dtgbuf[h ^ lol][3]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_n1_p8_ilores_dshres_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm1_dpf0_p8_ilores_dshres_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_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; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + gpix0 = get_genlock_transparency(dpf_lookup[pix0]); + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8(); + loaded_pix = getbpl8_32(); + } + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8_32(); + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + uae_u8 val1 = dpf_lookup[pix1]; + if (dpf_lookup_no[pix1]) { + val1 += dblpfofs[bpldualpf2of]; + } + val1 ^= bplcon4_denise_xor_val; + dpix_val1 = denise_colors.acolors[val1]; + gpix1 = get_genlock_transparency(dpf_lookup[pix1]); + } + last_bpl_pix = pix1; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8(); + loaded_pix = getbpl8_32(); + } + if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8_32(); + } + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 1; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; + gpix2 = get_genlock_transparency(dpf_lookup[pix2]); + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8(); + loaded_pix = getbpl8_32(); + } + if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8_32(); + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + uae_u8 val3 = dpf_lookup[pix3]; + if (dpf_lookup_no[pix3]) { + val3 += dblpfofs[bpldualpf2of]; + } + val3 ^= bplcon4_denise_xor_val; + dpix_val3 = denise_colors.acolors[val3]; + gpix3 = get_genlock_transparency(dpf_lookup[pix3]); + } + last_bpl_pix = pix3; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8(); + loaded_pix = getbpl8_32(); + } + if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8_32(); + } + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 1; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][1] = dpix_val1; + dtgbuf[h][1] = gpix1; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + dtbuf[h][3] = dpix_val3; + dtgbuf[h][3] = gpix3; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = dtgbuf[h ^ lol][1]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + *gbuf++ = dtgbuf[h ^ lol][3]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_dpf0_p8_ilores_dshres_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm1_dpf1_p8_ilores_dshres_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_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; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + gpix0 = get_genlock_transparency(dpf_lookup[pix0]); + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8e(); + loaded_pix = getbpl8_32(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl8o(); + loaded_pix = getbpl8_32(); + } + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8_32(); + } + if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { + copybpl8o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl8_32(); + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + uae_u8 val1 = dpf_lookup[pix1]; + if (dpf_lookup_no[pix1]) { + val1 += dblpfofs[bpldualpf2of]; + } + val1 ^= bplcon4_denise_xor_val; + dpix_val1 = denise_colors.acolors[val1]; + gpix1 = get_genlock_transparency(dpf_lookup[pix1]); + } + last_bpl_pix = pix1; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8e(); + loaded_pix = getbpl8_32(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl8o(); + loaded_pix = getbpl8_32(); + } + if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8_32(); + } + if (bpldat_copy[1] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) { + copybpl8o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl8_32(); + } + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 1; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; + gpix2 = get_genlock_transparency(dpf_lookup[pix2]); + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8e(); + loaded_pix = getbpl8_32(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl8o(); + loaded_pix = getbpl8_32(); + } + if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8_32(); + } + if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) { + copybpl8o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl8_32(); + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + uae_u8 val3 = dpf_lookup[pix3]; + if (dpf_lookup_no[pix3]) { + val3 += dblpfofs[bpldualpf2of]; + } + val3 ^= bplcon4_denise_xor_val; + dpix_val3 = denise_colors.acolors[val3]; + gpix3 = get_genlock_transparency(dpf_lookup[pix3]); + } + last_bpl_pix = pix3; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8e(); + loaded_pix = getbpl8_32(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl8o(); + loaded_pix = getbpl8_32(); + } + if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8_32(); + } + if (bpldat_copy[1] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[1]) { + copybpl8o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl8_32(); + } + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 1; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][1] = dpix_val1; + dtgbuf[h][1] = gpix1; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + dtbuf[h][3] = dpix_val3; + dtgbuf[h][3] = gpix3; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = dtgbuf[h ^ lol][1]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + *gbuf++ = dtgbuf[h ^ lol][3]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_dpf1_p8_ilores_dshres_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm1_ehb0_p8_ilores_dshres_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 1; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 1; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][1] = dpix_val1; + dtgbuf[h][1] = gpix1; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + dtbuf[h][3] = dpix_val3; + dtgbuf[h][3] = gpix3; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = dtgbuf[h ^ lol][1]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + *gbuf++ = dtgbuf[h ^ lol][3]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_ehb0_p8_ilores_dshres_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm1_ehb1_p8_ilores_dshres_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 1; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 1; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][1] = dpix_val1; + dtgbuf[h][1] = gpix1; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + dtbuf[h][3] = dpix_val3; + dtgbuf[h][3] = gpix3; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = dtgbuf[h ^ lol][1]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + *gbuf++ = dtgbuf[h ^ lol][3]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_ehb1_p8_ilores_dshres_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm1_ham0_p8_ilores_dshres_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_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; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = decode_ham_pixel_aga(pix0); + gpix0 = get_genlock_transparency((pix0 >> 2) & 63); + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8(); + loaded_pix = getbpl8_32(); + } + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8_32(); + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + dpix_val1 = decode_ham_pixel_aga(pix1); + gpix1 = get_genlock_transparency((pix1 >> 2) & 63); + } + last_bpl_pix = pix1; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8(); + loaded_pix = getbpl8_32(); + } + if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8_32(); + } + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 1; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = decode_ham_pixel_aga(pix2); + gpix2 = get_genlock_transparency((pix2 >> 2) & 63); + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8(); + loaded_pix = getbpl8_32(); + } + if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8_32(); + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + dpix_val3 = decode_ham_pixel_aga(pix3); + gpix3 = get_genlock_transparency((pix3 >> 2) & 63); + } + last_bpl_pix = pix3; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8(); + loaded_pix = getbpl8_32(); + } + if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8_32(); + } + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 1; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][1] = dpix_val1; + dtgbuf[h][1] = gpix1; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + dtbuf[h][3] = dpix_val3; + dtgbuf[h][3] = gpix3; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = dtgbuf[h ^ lol][1]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + *gbuf++ = dtgbuf[h ^ lol][3]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_ham0_p8_ilores_dshres_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm1_ham1_p8_ilores_dshres_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_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; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = decode_ham_pixel_aga(pix0); + gpix0 = get_genlock_transparency((pix0 >> 2) & 63); + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8e(); + loaded_pix = getbpl8_32(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl8o(); + loaded_pix = getbpl8_32(); + } + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8_32(); + } + if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { + copybpl8o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl8_32(); + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + dpix_val1 = decode_ham_pixel_aga(pix1); + gpix1 = get_genlock_transparency((pix1 >> 2) & 63); + } + last_bpl_pix = pix1; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8e(); + loaded_pix = getbpl8_32(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl8o(); + loaded_pix = getbpl8_32(); + } + if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8_32(); + } + if (bpldat_copy[1] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) { + copybpl8o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl8_32(); + } + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 1; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = decode_ham_pixel_aga(pix2); + gpix2 = get_genlock_transparency((pix2 >> 2) & 63); + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8e(); + loaded_pix = getbpl8_32(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl8o(); + loaded_pix = getbpl8_32(); + } + if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8_32(); + } + if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) { + copybpl8o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl8_32(); + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + dpix_val3 = decode_ham_pixel_aga(pix3); + gpix3 = get_genlock_transparency((pix3 >> 2) & 63); + } + last_bpl_pix = pix3; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8e(); + loaded_pix = getbpl8_32(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl8o(); + loaded_pix = getbpl8_32(); + } + if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8_32(); + } + if (bpldat_copy[1] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[1]) { + copybpl8o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl8_32(); + } + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 1; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][1] = dpix_val1; + dtgbuf[h][1] = gpix1; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + dtbuf[h][3] = dpix_val3; + dtgbuf[h][3] = gpix3; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = dtgbuf[h ^ lol][1]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + *gbuf++ = dtgbuf[h ^ lol][3]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_ham1_p8_ilores_dshres_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm1_kehb0_p8_ilores_dshres_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 1; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 1; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][1] = dpix_val1; + dtgbuf[h][1] = gpix1; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + dtbuf[h][3] = dpix_val3; + dtgbuf[h][3] = gpix3; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = dtgbuf[h ^ lol][1]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + *gbuf++ = dtgbuf[h ^ lol][3]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_kehb0_p8_ilores_dshres_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm1_kehb1_p8_ilores_dshres_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 1; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 1; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][1] = dpix_val1; + dtgbuf[h][1] = gpix1; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + dtbuf[h][3] = dpix_val3; + dtgbuf[h][3] = gpix3; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = dtgbuf[h ^ lol][1]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + *gbuf++ = dtgbuf[h ^ lol][3]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_kehb1_p8_ilores_dshres_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm1_n0_p4_ilores_dshres_spr_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4(); + loaded_pix = getbpl4_32(); + } + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl4(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4_32(); + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; + gpix1 = get_genlock_transparency(pix1 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix1; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4(); + loaded_pix = getbpl4_32(); + } + if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { + copybpl4(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4_32(); + } + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } + } + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + gpix2 = get_genlock_transparency(pix2 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4(); + loaded_pix = getbpl4_32(); + } + if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { + copybpl4(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4_32(); + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; + gpix3 = get_genlock_transparency(pix3 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix3; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4(); + loaded_pix = getbpl4_32(); + } + if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { + copybpl4(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4_32(); + } + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } + } + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 1; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + gpix1 = get_genlock_transparency(spix1); + + } + } + dtbuf[h][1] = dpix_val1; + dtgbuf[h][1] = gpix1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + gpix3 = get_genlock_transparency(spix3); + + } + } + dtbuf[h][3] = dpix_val3; + dtgbuf[h][3] = gpix3; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = dtgbuf[h ^ lol][1]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + *gbuf++ = dtgbuf[h ^ lol][3]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_n0_p4_ilores_dshres_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm1_n1_p4_ilores_dshres_spr_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4e(); + loaded_pix = getbpl4_32(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl4o(); + loaded_pix = getbpl4_32(); + } + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl4e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4_32(); + } + if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { + copybpl4o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl4_32(); + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; + gpix1 = get_genlock_transparency(pix1 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix1; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4e(); + loaded_pix = getbpl4_32(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl4o(); + loaded_pix = getbpl4_32(); + } + if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { + copybpl4e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4_32(); + } + if (bpldat_copy[1] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) { + copybpl4o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl4_32(); + } + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } + } + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + gpix2 = get_genlock_transparency(pix2 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4e(); + loaded_pix = getbpl4_32(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl4o(); + loaded_pix = getbpl4_32(); + } + if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { + copybpl4e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4_32(); + } + if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) { + copybpl4o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl4_32(); + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; + gpix3 = get_genlock_transparency(pix3 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix3; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4e(); + loaded_pix = getbpl4_32(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl4o(); + loaded_pix = getbpl4_32(); + } + if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { + copybpl4e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4_32(); + } + if (bpldat_copy[1] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[1]) { + copybpl4o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl4_32(); + } + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } + } + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 1; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + gpix1 = get_genlock_transparency(spix1); + + } + } + dtbuf[h][1] = dpix_val1; + dtgbuf[h][1] = gpix1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + gpix3 = get_genlock_transparency(spix3); + + } + } + dtbuf[h][3] = dpix_val3; + dtgbuf[h][3] = gpix3; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = dtgbuf[h ^ lol][1]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + *gbuf++ = dtgbuf[h ^ lol][3]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_n1_p4_ilores_dshres_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm1_dpf0_p4_ilores_dshres_spr_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + gpix0 = get_genlock_transparency(dpf_lookup[pix0]); + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4(); + loaded_pix = getbpl4_32(); + } + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl4(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4_32(); + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + uae_u8 val1 = dpf_lookup[pix1]; + if (dpf_lookup_no[pix1]) { + val1 += dblpfofs[bpldualpf2of]; + } + val1 ^= bplcon4_denise_xor_val; + dpix_val1 = denise_colors.acolors[val1]; + gpix1 = get_genlock_transparency(dpf_lookup[pix1]); + } + last_bpl_pix = pix1; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4(); + loaded_pix = getbpl4_32(); + } + if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { + copybpl4(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4_32(); + } + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } + } + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; + gpix2 = get_genlock_transparency(dpf_lookup[pix2]); + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4(); + loaded_pix = getbpl4_32(); + } + if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { + copybpl4(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4_32(); + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + uae_u8 val3 = dpf_lookup[pix3]; + if (dpf_lookup_no[pix3]) { + val3 += dblpfofs[bpldualpf2of]; + } + val3 ^= bplcon4_denise_xor_val; + dpix_val3 = denise_colors.acolors[val3]; + gpix3 = get_genlock_transparency(dpf_lookup[pix3]); + } + last_bpl_pix = pix3; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4(); + loaded_pix = getbpl4_32(); + } + if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { + copybpl4(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4_32(); + } + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } + } + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 1; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + gpix1 = get_genlock_transparency(spix1); + + } + } + dtbuf[h][1] = dpix_val1; + dtgbuf[h][1] = gpix1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + gpix3 = get_genlock_transparency(spix3); + + } + } + dtbuf[h][3] = dpix_val3; + dtgbuf[h][3] = gpix3; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = dtgbuf[h ^ lol][1]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + *gbuf++ = dtgbuf[h ^ lol][3]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_dpf0_p4_ilores_dshres_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm1_dpf1_p4_ilores_dshres_spr_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + gpix0 = get_genlock_transparency(dpf_lookup[pix0]); + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4e(); + loaded_pix = getbpl4_32(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl4o(); + loaded_pix = getbpl4_32(); + } + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl4e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4_32(); + } + if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { + copybpl4o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl4_32(); + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + uae_u8 val1 = dpf_lookup[pix1]; + if (dpf_lookup_no[pix1]) { + val1 += dblpfofs[bpldualpf2of]; + } + val1 ^= bplcon4_denise_xor_val; + dpix_val1 = denise_colors.acolors[val1]; + gpix1 = get_genlock_transparency(dpf_lookup[pix1]); + } + last_bpl_pix = pix1; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4e(); + loaded_pix = getbpl4_32(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl4o(); + loaded_pix = getbpl4_32(); + } + if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { + copybpl4e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4_32(); + } + if (bpldat_copy[1] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) { + copybpl4o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl4_32(); + } + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } + } + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; + gpix2 = get_genlock_transparency(dpf_lookup[pix2]); + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4e(); + loaded_pix = getbpl4_32(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl4o(); + loaded_pix = getbpl4_32(); + } + if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { + copybpl4e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4_32(); + } + if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) { + copybpl4o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl4_32(); + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + uae_u8 val3 = dpf_lookup[pix3]; + if (dpf_lookup_no[pix3]) { + val3 += dblpfofs[bpldualpf2of]; + } + val3 ^= bplcon4_denise_xor_val; + dpix_val3 = denise_colors.acolors[val3]; + gpix3 = get_genlock_transparency(dpf_lookup[pix3]); + } + last_bpl_pix = pix3; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4e(); + loaded_pix = getbpl4_32(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl4o(); + loaded_pix = getbpl4_32(); + } + if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { + copybpl4e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4_32(); + } + if (bpldat_copy[1] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[1]) { + copybpl4o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl4_32(); + } + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } + } + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 1; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + gpix1 = get_genlock_transparency(spix1); + + } + } + dtbuf[h][1] = dpix_val1; + dtgbuf[h][1] = gpix1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + gpix3 = get_genlock_transparency(spix3); + + } + } + dtbuf[h][3] = dpix_val3; + dtgbuf[h][3] = gpix3; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = dtgbuf[h ^ lol][1]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + *gbuf++ = dtgbuf[h ^ lol][3]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_dpf1_p4_ilores_dshres_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm1_ehb0_p4_ilores_dshres_spr_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } + } + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + } + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } + } + internal_pixel_cnt += 1; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + gpix1 = get_genlock_transparency(spix1); + + } + } + dtbuf[h][1] = dpix_val1; + dtgbuf[h][1] = gpix1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + gpix3 = get_genlock_transparency(spix3); + + } + } + dtbuf[h][3] = dpix_val3; + dtgbuf[h][3] = gpix3; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = dtgbuf[h ^ lol][1]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + *gbuf++ = dtgbuf[h ^ lol][3]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_ehb0_p4_ilores_dshres_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm1_ehb1_p4_ilores_dshres_spr_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } + } + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + } + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } + } + internal_pixel_cnt += 1; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + gpix1 = get_genlock_transparency(spix1); + + } + } + dtbuf[h][1] = dpix_val1; + dtgbuf[h][1] = gpix1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + gpix3 = get_genlock_transparency(spix3); + + } + } + dtbuf[h][3] = dpix_val3; + dtgbuf[h][3] = gpix3; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = dtgbuf[h ^ lol][1]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + *gbuf++ = dtgbuf[h ^ lol][3]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_ehb1_p4_ilores_dshres_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm1_ham0_p4_ilores_dshres_spr_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } + } + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + } + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } + } + internal_pixel_cnt += 1; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + gpix1 = get_genlock_transparency(spix1); + + } + } + dtbuf[h][1] = dpix_val1; + dtgbuf[h][1] = gpix1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + gpix3 = get_genlock_transparency(spix3); + + } + } + dtbuf[h][3] = dpix_val3; + dtgbuf[h][3] = gpix3; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = dtgbuf[h ^ lol][1]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + *gbuf++ = dtgbuf[h ^ lol][3]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_ham0_p4_ilores_dshres_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm1_ham1_p4_ilores_dshres_spr_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } + } + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + } + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } + } + internal_pixel_cnt += 1; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + gpix1 = get_genlock_transparency(spix1); + + } + } + dtbuf[h][1] = dpix_val1; + dtgbuf[h][1] = gpix1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + gpix3 = get_genlock_transparency(spix3); + + } + } + dtbuf[h][3] = dpix_val3; + dtgbuf[h][3] = gpix3; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = dtgbuf[h ^ lol][1]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + *gbuf++ = dtgbuf[h ^ lol][3]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_ham1_p4_ilores_dshres_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm1_kehb0_p4_ilores_dshres_spr_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } + } + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + } + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } + } + internal_pixel_cnt += 1; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + gpix1 = get_genlock_transparency(spix1); + + } + } + dtbuf[h][1] = dpix_val1; + dtgbuf[h][1] = gpix1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + gpix3 = get_genlock_transparency(spix3); + + } + } + dtbuf[h][3] = dpix_val3; + dtgbuf[h][3] = gpix3; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = dtgbuf[h ^ lol][1]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + *gbuf++ = dtgbuf[h ^ lol][3]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_kehb0_p4_ilores_dshres_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm1_kehb1_p4_ilores_dshres_spr_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } + } + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + } + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } + } + internal_pixel_cnt += 1; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + gpix1 = get_genlock_transparency(spix1); + + } + } + dtbuf[h][1] = dpix_val1; + dtgbuf[h][1] = gpix1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + gpix3 = get_genlock_transparency(spix3); + + } + } + dtbuf[h][3] = dpix_val3; + dtgbuf[h][3] = gpix3; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = dtgbuf[h ^ lol][1]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + *gbuf++ = dtgbuf[h ^ lol][3]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_kehb1_p4_ilores_dshres_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm1_n0_p8_ilores_dshres_spr_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8(); + loaded_pix = getbpl8_32(); + } + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8_32(); + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; + gpix1 = get_genlock_transparency(pix1 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix1; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8(); + loaded_pix = getbpl8_32(); + } + if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8_32(); + } + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } + } + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + gpix2 = get_genlock_transparency(pix2 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8(); + loaded_pix = getbpl8_32(); + } + if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8_32(); + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; + gpix3 = get_genlock_transparency(pix3 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix3; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8(); + loaded_pix = getbpl8_32(); + } + if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8_32(); + } + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } + } + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 1; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + gpix1 = get_genlock_transparency(spix1); + + } + } + dtbuf[h][1] = dpix_val1; + dtgbuf[h][1] = gpix1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + gpix3 = get_genlock_transparency(spix3); + + } + } + dtbuf[h][3] = dpix_val3; + dtgbuf[h][3] = gpix3; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = dtgbuf[h ^ lol][1]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + *gbuf++ = dtgbuf[h ^ lol][3]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_n0_p8_ilores_dshres_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm1_n1_p8_ilores_dshres_spr_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8e(); + loaded_pix = getbpl8_32(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl8o(); + loaded_pix = getbpl8_32(); + } + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8_32(); + } + if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { + copybpl8o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl8_32(); + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; + gpix1 = get_genlock_transparency(pix1 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix1; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8e(); + loaded_pix = getbpl8_32(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl8o(); + loaded_pix = getbpl8_32(); + } + if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8_32(); + } + if (bpldat_copy[1] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) { + copybpl8o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl8_32(); + } + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } + } + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + gpix2 = get_genlock_transparency(pix2 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8e(); + loaded_pix = getbpl8_32(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl8o(); + loaded_pix = getbpl8_32(); + } + if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8_32(); + } + if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) { + copybpl8o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl8_32(); + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; + gpix3 = get_genlock_transparency(pix3 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix3; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8e(); + loaded_pix = getbpl8_32(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl8o(); + loaded_pix = getbpl8_32(); + } + if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8_32(); + } + if (bpldat_copy[1] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[1]) { + copybpl8o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl8_32(); + } + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } + } + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 1; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + gpix1 = get_genlock_transparency(spix1); + + } + } + dtbuf[h][1] = dpix_val1; + dtgbuf[h][1] = gpix1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + gpix3 = get_genlock_transparency(spix3); + + } + } + dtbuf[h][3] = dpix_val3; + dtgbuf[h][3] = gpix3; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = dtgbuf[h ^ lol][1]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + *gbuf++ = dtgbuf[h ^ lol][3]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_n1_p8_ilores_dshres_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm1_dpf0_p8_ilores_dshres_spr_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + gpix0 = get_genlock_transparency(dpf_lookup[pix0]); + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8(); + loaded_pix = getbpl8_32(); + } + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8_32(); + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + uae_u8 val1 = dpf_lookup[pix1]; + if (dpf_lookup_no[pix1]) { + val1 += dblpfofs[bpldualpf2of]; + } + val1 ^= bplcon4_denise_xor_val; + dpix_val1 = denise_colors.acolors[val1]; + gpix1 = get_genlock_transparency(dpf_lookup[pix1]); + } + last_bpl_pix = pix1; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8(); + loaded_pix = getbpl8_32(); + } + if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8_32(); + } + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } + } + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; + gpix2 = get_genlock_transparency(dpf_lookup[pix2]); + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8(); + loaded_pix = getbpl8_32(); + } + if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8_32(); + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + uae_u8 val3 = dpf_lookup[pix3]; + if (dpf_lookup_no[pix3]) { + val3 += dblpfofs[bpldualpf2of]; + } + val3 ^= bplcon4_denise_xor_val; + dpix_val3 = denise_colors.acolors[val3]; + gpix3 = get_genlock_transparency(dpf_lookup[pix3]); + } + last_bpl_pix = pix3; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8(); + loaded_pix = getbpl8_32(); + } + if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8_32(); + } + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } + } + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 1; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + gpix1 = get_genlock_transparency(spix1); + + } + } + dtbuf[h][1] = dpix_val1; + dtgbuf[h][1] = gpix1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + gpix3 = get_genlock_transparency(spix3); + + } + } + dtbuf[h][3] = dpix_val3; + dtgbuf[h][3] = gpix3; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = dtgbuf[h ^ lol][1]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + *gbuf++ = dtgbuf[h ^ lol][3]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_dpf0_p8_ilores_dshres_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm1_dpf1_p8_ilores_dshres_spr_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + gpix0 = get_genlock_transparency(dpf_lookup[pix0]); + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8e(); + loaded_pix = getbpl8_32(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl8o(); + loaded_pix = getbpl8_32(); + } + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8_32(); + } + if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { + copybpl8o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl8_32(); + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + uae_u8 val1 = dpf_lookup[pix1]; + if (dpf_lookup_no[pix1]) { + val1 += dblpfofs[bpldualpf2of]; + } + val1 ^= bplcon4_denise_xor_val; + dpix_val1 = denise_colors.acolors[val1]; + gpix1 = get_genlock_transparency(dpf_lookup[pix1]); + } + last_bpl_pix = pix1; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8e(); + loaded_pix = getbpl8_32(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl8o(); + loaded_pix = getbpl8_32(); + } + if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8_32(); + } + if (bpldat_copy[1] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) { + copybpl8o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl8_32(); + } + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } + } + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; + gpix2 = get_genlock_transparency(dpf_lookup[pix2]); + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8e(); + loaded_pix = getbpl8_32(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl8o(); + loaded_pix = getbpl8_32(); + } + if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8_32(); + } + if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) { + copybpl8o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl8_32(); + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + uae_u8 val3 = dpf_lookup[pix3]; + if (dpf_lookup_no[pix3]) { + val3 += dblpfofs[bpldualpf2of]; + } + val3 ^= bplcon4_denise_xor_val; + dpix_val3 = denise_colors.acolors[val3]; + gpix3 = get_genlock_transparency(dpf_lookup[pix3]); + } + last_bpl_pix = pix3; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8e(); + loaded_pix = getbpl8_32(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl8o(); + loaded_pix = getbpl8_32(); + } + if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8_32(); + } + if (bpldat_copy[1] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[1]) { + copybpl8o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl8_32(); + } + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } + } + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 1; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + gpix1 = get_genlock_transparency(spix1); + + } + } + dtbuf[h][1] = dpix_val1; + dtgbuf[h][1] = gpix1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + gpix3 = get_genlock_transparency(spix3); + + } + } + dtbuf[h][3] = dpix_val3; + dtgbuf[h][3] = gpix3; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = dtgbuf[h ^ lol][1]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + *gbuf++ = dtgbuf[h ^ lol][3]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_dpf1_p8_ilores_dshres_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm1_ehb0_p8_ilores_dshres_spr_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } + } + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + } + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } + } + internal_pixel_cnt += 1; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + gpix1 = get_genlock_transparency(spix1); + + } + } + dtbuf[h][1] = dpix_val1; + dtgbuf[h][1] = gpix1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + gpix3 = get_genlock_transparency(spix3); + + } + } + dtbuf[h][3] = dpix_val3; + dtgbuf[h][3] = gpix3; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = dtgbuf[h ^ lol][1]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + *gbuf++ = dtgbuf[h ^ lol][3]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_ehb0_p8_ilores_dshres_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm1_ehb1_p8_ilores_dshres_spr_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } + } + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + } + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } + } + internal_pixel_cnt += 1; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + gpix1 = get_genlock_transparency(spix1); + + } + } + dtbuf[h][1] = dpix_val1; + dtgbuf[h][1] = gpix1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + gpix3 = get_genlock_transparency(spix3); + + } + } + dtbuf[h][3] = dpix_val3; + dtgbuf[h][3] = gpix3; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = dtgbuf[h ^ lol][1]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + *gbuf++ = dtgbuf[h ^ lol][3]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_ehb1_p8_ilores_dshres_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm1_ham0_p8_ilores_dshres_spr_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = decode_ham_pixel_aga(pix0); + gpix0 = get_genlock_transparency((pix0 >> 2) & 63); + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8(); + loaded_pix = getbpl8_32(); + } + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8_32(); + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + dpix_val1 = decode_ham_pixel_aga(pix1); + gpix1 = get_genlock_transparency((pix1 >> 2) & 63); + } + last_bpl_pix = pix1; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8(); + loaded_pix = getbpl8_32(); + } + if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8_32(); + } + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } + } + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = decode_ham_pixel_aga(pix2); + gpix2 = get_genlock_transparency((pix2 >> 2) & 63); + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8(); + loaded_pix = getbpl8_32(); + } + if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8_32(); + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + dpix_val3 = decode_ham_pixel_aga(pix3); + gpix3 = get_genlock_transparency((pix3 >> 2) & 63); + } + last_bpl_pix = pix3; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8(); + loaded_pix = getbpl8_32(); + } + if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8_32(); + } + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } + } + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 1; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + gpix1 = get_genlock_transparency(spix1); + + } + } + dtbuf[h][1] = dpix_val1; + dtgbuf[h][1] = gpix1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + gpix3 = get_genlock_transparency(spix3); + + } + } + dtbuf[h][3] = dpix_val3; + dtgbuf[h][3] = gpix3; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = dtgbuf[h ^ lol][1]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + *gbuf++ = dtgbuf[h ^ lol][3]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_ham0_p8_ilores_dshres_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm1_ham1_p8_ilores_dshres_spr_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = decode_ham_pixel_aga(pix0); + gpix0 = get_genlock_transparency((pix0 >> 2) & 63); + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8e(); + loaded_pix = getbpl8_32(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl8o(); + loaded_pix = getbpl8_32(); + } + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8_32(); + } + if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { + copybpl8o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl8_32(); + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + dpix_val1 = decode_ham_pixel_aga(pix1); + gpix1 = get_genlock_transparency((pix1 >> 2) & 63); + } + last_bpl_pix = pix1; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8e(); + loaded_pix = getbpl8_32(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl8o(); + loaded_pix = getbpl8_32(); + } + if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8_32(); + } + if (bpldat_copy[1] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) { + copybpl8o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl8_32(); + } + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } + } + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = decode_ham_pixel_aga(pix2); + gpix2 = get_genlock_transparency((pix2 >> 2) & 63); + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8e(); + loaded_pix = getbpl8_32(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl8o(); + loaded_pix = getbpl8_32(); + } + if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8_32(); + } + if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) { + copybpl8o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl8_32(); + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + dpix_val3 = decode_ham_pixel_aga(pix3); + gpix3 = get_genlock_transparency((pix3 >> 2) & 63); + } + last_bpl_pix = pix3; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8e(); + loaded_pix = getbpl8_32(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl8o(); + loaded_pix = getbpl8_32(); + } + if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8_32(); + } + if (bpldat_copy[1] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[1]) { + copybpl8o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl8_32(); + } + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } + } + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 1; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + gpix1 = get_genlock_transparency(spix1); + + } + } + dtbuf[h][1] = dpix_val1; + dtgbuf[h][1] = gpix1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + gpix3 = get_genlock_transparency(spix3); + + } + } + dtbuf[h][3] = dpix_val3; + dtgbuf[h][3] = gpix3; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = dtgbuf[h ^ lol][1]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + *gbuf++ = dtgbuf[h ^ lol][3]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_ham1_p8_ilores_dshres_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm1_kehb0_p8_ilores_dshres_spr_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } + } + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + } + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } + } + internal_pixel_cnt += 1; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + gpix1 = get_genlock_transparency(spix1); + + } + } + dtbuf[h][1] = dpix_val1; + dtgbuf[h][1] = gpix1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + gpix3 = get_genlock_transparency(spix3); + + } + } + dtbuf[h][3] = dpix_val3; + dtgbuf[h][3] = gpix3; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = dtgbuf[h ^ lol][1]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + *gbuf++ = dtgbuf[h ^ lol][3]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_kehb0_p8_ilores_dshres_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm1_kehb1_p8_ilores_dshres_spr_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } + } + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + } + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } + } + internal_pixel_cnt += 1; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + gpix1 = get_genlock_transparency(spix1); + + } + } + dtbuf[h][1] = dpix_val1; + dtgbuf[h][1] = gpix1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + gpix3 = get_genlock_transparency(spix3); + + } + } + dtbuf[h][3] = dpix_val3; + dtgbuf[h][3] = gpix3; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = dtgbuf[h ^ lol][1]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + *gbuf++ = dtgbuf[h ^ lol][3]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_kehb1_p8_ilores_dshres_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm1_n0_p4_ihires_dshres_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_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; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4(); + loaded_pix = getbpl4_32(); + } + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4_32(); + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; + gpix1 = get_genlock_transparency(pix1 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix1; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4(); + loaded_pix = getbpl4_32(); + } + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4_32(); + } + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 1; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + gpix2 = get_genlock_transparency(pix2 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4(); + loaded_pix = getbpl4_32(); + } + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4_32(); + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; + gpix3 = get_genlock_transparency(pix3 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix3; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4(); + loaded_pix = getbpl4_32(); + } + if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4_32(); + } + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 1; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][1] = dpix_val1; + dtgbuf[h][1] = gpix1; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + dtbuf[h][3] = dpix_val3; + dtgbuf[h][3] = gpix3; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = dtgbuf[h ^ lol][1]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + *gbuf++ = dtgbuf[h ^ lol][3]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_n0_p4_ihires_dshres_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm1_n1_p4_ihires_dshres_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_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; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4e(); + loaded_pix = getbpl4_32(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl4o(); + loaded_pix = getbpl4_32(); + } + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4_32(); + } + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl4o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl4_32(); + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; + gpix1 = get_genlock_transparency(pix1 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix1; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4e(); + loaded_pix = getbpl4_32(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl4o(); + loaded_pix = getbpl4_32(); + } + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4_32(); + } + if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { + copybpl4o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl4_32(); + } + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 1; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + gpix2 = get_genlock_transparency(pix2 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4e(); + loaded_pix = getbpl4_32(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl4o(); + loaded_pix = getbpl4_32(); + } + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4_32(); + } + if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { + copybpl4o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl4_32(); + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; + gpix3 = get_genlock_transparency(pix3 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix3; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4e(); + loaded_pix = getbpl4_32(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl4o(); + loaded_pix = getbpl4_32(); + } + if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4_32(); + } + if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) { + copybpl4o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl4_32(); + } + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 1; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][1] = dpix_val1; + dtgbuf[h][1] = gpix1; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + dtbuf[h][3] = dpix_val3; + dtgbuf[h][3] = gpix3; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = dtgbuf[h ^ lol][1]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + *gbuf++ = dtgbuf[h ^ lol][3]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_n1_p4_ihires_dshres_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm1_dpf0_p4_ihires_dshres_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_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; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + gpix0 = get_genlock_transparency(dpf_lookup[pix0]); + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4(); + loaded_pix = getbpl4_32(); + } + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4_32(); + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + uae_u8 val1 = dpf_lookup[pix1]; + if (dpf_lookup_no[pix1]) { + val1 += dblpfofs[bpldualpf2of]; + } + val1 ^= bplcon4_denise_xor_val; + dpix_val1 = denise_colors.acolors[val1]; + gpix1 = get_genlock_transparency(dpf_lookup[pix1]); + } + last_bpl_pix = pix1; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4(); + loaded_pix = getbpl4_32(); + } + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4_32(); + } + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 1; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; + gpix2 = get_genlock_transparency(dpf_lookup[pix2]); + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4(); + loaded_pix = getbpl4_32(); + } + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4_32(); + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + uae_u8 val3 = dpf_lookup[pix3]; + if (dpf_lookup_no[pix3]) { + val3 += dblpfofs[bpldualpf2of]; + } + val3 ^= bplcon4_denise_xor_val; + dpix_val3 = denise_colors.acolors[val3]; + gpix3 = get_genlock_transparency(dpf_lookup[pix3]); + } + last_bpl_pix = pix3; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4(); + loaded_pix = getbpl4_32(); + } + if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4_32(); + } + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 1; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][1] = dpix_val1; + dtgbuf[h][1] = gpix1; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + dtbuf[h][3] = dpix_val3; + dtgbuf[h][3] = gpix3; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = dtgbuf[h ^ lol][1]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + *gbuf++ = dtgbuf[h ^ lol][3]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_dpf0_p4_ihires_dshres_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm1_dpf1_p4_ihires_dshres_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_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; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + gpix0 = get_genlock_transparency(dpf_lookup[pix0]); + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4e(); + loaded_pix = getbpl4_32(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl4o(); + loaded_pix = getbpl4_32(); + } + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4_32(); + } + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl4o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl4_32(); + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + uae_u8 val1 = dpf_lookup[pix1]; + if (dpf_lookup_no[pix1]) { + val1 += dblpfofs[bpldualpf2of]; + } + val1 ^= bplcon4_denise_xor_val; + dpix_val1 = denise_colors.acolors[val1]; + gpix1 = get_genlock_transparency(dpf_lookup[pix1]); + } + last_bpl_pix = pix1; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4e(); + loaded_pix = getbpl4_32(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl4o(); + loaded_pix = getbpl4_32(); + } + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4_32(); + } + if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { + copybpl4o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl4_32(); + } + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 1; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; + gpix2 = get_genlock_transparency(dpf_lookup[pix2]); + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4e(); + loaded_pix = getbpl4_32(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl4o(); + loaded_pix = getbpl4_32(); + } + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4_32(); + } + if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { + copybpl4o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl4_32(); + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + uae_u8 val3 = dpf_lookup[pix3]; + if (dpf_lookup_no[pix3]) { + val3 += dblpfofs[bpldualpf2of]; + } + val3 ^= bplcon4_denise_xor_val; + dpix_val3 = denise_colors.acolors[val3]; + gpix3 = get_genlock_transparency(dpf_lookup[pix3]); + } + last_bpl_pix = pix3; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4e(); + loaded_pix = getbpl4_32(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl4o(); + loaded_pix = getbpl4_32(); + } + if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4_32(); + } + if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) { + copybpl4o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl4_32(); + } + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 1; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][1] = dpix_val1; + dtgbuf[h][1] = gpix1; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + dtbuf[h][3] = dpix_val3; + dtgbuf[h][3] = gpix3; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = dtgbuf[h ^ lol][1]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + *gbuf++ = dtgbuf[h ^ lol][3]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_dpf1_p4_ihires_dshres_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm1_ehb0_p4_ihires_dshres_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 1; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 1; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][1] = dpix_val1; + dtgbuf[h][1] = gpix1; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + dtbuf[h][3] = dpix_val3; + dtgbuf[h][3] = gpix3; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = dtgbuf[h ^ lol][1]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + *gbuf++ = dtgbuf[h ^ lol][3]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_ehb0_p4_ihires_dshres_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm1_ehb1_p4_ihires_dshres_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 1; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 1; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][1] = dpix_val1; + dtgbuf[h][1] = gpix1; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + dtbuf[h][3] = dpix_val3; + dtgbuf[h][3] = gpix3; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = dtgbuf[h ^ lol][1]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + *gbuf++ = dtgbuf[h ^ lol][3]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_ehb1_p4_ihires_dshres_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm1_ham0_p4_ihires_dshres_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 1; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 1; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][1] = dpix_val1; + dtgbuf[h][1] = gpix1; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + dtbuf[h][3] = dpix_val3; + dtgbuf[h][3] = gpix3; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = dtgbuf[h ^ lol][1]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + *gbuf++ = dtgbuf[h ^ lol][3]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_ham0_p4_ihires_dshres_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm1_ham1_p4_ihires_dshres_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 1; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 1; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][1] = dpix_val1; + dtgbuf[h][1] = gpix1; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + dtbuf[h][3] = dpix_val3; + dtgbuf[h][3] = gpix3; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = dtgbuf[h ^ lol][1]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + *gbuf++ = dtgbuf[h ^ lol][3]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_ham1_p4_ihires_dshres_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm1_kehb0_p4_ihires_dshres_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 1; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 1; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][1] = dpix_val1; + dtgbuf[h][1] = gpix1; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + dtbuf[h][3] = dpix_val3; + dtgbuf[h][3] = gpix3; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = dtgbuf[h ^ lol][1]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + *gbuf++ = dtgbuf[h ^ lol][3]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_kehb0_p4_ihires_dshres_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm1_kehb1_p4_ihires_dshres_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 1; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 1; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][1] = dpix_val1; + dtgbuf[h][1] = gpix1; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + dtbuf[h][3] = dpix_val3; + dtgbuf[h][3] = gpix3; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = dtgbuf[h ^ lol][1]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + *gbuf++ = dtgbuf[h ^ lol][3]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_kehb1_p4_ihires_dshres_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm1_n0_p8_ihires_dshres_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_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; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8(); + loaded_pix = getbpl8_32(); + } + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8_32(); + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; + gpix1 = get_genlock_transparency(pix1 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix1; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8(); + loaded_pix = getbpl8_32(); + } + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8_32(); + } + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 1; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + gpix2 = get_genlock_transparency(pix2 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8(); + loaded_pix = getbpl8_32(); + } + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8_32(); + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; + gpix3 = get_genlock_transparency(pix3 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix3; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8(); + loaded_pix = getbpl8_32(); + } + if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8_32(); + } + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 1; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][1] = dpix_val1; + dtgbuf[h][1] = gpix1; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + dtbuf[h][3] = dpix_val3; + dtgbuf[h][3] = gpix3; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = dtgbuf[h ^ lol][1]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + *gbuf++ = dtgbuf[h ^ lol][3]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_n0_p8_ihires_dshres_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm1_n1_p8_ihires_dshres_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_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; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8e(); + loaded_pix = getbpl8_32(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl8o(); + loaded_pix = getbpl8_32(); + } + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8_32(); + } + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl8_32(); + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; + gpix1 = get_genlock_transparency(pix1 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix1; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8e(); + loaded_pix = getbpl8_32(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl8o(); + loaded_pix = getbpl8_32(); + } + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8_32(); + } + if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl8_32(); + } + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 1; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + gpix2 = get_genlock_transparency(pix2 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8e(); + loaded_pix = getbpl8_32(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl8o(); + loaded_pix = getbpl8_32(); + } + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8_32(); + } + if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl8_32(); + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; + gpix3 = get_genlock_transparency(pix3 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix3; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8e(); + loaded_pix = getbpl8_32(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl8o(); + loaded_pix = getbpl8_32(); + } + if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8_32(); + } + if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl8_32(); + } + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 1; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][1] = dpix_val1; + dtgbuf[h][1] = gpix1; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + dtbuf[h][3] = dpix_val3; + dtgbuf[h][3] = gpix3; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = dtgbuf[h ^ lol][1]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + *gbuf++ = dtgbuf[h ^ lol][3]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_n1_p8_ihires_dshres_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm1_dpf0_p8_ihires_dshres_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_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; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + gpix0 = get_genlock_transparency(dpf_lookup[pix0]); + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8(); + loaded_pix = getbpl8_32(); + } + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8_32(); + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + uae_u8 val1 = dpf_lookup[pix1]; + if (dpf_lookup_no[pix1]) { + val1 += dblpfofs[bpldualpf2of]; + } + val1 ^= bplcon4_denise_xor_val; + dpix_val1 = denise_colors.acolors[val1]; + gpix1 = get_genlock_transparency(dpf_lookup[pix1]); + } + last_bpl_pix = pix1; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8(); + loaded_pix = getbpl8_32(); + } + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8_32(); + } + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 1; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; + gpix2 = get_genlock_transparency(dpf_lookup[pix2]); + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8(); + loaded_pix = getbpl8_32(); + } + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8_32(); + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + uae_u8 val3 = dpf_lookup[pix3]; + if (dpf_lookup_no[pix3]) { + val3 += dblpfofs[bpldualpf2of]; + } + val3 ^= bplcon4_denise_xor_val; + dpix_val3 = denise_colors.acolors[val3]; + gpix3 = get_genlock_transparency(dpf_lookup[pix3]); + } + last_bpl_pix = pix3; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8(); + loaded_pix = getbpl8_32(); + } + if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8_32(); + } + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 1; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][1] = dpix_val1; + dtgbuf[h][1] = gpix1; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + dtbuf[h][3] = dpix_val3; + dtgbuf[h][3] = gpix3; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = dtgbuf[h ^ lol][1]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + *gbuf++ = dtgbuf[h ^ lol][3]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_dpf0_p8_ihires_dshres_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm1_dpf1_p8_ihires_dshres_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_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; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + gpix0 = get_genlock_transparency(dpf_lookup[pix0]); + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8e(); + loaded_pix = getbpl8_32(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl8o(); + loaded_pix = getbpl8_32(); + } + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8_32(); + } + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl8_32(); + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + uae_u8 val1 = dpf_lookup[pix1]; + if (dpf_lookup_no[pix1]) { + val1 += dblpfofs[bpldualpf2of]; + } + val1 ^= bplcon4_denise_xor_val; + dpix_val1 = denise_colors.acolors[val1]; + gpix1 = get_genlock_transparency(dpf_lookup[pix1]); + } + last_bpl_pix = pix1; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8e(); + loaded_pix = getbpl8_32(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl8o(); + loaded_pix = getbpl8_32(); + } + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8_32(); + } + if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl8_32(); + } + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 1; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; + gpix2 = get_genlock_transparency(dpf_lookup[pix2]); + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8e(); + loaded_pix = getbpl8_32(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl8o(); + loaded_pix = getbpl8_32(); + } + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8_32(); + } + if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl8_32(); + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + uae_u8 val3 = dpf_lookup[pix3]; + if (dpf_lookup_no[pix3]) { + val3 += dblpfofs[bpldualpf2of]; + } + val3 ^= bplcon4_denise_xor_val; + dpix_val3 = denise_colors.acolors[val3]; + gpix3 = get_genlock_transparency(dpf_lookup[pix3]); + } + last_bpl_pix = pix3; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8e(); + loaded_pix = getbpl8_32(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl8o(); + loaded_pix = getbpl8_32(); + } + if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8_32(); + } + if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl8_32(); + } + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 1; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][1] = dpix_val1; + dtgbuf[h][1] = gpix1; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + dtbuf[h][3] = dpix_val3; + dtgbuf[h][3] = gpix3; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = dtgbuf[h ^ lol][1]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + *gbuf++ = dtgbuf[h ^ lol][3]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_dpf1_p8_ihires_dshres_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm1_ehb0_p8_ihires_dshres_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 1; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 1; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][1] = dpix_val1; + dtgbuf[h][1] = gpix1; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + dtbuf[h][3] = dpix_val3; + dtgbuf[h][3] = gpix3; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = dtgbuf[h ^ lol][1]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + *gbuf++ = dtgbuf[h ^ lol][3]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_ehb0_p8_ihires_dshres_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm1_ehb1_p8_ihires_dshres_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 1; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 1; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][1] = dpix_val1; + dtgbuf[h][1] = gpix1; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + dtbuf[h][3] = dpix_val3; + dtgbuf[h][3] = gpix3; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = dtgbuf[h ^ lol][1]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + *gbuf++ = dtgbuf[h ^ lol][3]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_ehb1_p8_ihires_dshres_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm1_ham0_p8_ihires_dshres_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_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; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = decode_ham_pixel_aga(pix0); + gpix0 = get_genlock_transparency((pix0 >> 2) & 63); + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8(); + loaded_pix = getbpl8_32(); + } + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8_32(); + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + dpix_val1 = decode_ham_pixel_aga(pix1); + gpix1 = get_genlock_transparency((pix1 >> 2) & 63); + } + last_bpl_pix = pix1; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8(); + loaded_pix = getbpl8_32(); + } + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8_32(); + } + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 1; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = decode_ham_pixel_aga(pix2); + gpix2 = get_genlock_transparency((pix2 >> 2) & 63); + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8(); + loaded_pix = getbpl8_32(); + } + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8_32(); + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + dpix_val3 = decode_ham_pixel_aga(pix3); + gpix3 = get_genlock_transparency((pix3 >> 2) & 63); + } + last_bpl_pix = pix3; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8(); + loaded_pix = getbpl8_32(); + } + if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8_32(); + } + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 1; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][1] = dpix_val1; + dtgbuf[h][1] = gpix1; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + dtbuf[h][3] = dpix_val3; + dtgbuf[h][3] = gpix3; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = dtgbuf[h ^ lol][1]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + *gbuf++ = dtgbuf[h ^ lol][3]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_ham0_p8_ihires_dshres_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm1_ham1_p8_ihires_dshres_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_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; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = decode_ham_pixel_aga(pix0); + gpix0 = get_genlock_transparency((pix0 >> 2) & 63); + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8e(); + loaded_pix = getbpl8_32(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl8o(); + loaded_pix = getbpl8_32(); + } + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8_32(); + } + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl8_32(); + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + dpix_val1 = decode_ham_pixel_aga(pix1); + gpix1 = get_genlock_transparency((pix1 >> 2) & 63); + } + last_bpl_pix = pix1; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8e(); + loaded_pix = getbpl8_32(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl8o(); + loaded_pix = getbpl8_32(); + } + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8_32(); + } + if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl8_32(); + } + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 1; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = decode_ham_pixel_aga(pix2); + gpix2 = get_genlock_transparency((pix2 >> 2) & 63); + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8e(); + loaded_pix = getbpl8_32(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl8o(); + loaded_pix = getbpl8_32(); + } + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8_32(); + } + if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl8_32(); + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + dpix_val3 = decode_ham_pixel_aga(pix3); + gpix3 = get_genlock_transparency((pix3 >> 2) & 63); + } + last_bpl_pix = pix3; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8e(); + loaded_pix = getbpl8_32(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl8o(); + loaded_pix = getbpl8_32(); + } + if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8_32(); + } + if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl8_32(); + } + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 1; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][1] = dpix_val1; + dtgbuf[h][1] = gpix1; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + dtbuf[h][3] = dpix_val3; + dtgbuf[h][3] = gpix3; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = dtgbuf[h ^ lol][1]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + *gbuf++ = dtgbuf[h ^ lol][3]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_ham1_p8_ihires_dshres_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm1_kehb0_p8_ihires_dshres_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 1; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 1; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][1] = dpix_val1; + dtgbuf[h][1] = gpix1; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + dtbuf[h][3] = dpix_val3; + dtgbuf[h][3] = gpix3; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = dtgbuf[h ^ lol][1]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + *gbuf++ = dtgbuf[h ^ lol][3]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_kehb0_p8_ihires_dshres_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm1_kehb1_p8_ihires_dshres_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 1; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 1; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][1] = dpix_val1; + dtgbuf[h][1] = gpix1; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + dtbuf[h][3] = dpix_val3; + dtgbuf[h][3] = gpix3; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = dtgbuf[h ^ lol][1]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + *gbuf++ = dtgbuf[h ^ lol][3]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_kehb1_p8_ihires_dshres_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm1_n0_p4_ihires_dshres_spr_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4(); + loaded_pix = getbpl4_32(); + } + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4_32(); + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; + gpix1 = get_genlock_transparency(pix1 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix1; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4(); + loaded_pix = getbpl4_32(); + } + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4_32(); + } + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } + } + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + gpix2 = get_genlock_transparency(pix2 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4(); + loaded_pix = getbpl4_32(); + } + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4_32(); + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; + gpix3 = get_genlock_transparency(pix3 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix3; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4(); + loaded_pix = getbpl4_32(); + } + if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4_32(); + } + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } + } + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 1; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + gpix1 = get_genlock_transparency(spix1); + + } + } + dtbuf[h][1] = dpix_val1; + dtgbuf[h][1] = gpix1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + gpix3 = get_genlock_transparency(spix3); + + } + } + dtbuf[h][3] = dpix_val3; + dtgbuf[h][3] = gpix3; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = dtgbuf[h ^ lol][1]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + *gbuf++ = dtgbuf[h ^ lol][3]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_n0_p4_ihires_dshres_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm1_n1_p4_ihires_dshres_spr_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4e(); + loaded_pix = getbpl4_32(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl4o(); + loaded_pix = getbpl4_32(); + } + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4_32(); + } + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl4o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl4_32(); + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; + gpix1 = get_genlock_transparency(pix1 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix1; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4e(); + loaded_pix = getbpl4_32(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl4o(); + loaded_pix = getbpl4_32(); + } + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4_32(); + } + if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { + copybpl4o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl4_32(); + } + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } + } + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + gpix2 = get_genlock_transparency(pix2 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4e(); + loaded_pix = getbpl4_32(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl4o(); + loaded_pix = getbpl4_32(); + } + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4_32(); + } + if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { + copybpl4o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl4_32(); + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; + gpix3 = get_genlock_transparency(pix3 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix3; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4e(); + loaded_pix = getbpl4_32(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl4o(); + loaded_pix = getbpl4_32(); + } + if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4_32(); + } + if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) { + copybpl4o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl4_32(); + } + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } + } + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 1; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + gpix1 = get_genlock_transparency(spix1); + + } + } + dtbuf[h][1] = dpix_val1; + dtgbuf[h][1] = gpix1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + gpix3 = get_genlock_transparency(spix3); + + } + } + dtbuf[h][3] = dpix_val3; + dtgbuf[h][3] = gpix3; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = dtgbuf[h ^ lol][1]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + *gbuf++ = dtgbuf[h ^ lol][3]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_n1_p4_ihires_dshres_spr_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm1_n0_p4_ishres_dhires_spr_genlock(void) +static void lts_aga_fm1_dpf0_p4_ihires_dshres_spr_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -13313,16 +40441,27 @@ static void lts_aga_fm1_n0_p4_ishres_dhires_spr_genlock(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + gpix0 = get_genlock_transparency(dpf_lookup[pix0]); } last_bpl_pix = pix0; } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4(); + loaded_pix = getbpl4_32(); + } + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { copybpl4(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4_32(); } - loaded_pix = getbpl4_32(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -13332,8 +40471,48 @@ static void lts_aga_fm1_n0_p4_ishres_dhires_spr_genlock(void) } } loaded_pixs[0] = loaded_pix; - shiftbpl4(); - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + uae_u8 val1 = dpf_lookup[pix1]; + if (dpf_lookup_no[pix1]) { + val1 += dblpfofs[bpldualpf2of]; + } + val1 ^= bplcon4_denise_xor_val; + dpix_val1 = denise_colors.acolors[val1]; + gpix1 = get_genlock_transparency(dpf_lookup[pix1]); + } + last_bpl_pix = pix1; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4(); + loaded_pix = getbpl4_32(); + } + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4_32(); + } + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } + } + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 1; matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u8 gpix2 = 0xff; @@ -13344,16 +40523,27 @@ static void lts_aga_fm1_n0_p4_ishres_dhires_spr_genlock(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; - gpix2 = get_genlock_transparency(pix2 ^ bplcon4_denise_xor_val); + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; + gpix2 = get_genlock_transparency(dpf_lookup[pix2]); } last_bpl_pix = pix2; } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4(); + loaded_pix = getbpl4_32(); + } + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { copybpl4(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4_32(); } - loaded_pix = getbpl4_32(); uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -13363,8 +40553,48 @@ static void lts_aga_fm1_n0_p4_ishres_dhires_spr_genlock(void) } } loaded_pixs[2] = loaded_pix; - shiftbpl4(); - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + uae_u8 val3 = dpf_lookup[pix3]; + if (dpf_lookup_no[pix3]) { + val3 += dblpfofs[bpldualpf2of]; + } + val3 ^= bplcon4_denise_xor_val; + dpix_val3 = denise_colors.acolors[val3]; + gpix3 = get_genlock_transparency(dpf_lookup[pix3]); + } + last_bpl_pix = pix3; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4(); + loaded_pix = getbpl4_32(); + } + if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4_32(); + } + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } + } + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { uae_u32 spix0 = denise_render_sprites2(pix0, sv0); @@ -13376,6 +40606,16 @@ static void lts_aga_fm1_n0_p4_ishres_dhires_spr_genlock(void) } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + gpix1 = get_genlock_transparency(spix1); + + } + } + dtbuf[h][1] = dpix_val1; + dtgbuf[h][1] = gpix1; if (sv2) { uae_u32 spix2 = denise_render_sprites2(pix2, sv2); if (spix2) { @@ -13386,6 +40626,16 @@ static void lts_aga_fm1_n0_p4_ishres_dhires_spr_genlock(void) } dtbuf[h][2] = dpix_val2; dtgbuf[h][2] = gpix2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + gpix3 = get_genlock_transparency(spix3); + + } + } + dtbuf[h][3] = dpix_val3; + dtgbuf[h][3] = gpix3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -13395,6 +40645,15 @@ static void lts_aga_fm1_n0_p4_ishres_dhires_spr_genlock(void) *buf1++ = t0; *buf2++ = t0; *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = dtgbuf[h ^ lol][1]; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -13404,6 +40663,15 @@ static void lts_aga_fm1_n0_p4_ishres_dhires_spr_genlock(void) *buf1++ = t2; *buf2++ = t2; *gbuf++ = dtgbuf[h ^ lol][2]; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + *gbuf++ = dtgbuf[h ^ lol][3]; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -13427,7 +40695,11 @@ static void lts_aga_fm1_n0_p4_ishres_dhires_spr_genlock(void) denise_cck++; } } -static void lts_aga_fm1_n0_p4_ishres_dhires_spr_filtered_genlock(void) +static void lts_aga_fm1_dpf0_p4_ihires_dshres_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm1_dpf1_p4_ihires_dshres_spr_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -13450,16 +40722,38 @@ static void lts_aga_fm1_n0_p4_ishres_dhires_spr_filtered_genlock(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + gpix0 = get_genlock_transparency(dpf_lookup[pix0]); } last_bpl_pix = pix0; } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4(); + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4e(); + loaded_pix = getbpl4_32(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl4o(); + loaded_pix = getbpl4_32(); + } + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4_32(); + } + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl4o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl4_32(); } - loaded_pix = getbpl4_32(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -13469,6 +40763,8 @@ static void lts_aga_fm1_n0_p4_ishres_dhires_spr_filtered_genlock(void) } } loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u8 gpix1 = 0xff; uae_u32 dpix_val1 = BLANK_COLOR; @@ -13478,18 +40774,48 @@ static void lts_aga_fm1_n0_p4_ishres_dhires_spr_filtered_genlock(void) if (denise_hdiw && bpl1dat_trigger) { pix1 = loaded_pixs[1]; clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; - gpix1 = get_genlock_transparency(pix1 ^ bplcon4_denise_xor_val); + uae_u8 val1 = dpf_lookup[pix1]; + if (dpf_lookup_no[pix1]) { + val1 += dblpfofs[bpldualpf2of]; + } + val1 ^= bplcon4_denise_xor_val; + dpix_val1 = denise_colors.acolors[val1]; + gpix1 = get_genlock_transparency(dpf_lookup[pix1]); } last_bpl_pix = pix1; } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4(); + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4e(); + loaded_pix = getbpl4_32(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl4o(); + loaded_pix = getbpl4_32(); + } + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4_32(); + } + if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { + copybpl4o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl4_32(); + } + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } } - loaded_pix = getbpl4_32(); loaded_pixs[1] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u8 gpix2 = 0xff; @@ -13500,16 +40826,38 @@ static void lts_aga_fm1_n0_p4_ishres_dhires_spr_filtered_genlock(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; - gpix2 = get_genlock_transparency(pix2 ^ bplcon4_denise_xor_val); + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; + gpix2 = get_genlock_transparency(dpf_lookup[pix2]); } last_bpl_pix = pix2; } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4(); + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4e(); + loaded_pix = getbpl4_32(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl4o(); + loaded_pix = getbpl4_32(); + } + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4_32(); + } + if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { + copybpl4o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl4_32(); } - loaded_pix = getbpl4_32(); uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -13519,6 +40867,8 @@ static void lts_aga_fm1_n0_p4_ishres_dhires_spr_filtered_genlock(void) } } loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u8 gpix3 = 0xff; uae_u32 dpix_val3 = BLANK_COLOR; @@ -13528,18 +40878,48 @@ static void lts_aga_fm1_n0_p4_ishres_dhires_spr_filtered_genlock(void) if (denise_hdiw && bpl1dat_trigger) { pix3 = loaded_pixs[3]; clxdat |= bplcoltable[pix3]; - dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; - gpix3 = get_genlock_transparency(pix3 ^ bplcon4_denise_xor_val); + uae_u8 val3 = dpf_lookup[pix3]; + if (dpf_lookup_no[pix3]) { + val3 += dblpfofs[bpldualpf2of]; + } + val3 ^= bplcon4_denise_xor_val; + dpix_val3 = denise_colors.acolors[val3]; + gpix3 = get_genlock_transparency(dpf_lookup[pix3]); } last_bpl_pix = pix3; } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4(); + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4e(); + loaded_pix = getbpl4_32(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl4o(); + loaded_pix = getbpl4_32(); + } + if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4e(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4_32(); + } + if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) { + copybpl4o(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl4_32(); + } + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } } - loaded_pix = getbpl4_32(); loaded_pixs[3] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { uae_u32 spix0 = denise_render_sprites2(pix0, sv0); @@ -13547,26 +40927,40 @@ static void lts_aga_fm1_n0_p4_ishres_dhires_spr_filtered_genlock(void) dpix_val0 = denise_colors.acolors[spix0]; gpix0 = get_genlock_transparency(spix0); - dpix_val1 = dpix_val0; } } - dpix_val0 = filter_pixel(dpix_val0, dpix_val1); - gpix0 = filter_pixel_genlock(gpix0, gpix1); dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + gpix1 = get_genlock_transparency(spix1); + + } + } + dtbuf[h][1] = dpix_val1; + dtgbuf[h][1] = gpix1; if (sv2) { uae_u32 spix2 = denise_render_sprites2(pix2, sv2); if (spix2) { dpix_val2 = denise_colors.acolors[spix2]; gpix2 = get_genlock_transparency(spix2); - dpix_val3 = dpix_val2; } } - dpix_val2 = filter_pixel(dpix_val2, dpix_val3); - gpix2 = filter_pixel_genlock(gpix2, gpix3); dtbuf[h][2] = dpix_val2; dtgbuf[h][2] = gpix2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + gpix3 = get_genlock_transparency(spix3); + + } + } + dtbuf[h][3] = dpix_val3; + dtgbuf[h][3] = gpix3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -13576,6 +40970,15 @@ static void lts_aga_fm1_n0_p4_ishres_dhires_spr_filtered_genlock(void) *buf1++ = t0; *buf2++ = t0; *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = dtgbuf[h ^ lol][1]; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -13585,6 +40988,15 @@ static void lts_aga_fm1_n0_p4_ishres_dhires_spr_filtered_genlock(void) *buf1++ = t2; *buf2++ = t2; *gbuf++ = dtgbuf[h ^ lol][2]; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + *gbuf++ = dtgbuf[h ^ lol][3]; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -13608,7 +41020,11 @@ static void lts_aga_fm1_n0_p4_ishres_dhires_spr_filtered_genlock(void) denise_cck++; } } -static void lts_aga_fm1_n1_p4_ishres_dhires_spr_genlock(void) +static void lts_aga_fm1_dpf1_p4_ihires_dshres_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm1_ehb0_p4_ihires_dshres_spr_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -13619,7 +41035,6 @@ 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; @@ -13628,22 +41043,7 @@ static void lts_aga_fm1_n1_p4_ishres_dhires_spr_genlock(void) if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); - } - last_bpl_pix = pix0; - } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4e(); - } - if (bpldat_copy[1] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[1]) { - copybpl4o(); } - loaded_pix = getbpl4_32(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -13652,9 +41052,24 @@ static void lts_aga_fm1_n1_p4_ishres_dhires_spr_genlock(void) sv0 = svt; } } - loaded_pixs[0] = loaded_pix; - shiftbpl4(); - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } + } + internal_pixel_cnt += 1; matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u8 gpix2 = 0xff; @@ -13662,33 +41077,33 @@ static void lts_aga_fm1_n1_p4_ishres_dhires_spr_genlock(void) if (!denise_blank_active) { gpix2 = get_genlock_transparency_border(); dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; - gpix2 = get_genlock_transparency(pix2 ^ bplcon4_denise_xor_val); - } - last_bpl_pix = pix2; } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4e(); + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } } - if (bpldat_copy[1] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[1]) { - copybpl4o(); + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; } - loaded_pix = getbpl4_32(); - uae_u32 sv2 = 0; + uae_u32 sv3 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; svt = denise_render_sprites_aga(denise_spr_add); if (!denise_sprite_blank_active && !sprites_hidden) { - sv2 = svt; + sv3 = svt; } } - loaded_pixs[2] = loaded_pix; - shiftbpl4(); - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { uae_u32 spix0 = denise_render_sprites2(pix0, sv0); @@ -13700,6 +41115,16 @@ static void lts_aga_fm1_n1_p4_ishres_dhires_spr_genlock(void) } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + gpix1 = get_genlock_transparency(spix1); + + } + } + dtbuf[h][1] = dpix_val1; + dtgbuf[h][1] = gpix1; if (sv2) { uae_u32 spix2 = denise_render_sprites2(pix2, sv2); if (spix2) { @@ -13710,6 +41135,16 @@ static void lts_aga_fm1_n1_p4_ishres_dhires_spr_genlock(void) } dtbuf[h][2] = dpix_val2; dtgbuf[h][2] = gpix2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + gpix3 = get_genlock_transparency(spix3); + + } + } + dtbuf[h][3] = dpix_val3; + dtgbuf[h][3] = gpix3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -13719,6 +41154,15 @@ static void lts_aga_fm1_n1_p4_ishres_dhires_spr_genlock(void) *buf1++ = t0; *buf2++ = t0; *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = dtgbuf[h ^ lol][1]; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -13728,6 +41172,15 @@ static void lts_aga_fm1_n1_p4_ishres_dhires_spr_genlock(void) *buf1++ = t2; *buf2++ = t2; *gbuf++ = dtgbuf[h ^ lol][2]; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + *gbuf++ = dtgbuf[h ^ lol][3]; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -13751,7 +41204,11 @@ static void lts_aga_fm1_n1_p4_ishres_dhires_spr_genlock(void) denise_cck++; } } -static void lts_aga_fm1_n1_p4_ishres_dhires_spr_filtered_genlock(void) +static void lts_aga_fm1_ehb0_p4_ihires_dshres_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm1_ehb1_p4_ihires_dshres_spr_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -13762,7 +41219,6 @@ 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; @@ -13771,22 +41227,7 @@ static void lts_aga_fm1_n1_p4_ishres_dhires_spr_filtered_genlock(void) if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); - } - last_bpl_pix = pix0; - } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4e(); - } - if (bpldat_copy[1] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[1]) { - copybpl4o(); } - loaded_pix = getbpl4_32(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -13795,31 +41236,24 @@ static void lts_aga_fm1_n1_p4_ishres_dhires_spr_filtered_genlock(void) sv0 = svt; } } - loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u8 gpix1 = 0xff; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { gpix1 = get_genlock_transparency_border(); dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; - gpix1 = get_genlock_transparency(pix1 ^ bplcon4_denise_xor_val); - } - last_bpl_pix = pix1; } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4e(); - } - if (bpldat_copy[1] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[1]) { - copybpl4o(); + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } } - loaded_pix = getbpl4_32(); - loaded_pixs[1] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u8 gpix2 = 0xff; @@ -13827,22 +41261,7 @@ static void lts_aga_fm1_n1_p4_ishres_dhires_spr_filtered_genlock(void) if (!denise_blank_active) { gpix2 = get_genlock_transparency_border(); dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; - gpix2 = get_genlock_transparency(pix2 ^ bplcon4_denise_xor_val); - } - last_bpl_pix = pix2; } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4e(); - } - if (bpldat_copy[1] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[1]) { - copybpl4o(); - } - loaded_pix = getbpl4_32(); uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -13851,31 +41270,24 @@ static void lts_aga_fm1_n1_p4_ishres_dhires_spr_filtered_genlock(void) sv2 = svt; } } - loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u8 gpix3 = 0xff; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { gpix3 = get_genlock_transparency_border(); dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; - gpix3 = get_genlock_transparency(pix3 ^ bplcon4_denise_xor_val); - } - last_bpl_pix = pix3; - } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4e(); } - if (bpldat_copy[1] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[1]) { - copybpl4o(); + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } } - loaded_pix = getbpl4_32(); - loaded_pixs[3] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { uae_u32 spix0 = denise_render_sprites2(pix0, sv0); @@ -13883,26 +41295,40 @@ static void lts_aga_fm1_n1_p4_ishres_dhires_spr_filtered_genlock(void) dpix_val0 = denise_colors.acolors[spix0]; gpix0 = get_genlock_transparency(spix0); - dpix_val1 = dpix_val0; } } - dpix_val0 = filter_pixel(dpix_val0, dpix_val1); - gpix0 = filter_pixel_genlock(gpix0, gpix1); dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + gpix1 = get_genlock_transparency(spix1); + + } + } + dtbuf[h][1] = dpix_val1; + dtgbuf[h][1] = gpix1; if (sv2) { uae_u32 spix2 = denise_render_sprites2(pix2, sv2); if (spix2) { dpix_val2 = denise_colors.acolors[spix2]; gpix2 = get_genlock_transparency(spix2); - dpix_val3 = dpix_val2; } } - dpix_val2 = filter_pixel(dpix_val2, dpix_val3); - gpix2 = filter_pixel_genlock(gpix2, gpix3); dtbuf[h][2] = dpix_val2; dtgbuf[h][2] = gpix2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + gpix3 = get_genlock_transparency(spix3); + + } + } + dtbuf[h][3] = dpix_val3; + dtgbuf[h][3] = gpix3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -13912,6 +41338,15 @@ static void lts_aga_fm1_n1_p4_ishres_dhires_spr_filtered_genlock(void) *buf1++ = t0; *buf2++ = t0; *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = dtgbuf[h ^ lol][1]; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -13921,6 +41356,15 @@ static void lts_aga_fm1_n1_p4_ishres_dhires_spr_filtered_genlock(void) *buf1++ = t2; *buf2++ = t2; *gbuf++ = dtgbuf[h ^ lol][2]; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + *gbuf++ = dtgbuf[h ^ lol][3]; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -13944,7 +41388,11 @@ static void lts_aga_fm1_n1_p4_ishres_dhires_spr_filtered_genlock(void) denise_cck++; } } -static void lts_aga_fm1_dpf0_p4_ishres_dhires_spr_genlock(void) +static void lts_aga_fm1_ehb1_p4_ihires_dshres_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm1_ham0_p4_ihires_dshres_spr_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -13955,7 +41403,6 @@ 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; @@ -13964,24 +41411,7 @@ static void lts_aga_fm1_dpf0_p4_ishres_dhires_spr_genlock(void) if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - gpix0 = get_genlock_transparency(dpf_lookup[pix0]); - } - last_bpl_pix = pix0; - } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4(); } - loaded_pix = getbpl4_32(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -13990,9 +41420,24 @@ static void lts_aga_fm1_dpf0_p4_ishres_dhires_spr_genlock(void) sv0 = svt; } } - loaded_pixs[0] = loaded_pix; - shiftbpl4(); - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } + } + internal_pixel_cnt += 1; matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u8 gpix2 = 0xff; @@ -14000,24 +41445,7 @@ static void lts_aga_fm1_dpf0_p4_ishres_dhires_spr_genlock(void) if (!denise_blank_active) { gpix2 = get_genlock_transparency_border(); dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; - gpix2 = get_genlock_transparency(dpf_lookup[pix2]); - } - last_bpl_pix = pix2; } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4(); - } - loaded_pix = getbpl4_32(); uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -14026,9 +41454,24 @@ static void lts_aga_fm1_dpf0_p4_ishres_dhires_spr_genlock(void) sv2 = svt; } } - loaded_pixs[2] = loaded_pix; - shiftbpl4(); - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + } + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } + } + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { uae_u32 spix0 = denise_render_sprites2(pix0, sv0); @@ -14040,6 +41483,16 @@ static void lts_aga_fm1_dpf0_p4_ishres_dhires_spr_genlock(void) } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + gpix1 = get_genlock_transparency(spix1); + + } + } + dtbuf[h][1] = dpix_val1; + dtgbuf[h][1] = gpix1; if (sv2) { uae_u32 spix2 = denise_render_sprites2(pix2, sv2); if (spix2) { @@ -14050,6 +41503,16 @@ static void lts_aga_fm1_dpf0_p4_ishres_dhires_spr_genlock(void) } dtbuf[h][2] = dpix_val2; dtgbuf[h][2] = gpix2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + gpix3 = get_genlock_transparency(spix3); + + } + } + dtbuf[h][3] = dpix_val3; + dtgbuf[h][3] = gpix3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -14059,6 +41522,15 @@ static void lts_aga_fm1_dpf0_p4_ishres_dhires_spr_genlock(void) *buf1++ = t0; *buf2++ = t0; *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = dtgbuf[h ^ lol][1]; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -14068,6 +41540,15 @@ static void lts_aga_fm1_dpf0_p4_ishres_dhires_spr_genlock(void) *buf1++ = t2; *buf2++ = t2; *gbuf++ = dtgbuf[h ^ lol][2]; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + *gbuf++ = dtgbuf[h ^ lol][3]; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -14091,7 +41572,11 @@ static void lts_aga_fm1_dpf0_p4_ishres_dhires_spr_genlock(void) denise_cck++; } } -static void lts_aga_fm1_dpf0_p4_ishres_dhires_spr_filtered_genlock(void) +static void lts_aga_fm1_ham0_p4_ihires_dshres_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm1_ham1_p4_ihires_dshres_spr_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -14102,7 +41587,6 @@ 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; @@ -14111,24 +41595,7 @@ static void lts_aga_fm1_dpf0_p4_ishres_dhires_spr_filtered_genlock(void) if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - gpix0 = get_genlock_transparency(dpf_lookup[pix0]); - } - last_bpl_pix = pix0; - } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4(); } - loaded_pix = getbpl4_32(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -14137,33 +41604,24 @@ static void lts_aga_fm1_dpf0_p4_ishres_dhires_spr_filtered_genlock(void) sv0 = svt; } } - loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u8 gpix1 = 0xff; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { gpix1 = get_genlock_transparency_border(); dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - if (dpf_lookup_no[pix1]) { - val1 += dblpfofs[bpldualpf2of]; - } - val1 ^= bplcon4_denise_xor_val; - dpix_val1 = denise_colors.acolors[val1]; - gpix1 = get_genlock_transparency(dpf_lookup[pix1]); - } - last_bpl_pix = pix1; } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4(); + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } } - loaded_pix = getbpl4_32(); - loaded_pixs[1] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u8 gpix2 = 0xff; @@ -14171,24 +41629,7 @@ static void lts_aga_fm1_dpf0_p4_ishres_dhires_spr_filtered_genlock(void) if (!denise_blank_active) { gpix2 = get_genlock_transparency_border(); dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; - gpix2 = get_genlock_transparency(dpf_lookup[pix2]); - } - last_bpl_pix = pix2; - } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4(); } - loaded_pix = getbpl4_32(); uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -14197,33 +41638,24 @@ static void lts_aga_fm1_dpf0_p4_ishres_dhires_spr_filtered_genlock(void) sv2 = svt; } } - loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u8 gpix3 = 0xff; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { gpix3 = get_genlock_transparency_border(); dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - uae_u8 val3 = dpf_lookup[pix3]; - if (dpf_lookup_no[pix3]) { - val3 += dblpfofs[bpldualpf2of]; - } - val3 ^= bplcon4_denise_xor_val; - dpix_val3 = denise_colors.acolors[val3]; - gpix3 = get_genlock_transparency(dpf_lookup[pix3]); - } - last_bpl_pix = pix3; } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4(); + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } } - loaded_pix = getbpl4_32(); - loaded_pixs[3] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { uae_u32 spix0 = denise_render_sprites2(pix0, sv0); @@ -14231,26 +41663,40 @@ static void lts_aga_fm1_dpf0_p4_ishres_dhires_spr_filtered_genlock(void) dpix_val0 = denise_colors.acolors[spix0]; gpix0 = get_genlock_transparency(spix0); - dpix_val1 = dpix_val0; } } - dpix_val0 = filter_pixel(dpix_val0, dpix_val1); - gpix0 = filter_pixel_genlock(gpix0, gpix1); dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + gpix1 = get_genlock_transparency(spix1); + + } + } + dtbuf[h][1] = dpix_val1; + dtgbuf[h][1] = gpix1; if (sv2) { uae_u32 spix2 = denise_render_sprites2(pix2, sv2); if (spix2) { dpix_val2 = denise_colors.acolors[spix2]; gpix2 = get_genlock_transparency(spix2); - dpix_val3 = dpix_val2; } } - dpix_val2 = filter_pixel(dpix_val2, dpix_val3); - gpix2 = filter_pixel_genlock(gpix2, gpix3); dtbuf[h][2] = dpix_val2; dtgbuf[h][2] = gpix2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + gpix3 = get_genlock_transparency(spix3); + + } + } + dtbuf[h][3] = dpix_val3; + dtgbuf[h][3] = gpix3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -14260,6 +41706,15 @@ static void lts_aga_fm1_dpf0_p4_ishres_dhires_spr_filtered_genlock(void) *buf1++ = t0; *buf2++ = t0; *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = dtgbuf[h ^ lol][1]; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -14269,6 +41724,15 @@ static void lts_aga_fm1_dpf0_p4_ishres_dhires_spr_filtered_genlock(void) *buf1++ = t2; *buf2++ = t2; *gbuf++ = dtgbuf[h ^ lol][2]; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + *gbuf++ = dtgbuf[h ^ lol][3]; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -14292,7 +41756,11 @@ static void lts_aga_fm1_dpf0_p4_ishres_dhires_spr_filtered_genlock(void) denise_cck++; } } -static void lts_aga_fm1_dpf1_p4_ishres_dhires_spr_genlock(void) +static void lts_aga_fm1_ham1_p4_ihires_dshres_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm1_kehb0_p4_ihires_dshres_spr_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -14303,7 +41771,6 @@ 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; @@ -14312,27 +41779,7 @@ static void lts_aga_fm1_dpf1_p4_ishres_dhires_spr_genlock(void) if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - gpix0 = get_genlock_transparency(dpf_lookup[pix0]); - } - last_bpl_pix = pix0; - } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4e(); - } - if (bpldat_copy[1] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[1]) { - copybpl4o(); } - loaded_pix = getbpl4_32(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -14341,37 +41788,32 @@ static void lts_aga_fm1_dpf1_p4_ishres_dhires_spr_genlock(void) sv0 = svt; } } - loaded_pixs[0] = loaded_pix; - shiftbpl4(); - internal_pixel_cnt += 2; - matchsprites_aga(cnt + 2); - uae_u8 pix2 = 0; - uae_u8 gpix2 = 0xff; - uae_u32 dpix_val2 = BLANK_COLOR; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { - gpix2 = get_genlock_transparency_border(); - dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; - gpix2 = get_genlock_transparency(dpf_lookup[pix2]); - } - last_bpl_pix = pix2; + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4e(); + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } } - if (bpldat_copy[1] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[1]) { - copybpl4o(); + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; } - loaded_pix = getbpl4_32(); uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -14380,9 +41822,24 @@ static void lts_aga_fm1_dpf1_p4_ishres_dhires_spr_genlock(void) sv2 = svt; } } - loaded_pixs[2] = loaded_pix; - shiftbpl4(); - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + } + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } + } + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { uae_u32 spix0 = denise_render_sprites2(pix0, sv0); @@ -14394,6 +41851,16 @@ static void lts_aga_fm1_dpf1_p4_ishres_dhires_spr_genlock(void) } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + gpix1 = get_genlock_transparency(spix1); + + } + } + dtbuf[h][1] = dpix_val1; + dtgbuf[h][1] = gpix1; if (sv2) { uae_u32 spix2 = denise_render_sprites2(pix2, sv2); if (spix2) { @@ -14404,6 +41871,16 @@ static void lts_aga_fm1_dpf1_p4_ishres_dhires_spr_genlock(void) } dtbuf[h][2] = dpix_val2; dtgbuf[h][2] = gpix2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + gpix3 = get_genlock_transparency(spix3); + + } + } + dtbuf[h][3] = dpix_val3; + dtgbuf[h][3] = gpix3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -14413,6 +41890,15 @@ static void lts_aga_fm1_dpf1_p4_ishres_dhires_spr_genlock(void) *buf1++ = t0; *buf2++ = t0; *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = dtgbuf[h ^ lol][1]; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -14422,6 +41908,15 @@ static void lts_aga_fm1_dpf1_p4_ishres_dhires_spr_genlock(void) *buf1++ = t2; *buf2++ = t2; *gbuf++ = dtgbuf[h ^ lol][2]; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + *gbuf++ = dtgbuf[h ^ lol][3]; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -14445,7 +41940,11 @@ static void lts_aga_fm1_dpf1_p4_ishres_dhires_spr_genlock(void) denise_cck++; } } -static void lts_aga_fm1_dpf1_p4_ishres_dhires_spr_filtered_genlock(void) +static void lts_aga_fm1_kehb0_p4_ihires_dshres_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm1_kehb1_p4_ihires_dshres_spr_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -14456,7 +41955,6 @@ 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; @@ -14465,27 +41963,7 @@ static void lts_aga_fm1_dpf1_p4_ishres_dhires_spr_filtered_genlock(void) if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - gpix0 = get_genlock_transparency(dpf_lookup[pix0]); - } - last_bpl_pix = pix0; - } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4e(); - } - if (bpldat_copy[1] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[1]) { - copybpl4o(); } - loaded_pix = getbpl4_32(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -14494,36 +41972,24 @@ static void lts_aga_fm1_dpf1_p4_ishres_dhires_spr_filtered_genlock(void) sv0 = svt; } } - loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u8 gpix1 = 0xff; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { gpix1 = get_genlock_transparency_border(); dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - if (dpf_lookup_no[pix1]) { - val1 += dblpfofs[bpldualpf2of]; - } - val1 ^= bplcon4_denise_xor_val; - dpix_val1 = denise_colors.acolors[val1]; - gpix1 = get_genlock_transparency(dpf_lookup[pix1]); - } - last_bpl_pix = pix1; } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4e(); - } - if (bpldat_copy[1] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[1]) { - copybpl4o(); + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } } - loaded_pix = getbpl4_32(); - loaded_pixs[1] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u8 gpix2 = 0xff; @@ -14531,27 +41997,7 @@ static void lts_aga_fm1_dpf1_p4_ishres_dhires_spr_filtered_genlock(void) if (!denise_blank_active) { gpix2 = get_genlock_transparency_border(); dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; - gpix2 = get_genlock_transparency(dpf_lookup[pix2]); - } - last_bpl_pix = pix2; - } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4e(); - } - if (bpldat_copy[1] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[1]) { - copybpl4o(); } - loaded_pix = getbpl4_32(); uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -14560,36 +42006,24 @@ static void lts_aga_fm1_dpf1_p4_ishres_dhires_spr_filtered_genlock(void) sv2 = svt; } } - loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u8 gpix3 = 0xff; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { gpix3 = get_genlock_transparency_border(); dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - uae_u8 val3 = dpf_lookup[pix3]; - if (dpf_lookup_no[pix3]) { - val3 += dblpfofs[bpldualpf2of]; - } - val3 ^= bplcon4_denise_xor_val; - dpix_val3 = denise_colors.acolors[val3]; - gpix3 = get_genlock_transparency(dpf_lookup[pix3]); - } - last_bpl_pix = pix3; - } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4e(); } - if (bpldat_copy[1] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[1]) { - copybpl4o(); + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } } - loaded_pix = getbpl4_32(); - loaded_pixs[3] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { uae_u32 spix0 = denise_render_sprites2(pix0, sv0); @@ -14597,26 +42031,40 @@ static void lts_aga_fm1_dpf1_p4_ishres_dhires_spr_filtered_genlock(void) dpix_val0 = denise_colors.acolors[spix0]; gpix0 = get_genlock_transparency(spix0); - dpix_val1 = dpix_val0; } } - dpix_val0 = filter_pixel(dpix_val0, dpix_val1); - gpix0 = filter_pixel_genlock(gpix0, gpix1); dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + gpix1 = get_genlock_transparency(spix1); + + } + } + dtbuf[h][1] = dpix_val1; + dtgbuf[h][1] = gpix1; if (sv2) { uae_u32 spix2 = denise_render_sprites2(pix2, sv2); if (spix2) { dpix_val2 = denise_colors.acolors[spix2]; gpix2 = get_genlock_transparency(spix2); - dpix_val3 = dpix_val2; } } - dpix_val2 = filter_pixel(dpix_val2, dpix_val3); - gpix2 = filter_pixel_genlock(gpix2, gpix3); dtbuf[h][2] = dpix_val2; dtgbuf[h][2] = gpix2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + gpix3 = get_genlock_transparency(spix3); + + } + } + dtbuf[h][3] = dpix_val3; + dtgbuf[h][3] = gpix3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -14626,6 +42074,15 @@ static void lts_aga_fm1_dpf1_p4_ishres_dhires_spr_filtered_genlock(void) *buf1++ = t0; *buf2++ = t0; *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = dtgbuf[h ^ lol][1]; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -14635,6 +42092,15 @@ static void lts_aga_fm1_dpf1_p4_ishres_dhires_spr_filtered_genlock(void) *buf1++ = t2; *buf2++ = t2; *gbuf++ = dtgbuf[h ^ lol][2]; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + *gbuf++ = dtgbuf[h ^ lol][3]; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -14658,135 +42124,11 @@ static void lts_aga_fm1_dpf1_p4_ishres_dhires_spr_filtered_genlock(void) denise_cck++; } } -static void lts_aga_fm1_ehb0_p4_ishres_dhires_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb0_p4_ishres_dhires_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb1_p4_ishres_dhires_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb1_p4_ishres_dhires_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_ham0_p4_ishres_dhires_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_ham0_p4_ishres_dhires_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_ham1_p4_ishres_dhires_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_ham1_p4_ishres_dhires_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb0_p4_ishres_dhires_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb0_p4_ishres_dhires_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb1_p4_ishres_dhires_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb1_p4_ishres_dhires_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_n0_p8_ishres_dhires_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_n0_p8_ishres_dhires_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_n1_p8_ishres_dhires_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_n1_p8_ishres_dhires_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_dpf0_p8_ishres_dhires_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_dpf0_p8_ishres_dhires_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_dpf1_p8_ishres_dhires_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_dpf1_p8_ishres_dhires_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb0_p8_ishres_dhires_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb0_p8_ishres_dhires_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb1_p8_ishres_dhires_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb1_p8_ishres_dhires_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_ham0_p8_ishres_dhires_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_ham0_p8_ishres_dhires_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_ham1_p8_ishres_dhires_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_ham1_p8_ishres_dhires_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb0_p8_ishres_dhires_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb0_p8_ishres_dhires_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb1_p8_ishres_dhires_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb1_p8_ishres_dhires_spr_filtered_genlock(void) +static void lts_aga_fm1_kehb1_p4_ihires_dshres_spr_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm1_n0_p4_ilores_dshres_genlock(void) +static void lts_aga_fm1_n0_p8_ihires_dshres_spr_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -14799,6 +42141,7 @@ static void lts_aga_fm1_n0_p4_ilores_dshres_genlock(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; @@ -14813,19 +42156,28 @@ static void lts_aga_fm1_n0_p4_ilores_dshres_genlock(void) } last_bpl_pix = pix0; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl4(); - loaded_pix = getbpl4_32(); + shiftbpl8(); + loaded_pix = getbpl8_32(); } - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl4(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8(); bplshiftcnt[0] = 0; - loaded_pix = getbpl4_32(); + loaded_pix = getbpl8_32(); + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } } loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u8 gpix1 = 0xff; uae_u32 dpix_val1 = BLANK_COLOR; @@ -14840,19 +42192,28 @@ static void lts_aga_fm1_n0_p4_ilores_dshres_genlock(void) } last_bpl_pix = pix1; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl4(); - loaded_pix = getbpl4_32(); + shiftbpl8(); + loaded_pix = getbpl8_32(); } - if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { - copybpl4(); + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8(); bplshiftcnt[0] = 0; - loaded_pix = getbpl4_32(); + loaded_pix = getbpl8_32(); + } + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } } loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u8 gpix2 = 0xff; uae_u32 dpix_val2 = BLANK_COLOR; @@ -14867,19 +42228,28 @@ static void lts_aga_fm1_n0_p4_ilores_dshres_genlock(void) } last_bpl_pix = pix2; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl4(); - loaded_pix = getbpl4_32(); + shiftbpl8(); + loaded_pix = getbpl8_32(); } - if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { - copybpl4(); + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8(); bplshiftcnt[0] = 0; - loaded_pix = getbpl4_32(); + loaded_pix = getbpl8_32(); + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } } loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u8 gpix3 = 0xff; uae_u32 dpix_val3 = BLANK_COLOR; @@ -14894,26 +42264,66 @@ static void lts_aga_fm1_n0_p4_ilores_dshres_genlock(void) } last_bpl_pix = pix3; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl4(); - loaded_pix = getbpl4_32(); + shiftbpl8(); + loaded_pix = getbpl8_32(); } - if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { - copybpl4(); + if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8(); bplshiftcnt[0] = 0; - loaded_pix = getbpl4_32(); + loaded_pix = getbpl8_32(); + } + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } } loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + gpix1 = get_genlock_transparency(spix1); + + } + } dtbuf[h][1] = dpix_val1; dtgbuf[h][1] = gpix1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } dtbuf[h][2] = dpix_val2; dtgbuf[h][2] = gpix2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + gpix3 = get_genlock_transparency(spix3); + + } + } dtbuf[h][3] = dpix_val3; dtgbuf[h][3] = gpix3; uae_u32 t0 = dtbuf[h ^ lol][0]; @@ -14975,11 +42385,11 @@ static void lts_aga_fm1_n0_p4_ilores_dshres_genlock(void) denise_cck++; } } -static void lts_aga_fm1_n0_p4_ilores_dshres_filtered_genlock(void) +static void lts_aga_fm1_n0_p8_ihires_dshres_spr_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm1_n1_p4_ilores_dshres_genlock(void) +static void lts_aga_fm1_n1_p8_ihires_dshres_spr_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -14992,6 +42402,7 @@ static void lts_aga_fm1_n1_p4_ilores_dshres_genlock(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; @@ -15006,30 +42417,39 @@ static void lts_aga_fm1_n1_p4_ilores_dshres_genlock(void) } last_bpl_pix = pix0; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl4e(); - loaded_pix = getbpl4_32(); + shiftbpl8e(); + loaded_pix = getbpl8_32(); } - bplshiftcnt[1] += 1; + bplshiftcnt[1] += 2; if (bplshiftcnt[1] >= 4) { bplshiftcnt[1] = 0; - shiftbpl4o(); - loaded_pix = getbpl4_32(); + shiftbpl8o(); + loaded_pix = getbpl8_32(); } - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl4e(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8e(); bplshiftcnt[0] = 0; - loaded_pix = getbpl4_32(); + loaded_pix = getbpl8_32(); } - if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { - copybpl4o(); + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o(); bplshiftcnt[1] = 0; - loaded_pix = getbpl4_32(); + loaded_pix = getbpl8_32(); + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } } loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u8 gpix1 = 0xff; uae_u32 dpix_val1 = BLANK_COLOR; @@ -15044,30 +42464,39 @@ static void lts_aga_fm1_n1_p4_ilores_dshres_genlock(void) } last_bpl_pix = pix1; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl4e(); - loaded_pix = getbpl4_32(); + shiftbpl8e(); + loaded_pix = getbpl8_32(); } - bplshiftcnt[1] += 1; + bplshiftcnt[1] += 2; if (bplshiftcnt[1] >= 4) { bplshiftcnt[1] = 0; - shiftbpl4o(); - loaded_pix = getbpl4_32(); + shiftbpl8o(); + loaded_pix = getbpl8_32(); } - if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { - copybpl4e(); + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8e(); bplshiftcnt[0] = 0; - loaded_pix = getbpl4_32(); + loaded_pix = getbpl8_32(); } - if (bpldat_copy[1] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) { - copybpl4o(); + if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o(); bplshiftcnt[1] = 0; - loaded_pix = getbpl4_32(); + loaded_pix = getbpl8_32(); + } + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } } loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u8 gpix2 = 0xff; uae_u32 dpix_val2 = BLANK_COLOR; @@ -15082,30 +42511,39 @@ static void lts_aga_fm1_n1_p4_ilores_dshres_genlock(void) } last_bpl_pix = pix2; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl4e(); - loaded_pix = getbpl4_32(); + shiftbpl8e(); + loaded_pix = getbpl8_32(); } - bplshiftcnt[1] += 1; + bplshiftcnt[1] += 2; if (bplshiftcnt[1] >= 4) { bplshiftcnt[1] = 0; - shiftbpl4o(); - loaded_pix = getbpl4_32(); + shiftbpl8o(); + loaded_pix = getbpl8_32(); } - if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { - copybpl4e(); + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8e(); bplshiftcnt[0] = 0; - loaded_pix = getbpl4_32(); + loaded_pix = getbpl8_32(); } - if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) { - copybpl4o(); + if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o(); bplshiftcnt[1] = 0; - loaded_pix = getbpl4_32(); + loaded_pix = getbpl8_32(); + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } } loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u8 gpix3 = 0xff; uae_u32 dpix_val3 = BLANK_COLOR; @@ -15120,37 +42558,77 @@ static void lts_aga_fm1_n1_p4_ilores_dshres_genlock(void) } last_bpl_pix = pix3; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl4e(); - loaded_pix = getbpl4_32(); + shiftbpl8e(); + loaded_pix = getbpl8_32(); } - bplshiftcnt[1] += 1; + bplshiftcnt[1] += 2; if (bplshiftcnt[1] >= 4) { bplshiftcnt[1] = 0; - shiftbpl4o(); - loaded_pix = getbpl4_32(); + shiftbpl8o(); + loaded_pix = getbpl8_32(); } - if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { - copybpl4e(); + if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8e(); bplshiftcnt[0] = 0; - loaded_pix = getbpl4_32(); + loaded_pix = getbpl8_32(); } - if (bpldat_copy[1] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[1]) { - copybpl4o(); + if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o(); bplshiftcnt[1] = 0; - loaded_pix = getbpl4_32(); + loaded_pix = getbpl8_32(); + } + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } } loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + gpix1 = get_genlock_transparency(spix1); + + } + } dtbuf[h][1] = dpix_val1; dtgbuf[h][1] = gpix1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } dtbuf[h][2] = dpix_val2; dtgbuf[h][2] = gpix2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + gpix3 = get_genlock_transparency(spix3); + + } + } dtbuf[h][3] = dpix_val3; dtgbuf[h][3] = gpix3; uae_u32 t0 = dtbuf[h ^ lol][0]; @@ -15212,11 +42690,11 @@ static void lts_aga_fm1_n1_p4_ilores_dshres_genlock(void) denise_cck++; } } -static void lts_aga_fm1_n1_p4_ilores_dshres_filtered_genlock(void) +static void lts_aga_fm1_n1_p8_ihires_dshres_spr_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm1_dpf0_p4_ilores_dshres_genlock(void) +static void lts_aga_fm1_dpf0_p8_ihires_dshres_spr_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -15229,6 +42707,7 @@ static void lts_aga_fm1_dpf0_p4_ilores_dshres_genlock(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; @@ -15248,19 +42727,28 @@ static void lts_aga_fm1_dpf0_p4_ilores_dshres_genlock(void) } last_bpl_pix = pix0; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl4(); - loaded_pix = getbpl4_32(); + shiftbpl8(); + loaded_pix = getbpl8_32(); } - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl4(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8(); bplshiftcnt[0] = 0; - loaded_pix = getbpl4_32(); + loaded_pix = getbpl8_32(); + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } } loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u8 gpix1 = 0xff; uae_u32 dpix_val1 = BLANK_COLOR; @@ -15280,19 +42768,28 @@ static void lts_aga_fm1_dpf0_p4_ilores_dshres_genlock(void) } last_bpl_pix = pix1; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl4(); - loaded_pix = getbpl4_32(); + shiftbpl8(); + loaded_pix = getbpl8_32(); } - if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { - copybpl4(); + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8(); bplshiftcnt[0] = 0; - loaded_pix = getbpl4_32(); + loaded_pix = getbpl8_32(); + } + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } } loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u8 gpix2 = 0xff; uae_u32 dpix_val2 = BLANK_COLOR; @@ -15312,19 +42809,28 @@ static void lts_aga_fm1_dpf0_p4_ilores_dshres_genlock(void) } last_bpl_pix = pix2; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl4(); - loaded_pix = getbpl4_32(); + shiftbpl8(); + loaded_pix = getbpl8_32(); } - if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { - copybpl4(); + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8(); bplshiftcnt[0] = 0; - loaded_pix = getbpl4_32(); + loaded_pix = getbpl8_32(); + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } } loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u8 gpix3 = 0xff; uae_u32 dpix_val3 = BLANK_COLOR; @@ -15344,26 +42850,66 @@ static void lts_aga_fm1_dpf0_p4_ilores_dshres_genlock(void) } last_bpl_pix = pix3; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl4(); - loaded_pix = getbpl4_32(); + shiftbpl8(); + loaded_pix = getbpl8_32(); } - if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { - copybpl4(); + if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8(); bplshiftcnt[0] = 0; - loaded_pix = getbpl4_32(); + loaded_pix = getbpl8_32(); + } + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } } loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + gpix1 = get_genlock_transparency(spix1); + + } + } dtbuf[h][1] = dpix_val1; dtgbuf[h][1] = gpix1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } dtbuf[h][2] = dpix_val2; dtgbuf[h][2] = gpix2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + gpix3 = get_genlock_transparency(spix3); + + } + } dtbuf[h][3] = dpix_val3; dtgbuf[h][3] = gpix3; uae_u32 t0 = dtbuf[h ^ lol][0]; @@ -15425,11 +42971,11 @@ static void lts_aga_fm1_dpf0_p4_ilores_dshres_genlock(void) denise_cck++; } } -static void lts_aga_fm1_dpf0_p4_ilores_dshres_filtered_genlock(void) +static void lts_aga_fm1_dpf0_p8_ihires_dshres_spr_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm1_dpf1_p4_ilores_dshres_genlock(void) +static void lts_aga_fm1_dpf1_p8_ihires_dshres_spr_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -15442,6 +42988,7 @@ static void lts_aga_fm1_dpf1_p4_ilores_dshres_genlock(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; @@ -15461,30 +43008,39 @@ static void lts_aga_fm1_dpf1_p4_ilores_dshres_genlock(void) } last_bpl_pix = pix0; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl4e(); - loaded_pix = getbpl4_32(); + shiftbpl8e(); + loaded_pix = getbpl8_32(); } - bplshiftcnt[1] += 1; + bplshiftcnt[1] += 2; if (bplshiftcnt[1] >= 4) { bplshiftcnt[1] = 0; - shiftbpl4o(); - loaded_pix = getbpl4_32(); + shiftbpl8o(); + loaded_pix = getbpl8_32(); } - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl4e(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8e(); bplshiftcnt[0] = 0; - loaded_pix = getbpl4_32(); + loaded_pix = getbpl8_32(); } - if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { - copybpl4o(); + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o(); bplshiftcnt[1] = 0; - loaded_pix = getbpl4_32(); + loaded_pix = getbpl8_32(); + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } } loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u8 gpix1 = 0xff; uae_u32 dpix_val1 = BLANK_COLOR; @@ -15504,30 +43060,39 @@ static void lts_aga_fm1_dpf1_p4_ilores_dshres_genlock(void) } last_bpl_pix = pix1; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl4e(); - loaded_pix = getbpl4_32(); + shiftbpl8e(); + loaded_pix = getbpl8_32(); } - bplshiftcnt[1] += 1; + bplshiftcnt[1] += 2; if (bplshiftcnt[1] >= 4) { bplshiftcnt[1] = 0; - shiftbpl4o(); - loaded_pix = getbpl4_32(); + shiftbpl8o(); + loaded_pix = getbpl8_32(); } - if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { - copybpl4e(); + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8e(); bplshiftcnt[0] = 0; - loaded_pix = getbpl4_32(); + loaded_pix = getbpl8_32(); } - if (bpldat_copy[1] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) { - copybpl4o(); + if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o(); bplshiftcnt[1] = 0; - loaded_pix = getbpl4_32(); + loaded_pix = getbpl8_32(); + } + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } } loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u8 gpix2 = 0xff; uae_u32 dpix_val2 = BLANK_COLOR; @@ -15547,30 +43112,39 @@ static void lts_aga_fm1_dpf1_p4_ilores_dshres_genlock(void) } last_bpl_pix = pix2; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl4e(); - loaded_pix = getbpl4_32(); + shiftbpl8e(); + loaded_pix = getbpl8_32(); } - bplshiftcnt[1] += 1; + bplshiftcnt[1] += 2; if (bplshiftcnt[1] >= 4) { bplshiftcnt[1] = 0; - shiftbpl4o(); - loaded_pix = getbpl4_32(); + shiftbpl8o(); + loaded_pix = getbpl8_32(); } - if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { - copybpl4e(); + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8e(); bplshiftcnt[0] = 0; - loaded_pix = getbpl4_32(); + loaded_pix = getbpl8_32(); } - if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) { - copybpl4o(); + if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o(); bplshiftcnt[1] = 0; - loaded_pix = getbpl4_32(); + loaded_pix = getbpl8_32(); + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } } loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u8 gpix3 = 0xff; uae_u32 dpix_val3 = BLANK_COLOR; @@ -15590,37 +43164,77 @@ static void lts_aga_fm1_dpf1_p4_ilores_dshres_genlock(void) } last_bpl_pix = pix3; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl4e(); - loaded_pix = getbpl4_32(); + shiftbpl8e(); + loaded_pix = getbpl8_32(); } - bplshiftcnt[1] += 1; + bplshiftcnt[1] += 2; if (bplshiftcnt[1] >= 4) { bplshiftcnt[1] = 0; - shiftbpl4o(); - loaded_pix = getbpl4_32(); + shiftbpl8o(); + loaded_pix = getbpl8_32(); } - if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { - copybpl4e(); + if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8e(); bplshiftcnt[0] = 0; - loaded_pix = getbpl4_32(); + loaded_pix = getbpl8_32(); } - if (bpldat_copy[1] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[1]) { - copybpl4o(); + if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o(); bplshiftcnt[1] = 0; - loaded_pix = getbpl4_32(); + loaded_pix = getbpl8_32(); + } + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } } loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + gpix1 = get_genlock_transparency(spix1); + + } + } dtbuf[h][1] = dpix_val1; dtgbuf[h][1] = gpix1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } dtbuf[h][2] = dpix_val2; dtgbuf[h][2] = gpix2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + gpix3 = get_genlock_transparency(spix3); + + } + } dtbuf[h][3] = dpix_val3; dtgbuf[h][3] = gpix3; uae_u32 t0 = dtbuf[h ^ lol][0]; @@ -15682,59 +43296,11 @@ static void lts_aga_fm1_dpf1_p4_ilores_dshres_genlock(void) denise_cck++; } } -static void lts_aga_fm1_dpf1_p4_ilores_dshres_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb0_p4_ilores_dshres_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb0_p4_ilores_dshres_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb1_p4_ilores_dshres_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb1_p4_ilores_dshres_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_ham0_p4_ilores_dshres_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_ham0_p4_ilores_dshres_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_ham1_p4_ilores_dshres_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_ham1_p4_ilores_dshres_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb0_p4_ilores_dshres_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb0_p4_ilores_dshres_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb1_p4_ilores_dshres_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb1_p4_ilores_dshres_filtered_genlock(void) +static void lts_aga_fm1_dpf1_p8_ihires_dshres_spr_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm1_n0_p8_ilores_dshres_genlock(void) +static void lts_aga_fm1_ehb0_p8_ihires_dshres_spr_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -15745,123 +43311,114 @@ 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; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8(); - loaded_pix = getbpl8_32(); } - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_32(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u8 gpix1 = 0xff; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { gpix1 = get_genlock_transparency_border(); - dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; - gpix1 = get_genlock_transparency(pix1 ^ bplcon4_denise_xor_val); - } - last_bpl_pix = pix1; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8(); - loaded_pix = getbpl8_32(); - } - if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_32(); + dpix_val1 = bordercolor; + } + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } } - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u8 gpix2 = 0xff; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { gpix2 = get_genlock_transparency_border(); dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; - gpix2 = get_genlock_transparency(pix2 ^ bplcon4_denise_xor_val); - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8(); - loaded_pix = getbpl8_32(); } - if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_32(); + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } } - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u8 gpix3 = 0xff; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { gpix3 = get_genlock_transparency_border(); dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; - gpix3 = get_genlock_transparency(pix3 ^ bplcon4_denise_xor_val); - } - last_bpl_pix = pix3; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8(); - loaded_pix = getbpl8_32(); } - if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_32(); + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } } - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + gpix1 = get_genlock_transparency(spix1); + + } + } dtbuf[h][1] = dpix_val1; dtgbuf[h][1] = gpix1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } dtbuf[h][2] = dpix_val2; dtgbuf[h][2] = gpix2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + gpix3 = get_genlock_transparency(spix3); + + } + } dtbuf[h][3] = dpix_val3; dtgbuf[h][3] = gpix3; uae_u32 t0 = dtbuf[h ^ lol][0]; @@ -15923,11 +43480,11 @@ static void lts_aga_fm1_n0_p8_ilores_dshres_genlock(void) denise_cck++; } } -static void lts_aga_fm1_n0_p8_ilores_dshres_filtered_genlock(void) +static void lts_aga_fm1_ehb0_p8_ihires_dshres_spr_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm1_n1_p8_ilores_dshres_genlock(void) +static void lts_aga_fm1_ehb1_p8_ihires_dshres_spr_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -15938,167 +43495,114 @@ 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; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8e(); - loaded_pix = getbpl8_32(); - } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl8o(); - loaded_pix = getbpl8_32(); - } - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_32(); } - if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { - copybpl8o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl8_32(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u8 gpix1 = 0xff; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { gpix1 = get_genlock_transparency_border(); dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; - gpix1 = get_genlock_transparency(pix1 ^ bplcon4_denise_xor_val); - } - last_bpl_pix = pix1; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8e(); - loaded_pix = getbpl8_32(); - } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl8o(); - loaded_pix = getbpl8_32(); - } - if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_32(); } - if (bpldat_copy[1] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) { - copybpl8o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl8_32(); + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } } - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u8 gpix2 = 0xff; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { gpix2 = get_genlock_transparency_border(); dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; - gpix2 = get_genlock_transparency(pix2 ^ bplcon4_denise_xor_val); - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8e(); - loaded_pix = getbpl8_32(); - } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl8o(); - loaded_pix = getbpl8_32(); - } - if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_32(); } - if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) { - copybpl8o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl8_32(); + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } } - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u8 gpix3 = 0xff; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { gpix3 = get_genlock_transparency_border(); dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; - gpix3 = get_genlock_transparency(pix3 ^ bplcon4_denise_xor_val); - } - last_bpl_pix = pix3; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8e(); - loaded_pix = getbpl8_32(); } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl8o(); - loaded_pix = getbpl8_32(); - } - if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_32(); - } - if (bpldat_copy[1] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[1]) { - copybpl8o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl8_32(); + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } } - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + gpix1 = get_genlock_transparency(spix1); + + } + } dtbuf[h][1] = dpix_val1; dtgbuf[h][1] = gpix1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } dtbuf[h][2] = dpix_val2; dtgbuf[h][2] = gpix2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + gpix3 = get_genlock_transparency(spix3); + + } + } dtbuf[h][3] = dpix_val3; dtgbuf[h][3] = gpix3; uae_u32 t0 = dtbuf[h ^ lol][0]; @@ -16160,11 +43664,11 @@ static void lts_aga_fm1_n1_p8_ilores_dshres_genlock(void) denise_cck++; } } -static void lts_aga_fm1_n1_p8_ilores_dshres_filtered_genlock(void) +static void lts_aga_fm1_ehb1_p8_ihires_dshres_spr_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm1_dpf0_p8_ilores_dshres_genlock(void) +static void lts_aga_fm1_ham0_p8_ihires_dshres_spr_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -16177,6 +43681,7 @@ static void lts_aga_fm1_dpf0_p8_ilores_dshres_genlock(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; @@ -16186,29 +43691,33 @@ static void lts_aga_fm1_dpf0_p8_ilores_dshres_genlock(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - gpix0 = get_genlock_transparency(dpf_lookup[pix0]); + dpix_val0 = decode_ham_pixel_aga(pix0); + gpix0 = get_genlock_transparency((pix0 >> 2) & 63); } last_bpl_pix = pix0; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; shiftbpl8(); loaded_pix = getbpl8_32(); } - if (bpldat_copy[0] && ((cmp | 0) & 127) == 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(); } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u8 gpix1 = 0xff; uae_u32 dpix_val1 = BLANK_COLOR; @@ -16218,29 +43727,33 @@ static void lts_aga_fm1_dpf0_p8_ilores_dshres_genlock(void) if (denise_hdiw && bpl1dat_trigger) { pix1 = loaded_pixs[1]; clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - if (dpf_lookup_no[pix1]) { - val1 += dblpfofs[bpldualpf2of]; - } - val1 ^= bplcon4_denise_xor_val; - dpix_val1 = denise_colors.acolors[val1]; - gpix1 = get_genlock_transparency(dpf_lookup[pix1]); + dpix_val1 = decode_ham_pixel_aga(pix1); + gpix1 = get_genlock_transparency((pix1 >> 2) & 63); } last_bpl_pix = pix1; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; shiftbpl8(); loaded_pix = getbpl8_32(); } - if (bpldat_copy[0] && ((cmp | 1) & 127) == 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(); } + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } + } loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u8 gpix2 = 0xff; uae_u32 dpix_val2 = BLANK_COLOR; @@ -16250,29 +43763,33 @@ static void lts_aga_fm1_dpf0_p8_ilores_dshres_genlock(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; - gpix2 = get_genlock_transparency(dpf_lookup[pix2]); + dpix_val2 = decode_ham_pixel_aga(pix2); + gpix2 = get_genlock_transparency((pix2 >> 2) & 63); } last_bpl_pix = pix2; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; shiftbpl8(); loaded_pix = getbpl8_32(); } - if (bpldat_copy[0] && ((cmp | 2) & 127) == 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(); } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u8 gpix3 = 0xff; uae_u32 dpix_val3 = BLANK_COLOR; @@ -16282,36 +43799,71 @@ static void lts_aga_fm1_dpf0_p8_ilores_dshres_genlock(void) if (denise_hdiw && bpl1dat_trigger) { pix3 = loaded_pixs[3]; clxdat |= bplcoltable[pix3]; - uae_u8 val3 = dpf_lookup[pix3]; - if (dpf_lookup_no[pix3]) { - val3 += dblpfofs[bpldualpf2of]; - } - val3 ^= bplcon4_denise_xor_val; - dpix_val3 = denise_colors.acolors[val3]; - gpix3 = get_genlock_transparency(dpf_lookup[pix3]); + dpix_val3 = decode_ham_pixel_aga(pix3); + gpix3 = get_genlock_transparency((pix3 >> 2) & 63); } last_bpl_pix = pix3; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; shiftbpl8(); loaded_pix = getbpl8_32(); } - if (bpldat_copy[0] && ((cmp | 3) & 127) == 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(); } + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } + } loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + gpix1 = get_genlock_transparency(spix1); + + } + } dtbuf[h][1] = dpix_val1; dtgbuf[h][1] = gpix1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } dtbuf[h][2] = dpix_val2; dtgbuf[h][2] = gpix2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + gpix3 = get_genlock_transparency(spix3); + + } + } dtbuf[h][3] = dpix_val3; dtgbuf[h][3] = gpix3; uae_u32 t0 = dtbuf[h ^ lol][0]; @@ -16373,11 +43925,11 @@ static void lts_aga_fm1_dpf0_p8_ilores_dshres_genlock(void) denise_cck++; } } -static void lts_aga_fm1_dpf0_p8_ilores_dshres_filtered_genlock(void) +static void lts_aga_fm1_ham0_p8_ihires_dshres_spr_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm1_dpf1_p8_ilores_dshres_genlock(void) +static void lts_aga_fm1_ham1_p8_ihires_dshres_spr_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -16390,6 +43942,7 @@ static void lts_aga_fm1_dpf1_p8_ilores_dshres_genlock(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; @@ -16399,40 +43952,44 @@ static void lts_aga_fm1_dpf1_p8_ilores_dshres_genlock(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - gpix0 = get_genlock_transparency(dpf_lookup[pix0]); + dpix_val0 = decode_ham_pixel_aga(pix0); + gpix0 = get_genlock_transparency((pix0 >> 2) & 63); } last_bpl_pix = pix0; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; shiftbpl8e(); loaded_pix = getbpl8_32(); } - bplshiftcnt[1] += 1; + bplshiftcnt[1] += 2; if (bplshiftcnt[1] >= 4) { bplshiftcnt[1] = 0; shiftbpl8o(); loaded_pix = getbpl8_32(); } - if (bpldat_copy[0] && ((cmp | 0) & 127) == 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] && ((cmp | 0) & 127) == 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(); } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u8 gpix1 = 0xff; uae_u32 dpix_val1 = BLANK_COLOR; @@ -16442,40 +43999,44 @@ static void lts_aga_fm1_dpf1_p8_ilores_dshres_genlock(void) if (denise_hdiw && bpl1dat_trigger) { pix1 = loaded_pixs[1]; clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - if (dpf_lookup_no[pix1]) { - val1 += dblpfofs[bpldualpf2of]; - } - val1 ^= bplcon4_denise_xor_val; - dpix_val1 = denise_colors.acolors[val1]; - gpix1 = get_genlock_transparency(dpf_lookup[pix1]); + dpix_val1 = decode_ham_pixel_aga(pix1); + gpix1 = get_genlock_transparency((pix1 >> 2) & 63); } last_bpl_pix = pix1; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; shiftbpl8e(); loaded_pix = getbpl8_32(); } - bplshiftcnt[1] += 1; + bplshiftcnt[1] += 2; if (bplshiftcnt[1] >= 4) { bplshiftcnt[1] = 0; shiftbpl8o(); loaded_pix = getbpl8_32(); } - if (bpldat_copy[0] && ((cmp | 1) & 127) == 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] && ((cmp | 1) & 127) == 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(); } + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } + } loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u8 gpix2 = 0xff; uae_u32 dpix_val2 = BLANK_COLOR; @@ -16485,40 +44046,44 @@ static void lts_aga_fm1_dpf1_p8_ilores_dshres_genlock(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; - gpix2 = get_genlock_transparency(dpf_lookup[pix2]); + dpix_val2 = decode_ham_pixel_aga(pix2); + gpix2 = get_genlock_transparency((pix2 >> 2) & 63); } last_bpl_pix = pix2; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; shiftbpl8e(); loaded_pix = getbpl8_32(); } - bplshiftcnt[1] += 1; + bplshiftcnt[1] += 2; if (bplshiftcnt[1] >= 4) { bplshiftcnt[1] = 0; shiftbpl8o(); loaded_pix = getbpl8_32(); } - if (bpldat_copy[0] && ((cmp | 2) & 127) == 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] && ((cmp | 2) & 127) == 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(); } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u8 gpix3 = 0xff; uae_u32 dpix_val3 = BLANK_COLOR; @@ -16528,47 +44093,82 @@ static void lts_aga_fm1_dpf1_p8_ilores_dshres_genlock(void) if (denise_hdiw && bpl1dat_trigger) { pix3 = loaded_pixs[3]; clxdat |= bplcoltable[pix3]; - uae_u8 val3 = dpf_lookup[pix3]; - if (dpf_lookup_no[pix3]) { - val3 += dblpfofs[bpldualpf2of]; - } - val3 ^= bplcon4_denise_xor_val; - dpix_val3 = denise_colors.acolors[val3]; - gpix3 = get_genlock_transparency(dpf_lookup[pix3]); + dpix_val3 = decode_ham_pixel_aga(pix3); + gpix3 = get_genlock_transparency((pix3 >> 2) & 63); } last_bpl_pix = pix3; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; shiftbpl8e(); loaded_pix = getbpl8_32(); } - bplshiftcnt[1] += 1; + bplshiftcnt[1] += 2; if (bplshiftcnt[1] >= 4) { bplshiftcnt[1] = 0; shiftbpl8o(); loaded_pix = getbpl8_32(); } - if (bpldat_copy[0] && ((cmp | 3) & 127) == 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] && ((cmp | 3) & 127) == 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(); } + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } + } loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + gpix1 = get_genlock_transparency(spix1); + + } + } dtbuf[h][1] = dpix_val1; dtgbuf[h][1] = gpix1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } dtbuf[h][2] = dpix_val2; dtgbuf[h][2] = gpix2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + gpix3 = get_genlock_transparency(spix3); + + } + } dtbuf[h][3] = dpix_val3; dtgbuf[h][3] = gpix3; uae_u32 t0 = dtbuf[h ^ lol][0]; @@ -16630,27 +44230,11 @@ static void lts_aga_fm1_dpf1_p8_ilores_dshres_genlock(void) denise_cck++; } } -static void lts_aga_fm1_dpf1_p8_ilores_dshres_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb0_p8_ilores_dshres_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb0_p8_ilores_dshres_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb1_p8_ilores_dshres_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb1_p8_ilores_dshres_filtered_genlock(void) +static void lts_aga_fm1_ham1_p8_ihires_dshres_spr_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm1_ham0_p8_ilores_dshres_genlock(void) +static void lts_aga_fm1_kehb0_p8_ihires_dshres_spr_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -16661,123 +44245,114 @@ 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; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = decode_ham_pixel_aga(pix0); - gpix0 = get_genlock_transparency((pix0 >> 2) & 63); - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8(); - loaded_pix = getbpl8_32(); } - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_32(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u8 gpix1 = 0xff; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { gpix1 = get_genlock_transparency_border(); dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - dpix_val1 = decode_ham_pixel_aga(pix1); - gpix1 = get_genlock_transparency((pix1 >> 2) & 63); - } - last_bpl_pix = pix1; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8(); - loaded_pix = getbpl8_32(); } - if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_32(); + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } } - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u8 gpix2 = 0xff; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { gpix2 = get_genlock_transparency_border(); dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = decode_ham_pixel_aga(pix2); - gpix2 = get_genlock_transparency((pix2 >> 2) & 63); - } - last_bpl_pix = pix2; } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8(); - loaded_pix = getbpl8_32(); - } - if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_32(); + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } } - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u8 gpix3 = 0xff; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { gpix3 = get_genlock_transparency_border(); dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - dpix_val3 = decode_ham_pixel_aga(pix3); - gpix3 = get_genlock_transparency((pix3 >> 2) & 63); - } - last_bpl_pix = pix3; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8(); - loaded_pix = getbpl8_32(); } - if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_32(); + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } } - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + gpix1 = get_genlock_transparency(spix1); + + } + } dtbuf[h][1] = dpix_val1; dtgbuf[h][1] = gpix1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } dtbuf[h][2] = dpix_val2; dtgbuf[h][2] = gpix2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + gpix3 = get_genlock_transparency(spix3); + + } + } dtbuf[h][3] = dpix_val3; dtgbuf[h][3] = gpix3; uae_u32 t0 = dtbuf[h ^ lol][0]; @@ -16839,11 +44414,11 @@ static void lts_aga_fm1_ham0_p8_ilores_dshres_genlock(void) denise_cck++; } } -static void lts_aga_fm1_ham0_p8_ilores_dshres_filtered_genlock(void) +static void lts_aga_fm1_kehb0_p8_ihires_dshres_spr_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm1_ham1_p8_ilores_dshres_genlock(void) +static void lts_aga_fm1_kehb1_p8_ihires_dshres_spr_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -16854,167 +44429,114 @@ 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; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = decode_ham_pixel_aga(pix0); - gpix0 = get_genlock_transparency((pix0 >> 2) & 63); - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8e(); - loaded_pix = getbpl8_32(); - } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl8o(); - loaded_pix = getbpl8_32(); - } - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_32(); } - if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { - copybpl8o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl8_32(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u8 gpix1 = 0xff; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { gpix1 = get_genlock_transparency_border(); dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - dpix_val1 = decode_ham_pixel_aga(pix1); - gpix1 = get_genlock_transparency((pix1 >> 2) & 63); - } - last_bpl_pix = pix1; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8e(); - loaded_pix = getbpl8_32(); - } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl8o(); - loaded_pix = getbpl8_32(); - } - if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_32(); } - if (bpldat_copy[1] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) { - copybpl8o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl8_32(); + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } } - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u8 gpix2 = 0xff; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { gpix2 = get_genlock_transparency_border(); dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = decode_ham_pixel_aga(pix2); - gpix2 = get_genlock_transparency((pix2 >> 2) & 63); - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8e(); - loaded_pix = getbpl8_32(); - } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl8o(); - loaded_pix = getbpl8_32(); - } - if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_32(); } - if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) { - copybpl8o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl8_32(); + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } } - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u8 gpix3 = 0xff; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { gpix3 = get_genlock_transparency_border(); dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - dpix_val3 = decode_ham_pixel_aga(pix3); - gpix3 = get_genlock_transparency((pix3 >> 2) & 63); - } - last_bpl_pix = pix3; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8e(); - loaded_pix = getbpl8_32(); - } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl8o(); - loaded_pix = getbpl8_32(); - } - if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_32(); } - if (bpldat_copy[1] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[1]) { - copybpl8o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl8_32(); + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } } - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + gpix1 = get_genlock_transparency(spix1); + + } + } dtbuf[h][1] = dpix_val1; dtgbuf[h][1] = gpix1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } dtbuf[h][2] = dpix_val2; dtgbuf[h][2] = gpix2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + gpix3 = get_genlock_transparency(spix3); + + } + } dtbuf[h][3] = dpix_val3; dtgbuf[h][3] = gpix3; uae_u32 t0 = dtbuf[h ^ lol][0]; @@ -17076,27 +44598,11 @@ static void lts_aga_fm1_ham1_p8_ilores_dshres_genlock(void) denise_cck++; } } -static void lts_aga_fm1_ham1_p8_ilores_dshres_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb0_p8_ilores_dshres_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb0_p8_ilores_dshres_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb1_p8_ilores_dshres_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb1_p8_ilores_dshres_filtered_genlock(void) +static void lts_aga_fm1_kehb1_p8_ihires_dshres_spr_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm1_n0_p4_ilores_dshres_spr_genlock(void) +static void lts_aga_fm1_n0_p4_ishres_dshres_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -17109,7 +44615,6 @@ static void lts_aga_fm1_n0_p4_ilores_dshres_spr_genlock(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; @@ -17124,28 +44629,13 @@ static void lts_aga_fm1_n0_p4_ilores_dshres_spr_genlock(void) } last_bpl_pix = pix0; } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4(); - loaded_pix = getbpl4_32(); - } - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { copybpl4(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4_32(); - } - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } } + loaded_pix = getbpl4_32(); loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; - matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u8 gpix1 = 0xff; uae_u32 dpix_val1 = BLANK_COLOR; @@ -17160,28 +44650,13 @@ static void lts_aga_fm1_n0_p4_ilores_dshres_spr_genlock(void) } last_bpl_pix = pix1; } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4(); - loaded_pix = getbpl4_32(); - } - if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { copybpl4(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4_32(); - } - uae_u32 sv1 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv1 = svt; - } } + loaded_pix = getbpl4_32(); loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; - matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u8 gpix2 = 0xff; uae_u32 dpix_val2 = BLANK_COLOR; @@ -17196,28 +44671,13 @@ static void lts_aga_fm1_n0_p4_ilores_dshres_spr_genlock(void) } last_bpl_pix = pix2; } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4(); - loaded_pix = getbpl4_32(); - } - if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { copybpl4(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4_32(); - } - uae_u32 sv2 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv2 = svt; - } } + loaded_pix = getbpl4_32(); loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; - matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u8 gpix3 = 0xff; uae_u32 dpix_val3 = BLANK_COLOR; @@ -17232,66 +44692,20 @@ static void lts_aga_fm1_n0_p4_ilores_dshres_spr_genlock(void) } last_bpl_pix = pix3; } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4(); - loaded_pix = getbpl4_32(); - } - if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[0]) { copybpl4(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4_32(); - } - uae_u32 sv3 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv3 = svt; - } } + loaded_pix = getbpl4_32(); loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - gpix0 = get_genlock_transparency(spix0); - - } - } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; - if (sv1) { - uae_u32 spix1 = denise_render_sprites2(pix1, sv1); - if (spix1) { - dpix_val1 = denise_colors.acolors[spix1]; - gpix1 = get_genlock_transparency(spix1); - - } - } dtbuf[h][1] = dpix_val1; - dtgbuf[h][1] = gpix1; - if (sv2) { - uae_u32 spix2 = denise_render_sprites2(pix2, sv2); - if (spix2) { - dpix_val2 = denise_colors.acolors[spix2]; - gpix2 = get_genlock_transparency(spix2); - - } - } - dtbuf[h][2] = dpix_val2; - dtgbuf[h][2] = gpix2; - if (sv3) { - uae_u32 spix3 = denise_render_sprites2(pix3, sv3); - if (spix3) { - dpix_val3 = denise_colors.acolors[spix3]; - gpix3 = get_genlock_transparency(spix3); - - } - } + dtgbuf[h][1] = gpix1; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; dtbuf[h][3] = dpix_val3; dtgbuf[h][3] = gpix3; uae_u32 t0 = dtbuf[h ^ lol][0]; @@ -17353,11 +44767,11 @@ static void lts_aga_fm1_n0_p4_ilores_dshres_spr_genlock(void) denise_cck++; } } -static void lts_aga_fm1_n0_p4_ilores_dshres_spr_filtered_genlock(void) +static void lts_aga_fm1_n0_p4_ishres_dshres_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm1_n1_p4_ilores_dshres_spr_genlock(void) +static void lts_aga_fm1_n1_p4_ishres_dshres_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -17370,7 +44784,6 @@ static void lts_aga_fm1_n1_p4_ilores_dshres_spr_genlock(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; @@ -17385,39 +44798,16 @@ static void lts_aga_fm1_n1_p4_ilores_dshres_spr_genlock(void) } last_bpl_pix = pix0; } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4e(); - loaded_pix = getbpl4_32(); - } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl4o(); - loaded_pix = getbpl4_32(); - } - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { copybpl4e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4_32(); } - if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { + if (bpldat_copy[1] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[1]) { copybpl4o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl4_32(); - } - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } } + loaded_pix = getbpl4_32(); loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; - matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u8 gpix1 = 0xff; uae_u32 dpix_val1 = BLANK_COLOR; @@ -17432,39 +44822,16 @@ static void lts_aga_fm1_n1_p4_ilores_dshres_spr_genlock(void) } last_bpl_pix = pix1; } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4e(); - loaded_pix = getbpl4_32(); - } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl4o(); - loaded_pix = getbpl4_32(); - } - if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { copybpl4e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4_32(); } - if (bpldat_copy[1] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) { + if (bpldat_copy[1] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[1]) { copybpl4o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl4_32(); - } - uae_u32 sv1 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv1 = svt; - } } + loaded_pix = getbpl4_32(); loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; - matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u8 gpix2 = 0xff; uae_u32 dpix_val2 = BLANK_COLOR; @@ -17479,39 +44846,16 @@ static void lts_aga_fm1_n1_p4_ilores_dshres_spr_genlock(void) } last_bpl_pix = pix2; } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4e(); - loaded_pix = getbpl4_32(); - } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl4o(); - loaded_pix = getbpl4_32(); - } - if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { copybpl4e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4_32(); } - if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) { + if (bpldat_copy[1] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[1]) { copybpl4o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl4_32(); - } - uae_u32 sv2 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv2 = svt; - } } + loaded_pix = getbpl4_32(); loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; - matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u8 gpix3 = 0xff; uae_u32 dpix_val3 = BLANK_COLOR; @@ -17526,77 +44870,23 @@ static void lts_aga_fm1_n1_p4_ilores_dshres_spr_genlock(void) } last_bpl_pix = pix3; } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4e(); - loaded_pix = getbpl4_32(); - } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl4o(); - loaded_pix = getbpl4_32(); - } - if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[0]) { copybpl4e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4_32(); } - if (bpldat_copy[1] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[1]) { + if (bpldat_copy[1] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[1]) { copybpl4o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl4_32(); - } - uae_u32 sv3 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv3 = svt; - } } + loaded_pix = getbpl4_32(); loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - gpix0 = get_genlock_transparency(spix0); - - } - } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; - if (sv1) { - uae_u32 spix1 = denise_render_sprites2(pix1, sv1); - if (spix1) { - dpix_val1 = denise_colors.acolors[spix1]; - gpix1 = get_genlock_transparency(spix1); - - } - } dtbuf[h][1] = dpix_val1; dtgbuf[h][1] = gpix1; - if (sv2) { - uae_u32 spix2 = denise_render_sprites2(pix2, sv2); - if (spix2) { - dpix_val2 = denise_colors.acolors[spix2]; - gpix2 = get_genlock_transparency(spix2); - - } - } dtbuf[h][2] = dpix_val2; dtgbuf[h][2] = gpix2; - if (sv3) { - uae_u32 spix3 = denise_render_sprites2(pix3, sv3); - if (spix3) { - dpix_val3 = denise_colors.acolors[spix3]; - gpix3 = get_genlock_transparency(spix3); - - } - } dtbuf[h][3] = dpix_val3; dtgbuf[h][3] = gpix3; uae_u32 t0 = dtbuf[h ^ lol][0]; @@ -17658,11 +44948,11 @@ static void lts_aga_fm1_n1_p4_ilores_dshres_spr_genlock(void) denise_cck++; } } -static void lts_aga_fm1_n1_p4_ilores_dshres_spr_filtered_genlock(void) +static void lts_aga_fm1_n1_p4_ishres_dshres_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm1_dpf0_p4_ilores_dshres_spr_genlock(void) +static void lts_aga_fm1_dpf0_p4_ishres_dshres_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -17675,7 +44965,6 @@ static void lts_aga_fm1_dpf0_p4_ilores_dshres_spr_genlock(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; @@ -17695,28 +44984,13 @@ static void lts_aga_fm1_dpf0_p4_ilores_dshres_spr_genlock(void) } last_bpl_pix = pix0; } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4(); - loaded_pix = getbpl4_32(); - } - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { copybpl4(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4_32(); - } - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } } + loaded_pix = getbpl4_32(); loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; - matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u8 gpix1 = 0xff; uae_u32 dpix_val1 = BLANK_COLOR; @@ -17736,28 +45010,13 @@ static void lts_aga_fm1_dpf0_p4_ilores_dshres_spr_genlock(void) } last_bpl_pix = pix1; } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4(); - loaded_pix = getbpl4_32(); - } - if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { copybpl4(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4_32(); - } - uae_u32 sv1 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv1 = svt; - } } + loaded_pix = getbpl4_32(); loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; - matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u8 gpix2 = 0xff; uae_u32 dpix_val2 = BLANK_COLOR; @@ -17777,28 +45036,13 @@ static void lts_aga_fm1_dpf0_p4_ilores_dshres_spr_genlock(void) } last_bpl_pix = pix2; } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4(); - loaded_pix = getbpl4_32(); - } - if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { copybpl4(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4_32(); - } - uae_u32 sv2 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv2 = svt; - } } + loaded_pix = getbpl4_32(); loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; - matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u8 gpix3 = 0xff; uae_u32 dpix_val3 = BLANK_COLOR; @@ -17818,66 +45062,20 @@ static void lts_aga_fm1_dpf0_p4_ilores_dshres_spr_genlock(void) } last_bpl_pix = pix3; } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4(); - loaded_pix = getbpl4_32(); - } - if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[0]) { copybpl4(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4_32(); - } - uae_u32 sv3 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv3 = svt; - } } + loaded_pix = getbpl4_32(); loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - gpix0 = get_genlock_transparency(spix0); - - } - } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; - if (sv1) { - uae_u32 spix1 = denise_render_sprites2(pix1, sv1); - if (spix1) { - dpix_val1 = denise_colors.acolors[spix1]; - gpix1 = get_genlock_transparency(spix1); - - } - } dtbuf[h][1] = dpix_val1; dtgbuf[h][1] = gpix1; - if (sv2) { - uae_u32 spix2 = denise_render_sprites2(pix2, sv2); - if (spix2) { - dpix_val2 = denise_colors.acolors[spix2]; - gpix2 = get_genlock_transparency(spix2); - - } - } dtbuf[h][2] = dpix_val2; dtgbuf[h][2] = gpix2; - if (sv3) { - uae_u32 spix3 = denise_render_sprites2(pix3, sv3); - if (spix3) { - dpix_val3 = denise_colors.acolors[spix3]; - gpix3 = get_genlock_transparency(spix3); - - } - } dtbuf[h][3] = dpix_val3; dtgbuf[h][3] = gpix3; uae_u32 t0 = dtbuf[h ^ lol][0]; @@ -17939,11 +45137,11 @@ static void lts_aga_fm1_dpf0_p4_ilores_dshres_spr_genlock(void) denise_cck++; } } -static void lts_aga_fm1_dpf0_p4_ilores_dshres_spr_filtered_genlock(void) +static void lts_aga_fm1_dpf0_p4_ishres_dshres_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm1_dpf1_p4_ilores_dshres_spr_genlock(void) +static void lts_aga_fm1_dpf1_p4_ishres_dshres_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -17956,7 +45154,6 @@ static void lts_aga_fm1_dpf1_p4_ilores_dshres_spr_genlock(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; @@ -17976,39 +45173,16 @@ static void lts_aga_fm1_dpf1_p4_ilores_dshres_spr_genlock(void) } last_bpl_pix = pix0; } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4e(); - loaded_pix = getbpl4_32(); - } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl4o(); - loaded_pix = getbpl4_32(); - } - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { copybpl4e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4_32(); } - if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { + if (bpldat_copy[1] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[1]) { copybpl4o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl4_32(); - } - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } } + loaded_pix = getbpl4_32(); loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; - matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u8 gpix1 = 0xff; uae_u32 dpix_val1 = BLANK_COLOR; @@ -18028,39 +45202,16 @@ static void lts_aga_fm1_dpf1_p4_ilores_dshres_spr_genlock(void) } last_bpl_pix = pix1; } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4e(); - loaded_pix = getbpl4_32(); - } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl4o(); - loaded_pix = getbpl4_32(); - } - if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { copybpl4e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4_32(); } - if (bpldat_copy[1] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) { + if (bpldat_copy[1] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[1]) { copybpl4o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl4_32(); - } - uae_u32 sv1 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv1 = svt; - } } + loaded_pix = getbpl4_32(); loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; - matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u8 gpix2 = 0xff; uae_u32 dpix_val2 = BLANK_COLOR; @@ -18080,39 +45231,16 @@ static void lts_aga_fm1_dpf1_p4_ilores_dshres_spr_genlock(void) } last_bpl_pix = pix2; } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4e(); - loaded_pix = getbpl4_32(); - } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl4o(); - loaded_pix = getbpl4_32(); - } - if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { copybpl4e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4_32(); } - if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) { + if (bpldat_copy[1] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[1]) { copybpl4o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl4_32(); - } - uae_u32 sv2 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv2 = svt; - } } + loaded_pix = getbpl4_32(); loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; - matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u8 gpix3 = 0xff; uae_u32 dpix_val3 = BLANK_COLOR; @@ -18132,77 +45260,139 @@ static void lts_aga_fm1_dpf1_p4_ilores_dshres_spr_genlock(void) } last_bpl_pix = pix3; } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4e(); - loaded_pix = getbpl4_32(); - } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl4o(); - loaded_pix = getbpl4_32(); - } - if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[0]) { copybpl4e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4_32(); } - if (bpldat_copy[1] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[1]) { + if (bpldat_copy[1] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[1]) { copybpl4o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl4_32(); } - uae_u32 sv3 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv3 = svt; + loaded_pix = getbpl4_32(); + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 1; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][1] = dpix_val1; + dtgbuf[h][1] = gpix1; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + dtbuf[h][3] = dpix_val3; + dtgbuf[h][3] = gpix3; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = dtgbuf[h ^ lol][1]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); } + #endif + *buf1++ = t3; + *buf2++ = t3; + *gbuf++ = dtgbuf[h ^ lol][3]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm1_dpf1_p4_ishres_dshres_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm1_ehb0_p4_ishres_dshres_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 1; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; } - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - gpix0 = get_genlock_transparency(spix0); - - } - } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; - if (sv1) { - uae_u32 spix1 = denise_render_sprites2(pix1, sv1); - if (spix1) { - dpix_val1 = denise_colors.acolors[spix1]; - gpix1 = get_genlock_transparency(spix1); - - } - } dtbuf[h][1] = dpix_val1; dtgbuf[h][1] = gpix1; - if (sv2) { - uae_u32 spix2 = denise_render_sprites2(pix2, sv2); - if (spix2) { - dpix_val2 = denise_colors.acolors[spix2]; - gpix2 = get_genlock_transparency(spix2); - - } - } dtbuf[h][2] = dpix_val2; dtgbuf[h][2] = gpix2; - if (sv3) { - uae_u32 spix3 = denise_render_sprites2(pix3, sv3); - if (spix3) { - dpix_val3 = denise_colors.acolors[spix3]; - gpix3 = get_genlock_transparency(spix3); - - } - } dtbuf[h][3] = dpix_val3; dtgbuf[h][3] = gpix3; uae_u32 t0 = dtbuf[h ^ lol][0]; @@ -18264,59 +45454,11 @@ static void lts_aga_fm1_dpf1_p4_ilores_dshres_spr_genlock(void) denise_cck++; } } -static void lts_aga_fm1_dpf1_p4_ilores_dshres_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb0_p4_ilores_dshres_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb0_p4_ilores_dshres_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb1_p4_ilores_dshres_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb1_p4_ilores_dshres_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_ham0_p4_ilores_dshres_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_ham0_p4_ilores_dshres_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_ham1_p4_ilores_dshres_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_ham1_p4_ilores_dshres_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb0_p4_ilores_dshres_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb0_p4_ilores_dshres_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb1_p4_ilores_dshres_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb1_p4_ilores_dshres_spr_filtered_genlock(void) +static void lts_aga_fm1_ehb0_p4_ishres_dshres_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm1_n0_p8_ilores_dshres_spr_genlock(void) +static void lts_aga_fm1_ehb1_p4_ishres_dshres_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -18327,191 +45469,46 @@ 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; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8(); - loaded_pix = getbpl8_32(); } - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_32(); - } - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } - } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; - matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u8 gpix1 = 0xff; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { gpix1 = get_genlock_transparency_border(); dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; - gpix1 = get_genlock_transparency(pix1 ^ bplcon4_denise_xor_val); - } - last_bpl_pix = pix1; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8(); - loaded_pix = getbpl8_32(); - } - if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_32(); - } - uae_u32 sv1 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv1 = svt; - } } - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; - matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u8 gpix2 = 0xff; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { gpix2 = get_genlock_transparency_border(); dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; - gpix2 = get_genlock_transparency(pix2 ^ bplcon4_denise_xor_val); - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8(); - loaded_pix = getbpl8_32(); - } - if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_32(); - } - uae_u32 sv2 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv2 = svt; - } } - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; - matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u8 gpix3 = 0xff; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { gpix3 = get_genlock_transparency_border(); dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; - gpix3 = get_genlock_transparency(pix3 ^ bplcon4_denise_xor_val); - } - last_bpl_pix = pix3; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8(); - loaded_pix = getbpl8_32(); - } - if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_32(); - } - uae_u32 sv3 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv3 = svt; - } } - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - gpix0 = get_genlock_transparency(spix0); - - } - } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; - if (sv1) { - uae_u32 spix1 = denise_render_sprites2(pix1, sv1); - if (spix1) { - dpix_val1 = denise_colors.acolors[spix1]; - gpix1 = get_genlock_transparency(spix1); - - } - } dtbuf[h][1] = dpix_val1; dtgbuf[h][1] = gpix1; - if (sv2) { - uae_u32 spix2 = denise_render_sprites2(pix2, sv2); - if (spix2) { - dpix_val2 = denise_colors.acolors[spix2]; - gpix2 = get_genlock_transparency(spix2); - - } - } dtbuf[h][2] = dpix_val2; dtgbuf[h][2] = gpix2; - if (sv3) { - uae_u32 spix3 = denise_render_sprites2(pix3, sv3); - if (spix3) { - dpix_val3 = denise_colors.acolors[spix3]; - gpix3 = get_genlock_transparency(spix3); - - } - } dtbuf[h][3] = dpix_val3; dtgbuf[h][3] = gpix3; uae_u32 t0 = dtbuf[h ^ lol][0]; @@ -18573,11 +45570,11 @@ static void lts_aga_fm1_n0_p8_ilores_dshres_spr_genlock(void) denise_cck++; } } -static void lts_aga_fm1_n0_p8_ilores_dshres_spr_filtered_genlock(void) +static void lts_aga_fm1_ehb1_p4_ishres_dshres_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm1_n1_p8_ilores_dshres_spr_genlock(void) +static void lts_aga_fm1_ham0_p4_ishres_dshres_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -18588,235 +45585,46 @@ 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; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8e(); - loaded_pix = getbpl8_32(); - } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl8o(); - loaded_pix = getbpl8_32(); - } - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_32(); } - if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { - copybpl8o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl8_32(); - } - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } - } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; - matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u8 gpix1 = 0xff; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { gpix1 = get_genlock_transparency_border(); dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; - gpix1 = get_genlock_transparency(pix1 ^ bplcon4_denise_xor_val); - } - last_bpl_pix = pix1; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8e(); - loaded_pix = getbpl8_32(); - } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl8o(); - loaded_pix = getbpl8_32(); - } - if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_32(); - } - if (bpldat_copy[1] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) { - copybpl8o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl8_32(); - } - uae_u32 sv1 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv1 = svt; - } } - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; - matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u8 gpix2 = 0xff; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { gpix2 = get_genlock_transparency_border(); dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; - gpix2 = get_genlock_transparency(pix2 ^ bplcon4_denise_xor_val); - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8e(); - loaded_pix = getbpl8_32(); - } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl8o(); - loaded_pix = getbpl8_32(); - } - if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_32(); - } - if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) { - copybpl8o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl8_32(); - } - uae_u32 sv2 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv2 = svt; - } } - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; - matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u8 gpix3 = 0xff; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { gpix3 = get_genlock_transparency_border(); dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; - gpix3 = get_genlock_transparency(pix3 ^ bplcon4_denise_xor_val); - } - last_bpl_pix = pix3; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8e(); - loaded_pix = getbpl8_32(); - } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl8o(); - loaded_pix = getbpl8_32(); } - if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_32(); - } - if (bpldat_copy[1] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[1]) { - copybpl8o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl8_32(); - } - uae_u32 sv3 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv3 = svt; - } - } - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - gpix0 = get_genlock_transparency(spix0); - - } - } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; - if (sv1) { - uae_u32 spix1 = denise_render_sprites2(pix1, sv1); - if (spix1) { - dpix_val1 = denise_colors.acolors[spix1]; - gpix1 = get_genlock_transparency(spix1); - - } - } dtbuf[h][1] = dpix_val1; dtgbuf[h][1] = gpix1; - if (sv2) { - uae_u32 spix2 = denise_render_sprites2(pix2, sv2); - if (spix2) { - dpix_val2 = denise_colors.acolors[spix2]; - gpix2 = get_genlock_transparency(spix2); - - } - } dtbuf[h][2] = dpix_val2; dtgbuf[h][2] = gpix2; - if (sv3) { - uae_u32 spix3 = denise_render_sprites2(pix3, sv3); - if (spix3) { - dpix_val3 = denise_colors.acolors[spix3]; - gpix3 = get_genlock_transparency(spix3); - - } - } dtbuf[h][3] = dpix_val3; dtgbuf[h][3] = gpix3; uae_u32 t0 = dtbuf[h ^ lol][0]; @@ -18878,226 +45686,61 @@ static void lts_aga_fm1_n1_p8_ilores_dshres_spr_genlock(void) denise_cck++; } } -static void lts_aga_fm1_n1_p8_ilores_dshres_spr_filtered_genlock(void) +static void lts_aga_fm1_ham0_p4_ishres_dshres_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm1_dpf0_p8_ilores_dshres_spr_genlock(void) +static void lts_aga_fm1_ham1_p4_ishres_dshres_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); if (lts_changed) return; for (int h = 0; h < 2; h++) { - if (h) { - denise_hcounter_next = denise_hcounter_new; - } - int cnt = denise_hcounter << 2; - int cnt_next = denise_hcounter_next << 2; - int cmp = denise_hcounter_cmp << 2; - if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites_aga(cnt + 0); - uae_u8 pix0 = 0; - uae_u8 gpix0 = 0xff; - uae_u32 dpix_val0 = BLANK_COLOR; - if (!denise_blank_active) { - gpix0 = get_genlock_transparency_border(); - dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - gpix0 = get_genlock_transparency(dpf_lookup[pix0]); - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8(); - loaded_pix = getbpl8_32(); - } - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_32(); - } - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } - } - loaded_pixs[0] = loaded_pix; - internal_pixel_cnt += 1; - matchsprites_aga(cnt + 1); - uae_u8 pix1 = 0; - uae_u8 gpix1 = 0xff; - uae_u32 dpix_val1 = BLANK_COLOR; - if (!denise_blank_active) { - gpix1 = get_genlock_transparency_border(); - dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - if (dpf_lookup_no[pix1]) { - val1 += dblpfofs[bpldualpf2of]; - } - val1 ^= bplcon4_denise_xor_val; - dpix_val1 = denise_colors.acolors[val1]; - gpix1 = get_genlock_transparency(dpf_lookup[pix1]); - } - last_bpl_pix = pix1; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8(); - loaded_pix = getbpl8_32(); + if (h) { + denise_hcounter_next = denise_hcounter_new; } - if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_32(); + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; } - uae_u32 sv1 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv1 = svt; - } + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; } - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; - matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u8 gpix2 = 0xff; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { gpix2 = get_genlock_transparency_border(); dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; - gpix2 = get_genlock_transparency(dpf_lookup[pix2]); - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8(); - loaded_pix = getbpl8_32(); - } - if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_32(); - } - uae_u32 sv2 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv2 = svt; - } } - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; - matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u8 gpix3 = 0xff; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { gpix3 = get_genlock_transparency_border(); dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - uae_u8 val3 = dpf_lookup[pix3]; - if (dpf_lookup_no[pix3]) { - val3 += dblpfofs[bpldualpf2of]; - } - val3 ^= bplcon4_denise_xor_val; - dpix_val3 = denise_colors.acolors[val3]; - gpix3 = get_genlock_transparency(dpf_lookup[pix3]); - } - last_bpl_pix = pix3; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8(); - loaded_pix = getbpl8_32(); - } - if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_32(); - } - uae_u32 sv3 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv3 = svt; - } } - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - gpix0 = get_genlock_transparency(spix0); - - } - } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; - if (sv1) { - uae_u32 spix1 = denise_render_sprites2(pix1, sv1); - if (spix1) { - dpix_val1 = denise_colors.acolors[spix1]; - gpix1 = get_genlock_transparency(spix1); - - } - } dtbuf[h][1] = dpix_val1; dtgbuf[h][1] = gpix1; - if (sv2) { - uae_u32 spix2 = denise_render_sprites2(pix2, sv2); - if (spix2) { - dpix_val2 = denise_colors.acolors[spix2]; - gpix2 = get_genlock_transparency(spix2); - - } - } dtbuf[h][2] = dpix_val2; dtgbuf[h][2] = gpix2; - if (sv3) { - uae_u32 spix3 = denise_render_sprites2(pix3, sv3); - if (spix3) { - dpix_val3 = denise_colors.acolors[spix3]; - gpix3 = get_genlock_transparency(spix3); - - } - } dtbuf[h][3] = dpix_val3; dtgbuf[h][3] = gpix3; uae_u32 t0 = dtbuf[h ^ lol][0]; @@ -19159,11 +45802,11 @@ static void lts_aga_fm1_dpf0_p8_ilores_dshres_spr_genlock(void) denise_cck++; } } -static void lts_aga_fm1_dpf0_p8_ilores_dshres_spr_filtered_genlock(void) +static void lts_aga_fm1_ham1_p4_ishres_dshres_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm1_dpf1_p8_ilores_dshres_spr_genlock(void) +static void lts_aga_fm1_kehb0_p4_ishres_dshres_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -19174,255 +45817,46 @@ 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; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - gpix0 = get_genlock_transparency(dpf_lookup[pix0]); - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8e(); - loaded_pix = getbpl8_32(); - } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl8o(); - loaded_pix = getbpl8_32(); - } - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_32(); - } - if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { - copybpl8o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl8_32(); - } - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; - matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u8 gpix1 = 0xff; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { gpix1 = get_genlock_transparency_border(); dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - if (dpf_lookup_no[pix1]) { - val1 += dblpfofs[bpldualpf2of]; - } - val1 ^= bplcon4_denise_xor_val; - dpix_val1 = denise_colors.acolors[val1]; - gpix1 = get_genlock_transparency(dpf_lookup[pix1]); - } - last_bpl_pix = pix1; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8e(); - loaded_pix = getbpl8_32(); - } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl8o(); - loaded_pix = getbpl8_32(); - } - if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_32(); - } - if (bpldat_copy[1] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) { - copybpl8o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl8_32(); - } - uae_u32 sv1 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv1 = svt; - } } - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; - matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u8 gpix2 = 0xff; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { gpix2 = get_genlock_transparency_border(); dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; - gpix2 = get_genlock_transparency(dpf_lookup[pix2]); - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8e(); - loaded_pix = getbpl8_32(); - } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl8o(); - loaded_pix = getbpl8_32(); - } - if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_32(); - } - if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) { - copybpl8o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl8_32(); } - uae_u32 sv2 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv2 = svt; - } - } - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; - matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u8 gpix3 = 0xff; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { gpix3 = get_genlock_transparency_border(); dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - uae_u8 val3 = dpf_lookup[pix3]; - if (dpf_lookup_no[pix3]) { - val3 += dblpfofs[bpldualpf2of]; - } - val3 ^= bplcon4_denise_xor_val; - dpix_val3 = denise_colors.acolors[val3]; - gpix3 = get_genlock_transparency(dpf_lookup[pix3]); - } - last_bpl_pix = pix3; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8e(); - loaded_pix = getbpl8_32(); - } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl8o(); - loaded_pix = getbpl8_32(); - } - if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_32(); - } - if (bpldat_copy[1] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[1]) { - copybpl8o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl8_32(); - } - uae_u32 sv3 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv3 = svt; - } } - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - gpix0 = get_genlock_transparency(spix0); - - } - } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; - if (sv1) { - uae_u32 spix1 = denise_render_sprites2(pix1, sv1); - if (spix1) { - dpix_val1 = denise_colors.acolors[spix1]; - gpix1 = get_genlock_transparency(spix1); - - } - } dtbuf[h][1] = dpix_val1; dtgbuf[h][1] = gpix1; - if (sv2) { - uae_u32 spix2 = denise_render_sprites2(pix2, sv2); - if (spix2) { - dpix_val2 = denise_colors.acolors[spix2]; - gpix2 = get_genlock_transparency(spix2); - - } - } dtbuf[h][2] = dpix_val2; dtgbuf[h][2] = gpix2; - if (sv3) { - uae_u32 spix3 = denise_render_sprites2(pix3, sv3); - if (spix3) { - dpix_val3 = denise_colors.acolors[spix3]; - gpix3 = get_genlock_transparency(spix3); - - } - } dtbuf[h][3] = dpix_val3; dtgbuf[h][3] = gpix3; uae_u32 t0 = dtbuf[h ^ lol][0]; @@ -19484,27 +45918,11 @@ static void lts_aga_fm1_dpf1_p8_ilores_dshres_spr_genlock(void) denise_cck++; } } -static void lts_aga_fm1_dpf1_p8_ilores_dshres_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb0_p8_ilores_dshres_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb0_p8_ilores_dshres_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb1_p8_ilores_dshres_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb1_p8_ilores_dshres_spr_filtered_genlock(void) +static void lts_aga_fm1_kehb0_p4_ishres_dshres_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm1_ham0_p8_ilores_dshres_spr_genlock(void) +static void lts_aga_fm1_kehb1_p4_ishres_dshres_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -19515,191 +45933,46 @@ 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; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = decode_ham_pixel_aga(pix0); - gpix0 = get_genlock_transparency((pix0 >> 2) & 63); - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8(); - loaded_pix = getbpl8_32(); - } - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_32(); - } - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; - matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u8 gpix1 = 0xff; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { gpix1 = get_genlock_transparency_border(); dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - dpix_val1 = decode_ham_pixel_aga(pix1); - gpix1 = get_genlock_transparency((pix1 >> 2) & 63); - } - last_bpl_pix = pix1; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8(); - loaded_pix = getbpl8_32(); - } - if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_32(); - } - uae_u32 sv1 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv1 = svt; - } } - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; - matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u8 gpix2 = 0xff; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { gpix2 = get_genlock_transparency_border(); dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = decode_ham_pixel_aga(pix2); - gpix2 = get_genlock_transparency((pix2 >> 2) & 63); - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8(); - loaded_pix = getbpl8_32(); } - if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_32(); - } - uae_u32 sv2 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv2 = svt; - } - } - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; - matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u8 gpix3 = 0xff; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { gpix3 = get_genlock_transparency_border(); dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - dpix_val3 = decode_ham_pixel_aga(pix3); - gpix3 = get_genlock_transparency((pix3 >> 2) & 63); - } - last_bpl_pix = pix3; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8(); - loaded_pix = getbpl8_32(); - } - if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_32(); - } - uae_u32 sv3 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv3 = svt; - } } - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - gpix0 = get_genlock_transparency(spix0); - - } - } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; - if (sv1) { - uae_u32 spix1 = denise_render_sprites2(pix1, sv1); - if (spix1) { - dpix_val1 = denise_colors.acolors[spix1]; - gpix1 = get_genlock_transparency(spix1); - - } - } dtbuf[h][1] = dpix_val1; dtgbuf[h][1] = gpix1; - if (sv2) { - uae_u32 spix2 = denise_render_sprites2(pix2, sv2); - if (spix2) { - dpix_val2 = denise_colors.acolors[spix2]; - gpix2 = get_genlock_transparency(spix2); - - } - } dtbuf[h][2] = dpix_val2; dtgbuf[h][2] = gpix2; - if (sv3) { - uae_u32 spix3 = denise_render_sprites2(pix3, sv3); - if (spix3) { - dpix_val3 = denise_colors.acolors[spix3]; - gpix3 = get_genlock_transparency(spix3); - - } - } dtbuf[h][3] = dpix_val3; dtgbuf[h][3] = gpix3; uae_u32 t0 = dtbuf[h ^ lol][0]; @@ -19761,11 +46034,11 @@ static void lts_aga_fm1_ham0_p8_ilores_dshres_spr_genlock(void) denise_cck++; } } -static void lts_aga_fm1_ham0_p8_ilores_dshres_spr_filtered_genlock(void) +static void lts_aga_fm1_kehb1_p4_ishres_dshres_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm1_ham1_p8_ilores_dshres_spr_genlock(void) +static void lts_aga_fm1_n0_p8_ishres_dshres_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -19776,235 +46049,46 @@ 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; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = decode_ham_pixel_aga(pix0); - gpix0 = get_genlock_transparency((pix0 >> 2) & 63); - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8e(); - loaded_pix = getbpl8_32(); - } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl8o(); - loaded_pix = getbpl8_32(); - } - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_32(); - } - if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { - copybpl8o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl8_32(); - } - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; - matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u8 gpix1 = 0xff; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { gpix1 = get_genlock_transparency_border(); dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - dpix_val1 = decode_ham_pixel_aga(pix1); - gpix1 = get_genlock_transparency((pix1 >> 2) & 63); - } - last_bpl_pix = pix1; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8e(); - loaded_pix = getbpl8_32(); - } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl8o(); - loaded_pix = getbpl8_32(); - } - if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_32(); - } - if (bpldat_copy[1] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) { - copybpl8o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl8_32(); - } - uae_u32 sv1 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv1 = svt; - } } - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; - matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u8 gpix2 = 0xff; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { gpix2 = get_genlock_transparency_border(); dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = decode_ham_pixel_aga(pix2); - gpix2 = get_genlock_transparency((pix2 >> 2) & 63); - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8e(); - loaded_pix = getbpl8_32(); - } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl8o(); - loaded_pix = getbpl8_32(); - } - if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_32(); - } - if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) { - copybpl8o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl8_32(); - } - uae_u32 sv2 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv2 = svt; - } } - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; - matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u8 gpix3 = 0xff; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { gpix3 = get_genlock_transparency_border(); dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - dpix_val3 = decode_ham_pixel_aga(pix3); - gpix3 = get_genlock_transparency((pix3 >> 2) & 63); - } - last_bpl_pix = pix3; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8e(); - loaded_pix = getbpl8_32(); - } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl8o(); - loaded_pix = getbpl8_32(); - } - if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_32(); - } - if (bpldat_copy[1] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[1]) { - copybpl8o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl8_32(); - } - uae_u32 sv3 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv3 = svt; - } } - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - gpix0 = get_genlock_transparency(spix0); - - } - } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; - if (sv1) { - uae_u32 spix1 = denise_render_sprites2(pix1, sv1); - if (spix1) { - dpix_val1 = denise_colors.acolors[spix1]; - gpix1 = get_genlock_transparency(spix1); - - } - } dtbuf[h][1] = dpix_val1; dtgbuf[h][1] = gpix1; - if (sv2) { - uae_u32 spix2 = denise_render_sprites2(pix2, sv2); - if (spix2) { - dpix_val2 = denise_colors.acolors[spix2]; - gpix2 = get_genlock_transparency(spix2); - - } - } dtbuf[h][2] = dpix_val2; dtgbuf[h][2] = gpix2; - if (sv3) { - uae_u32 spix3 = denise_render_sprites2(pix3, sv3); - if (spix3) { - dpix_val3 = denise_colors.acolors[spix3]; - gpix3 = get_genlock_transparency(spix3); - - } - } dtbuf[h][3] = dpix_val3; dtgbuf[h][3] = gpix3; uae_u32 t0 = dtbuf[h ^ lol][0]; @@ -20066,27 +46150,11 @@ static void lts_aga_fm1_ham1_p8_ilores_dshres_spr_genlock(void) denise_cck++; } } -static void lts_aga_fm1_ham1_p8_ilores_dshres_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb0_p8_ilores_dshres_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb0_p8_ilores_dshres_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb1_p8_ilores_dshres_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb1_p8_ilores_dshres_spr_filtered_genlock(void) +static void lts_aga_fm1_n0_p8_ishres_dshres_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm1_n0_p4_ihires_dshres_genlock(void) +static void lts_aga_fm1_n1_p8_ishres_dshres_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -20097,7 +46165,6 @@ 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; @@ -20105,26 +46172,7 @@ static void lts_aga_fm1_n0_p4_ihires_dshres_genlock(void) if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4(); - loaded_pix = getbpl4_32(); - } - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4_32(); } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; uae_u8 pix1 = 0; uae_u8 gpix1 = 0xff; @@ -20132,26 +46180,7 @@ static void lts_aga_fm1_n0_p4_ihires_dshres_genlock(void) if (!denise_blank_active) { gpix1 = get_genlock_transparency_border(); dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; - gpix1 = get_genlock_transparency(pix1 ^ bplcon4_denise_xor_val); - } - last_bpl_pix = pix1; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4(); - loaded_pix = getbpl4_32(); } - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4_32(); - } - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u8 gpix2 = 0xff; @@ -20159,26 +46188,7 @@ static void lts_aga_fm1_n0_p4_ihires_dshres_genlock(void) if (!denise_blank_active) { gpix2 = get_genlock_transparency_border(); dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; - gpix2 = get_genlock_transparency(pix2 ^ bplcon4_denise_xor_val); - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4(); - loaded_pix = getbpl4_32(); - } - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4_32(); } - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; uae_u8 pix3 = 0; uae_u8 gpix3 = 0xff; @@ -20186,26 +46196,7 @@ static void lts_aga_fm1_n0_p4_ihires_dshres_genlock(void) if (!denise_blank_active) { gpix3 = get_genlock_transparency_border(); dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; - gpix3 = get_genlock_transparency(pix3 ^ bplcon4_denise_xor_val); - } - last_bpl_pix = pix3; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4(); - loaded_pix = getbpl4_32(); - } - if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4_32(); - } - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; @@ -20275,11 +46266,11 @@ static void lts_aga_fm1_n0_p4_ihires_dshres_genlock(void) denise_cck++; } } -static void lts_aga_fm1_n0_p4_ihires_dshres_filtered_genlock(void) +static void lts_aga_fm1_n1_p8_ishres_dshres_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm1_n1_p4_ihires_dshres_genlock(void) +static void lts_aga_fm1_dpf0_p8_ishres_dshres_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -20290,7 +46281,6 @@ 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; @@ -20298,37 +46288,7 @@ static void lts_aga_fm1_n1_p4_ihires_dshres_genlock(void) if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4e(); - loaded_pix = getbpl4_32(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl4o(); - loaded_pix = getbpl4_32(); - } - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4_32(); - } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl4o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl4_32(); } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; uae_u8 pix1 = 0; uae_u8 gpix1 = 0xff; @@ -20336,37 +46296,7 @@ static void lts_aga_fm1_n1_p4_ihires_dshres_genlock(void) if (!denise_blank_active) { gpix1 = get_genlock_transparency_border(); dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; - gpix1 = get_genlock_transparency(pix1 ^ bplcon4_denise_xor_val); - } - last_bpl_pix = pix1; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4e(); - loaded_pix = getbpl4_32(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl4o(); - loaded_pix = getbpl4_32(); - } - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4_32(); - } - if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { - copybpl4o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl4_32(); } - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u8 gpix2 = 0xff; @@ -20374,37 +46304,7 @@ static void lts_aga_fm1_n1_p4_ihires_dshres_genlock(void) if (!denise_blank_active) { gpix2 = get_genlock_transparency_border(); dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; - gpix2 = get_genlock_transparency(pix2 ^ bplcon4_denise_xor_val); - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4e(); - loaded_pix = getbpl4_32(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl4o(); - loaded_pix = getbpl4_32(); } - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4_32(); - } - if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { - copybpl4o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl4_32(); - } - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; uae_u8 pix3 = 0; uae_u8 gpix3 = 0xff; @@ -20412,37 +46312,7 @@ static void lts_aga_fm1_n1_p4_ihires_dshres_genlock(void) if (!denise_blank_active) { gpix3 = get_genlock_transparency_border(); dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; - gpix3 = get_genlock_transparency(pix3 ^ bplcon4_denise_xor_val); - } - last_bpl_pix = pix3; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4e(); - loaded_pix = getbpl4_32(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl4o(); - loaded_pix = getbpl4_32(); - } - if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4_32(); - } - if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) { - copybpl4o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl4_32(); } - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; @@ -20512,11 +46382,11 @@ static void lts_aga_fm1_n1_p4_ihires_dshres_genlock(void) denise_cck++; } } -static void lts_aga_fm1_n1_p4_ihires_dshres_filtered_genlock(void) +static void lts_aga_fm1_dpf0_p8_ishres_dshres_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm1_dpf0_p4_ihires_dshres_genlock(void) +static void lts_aga_fm1_dpf1_p8_ishres_dshres_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -20527,7 +46397,6 @@ 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; @@ -20535,31 +46404,7 @@ static void lts_aga_fm1_dpf0_p4_ihires_dshres_genlock(void) if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - gpix0 = get_genlock_transparency(dpf_lookup[pix0]); - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4(); - loaded_pix = getbpl4_32(); } - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4_32(); - } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; uae_u8 pix1 = 0; uae_u8 gpix1 = 0xff; @@ -20567,31 +46412,7 @@ static void lts_aga_fm1_dpf0_p4_ihires_dshres_genlock(void) if (!denise_blank_active) { gpix1 = get_genlock_transparency_border(); dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - if (dpf_lookup_no[pix1]) { - val1 += dblpfofs[bpldualpf2of]; - } - val1 ^= bplcon4_denise_xor_val; - dpix_val1 = denise_colors.acolors[val1]; - gpix1 = get_genlock_transparency(dpf_lookup[pix1]); - } - last_bpl_pix = pix1; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4(); - loaded_pix = getbpl4_32(); } - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4_32(); - } - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u8 gpix2 = 0xff; @@ -20599,63 +46420,15 @@ static void lts_aga_fm1_dpf0_p4_ihires_dshres_genlock(void) if (!denise_blank_active) { gpix2 = get_genlock_transparency_border(); dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; - gpix2 = get_genlock_transparency(dpf_lookup[pix2]); - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4(); - loaded_pix = getbpl4_32(); } - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4_32(); - } - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; uae_u8 pix3 = 0; uae_u8 gpix3 = 0xff; uae_u32 dpix_val3 = BLANK_COLOR; - if (!denise_blank_active) { - gpix3 = get_genlock_transparency_border(); - dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - uae_u8 val3 = dpf_lookup[pix3]; - if (dpf_lookup_no[pix3]) { - val3 += dblpfofs[bpldualpf2of]; - } - val3 ^= bplcon4_denise_xor_val; - dpix_val3 = denise_colors.acolors[val3]; - gpix3 = get_genlock_transparency(dpf_lookup[pix3]); - } - last_bpl_pix = pix3; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4(); - loaded_pix = getbpl4_32(); - } - if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4_32(); + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; } - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; @@ -20725,11 +46498,11 @@ static void lts_aga_fm1_dpf0_p4_ihires_dshres_genlock(void) denise_cck++; } } -static void lts_aga_fm1_dpf0_p4_ihires_dshres_filtered_genlock(void) +static void lts_aga_fm1_dpf1_p8_ishres_dshres_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm1_dpf1_p4_ihires_dshres_genlock(void) +static void lts_aga_fm1_ehb0_p8_ishres_dshres_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -20740,7 +46513,6 @@ 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; @@ -20748,42 +46520,7 @@ static void lts_aga_fm1_dpf1_p4_ihires_dshres_genlock(void) if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - gpix0 = get_genlock_transparency(dpf_lookup[pix0]); - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4e(); - loaded_pix = getbpl4_32(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl4o(); - loaded_pix = getbpl4_32(); - } - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4_32(); - } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl4o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl4_32(); } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; uae_u8 pix1 = 0; uae_u8 gpix1 = 0xff; @@ -20791,42 +46528,7 @@ static void lts_aga_fm1_dpf1_p4_ihires_dshres_genlock(void) if (!denise_blank_active) { gpix1 = get_genlock_transparency_border(); dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - if (dpf_lookup_no[pix1]) { - val1 += dblpfofs[bpldualpf2of]; - } - val1 ^= bplcon4_denise_xor_val; - dpix_val1 = denise_colors.acolors[val1]; - gpix1 = get_genlock_transparency(dpf_lookup[pix1]); - } - last_bpl_pix = pix1; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4e(); - loaded_pix = getbpl4_32(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl4o(); - loaded_pix = getbpl4_32(); - } - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4_32(); - } - if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { - copybpl4o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl4_32(); } - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u8 gpix2 = 0xff; @@ -20834,42 +46536,7 @@ static void lts_aga_fm1_dpf1_p4_ihires_dshres_genlock(void) if (!denise_blank_active) { gpix2 = get_genlock_transparency_border(); dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; - gpix2 = get_genlock_transparency(dpf_lookup[pix2]); - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4e(); - loaded_pix = getbpl4_32(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl4o(); - loaded_pix = getbpl4_32(); - } - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4_32(); - } - if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { - copybpl4o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl4_32(); } - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; uae_u8 pix3 = 0; uae_u8 gpix3 = 0xff; @@ -20877,42 +46544,7 @@ static void lts_aga_fm1_dpf1_p4_ihires_dshres_genlock(void) if (!denise_blank_active) { gpix3 = get_genlock_transparency_border(); dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - uae_u8 val3 = dpf_lookup[pix3]; - if (dpf_lookup_no[pix3]) { - val3 += dblpfofs[bpldualpf2of]; - } - val3 ^= bplcon4_denise_xor_val; - dpix_val3 = denise_colors.acolors[val3]; - gpix3 = get_genlock_transparency(dpf_lookup[pix3]); - } - last_bpl_pix = pix3; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4e(); - loaded_pix = getbpl4_32(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl4o(); - loaded_pix = getbpl4_32(); - } - if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4_32(); - } - if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) { - copybpl4o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl4_32(); } - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; @@ -20982,59 +46614,11 @@ static void lts_aga_fm1_dpf1_p4_ihires_dshres_genlock(void) denise_cck++; } } -static void lts_aga_fm1_dpf1_p4_ihires_dshres_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb0_p4_ihires_dshres_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb0_p4_ihires_dshres_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb1_p4_ihires_dshres_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb1_p4_ihires_dshres_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_ham0_p4_ihires_dshres_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_ham0_p4_ihires_dshres_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_ham1_p4_ihires_dshres_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_ham1_p4_ihires_dshres_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb0_p4_ihires_dshres_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb0_p4_ihires_dshres_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb1_p4_ihires_dshres_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb1_p4_ihires_dshres_filtered_genlock(void) +static void lts_aga_fm1_ehb0_p8_ishres_dshres_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm1_n0_p8_ihires_dshres_genlock(void) +static void lts_aga_fm1_ehb1_p8_ishres_dshres_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -21045,7 +46629,6 @@ 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; @@ -21053,26 +46636,7 @@ static void lts_aga_fm1_n0_p8_ihires_dshres_genlock(void) if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8(); - loaded_pix = getbpl8_32(); - } - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_32(); } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; uae_u8 pix1 = 0; uae_u8 gpix1 = 0xff; @@ -21080,26 +46644,7 @@ static void lts_aga_fm1_n0_p8_ihires_dshres_genlock(void) if (!denise_blank_active) { gpix1 = get_genlock_transparency_border(); dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; - gpix1 = get_genlock_transparency(pix1 ^ bplcon4_denise_xor_val); - } - last_bpl_pix = pix1; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8(); - loaded_pix = getbpl8_32(); - } - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_32(); } - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u8 gpix2 = 0xff; @@ -21107,26 +46652,7 @@ static void lts_aga_fm1_n0_p8_ihires_dshres_genlock(void) if (!denise_blank_active) { gpix2 = get_genlock_transparency_border(); dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; - gpix2 = get_genlock_transparency(pix2 ^ bplcon4_denise_xor_val); - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8(); - loaded_pix = getbpl8_32(); - } - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_32(); } - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; uae_u8 pix3 = 0; uae_u8 gpix3 = 0xff; @@ -21134,26 +46660,7 @@ static void lts_aga_fm1_n0_p8_ihires_dshres_genlock(void) if (!denise_blank_active) { gpix3 = get_genlock_transparency_border(); dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; - gpix3 = get_genlock_transparency(pix3 ^ bplcon4_denise_xor_val); - } - last_bpl_pix = pix3; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8(); - loaded_pix = getbpl8_32(); } - if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_32(); - } - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; @@ -21223,11 +46730,11 @@ static void lts_aga_fm1_n0_p8_ihires_dshres_genlock(void) denise_cck++; } } -static void lts_aga_fm1_n0_p8_ihires_dshres_filtered_genlock(void) +static void lts_aga_fm1_ehb1_p8_ishres_dshres_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm1_n1_p8_ihires_dshres_genlock(void) +static void lts_aga_fm1_ham0_p8_ishres_dshres_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -21238,7 +46745,6 @@ 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; @@ -21246,37 +46752,7 @@ static void lts_aga_fm1_n1_p8_ihires_dshres_genlock(void) if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8e(); - loaded_pix = getbpl8_32(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl8o(); - loaded_pix = getbpl8_32(); - } - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_32(); - } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl8_32(); } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; uae_u8 pix1 = 0; uae_u8 gpix1 = 0xff; @@ -21284,37 +46760,7 @@ static void lts_aga_fm1_n1_p8_ihires_dshres_genlock(void) if (!denise_blank_active) { gpix1 = get_genlock_transparency_border(); dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; - gpix1 = get_genlock_transparency(pix1 ^ bplcon4_denise_xor_val); - } - last_bpl_pix = pix1; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8e(); - loaded_pix = getbpl8_32(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl8o(); - loaded_pix = getbpl8_32(); - } - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_32(); - } - if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl8_32(); - } - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u8 gpix2 = 0xff; @@ -21322,37 +46768,7 @@ static void lts_aga_fm1_n1_p8_ihires_dshres_genlock(void) if (!denise_blank_active) { gpix2 = get_genlock_transparency_border(); dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; - gpix2 = get_genlock_transparency(pix2 ^ bplcon4_denise_xor_val); - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8e(); - loaded_pix = getbpl8_32(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl8o(); - loaded_pix = getbpl8_32(); - } - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_32(); - } - if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl8_32(); } - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; uae_u8 pix3 = 0; uae_u8 gpix3 = 0xff; @@ -21360,37 +46776,7 @@ static void lts_aga_fm1_n1_p8_ihires_dshres_genlock(void) if (!denise_blank_active) { gpix3 = get_genlock_transparency_border(); dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; - gpix3 = get_genlock_transparency(pix3 ^ bplcon4_denise_xor_val); - } - last_bpl_pix = pix3; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8e(); - loaded_pix = getbpl8_32(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl8o(); - loaded_pix = getbpl8_32(); - } - if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_32(); - } - if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl8_32(); } - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; @@ -21460,11 +46846,11 @@ static void lts_aga_fm1_n1_p8_ihires_dshres_genlock(void) denise_cck++; } } -static void lts_aga_fm1_n1_p8_ihires_dshres_filtered_genlock(void) +static void lts_aga_fm1_ham0_p8_ishres_dshres_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm1_dpf0_p8_ihires_dshres_genlock(void) +static void lts_aga_fm1_ham1_p8_ishres_dshres_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -21475,7 +46861,6 @@ 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; @@ -21483,31 +46868,7 @@ static void lts_aga_fm1_dpf0_p8_ihires_dshres_genlock(void) if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - gpix0 = get_genlock_transparency(dpf_lookup[pix0]); - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8(); - loaded_pix = getbpl8_32(); - } - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_32(); } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; uae_u8 pix1 = 0; uae_u8 gpix1 = 0xff; @@ -21515,95 +46876,23 @@ static void lts_aga_fm1_dpf0_p8_ihires_dshres_genlock(void) if (!denise_blank_active) { gpix1 = get_genlock_transparency_border(); dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - if (dpf_lookup_no[pix1]) { - val1 += dblpfofs[bpldualpf2of]; - } - val1 ^= bplcon4_denise_xor_val; - dpix_val1 = denise_colors.acolors[val1]; - gpix1 = get_genlock_transparency(dpf_lookup[pix1]); - } - last_bpl_pix = pix1; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8(); - loaded_pix = getbpl8_32(); - } - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_32(); } - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u8 gpix2 = 0xff; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { gpix2 = get_genlock_transparency_border(); - dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; - gpix2 = get_genlock_transparency(dpf_lookup[pix2]); - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8(); - loaded_pix = getbpl8_32(); - } - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_32(); - } - loaded_pixs[2] = loaded_pix; - internal_pixel_cnt += 1; - uae_u8 pix3 = 0; - uae_u8 gpix3 = 0xff; - uae_u32 dpix_val3 = BLANK_COLOR; - if (!denise_blank_active) { - gpix3 = get_genlock_transparency_border(); - dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - uae_u8 val3 = dpf_lookup[pix3]; - if (dpf_lookup_no[pix3]) { - val3 += dblpfofs[bpldualpf2of]; - } - val3 ^= bplcon4_denise_xor_val; - dpix_val3 = denise_colors.acolors[val3]; - gpix3 = get_genlock_transparency(dpf_lookup[pix3]); - } - last_bpl_pix = pix3; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8(); - loaded_pix = getbpl8_32(); - } - if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_32(); + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; } - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; @@ -21673,11 +46962,11 @@ static void lts_aga_fm1_dpf0_p8_ihires_dshres_genlock(void) denise_cck++; } } -static void lts_aga_fm1_dpf0_p8_ihires_dshres_filtered_genlock(void) +static void lts_aga_fm1_ham1_p8_ishres_dshres_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm1_dpf1_p8_ihires_dshres_genlock(void) +static void lts_aga_fm1_kehb0_p8_ishres_dshres_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -21688,7 +46977,6 @@ 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; @@ -21696,42 +46984,7 @@ static void lts_aga_fm1_dpf1_p8_ihires_dshres_genlock(void) if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - gpix0 = get_genlock_transparency(dpf_lookup[pix0]); - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8e(); - loaded_pix = getbpl8_32(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl8o(); - loaded_pix = getbpl8_32(); - } - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_32(); - } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl8_32(); } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; uae_u8 pix1 = 0; uae_u8 gpix1 = 0xff; @@ -21739,42 +46992,7 @@ static void lts_aga_fm1_dpf1_p8_ihires_dshres_genlock(void) if (!denise_blank_active) { gpix1 = get_genlock_transparency_border(); dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - if (dpf_lookup_no[pix1]) { - val1 += dblpfofs[bpldualpf2of]; - } - val1 ^= bplcon4_denise_xor_val; - dpix_val1 = denise_colors.acolors[val1]; - gpix1 = get_genlock_transparency(dpf_lookup[pix1]); - } - last_bpl_pix = pix1; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8e(); - loaded_pix = getbpl8_32(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl8o(); - loaded_pix = getbpl8_32(); - } - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_32(); - } - if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl8_32(); } - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u8 gpix2 = 0xff; @@ -21782,42 +47000,7 @@ static void lts_aga_fm1_dpf1_p8_ihires_dshres_genlock(void) if (!denise_blank_active) { gpix2 = get_genlock_transparency_border(); dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; - gpix2 = get_genlock_transparency(dpf_lookup[pix2]); - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8e(); - loaded_pix = getbpl8_32(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl8o(); - loaded_pix = getbpl8_32(); - } - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_32(); - } - if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl8_32(); } - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; uae_u8 pix3 = 0; uae_u8 gpix3 = 0xff; @@ -21825,42 +47008,7 @@ static void lts_aga_fm1_dpf1_p8_ihires_dshres_genlock(void) if (!denise_blank_active) { gpix3 = get_genlock_transparency_border(); dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - uae_u8 val3 = dpf_lookup[pix3]; - if (dpf_lookup_no[pix3]) { - val3 += dblpfofs[bpldualpf2of]; - } - val3 ^= bplcon4_denise_xor_val; - dpix_val3 = denise_colors.acolors[val3]; - gpix3 = get_genlock_transparency(dpf_lookup[pix3]); - } - last_bpl_pix = pix3; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8e(); - loaded_pix = getbpl8_32(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl8o(); - loaded_pix = getbpl8_32(); } - if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_32(); - } - if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl8_32(); - } - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; @@ -21930,27 +47078,11 @@ static void lts_aga_fm1_dpf1_p8_ihires_dshres_genlock(void) denise_cck++; } } -static void lts_aga_fm1_dpf1_p8_ihires_dshres_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb0_p8_ihires_dshres_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb0_p8_ihires_dshres_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb1_p8_ihires_dshres_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb1_p8_ihires_dshres_filtered_genlock(void) +static void lts_aga_fm1_kehb0_p8_ishres_dshres_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm1_ham0_p8_ihires_dshres_genlock(void) +static void lts_aga_fm1_kehb1_p8_ishres_dshres_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -21961,7 +47093,6 @@ 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; @@ -21969,26 +47100,7 @@ static void lts_aga_fm1_ham0_p8_ihires_dshres_genlock(void) if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = decode_ham_pixel_aga(pix0); - gpix0 = get_genlock_transparency((pix0 >> 2) & 63); - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8(); - loaded_pix = getbpl8_32(); - } - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_32(); } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; uae_u8 pix1 = 0; uae_u8 gpix1 = 0xff; @@ -21996,26 +47108,7 @@ static void lts_aga_fm1_ham0_p8_ihires_dshres_genlock(void) if (!denise_blank_active) { gpix1 = get_genlock_transparency_border(); dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - dpix_val1 = decode_ham_pixel_aga(pix1); - gpix1 = get_genlock_transparency((pix1 >> 2) & 63); - } - last_bpl_pix = pix1; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8(); - loaded_pix = getbpl8_32(); } - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_32(); - } - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u8 gpix2 = 0xff; @@ -22023,26 +47116,7 @@ static void lts_aga_fm1_ham0_p8_ihires_dshres_genlock(void) if (!denise_blank_active) { gpix2 = get_genlock_transparency_border(); dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = decode_ham_pixel_aga(pix2); - gpix2 = get_genlock_transparency((pix2 >> 2) & 63); - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8(); - loaded_pix = getbpl8_32(); - } - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_32(); } - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; uae_u8 pix3 = 0; uae_u8 gpix3 = 0xff; @@ -22050,26 +47124,7 @@ static void lts_aga_fm1_ham0_p8_ihires_dshres_genlock(void) if (!denise_blank_active) { gpix3 = get_genlock_transparency_border(); dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - dpix_val3 = decode_ham_pixel_aga(pix3); - gpix3 = get_genlock_transparency((pix3 >> 2) & 63); - } - last_bpl_pix = pix3; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8(); - loaded_pix = getbpl8_32(); - } - if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_32(); - } - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; @@ -22139,11 +47194,11 @@ static void lts_aga_fm1_ham0_p8_ihires_dshres_genlock(void) denise_cck++; } } -static void lts_aga_fm1_ham0_p8_ihires_dshres_filtered_genlock(void) +static void lts_aga_fm1_kehb1_p8_ishres_dshres_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm1_ham1_p8_ihires_dshres_genlock(void) +static void lts_aga_fm1_n0_p4_ishres_dshres_spr_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -22156,6 +47211,7 @@ static void lts_aga_fm1_ham1_p8_ihires_dshres_genlock(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; @@ -22165,35 +47221,27 @@ static void lts_aga_fm1_ham1_p8_ihires_dshres_genlock(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - dpix_val0 = decode_ham_pixel_aga(pix0); - gpix0 = get_genlock_transparency((pix0 >> 2) & 63); + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); } last_bpl_pix = pix0; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8e(); - loaded_pix = getbpl8_32(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl8o(); - loaded_pix = getbpl8_32(); - } - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_32(); + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4(); } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl8_32(); + loaded_pix = getbpl4_32(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } } loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u8 gpix1 = 0xff; uae_u32 dpix_val1 = BLANK_COLOR; @@ -22203,35 +47251,27 @@ static void lts_aga_fm1_ham1_p8_ihires_dshres_genlock(void) if (denise_hdiw && bpl1dat_trigger) { pix1 = loaded_pixs[1]; clxdat |= bplcoltable[pix1]; - dpix_val1 = decode_ham_pixel_aga(pix1); - gpix1 = get_genlock_transparency((pix1 >> 2) & 63); + dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; + gpix1 = get_genlock_transparency(pix1 ^ bplcon4_denise_xor_val); } last_bpl_pix = pix1; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8e(); - loaded_pix = getbpl8_32(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl8o(); - loaded_pix = getbpl8_32(); - } - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_32(); + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4(); } - if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl8_32(); + loaded_pix = getbpl4_32(); + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } } loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u8 gpix2 = 0xff; uae_u32 dpix_val2 = BLANK_COLOR; @@ -22241,35 +47281,27 @@ static void lts_aga_fm1_ham1_p8_ihires_dshres_genlock(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - dpix_val2 = decode_ham_pixel_aga(pix2); - gpix2 = get_genlock_transparency((pix2 >> 2) & 63); + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + gpix2 = get_genlock_transparency(pix2 ^ bplcon4_denise_xor_val); } last_bpl_pix = pix2; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8e(); - loaded_pix = getbpl8_32(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl8o(); - loaded_pix = getbpl8_32(); - } - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_32(); + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4(); } - if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl8_32(); + loaded_pix = getbpl4_32(); + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } } loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u8 gpix3 = 0xff; uae_u32 dpix_val3 = BLANK_COLOR; @@ -22279,42 +47311,65 @@ static void lts_aga_fm1_ham1_p8_ihires_dshres_genlock(void) if (denise_hdiw && bpl1dat_trigger) { pix3 = loaded_pixs[3]; clxdat |= bplcoltable[pix3]; - dpix_val3 = decode_ham_pixel_aga(pix3); - gpix3 = get_genlock_transparency((pix3 >> 2) & 63); + dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; + gpix3 = get_genlock_transparency(pix3 ^ bplcon4_denise_xor_val); } last_bpl_pix = pix3; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8e(); - loaded_pix = getbpl8_32(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl8o(); - loaded_pix = getbpl8_32(); - } - if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_32(); + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4(); } - if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl8_32(); + loaded_pix = getbpl4_32(); + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } } loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + gpix1 = get_genlock_transparency(spix1); + + } + } dtbuf[h][1] = dpix_val1; dtgbuf[h][1] = gpix1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } dtbuf[h][2] = dpix_val2; dtgbuf[h][2] = gpix2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + gpix3 = get_genlock_transparency(spix3); + + } + } dtbuf[h][3] = dpix_val3; dtgbuf[h][3] = gpix3; uae_u32 t0 = dtbuf[h ^ lol][0]; @@ -22376,27 +47431,11 @@ static void lts_aga_fm1_ham1_p8_ihires_dshres_genlock(void) denise_cck++; } } -static void lts_aga_fm1_ham1_p8_ihires_dshres_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb0_p8_ihires_dshres_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb0_p8_ihires_dshres_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb1_p8_ihires_dshres_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb1_p8_ihires_dshres_filtered_genlock(void) +static void lts_aga_fm1_n0_p4_ishres_dshres_spr_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm1_n0_p4_ihires_dshres_spr_genlock(void) +static void lts_aga_fm1_n1_p4_ishres_dshres_spr_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -22424,17 +47463,14 @@ static void lts_aga_fm1_n0_p4_ihires_dshres_spr_genlock(void) } last_bpl_pix = pix0; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4(); - loaded_pix = getbpl4_32(); + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4e(); } - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4_32(); + if (bpldat_copy[1] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[1]) { + copybpl4o(); } + loaded_pix = getbpl4_32(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -22460,17 +47496,14 @@ static void lts_aga_fm1_n0_p4_ihires_dshres_spr_genlock(void) } last_bpl_pix = pix1; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4(); - loaded_pix = getbpl4_32(); + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4e(); } - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4_32(); + if (bpldat_copy[1] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[1]) { + copybpl4o(); } + loaded_pix = getbpl4_32(); uae_u32 sv1 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -22496,17 +47529,14 @@ static void lts_aga_fm1_n0_p4_ihires_dshres_spr_genlock(void) } last_bpl_pix = pix2; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4(); - loaded_pix = getbpl4_32(); + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4e(); } - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4_32(); + if (bpldat_copy[1] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[1]) { + copybpl4o(); } + loaded_pix = getbpl4_32(); uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -22532,17 +47562,14 @@ static void lts_aga_fm1_n0_p4_ihires_dshres_spr_genlock(void) } last_bpl_pix = pix3; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4(); - loaded_pix = getbpl4_32(); + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4e(); } - if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4_32(); + if (bpldat_copy[1] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[1]) { + copybpl4o(); } + loaded_pix = getbpl4_32(); uae_u32 sv3 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -22653,11 +47680,11 @@ static void lts_aga_fm1_n0_p4_ihires_dshres_spr_genlock(void) denise_cck++; } } -static void lts_aga_fm1_n0_p4_ihires_dshres_spr_filtered_genlock(void) +static void lts_aga_fm1_n1_p4_ishres_dshres_spr_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm1_n1_p4_ihires_dshres_spr_genlock(void) +static void lts_aga_fm1_dpf0_p4_ishres_dshres_spr_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -22680,33 +47707,21 @@ static void lts_aga_fm1_n1_p4_ihires_dshres_spr_genlock(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + gpix0 = get_genlock_transparency(dpf_lookup[pix0]); } last_bpl_pix = pix0; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4e(); - loaded_pix = getbpl4_32(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl4o(); - loaded_pix = getbpl4_32(); - } - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4_32(); - } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl4o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl4_32(); + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4(); } + loaded_pix = getbpl4_32(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -22727,33 +47742,21 @@ static void lts_aga_fm1_n1_p4_ihires_dshres_spr_genlock(void) if (denise_hdiw && bpl1dat_trigger) { pix1 = loaded_pixs[1]; clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; - gpix1 = get_genlock_transparency(pix1 ^ bplcon4_denise_xor_val); + uae_u8 val1 = dpf_lookup[pix1]; + if (dpf_lookup_no[pix1]) { + val1 += dblpfofs[bpldualpf2of]; + } + val1 ^= bplcon4_denise_xor_val; + dpix_val1 = denise_colors.acolors[val1]; + gpix1 = get_genlock_transparency(dpf_lookup[pix1]); } last_bpl_pix = pix1; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4e(); - loaded_pix = getbpl4_32(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl4o(); - loaded_pix = getbpl4_32(); - } - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4_32(); - } - if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { - copybpl4o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl4_32(); + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4(); } + loaded_pix = getbpl4_32(); uae_u32 sv1 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -22774,33 +47777,21 @@ static void lts_aga_fm1_n1_p4_ihires_dshres_spr_genlock(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; - gpix2 = get_genlock_transparency(pix2 ^ bplcon4_denise_xor_val); + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; + gpix2 = get_genlock_transparency(dpf_lookup[pix2]); } last_bpl_pix = pix2; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4e(); - loaded_pix = getbpl4_32(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl4o(); - loaded_pix = getbpl4_32(); - } - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4_32(); - } - if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { - copybpl4o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl4_32(); + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4(); } + loaded_pix = getbpl4_32(); uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -22821,33 +47812,21 @@ static void lts_aga_fm1_n1_p4_ihires_dshres_spr_genlock(void) if (denise_hdiw && bpl1dat_trigger) { pix3 = loaded_pixs[3]; clxdat |= bplcoltable[pix3]; - dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; - gpix3 = get_genlock_transparency(pix3 ^ bplcon4_denise_xor_val); + uae_u8 val3 = dpf_lookup[pix3]; + if (dpf_lookup_no[pix3]) { + val3 += dblpfofs[bpldualpf2of]; + } + val3 ^= bplcon4_denise_xor_val; + dpix_val3 = denise_colors.acolors[val3]; + gpix3 = get_genlock_transparency(dpf_lookup[pix3]); } last_bpl_pix = pix3; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4e(); - loaded_pix = getbpl4_32(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl4o(); - loaded_pix = getbpl4_32(); - } - if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4_32(); - } - if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) { - copybpl4o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl4_32(); + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4(); } + loaded_pix = getbpl4_32(); uae_u32 sv3 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -22958,11 +47937,11 @@ static void lts_aga_fm1_n1_p4_ihires_dshres_spr_genlock(void) denise_cck++; } } -static void lts_aga_fm1_n1_p4_ihires_dshres_spr_filtered_genlock(void) +static void lts_aga_fm1_dpf0_p4_ishres_dshres_spr_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm1_dpf0_p4_ihires_dshres_spr_genlock(void) +static void lts_aga_fm1_dpf1_p4_ishres_dshres_spr_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -22995,17 +47974,14 @@ static void lts_aga_fm1_dpf0_p4_ihires_dshres_spr_genlock(void) } last_bpl_pix = pix0; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4(); - loaded_pix = getbpl4_32(); + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4e(); } - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4_32(); + if (bpldat_copy[1] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[1]) { + copybpl4o(); } + loaded_pix = getbpl4_32(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -23036,17 +48012,14 @@ static void lts_aga_fm1_dpf0_p4_ihires_dshres_spr_genlock(void) } last_bpl_pix = pix1; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4(); - loaded_pix = getbpl4_32(); + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4e(); } - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4_32(); + if (bpldat_copy[1] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[1]) { + copybpl4o(); } + loaded_pix = getbpl4_32(); uae_u32 sv1 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -23077,17 +48050,14 @@ static void lts_aga_fm1_dpf0_p4_ihires_dshres_spr_genlock(void) } last_bpl_pix = pix2; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4(); - loaded_pix = getbpl4_32(); + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4e(); } - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4_32(); + if (bpldat_copy[1] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[1]) { + copybpl4o(); } + loaded_pix = getbpl4_32(); uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -23118,17 +48088,14 @@ static void lts_aga_fm1_dpf0_p4_ihires_dshres_spr_genlock(void) } last_bpl_pix = pix3; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4(); - loaded_pix = getbpl4_32(); + shiftbpl4(); + if (bpldat_copy[0] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[0]) { + copybpl4e(); } - if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4_32(); + if (bpldat_copy[1] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[1]) { + copybpl4o(); } + loaded_pix = getbpl4_32(); uae_u32 sv3 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -23239,11 +48206,11 @@ static void lts_aga_fm1_dpf0_p4_ihires_dshres_spr_genlock(void) denise_cck++; } } -static void lts_aga_fm1_dpf0_p4_ihires_dshres_spr_filtered_genlock(void) +static void lts_aga_fm1_dpf1_p4_ishres_dshres_spr_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm1_dpf1_p4_ihires_dshres_spr_genlock(void) +static void lts_aga_fm1_ehb0_p4_ishres_dshres_spr_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -23254,7 +48221,6 @@ 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; @@ -23263,40 +48229,6 @@ static void lts_aga_fm1_dpf1_p4_ihires_dshres_spr_genlock(void) if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - gpix0 = get_genlock_transparency(dpf_lookup[pix0]); - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4e(); - loaded_pix = getbpl4_32(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl4o(); - loaded_pix = getbpl4_32(); - } - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4_32(); - } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl4o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl4_32(); } uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { @@ -23306,7 +48238,6 @@ static void lts_aga_fm1_dpf1_p4_ihires_dshres_spr_genlock(void) sv0 = svt; } } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; @@ -23315,40 +48246,6 @@ static void lts_aga_fm1_dpf1_p4_ihires_dshres_spr_genlock(void) if (!denise_blank_active) { gpix1 = get_genlock_transparency_border(); dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - if (dpf_lookup_no[pix1]) { - val1 += dblpfofs[bpldualpf2of]; - } - val1 ^= bplcon4_denise_xor_val; - dpix_val1 = denise_colors.acolors[val1]; - gpix1 = get_genlock_transparency(dpf_lookup[pix1]); - } - last_bpl_pix = pix1; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4e(); - loaded_pix = getbpl4_32(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl4o(); - loaded_pix = getbpl4_32(); - } - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4_32(); - } - if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { - copybpl4o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl4_32(); } uae_u32 sv1 = 0; if (denise_spr_nr_armeds) { @@ -23358,49 +48255,14 @@ static void lts_aga_fm1_dpf1_p4_ihires_dshres_spr_genlock(void) sv1 = svt; } } - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u8 gpix2 = 0xff; - uae_u32 dpix_val2 = BLANK_COLOR; - if (!denise_blank_active) { - gpix2 = get_genlock_transparency_border(); - dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; - gpix2 = get_genlock_transparency(dpf_lookup[pix2]); - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4e(); - loaded_pix = getbpl4_32(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl4o(); - loaded_pix = getbpl4_32(); - } - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4_32(); - } - if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { - copybpl4o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl4_32(); + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; } uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { @@ -23410,7 +48272,6 @@ static void lts_aga_fm1_dpf1_p4_ihires_dshres_spr_genlock(void) sv2 = svt; } } - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; @@ -23419,40 +48280,6 @@ static void lts_aga_fm1_dpf1_p4_ihires_dshres_spr_genlock(void) if (!denise_blank_active) { gpix3 = get_genlock_transparency_border(); dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - uae_u8 val3 = dpf_lookup[pix3]; - if (dpf_lookup_no[pix3]) { - val3 += dblpfofs[bpldualpf2of]; - } - val3 ^= bplcon4_denise_xor_val; - dpix_val3 = denise_colors.acolors[val3]; - gpix3 = get_genlock_transparency(dpf_lookup[pix3]); - } - last_bpl_pix = pix3; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4e(); - loaded_pix = getbpl4_32(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl4o(); - loaded_pix = getbpl4_32(); - } - if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4_32(); - } - if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) { - copybpl4o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl4_32(); } uae_u32 sv3 = 0; if (denise_spr_nr_armeds) { @@ -23462,7 +48289,6 @@ static void lts_aga_fm1_dpf1_p4_ihires_dshres_spr_genlock(void) sv3 = svt; } } - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { @@ -23564,59 +48390,11 @@ static void lts_aga_fm1_dpf1_p4_ihires_dshres_spr_genlock(void) denise_cck++; } } -static void lts_aga_fm1_dpf1_p4_ihires_dshres_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb0_p4_ihires_dshres_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb0_p4_ihires_dshres_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb1_p4_ihires_dshres_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb1_p4_ihires_dshres_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_ham0_p4_ihires_dshres_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_ham0_p4_ihires_dshres_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_ham1_p4_ihires_dshres_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_ham1_p4_ihires_dshres_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb0_p4_ihires_dshres_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb0_p4_ihires_dshres_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb1_p4_ihires_dshres_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb1_p4_ihires_dshres_spr_filtered_genlock(void) +static void lts_aga_fm1_ehb0_p4_ishres_dshres_spr_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm1_n0_p8_ihires_dshres_spr_genlock(void) +static void lts_aga_fm1_ehb1_p4_ishres_dshres_spr_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -23627,7 +48405,6 @@ 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; @@ -23636,24 +48413,6 @@ static void lts_aga_fm1_n0_p8_ihires_dshres_spr_genlock(void) if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8(); - loaded_pix = getbpl8_32(); - } - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_32(); } uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { @@ -23663,7 +48422,6 @@ static void lts_aga_fm1_n0_p8_ihires_dshres_spr_genlock(void) sv0 = svt; } } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; @@ -23672,24 +48430,6 @@ static void lts_aga_fm1_n0_p8_ihires_dshres_spr_genlock(void) if (!denise_blank_active) { gpix1 = get_genlock_transparency_border(); dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; - gpix1 = get_genlock_transparency(pix1 ^ bplcon4_denise_xor_val); - } - last_bpl_pix = pix1; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8(); - loaded_pix = getbpl8_32(); - } - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_32(); } uae_u32 sv1 = 0; if (denise_spr_nr_armeds) { @@ -23699,7 +48439,6 @@ static void lts_aga_fm1_n0_p8_ihires_dshres_spr_genlock(void) sv1 = svt; } } - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; @@ -23708,24 +48447,6 @@ static void lts_aga_fm1_n0_p8_ihires_dshres_spr_genlock(void) if (!denise_blank_active) { gpix2 = get_genlock_transparency_border(); dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; - gpix2 = get_genlock_transparency(pix2 ^ bplcon4_denise_xor_val); - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8(); - loaded_pix = getbpl8_32(); - } - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_32(); } uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { @@ -23735,7 +48456,6 @@ static void lts_aga_fm1_n0_p8_ihires_dshres_spr_genlock(void) sv2 = svt; } } - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; @@ -23744,24 +48464,6 @@ static void lts_aga_fm1_n0_p8_ihires_dshres_spr_genlock(void) if (!denise_blank_active) { gpix3 = get_genlock_transparency_border(); dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; - gpix3 = get_genlock_transparency(pix3 ^ bplcon4_denise_xor_val); - } - last_bpl_pix = pix3; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8(); - loaded_pix = getbpl8_32(); - } - if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_32(); } uae_u32 sv3 = 0; if (denise_spr_nr_armeds) { @@ -23771,7 +48473,6 @@ static void lts_aga_fm1_n0_p8_ihires_dshres_spr_genlock(void) sv3 = svt; } } - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { @@ -23873,11 +48574,11 @@ static void lts_aga_fm1_n0_p8_ihires_dshres_spr_genlock(void) denise_cck++; } } -static void lts_aga_fm1_n0_p8_ihires_dshres_spr_filtered_genlock(void) +static void lts_aga_fm1_ehb1_p4_ishres_dshres_spr_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm1_n1_p8_ihires_dshres_spr_genlock(void) +static void lts_aga_fm1_ham0_p4_ishres_dshres_spr_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -23888,7 +48589,6 @@ 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; @@ -23897,35 +48597,6 @@ static void lts_aga_fm1_n1_p8_ihires_dshres_spr_genlock(void) if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8e(); - loaded_pix = getbpl8_32(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl8o(); - loaded_pix = getbpl8_32(); - } - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_32(); - } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl8_32(); } uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { @@ -23935,7 +48606,6 @@ static void lts_aga_fm1_n1_p8_ihires_dshres_spr_genlock(void) sv0 = svt; } } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; @@ -23944,35 +48614,6 @@ static void lts_aga_fm1_n1_p8_ihires_dshres_spr_genlock(void) if (!denise_blank_active) { gpix1 = get_genlock_transparency_border(); dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; - gpix1 = get_genlock_transparency(pix1 ^ bplcon4_denise_xor_val); - } - last_bpl_pix = pix1; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8e(); - loaded_pix = getbpl8_32(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl8o(); - loaded_pix = getbpl8_32(); - } - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_32(); - } - if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl8_32(); } uae_u32 sv1 = 0; if (denise_spr_nr_armeds) { @@ -23982,7 +48623,6 @@ static void lts_aga_fm1_n1_p8_ihires_dshres_spr_genlock(void) sv1 = svt; } } - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; @@ -23991,35 +48631,6 @@ static void lts_aga_fm1_n1_p8_ihires_dshres_spr_genlock(void) if (!denise_blank_active) { gpix2 = get_genlock_transparency_border(); dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; - gpix2 = get_genlock_transparency(pix2 ^ bplcon4_denise_xor_val); - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8e(); - loaded_pix = getbpl8_32(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl8o(); - loaded_pix = getbpl8_32(); - } - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_32(); - } - if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl8_32(); } uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { @@ -24029,7 +48640,6 @@ static void lts_aga_fm1_n1_p8_ihires_dshres_spr_genlock(void) sv2 = svt; } } - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; @@ -24038,35 +48648,6 @@ static void lts_aga_fm1_n1_p8_ihires_dshres_spr_genlock(void) if (!denise_blank_active) { gpix3 = get_genlock_transparency_border(); dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; - gpix3 = get_genlock_transparency(pix3 ^ bplcon4_denise_xor_val); - } - last_bpl_pix = pix3; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8e(); - loaded_pix = getbpl8_32(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl8o(); - loaded_pix = getbpl8_32(); - } - if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_32(); - } - if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl8_32(); } uae_u32 sv3 = 0; if (denise_spr_nr_armeds) { @@ -24076,7 +48657,6 @@ static void lts_aga_fm1_n1_p8_ihires_dshres_spr_genlock(void) sv3 = svt; } } - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { @@ -24178,11 +48758,11 @@ static void lts_aga_fm1_n1_p8_ihires_dshres_spr_genlock(void) denise_cck++; } } -static void lts_aga_fm1_n1_p8_ihires_dshres_spr_filtered_genlock(void) +static void lts_aga_fm1_ham0_p4_ishres_dshres_spr_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm1_dpf0_p8_ihires_dshres_spr_genlock(void) +static void lts_aga_fm1_ham1_p4_ishres_dshres_spr_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -24193,7 +48773,6 @@ 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; @@ -24202,29 +48781,6 @@ static void lts_aga_fm1_dpf0_p8_ihires_dshres_spr_genlock(void) if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - gpix0 = get_genlock_transparency(dpf_lookup[pix0]); - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8(); - loaded_pix = getbpl8_32(); - } - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_32(); } uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { @@ -24234,7 +48790,6 @@ static void lts_aga_fm1_dpf0_p8_ihires_dshres_spr_genlock(void) sv0 = svt; } } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; @@ -24243,29 +48798,6 @@ static void lts_aga_fm1_dpf0_p8_ihires_dshres_spr_genlock(void) if (!denise_blank_active) { gpix1 = get_genlock_transparency_border(); dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - if (dpf_lookup_no[pix1]) { - val1 += dblpfofs[bpldualpf2of]; - } - val1 ^= bplcon4_denise_xor_val; - dpix_val1 = denise_colors.acolors[val1]; - gpix1 = get_genlock_transparency(dpf_lookup[pix1]); - } - last_bpl_pix = pix1; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8(); - loaded_pix = getbpl8_32(); - } - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_32(); } uae_u32 sv1 = 0; if (denise_spr_nr_armeds) { @@ -24275,7 +48807,6 @@ static void lts_aga_fm1_dpf0_p8_ihires_dshres_spr_genlock(void) sv1 = svt; } } - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; @@ -24284,29 +48815,6 @@ static void lts_aga_fm1_dpf0_p8_ihires_dshres_spr_genlock(void) if (!denise_blank_active) { gpix2 = get_genlock_transparency_border(); dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; - gpix2 = get_genlock_transparency(dpf_lookup[pix2]); - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8(); - loaded_pix = getbpl8_32(); - } - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_32(); } uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { @@ -24316,7 +48824,6 @@ static void lts_aga_fm1_dpf0_p8_ihires_dshres_spr_genlock(void) sv2 = svt; } } - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; @@ -24325,29 +48832,6 @@ static void lts_aga_fm1_dpf0_p8_ihires_dshres_spr_genlock(void) if (!denise_blank_active) { gpix3 = get_genlock_transparency_border(); dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - uae_u8 val3 = dpf_lookup[pix3]; - if (dpf_lookup_no[pix3]) { - val3 += dblpfofs[bpldualpf2of]; - } - val3 ^= bplcon4_denise_xor_val; - dpix_val3 = denise_colors.acolors[val3]; - gpix3 = get_genlock_transparency(dpf_lookup[pix3]); - } - last_bpl_pix = pix3; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8(); - loaded_pix = getbpl8_32(); - } - if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_32(); } uae_u32 sv3 = 0; if (denise_spr_nr_armeds) { @@ -24357,7 +48841,6 @@ static void lts_aga_fm1_dpf0_p8_ihires_dshres_spr_genlock(void) sv3 = svt; } } - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { @@ -24459,11 +48942,11 @@ static void lts_aga_fm1_dpf0_p8_ihires_dshres_spr_genlock(void) denise_cck++; } } -static void lts_aga_fm1_dpf0_p8_ihires_dshres_spr_filtered_genlock(void) +static void lts_aga_fm1_ham1_p4_ishres_dshres_spr_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm1_dpf1_p8_ihires_dshres_spr_genlock(void) +static void lts_aga_fm1_kehb0_p4_ishres_dshres_spr_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -24474,7 +48957,6 @@ 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; @@ -24483,40 +48965,6 @@ static void lts_aga_fm1_dpf1_p8_ihires_dshres_spr_genlock(void) if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - gpix0 = get_genlock_transparency(dpf_lookup[pix0]); - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8e(); - loaded_pix = getbpl8_32(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl8o(); - loaded_pix = getbpl8_32(); - } - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_32(); - } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl8_32(); } uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { @@ -24526,7 +48974,6 @@ static void lts_aga_fm1_dpf1_p8_ihires_dshres_spr_genlock(void) sv0 = svt; } } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; @@ -24535,40 +48982,6 @@ static void lts_aga_fm1_dpf1_p8_ihires_dshres_spr_genlock(void) if (!denise_blank_active) { gpix1 = get_genlock_transparency_border(); dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - if (dpf_lookup_no[pix1]) { - val1 += dblpfofs[bpldualpf2of]; - } - val1 ^= bplcon4_denise_xor_val; - dpix_val1 = denise_colors.acolors[val1]; - gpix1 = get_genlock_transparency(dpf_lookup[pix1]); - } - last_bpl_pix = pix1; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8e(); - loaded_pix = getbpl8_32(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl8o(); - loaded_pix = getbpl8_32(); - } - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_32(); - } - if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl8_32(); } uae_u32 sv1 = 0; if (denise_spr_nr_armeds) { @@ -24578,49 +48991,14 @@ static void lts_aga_fm1_dpf1_p8_ihires_dshres_spr_genlock(void) sv1 = svt; } } - loaded_pixs[1] = loaded_pix; - internal_pixel_cnt += 1; - matchsprites_aga(cnt + 2); - uae_u8 pix2 = 0; - uae_u8 gpix2 = 0xff; - uae_u32 dpix_val2 = BLANK_COLOR; - if (!denise_blank_active) { - gpix2 = get_genlock_transparency_border(); - dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; - gpix2 = get_genlock_transparency(dpf_lookup[pix2]); - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8e(); - loaded_pix = getbpl8_32(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl8o(); - loaded_pix = getbpl8_32(); - } - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_32(); - } - if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl8_32(); + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; } uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { @@ -24630,7 +49008,6 @@ static void lts_aga_fm1_dpf1_p8_ihires_dshres_spr_genlock(void) sv2 = svt; } } - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; @@ -24639,40 +49016,6 @@ static void lts_aga_fm1_dpf1_p8_ihires_dshres_spr_genlock(void) if (!denise_blank_active) { gpix3 = get_genlock_transparency_border(); dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - uae_u8 val3 = dpf_lookup[pix3]; - if (dpf_lookup_no[pix3]) { - val3 += dblpfofs[bpldualpf2of]; - } - val3 ^= bplcon4_denise_xor_val; - dpix_val3 = denise_colors.acolors[val3]; - gpix3 = get_genlock_transparency(dpf_lookup[pix3]); - } - last_bpl_pix = pix3; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8e(); - loaded_pix = getbpl8_32(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl8o(); - loaded_pix = getbpl8_32(); - } - if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_32(); - } - if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl8_32(); } uae_u32 sv3 = 0; if (denise_spr_nr_armeds) { @@ -24682,7 +49025,6 @@ static void lts_aga_fm1_dpf1_p8_ihires_dshres_spr_genlock(void) sv3 = svt; } } - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { @@ -24784,27 +49126,11 @@ static void lts_aga_fm1_dpf1_p8_ihires_dshres_spr_genlock(void) denise_cck++; } } -static void lts_aga_fm1_dpf1_p8_ihires_dshres_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb0_p8_ihires_dshres_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb0_p8_ihires_dshres_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb1_p8_ihires_dshres_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb1_p8_ihires_dshres_spr_filtered_genlock(void) +static void lts_aga_fm1_kehb0_p4_ishres_dshres_spr_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm1_ham0_p8_ihires_dshres_spr_genlock(void) +static void lts_aga_fm1_kehb1_p4_ishres_dshres_spr_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -24815,7 +49141,6 @@ 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; @@ -24824,24 +49149,6 @@ static void lts_aga_fm1_ham0_p8_ihires_dshres_spr_genlock(void) if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = decode_ham_pixel_aga(pix0); - gpix0 = get_genlock_transparency((pix0 >> 2) & 63); - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8(); - loaded_pix = getbpl8_32(); - } - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_32(); } uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { @@ -24851,7 +49158,6 @@ static void lts_aga_fm1_ham0_p8_ihires_dshres_spr_genlock(void) sv0 = svt; } } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; @@ -24860,24 +49166,6 @@ static void lts_aga_fm1_ham0_p8_ihires_dshres_spr_genlock(void) if (!denise_blank_active) { gpix1 = get_genlock_transparency_border(); dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - dpix_val1 = decode_ham_pixel_aga(pix1); - gpix1 = get_genlock_transparency((pix1 >> 2) & 63); - } - last_bpl_pix = pix1; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8(); - loaded_pix = getbpl8_32(); - } - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_32(); } uae_u32 sv1 = 0; if (denise_spr_nr_armeds) { @@ -24887,7 +49175,6 @@ static void lts_aga_fm1_ham0_p8_ihires_dshres_spr_genlock(void) sv1 = svt; } } - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; @@ -24896,24 +49183,6 @@ static void lts_aga_fm1_ham0_p8_ihires_dshres_spr_genlock(void) if (!denise_blank_active) { gpix2 = get_genlock_transparency_border(); dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = decode_ham_pixel_aga(pix2); - gpix2 = get_genlock_transparency((pix2 >> 2) & 63); - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8(); - loaded_pix = getbpl8_32(); - } - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_32(); } uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { @@ -24923,7 +49192,6 @@ static void lts_aga_fm1_ham0_p8_ihires_dshres_spr_genlock(void) sv2 = svt; } } - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; @@ -24932,24 +49200,6 @@ static void lts_aga_fm1_ham0_p8_ihires_dshres_spr_genlock(void) if (!denise_blank_active) { gpix3 = get_genlock_transparency_border(); dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - dpix_val3 = decode_ham_pixel_aga(pix3); - gpix3 = get_genlock_transparency((pix3 >> 2) & 63); - } - last_bpl_pix = pix3; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8(); - loaded_pix = getbpl8_32(); - } - if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_32(); } uae_u32 sv3 = 0; if (denise_spr_nr_armeds) { @@ -24959,7 +49209,6 @@ static void lts_aga_fm1_ham0_p8_ihires_dshres_spr_genlock(void) sv3 = svt; } } - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { @@ -25061,11 +49310,11 @@ static void lts_aga_fm1_ham0_p8_ihires_dshres_spr_genlock(void) denise_cck++; } } -static void lts_aga_fm1_ham0_p8_ihires_dshres_spr_filtered_genlock(void) +static void lts_aga_fm1_kehb1_p4_ishres_dshres_spr_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm1_ham1_p8_ihires_dshres_spr_genlock(void) +static void lts_aga_fm1_n0_p8_ishres_dshres_spr_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -25076,7 +49325,6 @@ 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; @@ -25085,35 +49333,6 @@ static void lts_aga_fm1_ham1_p8_ihires_dshres_spr_genlock(void) if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = decode_ham_pixel_aga(pix0); - gpix0 = get_genlock_transparency((pix0 >> 2) & 63); - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8e(); - loaded_pix = getbpl8_32(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl8o(); - loaded_pix = getbpl8_32(); - } - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_32(); - } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl8_32(); } uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { @@ -25123,7 +49342,6 @@ static void lts_aga_fm1_ham1_p8_ihires_dshres_spr_genlock(void) sv0 = svt; } } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; @@ -25132,35 +49350,6 @@ static void lts_aga_fm1_ham1_p8_ihires_dshres_spr_genlock(void) if (!denise_blank_active) { gpix1 = get_genlock_transparency_border(); dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - dpix_val1 = decode_ham_pixel_aga(pix1); - gpix1 = get_genlock_transparency((pix1 >> 2) & 63); - } - last_bpl_pix = pix1; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8e(); - loaded_pix = getbpl8_32(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl8o(); - loaded_pix = getbpl8_32(); - } - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_32(); - } - if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl8_32(); } uae_u32 sv1 = 0; if (denise_spr_nr_armeds) { @@ -25170,7 +49359,6 @@ static void lts_aga_fm1_ham1_p8_ihires_dshres_spr_genlock(void) sv1 = svt; } } - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; @@ -25179,35 +49367,6 @@ static void lts_aga_fm1_ham1_p8_ihires_dshres_spr_genlock(void) if (!denise_blank_active) { gpix2 = get_genlock_transparency_border(); dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = decode_ham_pixel_aga(pix2); - gpix2 = get_genlock_transparency((pix2 >> 2) & 63); - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8e(); - loaded_pix = getbpl8_32(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl8o(); - loaded_pix = getbpl8_32(); - } - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_32(); - } - if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl8_32(); } uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { @@ -25217,7 +49376,6 @@ static void lts_aga_fm1_ham1_p8_ihires_dshres_spr_genlock(void) sv2 = svt; } } - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; @@ -25226,35 +49384,6 @@ static void lts_aga_fm1_ham1_p8_ihires_dshres_spr_genlock(void) if (!denise_blank_active) { gpix3 = get_genlock_transparency_border(); dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - dpix_val3 = decode_ham_pixel_aga(pix3); - gpix3 = get_genlock_transparency((pix3 >> 2) & 63); - } - last_bpl_pix = pix3; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8e(); - loaded_pix = getbpl8_32(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl8o(); - loaded_pix = getbpl8_32(); - } - if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_32(); - } - if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl8_32(); } uae_u32 sv3 = 0; if (denise_spr_nr_armeds) { @@ -25264,7 +49393,6 @@ static void lts_aga_fm1_ham1_p8_ihires_dshres_spr_genlock(void) sv3 = svt; } } - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { @@ -25366,27 +49494,11 @@ static void lts_aga_fm1_ham1_p8_ihires_dshres_spr_genlock(void) denise_cck++; } } -static void lts_aga_fm1_ham1_p8_ihires_dshres_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb0_p8_ihires_dshres_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb0_p8_ihires_dshres_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb1_p8_ihires_dshres_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb1_p8_ihires_dshres_spr_filtered_genlock(void) +static void lts_aga_fm1_n0_p8_ishres_dshres_spr_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm1_n0_p4_ishres_dshres_genlock(void) +static void lts_aga_fm1_n1_p8_ishres_dshres_spr_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -25397,99 +49509,114 @@ 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; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); - } - last_bpl_pix = pix0; } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } } - loaded_pix = getbpl4_32(); - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u8 gpix1 = 0xff; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { gpix1 = get_genlock_transparency_border(); dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; - gpix1 = get_genlock_transparency(pix1 ^ bplcon4_denise_xor_val); - } - last_bpl_pix = pix1; } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4(); + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } } - loaded_pix = getbpl4_32(); - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u8 gpix2 = 0xff; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { gpix2 = get_genlock_transparency_border(); dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; - gpix2 = get_genlock_transparency(pix2 ^ bplcon4_denise_xor_val); - } - last_bpl_pix = pix2; } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4(); + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } } - loaded_pix = getbpl4_32(); - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u8 gpix3 = 0xff; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { gpix3 = get_genlock_transparency_border(); dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; - gpix3 = get_genlock_transparency(pix3 ^ bplcon4_denise_xor_val); - } - last_bpl_pix = pix3; } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4(); + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } } - loaded_pix = getbpl4_32(); - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + gpix1 = get_genlock_transparency(spix1); + + } + } dtbuf[h][1] = dpix_val1; dtgbuf[h][1] = gpix1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } dtbuf[h][2] = dpix_val2; dtgbuf[h][2] = gpix2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + gpix3 = get_genlock_transparency(spix3); + + } + } dtbuf[h][3] = dpix_val3; dtgbuf[h][3] = gpix3; uae_u32 t0 = dtbuf[h ^ lol][0]; @@ -25551,11 +49678,11 @@ static void lts_aga_fm1_n0_p4_ishres_dshres_genlock(void) denise_cck++; } } -static void lts_aga_fm1_n0_p4_ishres_dshres_filtered_genlock(void) +static void lts_aga_fm1_n1_p8_ishres_dshres_spr_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm1_n1_p4_ishres_dshres_genlock(void) +static void lts_aga_fm1_dpf0_p8_ishres_dshres_spr_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -25566,111 +49693,114 @@ 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; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); - } - last_bpl_pix = pix0; - } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4e(); } - if (bpldat_copy[1] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[1]) { - copybpl4o(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } } - loaded_pix = getbpl4_32(); - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u8 gpix1 = 0xff; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { gpix1 = get_genlock_transparency_border(); dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; - gpix1 = get_genlock_transparency(pix1 ^ bplcon4_denise_xor_val); - } - last_bpl_pix = pix1; - } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4e(); } - if (bpldat_copy[1] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[1]) { - copybpl4o(); + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } } - loaded_pix = getbpl4_32(); - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u8 gpix2 = 0xff; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { gpix2 = get_genlock_transparency_border(); dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; - gpix2 = get_genlock_transparency(pix2 ^ bplcon4_denise_xor_val); - } - last_bpl_pix = pix2; - } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4e(); } - if (bpldat_copy[1] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[1]) { - copybpl4o(); + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } } - loaded_pix = getbpl4_32(); - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u8 gpix3 = 0xff; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { gpix3 = get_genlock_transparency_border(); dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; - gpix3 = get_genlock_transparency(pix3 ^ bplcon4_denise_xor_val); - } - last_bpl_pix = pix3; - } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4e(); } - if (bpldat_copy[1] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[1]) { - copybpl4o(); + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } } - loaded_pix = getbpl4_32(); - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + gpix1 = get_genlock_transparency(spix1); + + } + } dtbuf[h][1] = dpix_val1; dtgbuf[h][1] = gpix1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } dtbuf[h][2] = dpix_val2; dtgbuf[h][2] = gpix2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + gpix3 = get_genlock_transparency(spix3); + + } + } dtbuf[h][3] = dpix_val3; dtgbuf[h][3] = gpix3; uae_u32 t0 = dtbuf[h ^ lol][0]; @@ -25732,11 +49862,11 @@ static void lts_aga_fm1_n1_p4_ishres_dshres_genlock(void) denise_cck++; } } -static void lts_aga_fm1_n1_p4_ishres_dshres_filtered_genlock(void) +static void lts_aga_fm1_dpf0_p8_ishres_dshres_spr_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm1_dpf0_p4_ishres_dshres_genlock(void) +static void lts_aga_fm1_dpf1_p8_ishres_dshres_spr_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -25747,119 +49877,114 @@ 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; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - gpix0 = get_genlock_transparency(dpf_lookup[pix0]); - } - last_bpl_pix = pix0; } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } } - loaded_pix = getbpl4_32(); - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u8 gpix1 = 0xff; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { gpix1 = get_genlock_transparency_border(); dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - if (dpf_lookup_no[pix1]) { - val1 += dblpfofs[bpldualpf2of]; - } - val1 ^= bplcon4_denise_xor_val; - dpix_val1 = denise_colors.acolors[val1]; - gpix1 = get_genlock_transparency(dpf_lookup[pix1]); - } - last_bpl_pix = pix1; } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4(); + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } } - loaded_pix = getbpl4_32(); - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u8 gpix2 = 0xff; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { gpix2 = get_genlock_transparency_border(); dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; - gpix2 = get_genlock_transparency(dpf_lookup[pix2]); - } - last_bpl_pix = pix2; } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4(); + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } } - loaded_pix = getbpl4_32(); - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u8 gpix3 = 0xff; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { gpix3 = get_genlock_transparency_border(); dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - uae_u8 val3 = dpf_lookup[pix3]; - if (dpf_lookup_no[pix3]) { - val3 += dblpfofs[bpldualpf2of]; - } - val3 ^= bplcon4_denise_xor_val; - dpix_val3 = denise_colors.acolors[val3]; - gpix3 = get_genlock_transparency(dpf_lookup[pix3]); - } - last_bpl_pix = pix3; } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4(); + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } } - loaded_pix = getbpl4_32(); - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + gpix1 = get_genlock_transparency(spix1); + + } + } dtbuf[h][1] = dpix_val1; dtgbuf[h][1] = gpix1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } dtbuf[h][2] = dpix_val2; dtgbuf[h][2] = gpix2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + gpix3 = get_genlock_transparency(spix3); + + } + } dtbuf[h][3] = dpix_val3; dtgbuf[h][3] = gpix3; uae_u32 t0 = dtbuf[h ^ lol][0]; @@ -25921,11 +50046,11 @@ static void lts_aga_fm1_dpf0_p4_ishres_dshres_genlock(void) denise_cck++; } } -static void lts_aga_fm1_dpf0_p4_ishres_dshres_filtered_genlock(void) +static void lts_aga_fm1_dpf1_p8_ishres_dshres_spr_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm1_dpf1_p4_ishres_dshres_genlock(void) +static void lts_aga_fm1_ehb0_p8_ishres_dshres_spr_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -25936,131 +50061,114 @@ 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; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - gpix0 = get_genlock_transparency(dpf_lookup[pix0]); - } - last_bpl_pix = pix0; - } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4e(); } - if (bpldat_copy[1] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[1]) { - copybpl4o(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } } - loaded_pix = getbpl4_32(); - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u8 gpix1 = 0xff; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { gpix1 = get_genlock_transparency_border(); dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - if (dpf_lookup_no[pix1]) { - val1 += dblpfofs[bpldualpf2of]; - } - val1 ^= bplcon4_denise_xor_val; - dpix_val1 = denise_colors.acolors[val1]; - gpix1 = get_genlock_transparency(dpf_lookup[pix1]); - } - last_bpl_pix = pix1; - } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4e(); } - if (bpldat_copy[1] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[1]) { - copybpl4o(); + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } } - loaded_pix = getbpl4_32(); - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u8 gpix2 = 0xff; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { gpix2 = get_genlock_transparency_border(); dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; - gpix2 = get_genlock_transparency(dpf_lookup[pix2]); - } - last_bpl_pix = pix2; - } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4e(); } - if (bpldat_copy[1] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[1]) { - copybpl4o(); + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } } - loaded_pix = getbpl4_32(); - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u8 gpix3 = 0xff; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { gpix3 = get_genlock_transparency_border(); dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - uae_u8 val3 = dpf_lookup[pix3]; - if (dpf_lookup_no[pix3]) { - val3 += dblpfofs[bpldualpf2of]; - } - val3 ^= bplcon4_denise_xor_val; - dpix_val3 = denise_colors.acolors[val3]; - gpix3 = get_genlock_transparency(dpf_lookup[pix3]); - } - last_bpl_pix = pix3; - } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4e(); } - if (bpldat_copy[1] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[1]) { - copybpl4o(); + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } } - loaded_pix = getbpl4_32(); - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + gpix1 = get_genlock_transparency(spix1); + + } + } dtbuf[h][1] = dpix_val1; dtgbuf[h][1] = gpix1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } dtbuf[h][2] = dpix_val2; dtgbuf[h][2] = gpix2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + gpix3 = get_genlock_transparency(spix3); + + } + } dtbuf[h][3] = dpix_val3; dtgbuf[h][3] = gpix3; uae_u32 t0 = dtbuf[h ^ lol][0]; @@ -26122,139 +50230,195 @@ static void lts_aga_fm1_dpf1_p4_ishres_dshres_genlock(void) denise_cck++; } } -static void lts_aga_fm1_dpf1_p4_ishres_dshres_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb0_p4_ishres_dshres_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb0_p4_ishres_dshres_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb1_p4_ishres_dshres_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb1_p4_ishres_dshres_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_ham0_p4_ishres_dshres_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_ham0_p4_ishres_dshres_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_ham1_p4_ishres_dshres_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_ham1_p4_ishres_dshres_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb0_p4_ishres_dshres_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb0_p4_ishres_dshres_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb1_p4_ishres_dshres_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb1_p4_ishres_dshres_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_n0_p8_ishres_dshres_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_n0_p8_ishres_dshres_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_n1_p8_ishres_dshres_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_n1_p8_ishres_dshres_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_dpf0_p8_ishres_dshres_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_dpf0_p8_ishres_dshres_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_dpf1_p8_ishres_dshres_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_dpf1_p8_ishres_dshres_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb0_p8_ishres_dshres_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb0_p8_ishres_dshres_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb1_p8_ishres_dshres_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb1_p8_ishres_dshres_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_ham0_p8_ishres_dshres_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_ham0_p8_ishres_dshres_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_ham1_p8_ishres_dshres_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_ham1_p8_ishres_dshres_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb0_p8_ishres_dshres_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb0_p8_ishres_dshres_filtered_genlock(void) +static void lts_aga_fm1_ehb0_p8_ishres_dshres_spr_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm1_kehb1_p8_ishres_dshres_genlock(void) +static void lts_aga_fm1_ehb1_p8_ishres_dshres_spr_genlock(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } + } + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + } + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } + } + internal_pixel_cnt += 1; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + gpix1 = get_genlock_transparency(spix1); + + } + } + dtbuf[h][1] = dpix_val1; + dtgbuf[h][1] = gpix1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + gpix3 = get_genlock_transparency(spix3); + + } + } + dtbuf[h][3] = dpix_val3; + dtgbuf[h][3] = gpix3; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = dtgbuf[h ^ lol][1]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + *gbuf++ = dtgbuf[h ^ lol][3]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm1_kehb1_p8_ishres_dshres_filtered_genlock(void) +static void lts_aga_fm1_ehb1_p8_ishres_dshres_spr_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm1_n0_p4_ishres_dshres_spr_genlock(void) +static void lts_aga_fm1_ham0_p8_ishres_dshres_spr_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -26265,7 +50429,6 @@ 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; @@ -26274,19 +50437,7 @@ static void lts_aga_fm1_n0_p4_ishres_dshres_spr_genlock(void) if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); - } - last_bpl_pix = pix0; } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4(); - } - loaded_pix = getbpl4_32(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -26295,7 +50446,6 @@ static void lts_aga_fm1_n0_p4_ishres_dshres_spr_genlock(void) sv0 = svt; } } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; @@ -26304,19 +50454,7 @@ static void lts_aga_fm1_n0_p4_ishres_dshres_spr_genlock(void) if (!denise_blank_active) { gpix1 = get_genlock_transparency_border(); dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; - gpix1 = get_genlock_transparency(pix1 ^ bplcon4_denise_xor_val); - } - last_bpl_pix = pix1; - } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4(); } - loaded_pix = getbpl4_32(); uae_u32 sv1 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -26325,7 +50463,6 @@ static void lts_aga_fm1_n0_p4_ishres_dshres_spr_genlock(void) sv1 = svt; } } - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; @@ -26334,19 +50471,7 @@ static void lts_aga_fm1_n0_p4_ishres_dshres_spr_genlock(void) if (!denise_blank_active) { gpix2 = get_genlock_transparency_border(); dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; - gpix2 = get_genlock_transparency(pix2 ^ bplcon4_denise_xor_val); - } - last_bpl_pix = pix2; - } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4(); } - loaded_pix = getbpl4_32(); uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -26355,7 +50480,6 @@ static void lts_aga_fm1_n0_p4_ishres_dshres_spr_genlock(void) sv2 = svt; } } - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; @@ -26364,19 +50488,7 @@ static void lts_aga_fm1_n0_p4_ishres_dshres_spr_genlock(void) if (!denise_blank_active) { gpix3 = get_genlock_transparency_border(); dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; - gpix3 = get_genlock_transparency(pix3 ^ bplcon4_denise_xor_val); - } - last_bpl_pix = pix3; - } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4(); } - loaded_pix = getbpl4_32(); uae_u32 sv3 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -26385,7 +50497,6 @@ static void lts_aga_fm1_n0_p4_ishres_dshres_spr_genlock(void) sv3 = svt; } } - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { @@ -26487,11 +50598,11 @@ static void lts_aga_fm1_n0_p4_ishres_dshres_spr_genlock(void) denise_cck++; } } -static void lts_aga_fm1_n0_p4_ishres_dshres_spr_filtered_genlock(void) +static void lts_aga_fm1_ham0_p8_ishres_dshres_spr_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm1_n1_p4_ishres_dshres_spr_genlock(void) +static void lts_aga_fm1_ham1_p8_ishres_dshres_spr_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -26502,7 +50613,6 @@ 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; @@ -26511,22 +50621,7 @@ static void lts_aga_fm1_n1_p4_ishres_dshres_spr_genlock(void) if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); - } - last_bpl_pix = pix0; - } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4e(); - } - if (bpldat_copy[1] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[1]) { - copybpl4o(); } - loaded_pix = getbpl4_32(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -26535,7 +50630,6 @@ static void lts_aga_fm1_n1_p4_ishres_dshres_spr_genlock(void) sv0 = svt; } } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; @@ -26544,22 +50638,7 @@ static void lts_aga_fm1_n1_p4_ishres_dshres_spr_genlock(void) if (!denise_blank_active) { gpix1 = get_genlock_transparency_border(); dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; - gpix1 = get_genlock_transparency(pix1 ^ bplcon4_denise_xor_val); - } - last_bpl_pix = pix1; - } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4e(); - } - if (bpldat_copy[1] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[1]) { - copybpl4o(); } - loaded_pix = getbpl4_32(); uae_u32 sv1 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -26568,7 +50647,6 @@ static void lts_aga_fm1_n1_p4_ishres_dshres_spr_genlock(void) sv1 = svt; } } - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; @@ -26577,22 +50655,7 @@ static void lts_aga_fm1_n1_p4_ishres_dshres_spr_genlock(void) if (!denise_blank_active) { gpix2 = get_genlock_transparency_border(); dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; - gpix2 = get_genlock_transparency(pix2 ^ bplcon4_denise_xor_val); - } - last_bpl_pix = pix2; - } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4e(); - } - if (bpldat_copy[1] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[1]) { - copybpl4o(); } - loaded_pix = getbpl4_32(); uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -26601,7 +50664,6 @@ static void lts_aga_fm1_n1_p4_ishres_dshres_spr_genlock(void) sv2 = svt; } } - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; @@ -26610,22 +50672,7 @@ static void lts_aga_fm1_n1_p4_ishres_dshres_spr_genlock(void) if (!denise_blank_active) { gpix3 = get_genlock_transparency_border(); dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; - gpix3 = get_genlock_transparency(pix3 ^ bplcon4_denise_xor_val); - } - last_bpl_pix = pix3; - } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4e(); - } - if (bpldat_copy[1] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[1]) { - copybpl4o(); } - loaded_pix = getbpl4_32(); uae_u32 sv3 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -26634,7 +50681,6 @@ static void lts_aga_fm1_n1_p4_ishres_dshres_spr_genlock(void) sv3 = svt; } } - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { @@ -26736,11 +50782,11 @@ static void lts_aga_fm1_n1_p4_ishres_dshres_spr_genlock(void) denise_cck++; } } -static void lts_aga_fm1_n1_p4_ishres_dshres_spr_filtered_genlock(void) +static void lts_aga_fm1_ham1_p8_ishres_dshres_spr_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm1_dpf0_p4_ishres_dshres_spr_genlock(void) +static void lts_aga_fm1_kehb0_p8_ishres_dshres_spr_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -26751,7 +50797,6 @@ 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; @@ -26760,24 +50805,7 @@ static void lts_aga_fm1_dpf0_p4_ishres_dshres_spr_genlock(void) if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - gpix0 = get_genlock_transparency(dpf_lookup[pix0]); - } - last_bpl_pix = pix0; - } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4(); } - loaded_pix = getbpl4_32(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -26786,7 +50814,6 @@ static void lts_aga_fm1_dpf0_p4_ishres_dshres_spr_genlock(void) sv0 = svt; } } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; @@ -26795,24 +50822,7 @@ static void lts_aga_fm1_dpf0_p4_ishres_dshres_spr_genlock(void) if (!denise_blank_active) { gpix1 = get_genlock_transparency_border(); dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - if (dpf_lookup_no[pix1]) { - val1 += dblpfofs[bpldualpf2of]; - } - val1 ^= bplcon4_denise_xor_val; - dpix_val1 = denise_colors.acolors[val1]; - gpix1 = get_genlock_transparency(dpf_lookup[pix1]); - } - last_bpl_pix = pix1; - } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4(); } - loaded_pix = getbpl4_32(); uae_u32 sv1 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -26821,7 +50831,6 @@ static void lts_aga_fm1_dpf0_p4_ishres_dshres_spr_genlock(void) sv1 = svt; } } - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; @@ -26830,24 +50839,7 @@ static void lts_aga_fm1_dpf0_p4_ishres_dshres_spr_genlock(void) if (!denise_blank_active) { gpix2 = get_genlock_transparency_border(); dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; - gpix2 = get_genlock_transparency(dpf_lookup[pix2]); - } - last_bpl_pix = pix2; - } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4(); } - loaded_pix = getbpl4_32(); uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -26856,7 +50848,6 @@ static void lts_aga_fm1_dpf0_p4_ishres_dshres_spr_genlock(void) sv2 = svt; } } - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; @@ -26865,24 +50856,7 @@ static void lts_aga_fm1_dpf0_p4_ishres_dshres_spr_genlock(void) if (!denise_blank_active) { gpix3 = get_genlock_transparency_border(); dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - uae_u8 val3 = dpf_lookup[pix3]; - if (dpf_lookup_no[pix3]) { - val3 += dblpfofs[bpldualpf2of]; - } - val3 ^= bplcon4_denise_xor_val; - dpix_val3 = denise_colors.acolors[val3]; - gpix3 = get_genlock_transparency(dpf_lookup[pix3]); - } - last_bpl_pix = pix3; - } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4(); } - loaded_pix = getbpl4_32(); uae_u32 sv3 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -26891,7 +50865,6 @@ static void lts_aga_fm1_dpf0_p4_ishres_dshres_spr_genlock(void) sv3 = svt; } } - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { @@ -26993,11 +50966,11 @@ static void lts_aga_fm1_dpf0_p4_ishres_dshres_spr_genlock(void) denise_cck++; } } -static void lts_aga_fm1_dpf0_p4_ishres_dshres_spr_filtered_genlock(void) +static void lts_aga_fm1_kehb0_p8_ishres_dshres_spr_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm1_dpf1_p4_ishres_dshres_spr_genlock(void) +static void lts_aga_fm1_kehb1_p8_ishres_dshres_spr_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -27008,7 +50981,6 @@ 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; @@ -27017,27 +50989,7 @@ static void lts_aga_fm1_dpf1_p4_ishres_dshres_spr_genlock(void) if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - gpix0 = get_genlock_transparency(dpf_lookup[pix0]); - } - last_bpl_pix = pix0; } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4e(); - } - if (bpldat_copy[1] && ((cmp | 0) & 31) == bplcon1_shift_full_masked[1]) { - copybpl4o(); - } - loaded_pix = getbpl4_32(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -27046,7 +50998,6 @@ static void lts_aga_fm1_dpf1_p4_ishres_dshres_spr_genlock(void) sv0 = svt; } } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; @@ -27055,27 +51006,7 @@ static void lts_aga_fm1_dpf1_p4_ishres_dshres_spr_genlock(void) if (!denise_blank_active) { gpix1 = get_genlock_transparency_border(); dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - if (dpf_lookup_no[pix1]) { - val1 += dblpfofs[bpldualpf2of]; - } - val1 ^= bplcon4_denise_xor_val; - dpix_val1 = denise_colors.acolors[val1]; - gpix1 = get_genlock_transparency(dpf_lookup[pix1]); - } - last_bpl_pix = pix1; - } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4e(); - } - if (bpldat_copy[1] && ((cmp | 1) & 31) == bplcon1_shift_full_masked[1]) { - copybpl4o(); } - loaded_pix = getbpl4_32(); uae_u32 sv1 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -27084,7 +51015,6 @@ static void lts_aga_fm1_dpf1_p4_ishres_dshres_spr_genlock(void) sv1 = svt; } } - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; @@ -27093,27 +51023,7 @@ static void lts_aga_fm1_dpf1_p4_ishres_dshres_spr_genlock(void) if (!denise_blank_active) { gpix2 = get_genlock_transparency_border(); dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; - gpix2 = get_genlock_transparency(dpf_lookup[pix2]); - } - last_bpl_pix = pix2; - } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4e(); - } - if (bpldat_copy[1] && ((cmp | 2) & 31) == bplcon1_shift_full_masked[1]) { - copybpl4o(); } - loaded_pix = getbpl4_32(); uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -27122,7 +51032,6 @@ static void lts_aga_fm1_dpf1_p4_ishres_dshres_spr_genlock(void) sv2 = svt; } } - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; @@ -27131,27 +51040,7 @@ static void lts_aga_fm1_dpf1_p4_ishres_dshres_spr_genlock(void) if (!denise_blank_active) { gpix3 = get_genlock_transparency_border(); dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - uae_u8 val3 = dpf_lookup[pix3]; - if (dpf_lookup_no[pix3]) { - val3 += dblpfofs[bpldualpf2of]; - } - val3 ^= bplcon4_denise_xor_val; - dpix_val3 = denise_colors.acolors[val3]; - gpix3 = get_genlock_transparency(dpf_lookup[pix3]); - } - last_bpl_pix = pix3; - } - shiftbpl4(); - if (bpldat_copy[0] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[0]) { - copybpl4e(); - } - if (bpldat_copy[1] && ((cmp | 3) & 31) == bplcon1_shift_full_masked[1]) { - copybpl4o(); } - loaded_pix = getbpl4_32(); uae_u32 sv3 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -27160,7 +51049,6 @@ static void lts_aga_fm1_dpf1_p4_ishres_dshres_spr_genlock(void) sv3 = svt; } } - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { @@ -27262,134 +51150,6 @@ static void lts_aga_fm1_dpf1_p4_ishres_dshres_spr_genlock(void) denise_cck++; } } -static void lts_aga_fm1_dpf1_p4_ishres_dshres_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb0_p4_ishres_dshres_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb0_p4_ishres_dshres_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb1_p4_ishres_dshres_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb1_p4_ishres_dshres_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_ham0_p4_ishres_dshres_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_ham0_p4_ishres_dshres_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_ham1_p4_ishres_dshres_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_ham1_p4_ishres_dshres_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb0_p4_ishres_dshres_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb0_p4_ishres_dshres_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb1_p4_ishres_dshres_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb1_p4_ishres_dshres_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_n0_p8_ishres_dshres_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_n0_p8_ishres_dshres_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_n1_p8_ishres_dshres_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_n1_p8_ishres_dshres_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_dpf0_p8_ishres_dshres_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_dpf0_p8_ishres_dshres_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_dpf1_p8_ishres_dshres_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_dpf1_p8_ishres_dshres_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb0_p8_ishres_dshres_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb0_p8_ishres_dshres_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb1_p8_ishres_dshres_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_ehb1_p8_ishres_dshres_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_ham0_p8_ishres_dshres_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_ham0_p8_ishres_dshres_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_ham1_p8_ishres_dshres_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_ham1_p8_ishres_dshres_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb0_p8_ishres_dshres_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb0_p8_ishres_dshres_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm1_kehb1_p8_ishres_dshres_spr_genlock(void) -{ - lts_null(); -} static void lts_aga_fm1_kehb1_p8_ishres_dshres_spr_filtered_genlock(void) { lts_null(); diff --git a/linetoscr_aga_fm2.cpp b/linetoscr_aga_fm2.cpp index 274296ea..f4fa0e71 100644 --- a/linetoscr_aga_fm2.cpp +++ b/linetoscr_aga_fm2.cpp @@ -293,54 +293,6 @@ static void lts_aga_fm2_dpf1_p2_ilores_dlores_filtered(void) lts_null(); } static void lts_aga_fm2_ehb0_p2_ilores_dlores(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb0_p2_ilores_dlores_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb1_p2_ilores_dlores(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb1_p2_ilores_dlores_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_ham0_p2_ilores_dlores(void) -{ - lts_null(); -} -static void lts_aga_fm2_ham0_p2_ilores_dlores_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_ham1_p2_ilores_dlores(void) -{ - lts_null(); -} -static void lts_aga_fm2_ham1_p2_ilores_dlores_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb0_p2_ilores_dlores(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb0_p2_ilores_dlores_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb1_p2_ilores_dlores(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb1_p2_ilores_dlores_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_n0_p4_ilores_dlores(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -351,25 +303,12 @@ 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; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix0; } - shiftbpl4_64(); - if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { - copybpl4_64(); - } - loaded_pix = getbpl4_64(); - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; @@ -404,11 +343,11 @@ static void lts_aga_fm2_n0_p4_ilores_dlores(void) denise_cck++; } } -static void lts_aga_fm2_n0_p4_ilores_dlores_filtered(void) +static void lts_aga_fm2_ehb0_p2_ilores_dlores_filtered(void) { lts_null(); } -static void lts_aga_fm2_n1_p4_ilores_dlores(void) +static void lts_aga_fm2_ehb1_p2_ilores_dlores(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -419,28 +358,12 @@ 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; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix0; } - shiftbpl4_64(); - if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { - copybpl4e_64(); - } - if (bpldat_copy[1] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[1]) { - copybpl4o_64(); - } - loaded_pix = getbpl4_64(); - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; @@ -475,11 +398,11 @@ static void lts_aga_fm2_n1_p4_ilores_dlores(void) denise_cck++; } } -static void lts_aga_fm2_n1_p4_ilores_dlores_filtered(void) +static void lts_aga_fm2_ehb1_p2_ilores_dlores_filtered(void) { lts_null(); } -static void lts_aga_fm2_dpf0_p4_ilores_dlores(void) +static void lts_aga_fm2_ham0_p2_ilores_dlores(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -490,30 +413,12 @@ 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; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; } - shiftbpl4_64(); - if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { - copybpl4_64(); - } - loaded_pix = getbpl4_64(); - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; @@ -548,11 +453,11 @@ static void lts_aga_fm2_dpf0_p4_ilores_dlores(void) denise_cck++; } } -static void lts_aga_fm2_dpf0_p4_ilores_dlores_filtered(void) +static void lts_aga_fm2_ham0_p2_ilores_dlores_filtered(void) { lts_null(); } -static void lts_aga_fm2_dpf1_p4_ilores_dlores(void) +static void lts_aga_fm2_ham1_p2_ilores_dlores(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -563,33 +468,12 @@ 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; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; - } - shiftbpl4_64(); - if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { - copybpl4e_64(); } - if (bpldat_copy[1] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[1]) { - copybpl4o_64(); - } - loaded_pix = getbpl4_64(); - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; @@ -624,59 +508,11 @@ static void lts_aga_fm2_dpf1_p4_ilores_dlores(void) denise_cck++; } } -static void lts_aga_fm2_dpf1_p4_ilores_dlores_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb0_p4_ilores_dlores(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb0_p4_ilores_dlores_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb1_p4_ilores_dlores(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb1_p4_ilores_dlores_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_ham0_p4_ilores_dlores(void) -{ - lts_null(); -} -static void lts_aga_fm2_ham0_p4_ilores_dlores_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_ham1_p4_ilores_dlores(void) -{ - lts_null(); -} -static void lts_aga_fm2_ham1_p4_ilores_dlores_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb0_p4_ilores_dlores(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb0_p4_ilores_dlores_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb1_p4_ilores_dlores(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb1_p4_ilores_dlores_filtered(void) +static void lts_aga_fm2_ham1_p2_ilores_dlores_filtered(void) { lts_null(); } -static void lts_aga_fm2_n0_p6_ilores_dlores(void) +static void lts_aga_fm2_kehb0_p2_ilores_dlores(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -687,25 +523,12 @@ 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; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix0; } - shiftbpl6_64(); - if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { - copybpl6_64(); - } - loaded_pix = getbpl6_64(); - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; @@ -740,11 +563,11 @@ static void lts_aga_fm2_n0_p6_ilores_dlores(void) denise_cck++; } } -static void lts_aga_fm2_n0_p6_ilores_dlores_filtered(void) +static void lts_aga_fm2_kehb0_p2_ilores_dlores_filtered(void) { lts_null(); } -static void lts_aga_fm2_n1_p6_ilores_dlores(void) +static void lts_aga_fm2_kehb1_p2_ilores_dlores(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -755,28 +578,12 @@ 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; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix0; - } - shiftbpl6_64(); - if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { - copybpl6e_64(); - } - if (bpldat_copy[1] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[1]) { - copybpl6o_64(); } - loaded_pix = getbpl6_64(); - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; @@ -811,11 +618,11 @@ static void lts_aga_fm2_n1_p6_ilores_dlores(void) denise_cck++; } } -static void lts_aga_fm2_n1_p6_ilores_dlores_filtered(void) +static void lts_aga_fm2_kehb1_p2_ilores_dlores_filtered(void) { lts_null(); } -static void lts_aga_fm2_dpf0_p6_ilores_dlores(void) +static void lts_aga_fm2_n0_p4_ilores_dlores(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -835,20 +642,15 @@ static void lts_aga_fm2_dpf0_p6_ilores_dlores(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix0; } - shiftbpl6_64(); + shiftbpl4_64(); if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { - copybpl6_64(); + copybpl4_64(); } - loaded_pix = getbpl6_64(); + loaded_pix = getbpl4_64(); loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { @@ -884,11 +686,11 @@ static void lts_aga_fm2_dpf0_p6_ilores_dlores(void) denise_cck++; } } -static void lts_aga_fm2_dpf0_p6_ilores_dlores_filtered(void) +static void lts_aga_fm2_n0_p4_ilores_dlores_filtered(void) { lts_null(); } -static void lts_aga_fm2_dpf1_p6_ilores_dlores(void) +static void lts_aga_fm2_n1_p4_ilores_dlores(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -908,23 +710,18 @@ static void lts_aga_fm2_dpf1_p6_ilores_dlores(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix0; } - shiftbpl6_64(); + shiftbpl4_64(); if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { - copybpl6e_64(); + copybpl4e_64(); } if (bpldat_copy[1] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[1]) { - copybpl6o_64(); + copybpl4o_64(); } - loaded_pix = getbpl6_64(); + loaded_pix = getbpl4_64(); loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { @@ -960,11 +757,11 @@ static void lts_aga_fm2_dpf1_p6_ilores_dlores(void) denise_cck++; } } -static void lts_aga_fm2_dpf1_p6_ilores_dlores_filtered(void) +static void lts_aga_fm2_n1_p4_ilores_dlores_filtered(void) { lts_null(); } -static void lts_aga_fm2_ehb0_p6_ilores_dlores(void) +static void lts_aga_fm2_dpf0_p4_ilores_dlores(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -984,21 +781,20 @@ static void lts_aga_fm2_ehb0_p6_ilores_dlores(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - pix0 ^= bplcon4_denise_xor_val; - if (!(pix0 & 0x20)) { - dpix_val0 = denise_colors.acolors[pix0]; - } else { - uae_u32 v = (denise_colors.color_regs_aga[pix0 & 0x1f] >> 1) & 0x7f7f7f; - dpix_val0 = CONVERT_RGB(v); + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; } last_bpl_pix = pix0; } - shiftbpl6_64(); + shiftbpl4_64(); if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { - copybpl6_64(); + copybpl4_64(); } - loaded_pix = getbpl6_64(); + loaded_pix = getbpl4_64(); loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { @@ -1034,11 +830,11 @@ static void lts_aga_fm2_ehb0_p6_ilores_dlores(void) denise_cck++; } } -static void lts_aga_fm2_ehb0_p6_ilores_dlores_filtered(void) +static void lts_aga_fm2_dpf0_p4_ilores_dlores_filtered(void) { lts_null(); } -static void lts_aga_fm2_ehb1_p6_ilores_dlores(void) +static void lts_aga_fm2_dpf1_p4_ilores_dlores(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -1058,24 +854,23 @@ static void lts_aga_fm2_ehb1_p6_ilores_dlores(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - pix0 ^= bplcon4_denise_xor_val; - if (!(pix0 & 0x20)) { - dpix_val0 = denise_colors.acolors[pix0]; - } else { - uae_u32 v = (denise_colors.color_regs_aga[pix0 & 0x1f] >> 1) & 0x7f7f7f; - dpix_val0 = CONVERT_RGB(v); + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; } last_bpl_pix = pix0; } - shiftbpl6_64(); + shiftbpl4_64(); if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { - copybpl6e_64(); + copybpl4e_64(); } if (bpldat_copy[1] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[1]) { - copybpl6o_64(); + copybpl4o_64(); } - loaded_pix = getbpl6_64(); + loaded_pix = getbpl4_64(); loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { @@ -1111,11 +906,11 @@ static void lts_aga_fm2_ehb1_p6_ilores_dlores(void) denise_cck++; } } -static void lts_aga_fm2_ehb1_p6_ilores_dlores_filtered(void) +static void lts_aga_fm2_dpf1_p4_ilores_dlores_filtered(void) { lts_null(); } -static void lts_aga_fm2_ham0_p6_ilores_dlores(void) +static void lts_aga_fm2_ehb0_p4_ilores_dlores(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -1126,25 +921,12 @@ 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; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = decode_ham_pixel_aga(pix0); - } - last_bpl_pix = pix0; - } - shiftbpl6_64(); - if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { - copybpl6_64(); } - loaded_pix = getbpl6_64(); - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; @@ -1179,11 +961,11 @@ static void lts_aga_fm2_ham0_p6_ilores_dlores(void) denise_cck++; } } -static void lts_aga_fm2_ham0_p6_ilores_dlores_filtered(void) +static void lts_aga_fm2_ehb0_p4_ilores_dlores_filtered(void) { lts_null(); } -static void lts_aga_fm2_ham1_p6_ilores_dlores(void) +static void lts_aga_fm2_ehb1_p4_ilores_dlores(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -1194,28 +976,67 @@ 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; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = decode_ham_pixel_aga(pix0); + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); } - last_bpl_pix = pix0; + #endif + *buf1++ = t0; + *buf2++ = t0; } - shiftbpl6_64(); - if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { - copybpl6e_64(); + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_ehb1_p4_ilores_dlores_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_ham0_p4_ilores_dlores(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; } - if (bpldat_copy[1] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[1]) { - copybpl6o_64(); + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; } - loaded_pix = getbpl6_64(); - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; @@ -1250,11 +1071,11 @@ static void lts_aga_fm2_ham1_p6_ilores_dlores(void) denise_cck++; } } -static void lts_aga_fm2_ham1_p6_ilores_dlores_filtered(void) +static void lts_aga_fm2_ham0_p4_ilores_dlores_filtered(void) { lts_null(); } -static void lts_aga_fm2_kehb0_p6_ilores_dlores(void) +static void lts_aga_fm2_ham1_p4_ilores_dlores(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -1265,26 +1086,12 @@ 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; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - pix0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[pix0 & 31]; - } - last_bpl_pix = pix0; - } - shiftbpl6_64(); - if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { - copybpl6_64(); } - loaded_pix = getbpl6_64(); - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; @@ -1319,11 +1126,11 @@ static void lts_aga_fm2_kehb0_p6_ilores_dlores(void) denise_cck++; } } -static void lts_aga_fm2_kehb0_p6_ilores_dlores_filtered(void) +static void lts_aga_fm2_ham1_p4_ilores_dlores_filtered(void) { lts_null(); } -static void lts_aga_fm2_kehb1_p6_ilores_dlores(void) +static void lts_aga_fm2_kehb0_p4_ilores_dlores(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -1334,29 +1141,67 @@ 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; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - pix0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[pix0 & 31]; + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); } - last_bpl_pix = pix0; + #endif + *buf1++ = t0; + *buf2++ = t0; } - shiftbpl6_64(); - if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { - copybpl6e_64(); + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_kehb0_p4_ilores_dlores_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_kehb1_p4_ilores_dlores(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; } - if (bpldat_copy[1] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[1]) { - copybpl6o_64(); + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; } - loaded_pix = getbpl6_64(); - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; @@ -1391,11 +1236,11 @@ static void lts_aga_fm2_kehb1_p6_ilores_dlores(void) denise_cck++; } } -static void lts_aga_fm2_kehb1_p6_ilores_dlores_filtered(void) +static void lts_aga_fm2_kehb1_p4_ilores_dlores_filtered(void) { lts_null(); } -static void lts_aga_fm2_n0_p8_ilores_dlores(void) +static void lts_aga_fm2_n0_p6_ilores_dlores(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -1419,11 +1264,11 @@ static void lts_aga_fm2_n0_p8_ilores_dlores(void) } last_bpl_pix = pix0; } - shiftbpl8_64(); + shiftbpl6_64(); if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); + copybpl6_64(); } - loaded_pix = getbpl8_64(); + loaded_pix = getbpl6_64(); loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { @@ -1459,11 +1304,11 @@ static void lts_aga_fm2_n0_p8_ilores_dlores(void) denise_cck++; } } -static void lts_aga_fm2_n0_p8_ilores_dlores_filtered(void) +static void lts_aga_fm2_n0_p6_ilores_dlores_filtered(void) { lts_null(); } -static void lts_aga_fm2_n1_p8_ilores_dlores(void) +static void lts_aga_fm2_n1_p6_ilores_dlores(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -1487,14 +1332,14 @@ static void lts_aga_fm2_n1_p8_ilores_dlores(void) } last_bpl_pix = pix0; } - shiftbpl8_64(); + shiftbpl6_64(); if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { - copybpl8e_64(); + copybpl6e_64(); } if (bpldat_copy[1] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); + copybpl6o_64(); } - loaded_pix = getbpl8_64(); + loaded_pix = getbpl6_64(); loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { @@ -1530,11 +1375,11 @@ static void lts_aga_fm2_n1_p8_ilores_dlores(void) denise_cck++; } } -static void lts_aga_fm2_n1_p8_ilores_dlores_filtered(void) +static void lts_aga_fm2_n1_p6_ilores_dlores_filtered(void) { lts_null(); } -static void lts_aga_fm2_dpf0_p8_ilores_dlores(void) +static void lts_aga_fm2_dpf0_p6_ilores_dlores(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -1563,11 +1408,11 @@ static void lts_aga_fm2_dpf0_p8_ilores_dlores(void) } last_bpl_pix = pix0; } - shiftbpl8_64(); + shiftbpl6_64(); if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); + copybpl6_64(); } - loaded_pix = getbpl8_64(); + loaded_pix = getbpl6_64(); loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { @@ -1603,11 +1448,11 @@ static void lts_aga_fm2_dpf0_p8_ilores_dlores(void) denise_cck++; } } -static void lts_aga_fm2_dpf0_p8_ilores_dlores_filtered(void) +static void lts_aga_fm2_dpf0_p6_ilores_dlores_filtered(void) { lts_null(); } -static void lts_aga_fm2_dpf1_p8_ilores_dlores(void) +static void lts_aga_fm2_dpf1_p6_ilores_dlores(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -1636,14 +1481,14 @@ static void lts_aga_fm2_dpf1_p8_ilores_dlores(void) } last_bpl_pix = pix0; } - shiftbpl8_64(); + shiftbpl6_64(); if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { - copybpl8e_64(); + copybpl6e_64(); } if (bpldat_copy[1] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); + copybpl6o_64(); } - loaded_pix = getbpl8_64(); + loaded_pix = getbpl6_64(); loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { @@ -1679,27 +1524,11 @@ static void lts_aga_fm2_dpf1_p8_ilores_dlores(void) denise_cck++; } } -static void lts_aga_fm2_dpf1_p8_ilores_dlores_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb0_p8_ilores_dlores(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb0_p8_ilores_dlores_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb1_p8_ilores_dlores(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb1_p8_ilores_dlores_filtered(void) +static void lts_aga_fm2_dpf1_p6_ilores_dlores_filtered(void) { lts_null(); } -static void lts_aga_fm2_ham0_p8_ilores_dlores(void) +static void lts_aga_fm2_ehb0_p6_ilores_dlores(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -1719,15 +1548,21 @@ static void lts_aga_fm2_ham0_p8_ilores_dlores(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - dpix_val0 = decode_ham_pixel_aga(pix0); + pix0 ^= bplcon4_denise_xor_val; + if (!(pix0 & 0x20)) { + dpix_val0 = denise_colors.acolors[pix0]; + } else { + uae_u32 v = (denise_colors.color_regs_aga[pix0 & 0x1f] >> 1) & 0x7f7f7f; + dpix_val0 = CONVERT_RGB(v); + } } last_bpl_pix = pix0; } - shiftbpl8_64(); + shiftbpl6_64(); if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); + copybpl6_64(); } - loaded_pix = getbpl8_64(); + loaded_pix = getbpl6_64(); loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { @@ -1763,11 +1598,11 @@ static void lts_aga_fm2_ham0_p8_ilores_dlores(void) denise_cck++; } } -static void lts_aga_fm2_ham0_p8_ilores_dlores_filtered(void) +static void lts_aga_fm2_ehb0_p6_ilores_dlores_filtered(void) { lts_null(); } -static void lts_aga_fm2_ham1_p8_ilores_dlores(void) +static void lts_aga_fm2_ehb1_p6_ilores_dlores(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -1787,18 +1622,24 @@ static void lts_aga_fm2_ham1_p8_ilores_dlores(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - dpix_val0 = decode_ham_pixel_aga(pix0); + pix0 ^= bplcon4_denise_xor_val; + if (!(pix0 & 0x20)) { + dpix_val0 = denise_colors.acolors[pix0]; + } else { + uae_u32 v = (denise_colors.color_regs_aga[pix0 & 0x1f] >> 1) & 0x7f7f7f; + dpix_val0 = CONVERT_RGB(v); + } } last_bpl_pix = pix0; } - shiftbpl8_64(); + shiftbpl6_64(); if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { - copybpl8e_64(); + copybpl6e_64(); } if (bpldat_copy[1] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); + copybpl6o_64(); } - loaded_pix = getbpl8_64(); + loaded_pix = getbpl6_64(); loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { @@ -1834,27 +1675,11 @@ static void lts_aga_fm2_ham1_p8_ilores_dlores(void) denise_cck++; } } -static void lts_aga_fm2_ham1_p8_ilores_dlores_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb0_p8_ilores_dlores(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb0_p8_ilores_dlores_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb1_p8_ilores_dlores(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb1_p8_ilores_dlores_filtered(void) +static void lts_aga_fm2_ehb1_p6_ilores_dlores_filtered(void) { lts_null(); } -static void lts_aga_fm2_n0_p2_ilores_dlores_spr(void) +static void lts_aga_fm2_ham0_p6_ilores_dlores(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -1867,7 +1692,6 @@ static void lts_aga_fm2_n0_p2_ilores_dlores_spr(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -1875,32 +1699,18 @@ static void lts_aga_fm2_n0_p2_ilores_dlores_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + dpix_val0 = decode_ham_pixel_aga(pix0); } last_bpl_pix = pix0; } - shiftbpl2_64(); + shiftbpl6_64(); if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { - copybpl2_64(); - } - loaded_pix = getbpl2_64(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } + copybpl6_64(); } + loaded_pix = getbpl6_64(); loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - } - } dtbuf[h][0] = dpix_val0; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -1933,11 +1743,11 @@ static void lts_aga_fm2_n0_p2_ilores_dlores_spr(void) denise_cck++; } } -static void lts_aga_fm2_n0_p2_ilores_dlores_spr_filtered(void) +static void lts_aga_fm2_ham0_p6_ilores_dlores_filtered(void) { lts_null(); } -static void lts_aga_fm2_n1_p2_ilores_dlores_spr(void) +static void lts_aga_fm2_ham1_p6_ilores_dlores(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -1950,7 +1760,6 @@ static void lts_aga_fm2_n1_p2_ilores_dlores_spr(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -1958,35 +1767,21 @@ static void lts_aga_fm2_n1_p2_ilores_dlores_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + dpix_val0 = decode_ham_pixel_aga(pix0); } last_bpl_pix = pix0; } - shiftbpl2_64(); + shiftbpl6_64(); if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { - copybpl2e_64(); + copybpl6e_64(); } if (bpldat_copy[1] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[1]) { - copybpl2o_64(); - } - loaded_pix = getbpl2_64(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } + copybpl6o_64(); } + loaded_pix = getbpl6_64(); loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - } - } dtbuf[h][0] = dpix_val0; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -2019,11 +1814,11 @@ static void lts_aga_fm2_n1_p2_ilores_dlores_spr(void) denise_cck++; } } -static void lts_aga_fm2_n1_p2_ilores_dlores_spr_filtered(void) +static void lts_aga_fm2_ham1_p6_ilores_dlores_filtered(void) { lts_null(); } -static void lts_aga_fm2_dpf0_p2_ilores_dlores_spr(void) +static void lts_aga_fm2_kehb0_p6_ilores_dlores(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -2036,7 +1831,6 @@ static void lts_aga_fm2_dpf0_p2_ilores_dlores_spr(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -2044,37 +1838,19 @@ static void lts_aga_fm2_dpf0_p2_ilores_dlores_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; + pix0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[pix0 & 31]; } last_bpl_pix = pix0; } - shiftbpl2_64(); + shiftbpl6_64(); if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { - copybpl2_64(); - } - loaded_pix = getbpl2_64(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } + copybpl6_64(); } + loaded_pix = getbpl6_64(); loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - } - } dtbuf[h][0] = dpix_val0; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -2107,11 +1883,11 @@ static void lts_aga_fm2_dpf0_p2_ilores_dlores_spr(void) denise_cck++; } } -static void lts_aga_fm2_dpf0_p2_ilores_dlores_spr_filtered(void) +static void lts_aga_fm2_kehb0_p6_ilores_dlores_filtered(void) { lts_null(); } -static void lts_aga_fm2_dpf1_p2_ilores_dlores_spr(void) +static void lts_aga_fm2_kehb1_p6_ilores_dlores(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -2124,7 +1900,6 @@ static void lts_aga_fm2_dpf1_p2_ilores_dlores_spr(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -2132,40 +1907,22 @@ static void lts_aga_fm2_dpf1_p2_ilores_dlores_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; + pix0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[pix0 & 31]; } last_bpl_pix = pix0; } - shiftbpl2_64(); + shiftbpl6_64(); if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { - copybpl2e_64(); + copybpl6e_64(); } if (bpldat_copy[1] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[1]) { - copybpl2o_64(); - } - loaded_pix = getbpl2_64(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } + copybpl6o_64(); } + loaded_pix = getbpl6_64(); loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - } - } dtbuf[h][0] = dpix_val0; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -2198,59 +1955,11 @@ static void lts_aga_fm2_dpf1_p2_ilores_dlores_spr(void) denise_cck++; } } -static void lts_aga_fm2_dpf1_p2_ilores_dlores_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb0_p2_ilores_dlores_spr(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb0_p2_ilores_dlores_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb1_p2_ilores_dlores_spr(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb1_p2_ilores_dlores_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_ham0_p2_ilores_dlores_spr(void) -{ - lts_null(); -} -static void lts_aga_fm2_ham0_p2_ilores_dlores_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_ham1_p2_ilores_dlores_spr(void) -{ - lts_null(); -} -static void lts_aga_fm2_ham1_p2_ilores_dlores_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb0_p2_ilores_dlores_spr(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb0_p2_ilores_dlores_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb1_p2_ilores_dlores_spr(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb1_p2_ilores_dlores_spr_filtered(void) +static void lts_aga_fm2_kehb1_p6_ilores_dlores_filtered(void) { lts_null(); } -static void lts_aga_fm2_n0_p4_ilores_dlores_spr(void) +static void lts_aga_fm2_n0_p8_ilores_dlores(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -2263,7 +1972,6 @@ static void lts_aga_fm2_n0_p4_ilores_dlores_spr(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -2275,28 +1983,14 @@ static void lts_aga_fm2_n0_p4_ilores_dlores_spr(void) } last_bpl_pix = pix0; } - shiftbpl4_64(); + shiftbpl8_64(); if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { - copybpl4_64(); - } - loaded_pix = getbpl4_64(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } + copybpl8_64(); } + loaded_pix = getbpl8_64(); loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - } - } dtbuf[h][0] = dpix_val0; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -2329,11 +2023,11 @@ static void lts_aga_fm2_n0_p4_ilores_dlores_spr(void) denise_cck++; } } -static void lts_aga_fm2_n0_p4_ilores_dlores_spr_filtered(void) +static void lts_aga_fm2_n0_p8_ilores_dlores_filtered(void) { lts_null(); } -static void lts_aga_fm2_n1_p4_ilores_dlores_spr(void) +static void lts_aga_fm2_n1_p8_ilores_dlores(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -2346,7 +2040,6 @@ static void lts_aga_fm2_n1_p4_ilores_dlores_spr(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -2358,31 +2051,17 @@ static void lts_aga_fm2_n1_p4_ilores_dlores_spr(void) } last_bpl_pix = pix0; } - shiftbpl4_64(); + shiftbpl8_64(); if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { - copybpl4e_64(); + copybpl8e_64(); } if (bpldat_copy[1] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[1]) { - copybpl4o_64(); - } - loaded_pix = getbpl4_64(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } + copybpl8o_64(); } + loaded_pix = getbpl8_64(); loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - } - } dtbuf[h][0] = dpix_val0; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -2415,11 +2094,11 @@ static void lts_aga_fm2_n1_p4_ilores_dlores_spr(void) denise_cck++; } } -static void lts_aga_fm2_n1_p4_ilores_dlores_spr_filtered(void) +static void lts_aga_fm2_n1_p8_ilores_dlores_filtered(void) { lts_null(); } -static void lts_aga_fm2_dpf0_p4_ilores_dlores_spr(void) +static void lts_aga_fm2_dpf0_p8_ilores_dlores(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -2432,7 +2111,6 @@ static void lts_aga_fm2_dpf0_p4_ilores_dlores_spr(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -2449,28 +2127,14 @@ static void lts_aga_fm2_dpf0_p4_ilores_dlores_spr(void) } last_bpl_pix = pix0; } - shiftbpl4_64(); + shiftbpl8_64(); if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { - copybpl4_64(); - } - loaded_pix = getbpl4_64(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } + copybpl8_64(); } + loaded_pix = getbpl8_64(); loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - } - } dtbuf[h][0] = dpix_val0; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -2503,11 +2167,11 @@ static void lts_aga_fm2_dpf0_p4_ilores_dlores_spr(void) denise_cck++; } } -static void lts_aga_fm2_dpf0_p4_ilores_dlores_spr_filtered(void) +static void lts_aga_fm2_dpf0_p8_ilores_dlores_filtered(void) { lts_null(); } -static void lts_aga_fm2_dpf1_p4_ilores_dlores_spr(void) +static void lts_aga_fm2_dpf1_p8_ilores_dlores(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -2520,7 +2184,6 @@ static void lts_aga_fm2_dpf1_p4_ilores_dlores_spr(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -2537,31 +2200,17 @@ static void lts_aga_fm2_dpf1_p4_ilores_dlores_spr(void) } last_bpl_pix = pix0; } - shiftbpl4_64(); + shiftbpl8_64(); if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { - copybpl4e_64(); + copybpl8e_64(); } if (bpldat_copy[1] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[1]) { - copybpl4o_64(); - } - loaded_pix = getbpl4_64(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } + copybpl8o_64(); } + loaded_pix = getbpl8_64(); loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - } - } dtbuf[h][0] = dpix_val0; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -2594,59 +2243,11 @@ static void lts_aga_fm2_dpf1_p4_ilores_dlores_spr(void) denise_cck++; } } -static void lts_aga_fm2_dpf1_p4_ilores_dlores_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb0_p4_ilores_dlores_spr(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb0_p4_ilores_dlores_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb1_p4_ilores_dlores_spr(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb1_p4_ilores_dlores_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_ham0_p4_ilores_dlores_spr(void) -{ - lts_null(); -} -static void lts_aga_fm2_ham0_p4_ilores_dlores_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_ham1_p4_ilores_dlores_spr(void) -{ - lts_null(); -} -static void lts_aga_fm2_ham1_p4_ilores_dlores_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb0_p4_ilores_dlores_spr(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb0_p4_ilores_dlores_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb1_p4_ilores_dlores_spr(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb1_p4_ilores_dlores_spr_filtered(void) +static void lts_aga_fm2_dpf1_p8_ilores_dlores_filtered(void) { lts_null(); } -static void lts_aga_fm2_n0_p6_ilores_dlores_spr(void) +static void lts_aga_fm2_ehb0_p8_ilores_dlores(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -2657,42 +2258,14 @@ 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; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix0; } - shiftbpl6_64(); - if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { - copybpl6_64(); - } - loaded_pix = getbpl6_64(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } - } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - } - } dtbuf[h][0] = dpix_val0; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -2725,11 +2298,11 @@ static void lts_aga_fm2_n0_p6_ilores_dlores_spr(void) denise_cck++; } } -static void lts_aga_fm2_n0_p6_ilores_dlores_spr_filtered(void) +static void lts_aga_fm2_ehb0_p8_ilores_dlores_filtered(void) { lts_null(); } -static void lts_aga_fm2_n1_p6_ilores_dlores_spr(void) +static void lts_aga_fm2_ehb1_p8_ilores_dlores(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -2740,45 +2313,14 @@ 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; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix0; } - shiftbpl6_64(); - if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { - copybpl6e_64(); - } - if (bpldat_copy[1] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[1]) { - copybpl6o_64(); - } - loaded_pix = getbpl6_64(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } - } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - } - } dtbuf[h][0] = dpix_val0; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -2811,11 +2353,11 @@ static void lts_aga_fm2_n1_p6_ilores_dlores_spr(void) denise_cck++; } } -static void lts_aga_fm2_n1_p6_ilores_dlores_spr_filtered(void) +static void lts_aga_fm2_ehb1_p8_ilores_dlores_filtered(void) { lts_null(); } -static void lts_aga_fm2_dpf0_p6_ilores_dlores_spr(void) +static void lts_aga_fm2_ham0_p8_ilores_dlores(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -2828,7 +2370,6 @@ static void lts_aga_fm2_dpf0_p6_ilores_dlores_spr(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -2836,37 +2377,18 @@ static void lts_aga_fm2_dpf0_p6_ilores_dlores_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; + dpix_val0 = decode_ham_pixel_aga(pix0); } last_bpl_pix = pix0; } - shiftbpl6_64(); + shiftbpl8_64(); if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { - copybpl6_64(); - } - loaded_pix = getbpl6_64(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } + copybpl8_64(); } + loaded_pix = getbpl8_64(); loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - } - } dtbuf[h][0] = dpix_val0; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -2899,11 +2421,11 @@ static void lts_aga_fm2_dpf0_p6_ilores_dlores_spr(void) denise_cck++; } } -static void lts_aga_fm2_dpf0_p6_ilores_dlores_spr_filtered(void) +static void lts_aga_fm2_ham0_p8_ilores_dlores_filtered(void) { lts_null(); } -static void lts_aga_fm2_dpf1_p6_ilores_dlores_spr(void) +static void lts_aga_fm2_ham1_p8_ilores_dlores(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -2916,7 +2438,6 @@ static void lts_aga_fm2_dpf1_p6_ilores_dlores_spr(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -2924,40 +2445,21 @@ static void lts_aga_fm2_dpf1_p6_ilores_dlores_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; + dpix_val0 = decode_ham_pixel_aga(pix0); } last_bpl_pix = pix0; } - shiftbpl6_64(); + shiftbpl8_64(); if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { - copybpl6e_64(); + copybpl8e_64(); } if (bpldat_copy[1] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[1]) { - copybpl6o_64(); - } - loaded_pix = getbpl6_64(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } + copybpl8o_64(); } + loaded_pix = getbpl8_64(); loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - } - } dtbuf[h][0] = dpix_val0; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -2990,11 +2492,11 @@ static void lts_aga_fm2_dpf1_p6_ilores_dlores_spr(void) denise_cck++; } } -static void lts_aga_fm2_dpf1_p6_ilores_dlores_spr_filtered(void) +static void lts_aga_fm2_ham1_p8_ilores_dlores_filtered(void) { lts_null(); } -static void lts_aga_fm2_ehb0_p6_ilores_dlores_spr(void) +static void lts_aga_fm2_kehb0_p8_ilores_dlores(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -3005,48 +2507,14 @@ 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; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - pix0 ^= bplcon4_denise_xor_val; - if (!(pix0 & 0x20)) { - dpix_val0 = denise_colors.acolors[pix0]; - } else { - uae_u32 v = (denise_colors.color_regs_aga[pix0 & 0x1f] >> 1) & 0x7f7f7f; - dpix_val0 = CONVERT_RGB(v); - } - } - last_bpl_pix = pix0; - } - shiftbpl6_64(); - if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { - copybpl6_64(); - } - loaded_pix = getbpl6_64(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - } - } dtbuf[h][0] = dpix_val0; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -3079,11 +2547,66 @@ static void lts_aga_fm2_ehb0_p6_ilores_dlores_spr(void) denise_cck++; } } -static void lts_aga_fm2_ehb0_p6_ilores_dlores_spr_filtered(void) +static void lts_aga_fm2_kehb0_p8_ilores_dlores_filtered(void) { lts_null(); } -static void lts_aga_fm2_ehb1_p6_ilores_dlores_spr(void) +static void lts_aga_fm2_kehb1_p8_ilores_dlores(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_kehb1_p8_ilores_dlores_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_n0_p2_ilores_dlores_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -3104,24 +2627,15 @@ static void lts_aga_fm2_ehb1_p6_ilores_dlores_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - pix0 ^= bplcon4_denise_xor_val; - if (!(pix0 & 0x20)) { - dpix_val0 = denise_colors.acolors[pix0]; - } else { - uae_u32 v = (denise_colors.color_regs_aga[pix0 & 0x1f] >> 1) & 0x7f7f7f; - dpix_val0 = CONVERT_RGB(v); - } + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix0; } - shiftbpl6_64(); + shiftbpl2_64(); if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { - copybpl6e_64(); - } - if (bpldat_copy[1] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[1]) { - copybpl6o_64(); + copybpl2_64(); } - loaded_pix = getbpl6_64(); + loaded_pix = getbpl2_64(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -3171,11 +2685,11 @@ static void lts_aga_fm2_ehb1_p6_ilores_dlores_spr(void) denise_cck++; } } -static void lts_aga_fm2_ehb1_p6_ilores_dlores_spr_filtered(void) +static void lts_aga_fm2_n0_p2_ilores_dlores_spr_filtered(void) { lts_null(); } -static void lts_aga_fm2_ham0_p6_ilores_dlores_spr(void) +static void lts_aga_fm2_n1_p2_ilores_dlores_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -3196,15 +2710,18 @@ static void lts_aga_fm2_ham0_p6_ilores_dlores_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - dpix_val0 = decode_ham_pixel_aga(pix0); + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix0; } - shiftbpl6_64(); + shiftbpl2_64(); if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { - copybpl6_64(); + copybpl2e_64(); } - loaded_pix = getbpl6_64(); + if (bpldat_copy[1] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[1]) { + copybpl2o_64(); + } + loaded_pix = getbpl2_64(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -3254,11 +2771,11 @@ static void lts_aga_fm2_ham0_p6_ilores_dlores_spr(void) denise_cck++; } } -static void lts_aga_fm2_ham0_p6_ilores_dlores_spr_filtered(void) +static void lts_aga_fm2_n1_p2_ilores_dlores_spr_filtered(void) { lts_null(); } -static void lts_aga_fm2_ham1_p6_ilores_dlores_spr(void) +static void lts_aga_fm2_dpf0_p2_ilores_dlores_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -3279,18 +2796,20 @@ static void lts_aga_fm2_ham1_p6_ilores_dlores_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - dpix_val0 = decode_ham_pixel_aga(pix0); + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; } last_bpl_pix = pix0; } - shiftbpl6_64(); + shiftbpl2_64(); if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { - copybpl6e_64(); - } - if (bpldat_copy[1] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[1]) { - copybpl6o_64(); + copybpl2_64(); } - loaded_pix = getbpl6_64(); + loaded_pix = getbpl2_64(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -3340,11 +2859,11 @@ static void lts_aga_fm2_ham1_p6_ilores_dlores_spr(void) denise_cck++; } } -static void lts_aga_fm2_ham1_p6_ilores_dlores_spr_filtered(void) +static void lts_aga_fm2_dpf0_p2_ilores_dlores_spr_filtered(void) { lts_null(); } -static void lts_aga_fm2_kehb0_p6_ilores_dlores_spr(void) +static void lts_aga_fm2_dpf1_p2_ilores_dlores_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -3365,16 +2884,23 @@ static void lts_aga_fm2_kehb0_p6_ilores_dlores_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - pix0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[pix0 & 31]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; } last_bpl_pix = pix0; } - shiftbpl6_64(); + shiftbpl2_64(); if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { - copybpl6_64(); + copybpl2e_64(); } - loaded_pix = getbpl6_64(); + if (bpldat_copy[1] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[1]) { + copybpl2o_64(); + } + loaded_pix = getbpl2_64(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -3424,11 +2950,11 @@ static void lts_aga_fm2_kehb0_p6_ilores_dlores_spr(void) denise_cck++; } } -static void lts_aga_fm2_kehb0_p6_ilores_dlores_spr_filtered(void) +static void lts_aga_fm2_dpf1_p2_ilores_dlores_spr_filtered(void) { lts_null(); } -static void lts_aga_fm2_kehb1_p6_ilores_dlores_spr(void) +static void lts_aga_fm2_ehb0_p2_ilores_dlores_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -3439,29 +2965,13 @@ 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; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - pix0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[pix0 & 31]; - } - last_bpl_pix = pix0; } - shiftbpl6_64(); - if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { - copybpl6e_64(); - } - if (bpldat_copy[1] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[1]) { - copybpl6o_64(); - } - loaded_pix = getbpl6_64(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -3470,7 +2980,6 @@ static void lts_aga_fm2_kehb1_p6_ilores_dlores_spr(void) sv0 = svt; } } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { @@ -3511,11 +3020,11 @@ static void lts_aga_fm2_kehb1_p6_ilores_dlores_spr(void) denise_cck++; } } -static void lts_aga_fm2_kehb1_p6_ilores_dlores_spr_filtered(void) +static void lts_aga_fm2_ehb0_p2_ilores_dlores_spr_filtered(void) { lts_null(); } -static void lts_aga_fm2_n0_p8_ilores_dlores_spr(void) +static void lts_aga_fm2_ehb1_p2_ilores_dlores_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -3526,25 +3035,13 @@ 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; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix0; - } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); } - loaded_pix = getbpl8_64(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -3553,7 +3050,6 @@ static void lts_aga_fm2_n0_p8_ilores_dlores_spr(void) sv0 = svt; } } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { @@ -3594,11 +3090,11 @@ static void lts_aga_fm2_n0_p8_ilores_dlores_spr(void) denise_cck++; } } -static void lts_aga_fm2_n0_p8_ilores_dlores_spr_filtered(void) +static void lts_aga_fm2_ehb1_p2_ilores_dlores_spr_filtered(void) { lts_null(); } -static void lts_aga_fm2_n1_p8_ilores_dlores_spr(void) +static void lts_aga_fm2_ham0_p2_ilores_dlores_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -3609,28 +3105,13 @@ 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; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix0; - } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { - copybpl8e_64(); } - if (bpldat_copy[1] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); - } - loaded_pix = getbpl8_64(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -3639,7 +3120,6 @@ static void lts_aga_fm2_n1_p8_ilores_dlores_spr(void) sv0 = svt; } } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { @@ -3680,11 +3160,11 @@ static void lts_aga_fm2_n1_p8_ilores_dlores_spr(void) denise_cck++; } } -static void lts_aga_fm2_n1_p8_ilores_dlores_spr_filtered(void) +static void lts_aga_fm2_ham0_p2_ilores_dlores_spr_filtered(void) { lts_null(); } -static void lts_aga_fm2_dpf0_p8_ilores_dlores_spr(void) +static void lts_aga_fm2_ham1_p2_ilores_dlores_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -3695,30 +3175,13 @@ 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; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); - } - loaded_pix = getbpl8_64(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -3727,7 +3190,6 @@ static void lts_aga_fm2_dpf0_p8_ilores_dlores_spr(void) sv0 = svt; } } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { @@ -3768,11 +3230,11 @@ static void lts_aga_fm2_dpf0_p8_ilores_dlores_spr(void) denise_cck++; } } -static void lts_aga_fm2_dpf0_p8_ilores_dlores_spr_filtered(void) +static void lts_aga_fm2_ham1_p2_ilores_dlores_spr_filtered(void) { lts_null(); } -static void lts_aga_fm2_dpf1_p8_ilores_dlores_spr(void) +static void lts_aga_fm2_kehb0_p2_ilores_dlores_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -3783,33 +3245,13 @@ 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; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { - copybpl8e_64(); - } - if (bpldat_copy[1] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); - } - loaded_pix = getbpl8_64(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -3818,7 +3260,6 @@ static void lts_aga_fm2_dpf1_p8_ilores_dlores_spr(void) sv0 = svt; } } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { @@ -3859,27 +3300,11 @@ static void lts_aga_fm2_dpf1_p8_ilores_dlores_spr(void) denise_cck++; } } -static void lts_aga_fm2_dpf1_p8_ilores_dlores_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb0_p8_ilores_dlores_spr(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb0_p8_ilores_dlores_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb1_p8_ilores_dlores_spr(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb1_p8_ilores_dlores_spr_filtered(void) +static void lts_aga_fm2_kehb0_p2_ilores_dlores_spr_filtered(void) { lts_null(); } -static void lts_aga_fm2_ham0_p8_ilores_dlores_spr(void) +static void lts_aga_fm2_kehb1_p2_ilores_dlores_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -3890,25 +3315,13 @@ 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; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = decode_ham_pixel_aga(pix0); - } - last_bpl_pix = pix0; - } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); } - loaded_pix = getbpl8_64(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -3917,7 +3330,6 @@ static void lts_aga_fm2_ham0_p8_ilores_dlores_spr(void) sv0 = svt; } } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { @@ -3958,11 +3370,11 @@ static void lts_aga_fm2_ham0_p8_ilores_dlores_spr(void) denise_cck++; } } -static void lts_aga_fm2_ham0_p8_ilores_dlores_spr_filtered(void) +static void lts_aga_fm2_kehb1_p2_ilores_dlores_spr_filtered(void) { lts_null(); } -static void lts_aga_fm2_ham1_p8_ilores_dlores_spr(void) +static void lts_aga_fm2_n0_p4_ilores_dlores_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -3983,18 +3395,15 @@ static void lts_aga_fm2_ham1_p8_ilores_dlores_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - dpix_val0 = decode_ham_pixel_aga(pix0); + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix0; } - shiftbpl8_64(); + shiftbpl4_64(); if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { - copybpl8e_64(); - } - if (bpldat_copy[1] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); + copybpl4_64(); } - loaded_pix = getbpl8_64(); + loaded_pix = getbpl4_64(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -4044,27 +3453,11 @@ static void lts_aga_fm2_ham1_p8_ilores_dlores_spr(void) denise_cck++; } } -static void lts_aga_fm2_ham1_p8_ilores_dlores_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb0_p8_ilores_dlores_spr(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb0_p8_ilores_dlores_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb1_p8_ilores_dlores_spr(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb1_p8_ilores_dlores_spr_filtered(void) +static void lts_aga_fm2_n0_p4_ilores_dlores_spr_filtered(void) { lts_null(); } -static void lts_aga_fm2_n0_p2_ihires_dlores(void) +static void lts_aga_fm2_n1_p4_ilores_dlores_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -4077,6 +3470,7 @@ static void lts_aga_fm2_n0_p2_ihires_dlores(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -4088,15 +3482,31 @@ static void lts_aga_fm2_n0_p2_ihires_dlores(void) } last_bpl_pix = pix0; } - shiftbpl2_64(); - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl2_64(); + shiftbpl4_64(); + if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { + copybpl4e_64(); + } + if (bpldat_copy[1] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[1]) { + copybpl4o_64(); + } + loaded_pix = getbpl4_64(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } } - loaded_pix = getbpl2_64(); loaded_pixs[0] = loaded_pix; - shiftbpl2_64(); internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } dtbuf[h][0] = dpix_val0; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -4129,7 +3539,11 @@ static void lts_aga_fm2_n0_p2_ihires_dlores(void) denise_cck++; } } -static void lts_aga_fm2_n0_p2_ihires_dlores_filtered(void) +static void lts_aga_fm2_n1_p4_ilores_dlores_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_dpf0_p4_ilores_dlores_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -4142,6 +3556,7 @@ static void lts_aga_fm2_n0_p2_ihires_dlores_filtered(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -4149,36 +3564,37 @@ static void lts_aga_fm2_n0_p2_ihires_dlores_filtered(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; } last_bpl_pix = pix0; } - shiftbpl2_64(); - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl2_64(); + shiftbpl4_64(); + if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { + copybpl4_64(); } - loaded_pix = getbpl2_64(); - loaded_pixs[0] = loaded_pix; - uae_u8 pix1 = 0; - uae_u32 dpix_val1 = BLANK_COLOR; - if (!denise_blank_active) { - dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; + loaded_pix = getbpl4_64(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; } - last_bpl_pix = pix1; - } - shiftbpl2_64(); - if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { - copybpl2_64(); } - loaded_pix = getbpl2_64(); - loaded_pixs[1] = loaded_pix; + loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } dtbuf[h][0] = dpix_val0; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -4211,7 +3627,11 @@ static void lts_aga_fm2_n0_p2_ihires_dlores_filtered(void) denise_cck++; } } -static void lts_aga_fm2_n1_p2_ihires_dlores(void) +static void lts_aga_fm2_dpf0_p4_ilores_dlores_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_dpf1_p4_ilores_dlores_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -4224,6 +3644,7 @@ static void lts_aga_fm2_n1_p2_ihires_dlores(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -4231,22 +3652,40 @@ static void lts_aga_fm2_n1_p2_ihires_dlores(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; } last_bpl_pix = pix0; } - shiftbpl2_64(); - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl2e_64(); + shiftbpl4_64(); + if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { + copybpl4e_64(); } - if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { - copybpl2o_64(); + if (bpldat_copy[1] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[1]) { + copybpl4o_64(); + } + loaded_pix = getbpl4_64(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } } - loaded_pix = getbpl2_64(); loaded_pixs[0] = loaded_pix; - shiftbpl2_64(); internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } dtbuf[h][0] = dpix_val0; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -4279,7 +3718,11 @@ static void lts_aga_fm2_n1_p2_ihires_dlores(void) denise_cck++; } } -static void lts_aga_fm2_n1_p2_ihires_dlores_filtered(void) +static void lts_aga_fm2_dpf1_p4_ilores_dlores_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_ehb0_p4_ilores_dlores_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -4290,51 +3733,29 @@ 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; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix0; - } - shiftbpl2_64(); - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl2e_64(); - } - if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { - copybpl2o_64(); } - loaded_pix = getbpl2_64(); - loaded_pixs[0] = loaded_pix; - uae_u8 pix1 = 0; - uae_u32 dpix_val1 = BLANK_COLOR; - if (!denise_blank_active) { - dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; } - last_bpl_pix = pix1; - } - shiftbpl2_64(); - if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { - copybpl2e_64(); - } - if (bpldat_copy[1] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) { - copybpl2o_64(); } - loaded_pix = getbpl2_64(); - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } dtbuf[h][0] = dpix_val0; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -4367,7 +3788,11 @@ static void lts_aga_fm2_n1_p2_ihires_dlores_filtered(void) denise_cck++; } } -static void lts_aga_fm2_dpf0_p2_ihires_dlores(void) +static void lts_aga_fm2_ehb0_p4_ilores_dlores_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_ehb1_p4_ilores_dlores_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -4378,33 +3803,29 @@ 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; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; } - shiftbpl2_64(); - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl2_64(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } } - loaded_pix = getbpl2_64(); - loaded_pixs[0] = loaded_pix; - shiftbpl2_64(); internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } dtbuf[h][0] = dpix_val0; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -4437,7 +3858,11 @@ static void lts_aga_fm2_dpf0_p2_ihires_dlores(void) denise_cck++; } } -static void lts_aga_fm2_dpf0_p2_ihires_dlores_filtered(void) +static void lts_aga_fm2_ehb1_p4_ilores_dlores_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_ham0_p4_ilores_dlores_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -4448,55 +3873,29 @@ 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; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; - } - shiftbpl2_64(); - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl2_64(); } - loaded_pix = getbpl2_64(); - loaded_pixs[0] = loaded_pix; - uae_u8 pix1 = 0; - uae_u32 dpix_val1 = BLANK_COLOR; - if (!denise_blank_active) { - dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - if (dpf_lookup_no[pix1]) { - val1 += dblpfofs[bpldualpf2of]; - } - val1 ^= bplcon4_denise_xor_val; - dpix_val1 = denise_colors.acolors[val1]; + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; } - last_bpl_pix = pix1; - } - shiftbpl2_64(); - if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { - copybpl2_64(); } - loaded_pix = getbpl2_64(); - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } dtbuf[h][0] = dpix_val0; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -4529,7 +3928,11 @@ static void lts_aga_fm2_dpf0_p2_ihires_dlores_filtered(void) denise_cck++; } } -static void lts_aga_fm2_dpf1_p2_ihires_dlores(void) +static void lts_aga_fm2_ham0_p4_ilores_dlores_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_ham1_p4_ilores_dlores_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -4540,36 +3943,29 @@ 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; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; - } - shiftbpl2_64(); - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl2e_64(); } - if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { - copybpl2o_64(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } } - loaded_pix = getbpl2_64(); - loaded_pixs[0] = loaded_pix; - shiftbpl2_64(); internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } dtbuf[h][0] = dpix_val0; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -4602,7 +3998,11 @@ static void lts_aga_fm2_dpf1_p2_ihires_dlores(void) denise_cck++; } } -static void lts_aga_fm2_dpf1_p2_ihires_dlores_filtered(void) +static void lts_aga_fm2_ham1_p4_ilores_dlores_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_kehb0_p4_ilores_dlores_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -4613,61 +4013,29 @@ 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; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; - } - shiftbpl2_64(); - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl2e_64(); - } - if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { - copybpl2o_64(); } - loaded_pix = getbpl2_64(); - loaded_pixs[0] = loaded_pix; - uae_u8 pix1 = 0; - uae_u32 dpix_val1 = BLANK_COLOR; - if (!denise_blank_active) { - dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - if (dpf_lookup_no[pix1]) { - val1 += dblpfofs[bpldualpf2of]; - } - val1 ^= bplcon4_denise_xor_val; - dpix_val1 = denise_colors.acolors[val1]; + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; } - last_bpl_pix = pix1; - } - shiftbpl2_64(); - if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { - copybpl2e_64(); - } - if (bpldat_copy[1] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) { - copybpl2o_64(); } - loaded_pix = getbpl2_64(); - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } dtbuf[h][0] = dpix_val0; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -4700,55 +4068,11 @@ static void lts_aga_fm2_dpf1_p2_ihires_dlores_filtered(void) denise_cck++; } } -static void lts_aga_fm2_ehb0_p2_ihires_dlores(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb0_p2_ihires_dlores_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb1_p2_ihires_dlores(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb1_p2_ihires_dlores_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_ham0_p2_ihires_dlores(void) -{ - lts_null(); -} -static void lts_aga_fm2_ham0_p2_ihires_dlores_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_ham1_p2_ihires_dlores(void) -{ - lts_null(); -} -static void lts_aga_fm2_ham1_p2_ihires_dlores_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb0_p2_ihires_dlores(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb0_p2_ihires_dlores_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb1_p2_ihires_dlores(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb1_p2_ihires_dlores_filtered(void) +static void lts_aga_fm2_kehb0_p4_ilores_dlores_spr_filtered(void) { lts_null(); } -static void lts_aga_fm2_n0_p4_ihires_dlores(void) +static void lts_aga_fm2_kehb1_p4_ilores_dlores_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -4759,28 +4083,29 @@ 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; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix0; } - shiftbpl4_64(); - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl4_64(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } } - loaded_pix = getbpl4_64(); - loaded_pixs[0] = loaded_pix; - shiftbpl4_64(); internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } dtbuf[h][0] = dpix_val0; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -4813,7 +4138,11 @@ static void lts_aga_fm2_n0_p4_ihires_dlores(void) denise_cck++; } } -static void lts_aga_fm2_n0_p4_ihires_dlores_filtered(void) +static void lts_aga_fm2_kehb1_p4_ilores_dlores_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_n0_p6_ilores_dlores_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -4826,6 +4155,7 @@ static void lts_aga_fm2_n0_p4_ihires_dlores_filtered(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -4837,32 +4167,28 @@ static void lts_aga_fm2_n0_p4_ihires_dlores_filtered(void) } last_bpl_pix = pix0; } - shiftbpl4_64(); - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl4_64(); + shiftbpl6_64(); + if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { + copybpl6_64(); + } + loaded_pix = getbpl6_64(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } } - loaded_pix = getbpl4_64(); loaded_pixs[0] = loaded_pix; - uae_u8 pix1 = 0; - uae_u32 dpix_val1 = BLANK_COLOR; - if (!denise_blank_active) { - dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix1; - } - shiftbpl4_64(); - if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { - copybpl4_64(); - } - loaded_pix = getbpl4_64(); - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } dtbuf[h][0] = dpix_val0; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -4895,7 +4221,11 @@ static void lts_aga_fm2_n0_p4_ihires_dlores_filtered(void) denise_cck++; } } -static void lts_aga_fm2_n1_p4_ihires_dlores(void) +static void lts_aga_fm2_n0_p6_ilores_dlores_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_n1_p6_ilores_dlores_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -4908,6 +4238,7 @@ static void lts_aga_fm2_n1_p4_ihires_dlores(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -4919,18 +4250,31 @@ static void lts_aga_fm2_n1_p4_ihires_dlores(void) } last_bpl_pix = pix0; } - shiftbpl4_64(); - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl4e_64(); + shiftbpl6_64(); + if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { + copybpl6e_64(); } - if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { - copybpl4o_64(); + if (bpldat_copy[1] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[1]) { + copybpl6o_64(); + } + loaded_pix = getbpl6_64(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } } - loaded_pix = getbpl4_64(); loaded_pixs[0] = loaded_pix; - shiftbpl4_64(); internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } dtbuf[h][0] = dpix_val0; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -4963,7 +4307,11 @@ static void lts_aga_fm2_n1_p4_ihires_dlores(void) denise_cck++; } } -static void lts_aga_fm2_n1_p4_ihires_dlores_filtered(void) +static void lts_aga_fm2_n1_p6_ilores_dlores_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_dpf0_p6_ilores_dlores_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -4976,6 +4324,7 @@ static void lts_aga_fm2_n1_p4_ihires_dlores_filtered(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -4983,42 +4332,37 @@ static void lts_aga_fm2_n1_p4_ihires_dlores_filtered(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; } last_bpl_pix = pix0; } - shiftbpl4_64(); - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl4e_64(); - } - if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { - copybpl4o_64(); + shiftbpl6_64(); + if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { + copybpl6_64(); } - loaded_pix = getbpl4_64(); - loaded_pixs[0] = loaded_pix; - uae_u8 pix1 = 0; - uae_u32 dpix_val1 = BLANK_COLOR; - if (!denise_blank_active) { - dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; + loaded_pix = getbpl6_64(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; } - last_bpl_pix = pix1; - } - shiftbpl4_64(); - if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { - copybpl4e_64(); - } - if (bpldat_copy[1] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) { - copybpl4o_64(); } - loaded_pix = getbpl4_64(); - loaded_pixs[1] = loaded_pix; + loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } dtbuf[h][0] = dpix_val0; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -5051,7 +4395,11 @@ static void lts_aga_fm2_n1_p4_ihires_dlores_filtered(void) denise_cck++; } } -static void lts_aga_fm2_dpf0_p4_ihires_dlores(void) +static void lts_aga_fm2_dpf0_p6_ilores_dlores_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_dpf1_p6_ilores_dlores_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -5064,6 +4412,7 @@ static void lts_aga_fm2_dpf0_p4_ihires_dlores(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -5080,15 +4429,31 @@ static void lts_aga_fm2_dpf0_p4_ihires_dlores(void) } last_bpl_pix = pix0; } - shiftbpl4_64(); - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl4_64(); + shiftbpl6_64(); + if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { + copybpl6e_64(); + } + if (bpldat_copy[1] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[1]) { + copybpl6o_64(); + } + loaded_pix = getbpl6_64(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } } - loaded_pix = getbpl4_64(); loaded_pixs[0] = loaded_pix; - shiftbpl4_64(); internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } dtbuf[h][0] = dpix_val0; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -5121,7 +4486,11 @@ static void lts_aga_fm2_dpf0_p4_ihires_dlores(void) denise_cck++; } } -static void lts_aga_fm2_dpf0_p4_ihires_dlores_filtered(void) +static void lts_aga_fm2_dpf1_p6_ilores_dlores_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_ehb0_p6_ilores_dlores_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -5134,6 +4503,7 @@ static void lts_aga_fm2_dpf0_p4_ihires_dlores_filtered(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -5141,46 +4511,38 @@ static void lts_aga_fm2_dpf0_p4_ihires_dlores_filtered(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; + pix0 ^= bplcon4_denise_xor_val; + if (!(pix0 & 0x20)) { + dpix_val0 = denise_colors.acolors[pix0]; + } else { + uae_u32 v = (denise_colors.color_regs_aga[pix0 & 0x1f] >> 1) & 0x7f7f7f; + dpix_val0 = CONVERT_RGB(v); } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; } last_bpl_pix = pix0; } - shiftbpl4_64(); - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl4_64(); + shiftbpl6_64(); + if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { + copybpl6_64(); } - loaded_pix = getbpl4_64(); - loaded_pixs[0] = loaded_pix; - uae_u8 pix1 = 0; - uae_u32 dpix_val1 = BLANK_COLOR; - if (!denise_blank_active) { - dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - if (dpf_lookup_no[pix1]) { - val1 += dblpfofs[bpldualpf2of]; - } - val1 ^= bplcon4_denise_xor_val; - dpix_val1 = denise_colors.acolors[val1]; + loaded_pix = getbpl6_64(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; } - last_bpl_pix = pix1; } - shiftbpl4_64(); - if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { - copybpl4_64(); - } - loaded_pix = getbpl4_64(); - loaded_pixs[1] = loaded_pix; + loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } dtbuf[h][0] = dpix_val0; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -5213,7 +4575,11 @@ static void lts_aga_fm2_dpf0_p4_ihires_dlores_filtered(void) denise_cck++; } } -static void lts_aga_fm2_dpf1_p4_ihires_dlores(void) +static void lts_aga_fm2_ehb0_p6_ilores_dlores_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_ehb1_p6_ilores_dlores_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -5226,6 +4592,7 @@ static void lts_aga_fm2_dpf1_p4_ihires_dlores(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -5233,27 +4600,41 @@ static void lts_aga_fm2_dpf1_p4_ihires_dlores(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; + pix0 ^= bplcon4_denise_xor_val; + if (!(pix0 & 0x20)) { + dpix_val0 = denise_colors.acolors[pix0]; + } else { + uae_u32 v = (denise_colors.color_regs_aga[pix0 & 0x1f] >> 1) & 0x7f7f7f; + dpix_val0 = CONVERT_RGB(v); } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; } last_bpl_pix = pix0; } - shiftbpl4_64(); - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl4e_64(); + shiftbpl6_64(); + if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { + copybpl6e_64(); } - if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { - copybpl4o_64(); + if (bpldat_copy[1] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[1]) { + copybpl6o_64(); + } + loaded_pix = getbpl6_64(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } } - loaded_pix = getbpl4_64(); loaded_pixs[0] = loaded_pix; - shiftbpl4_64(); internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } dtbuf[h][0] = dpix_val0; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -5286,7 +4667,11 @@ static void lts_aga_fm2_dpf1_p4_ihires_dlores(void) denise_cck++; } } -static void lts_aga_fm2_dpf1_p4_ihires_dlores_filtered(void) +static void lts_aga_fm2_ehb1_p6_ilores_dlores_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_ham0_p6_ilores_dlores_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -5299,6 +4684,7 @@ static void lts_aga_fm2_dpf1_p4_ihires_dlores_filtered(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -5306,52 +4692,32 @@ static void lts_aga_fm2_dpf1_p4_ihires_dlores_filtered(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; + dpix_val0 = decode_ham_pixel_aga(pix0); } last_bpl_pix = pix0; } - shiftbpl4_64(); - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl4e_64(); - } - if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { - copybpl4o_64(); + shiftbpl6_64(); + if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { + copybpl6_64(); } - loaded_pix = getbpl4_64(); - loaded_pixs[0] = loaded_pix; - uae_u8 pix1 = 0; - uae_u32 dpix_val1 = BLANK_COLOR; - if (!denise_blank_active) { - dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - if (dpf_lookup_no[pix1]) { - val1 += dblpfofs[bpldualpf2of]; - } - val1 ^= bplcon4_denise_xor_val; - dpix_val1 = denise_colors.acolors[val1]; + loaded_pix = getbpl6_64(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; } - last_bpl_pix = pix1; - } - shiftbpl4_64(); - if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { - copybpl4e_64(); - } - if (bpldat_copy[1] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) { - copybpl4o_64(); } - loaded_pix = getbpl4_64(); - loaded_pixs[1] = loaded_pix; + loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } dtbuf[h][0] = dpix_val0; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -5384,55 +4750,11 @@ static void lts_aga_fm2_dpf1_p4_ihires_dlores_filtered(void) denise_cck++; } } -static void lts_aga_fm2_ehb0_p4_ihires_dlores(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb0_p4_ihires_dlores_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb1_p4_ihires_dlores(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb1_p4_ihires_dlores_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_ham0_p4_ihires_dlores(void) -{ - lts_null(); -} -static void lts_aga_fm2_ham0_p4_ihires_dlores_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_ham1_p4_ihires_dlores(void) -{ - lts_null(); -} -static void lts_aga_fm2_ham1_p4_ihires_dlores_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb0_p4_ihires_dlores(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb0_p4_ihires_dlores_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb1_p4_ihires_dlores(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb1_p4_ihires_dlores_filtered(void) +static void lts_aga_fm2_ham0_p6_ilores_dlores_spr_filtered(void) { lts_null(); } -static void lts_aga_fm2_n0_p6_ihires_dlores(void) +static void lts_aga_fm2_ham1_p6_ilores_dlores_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -5445,6 +4767,7 @@ static void lts_aga_fm2_n0_p6_ihires_dlores(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -5452,19 +4775,35 @@ static void lts_aga_fm2_n0_p6_ihires_dlores(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + dpix_val0 = decode_ham_pixel_aga(pix0); } last_bpl_pix = pix0; } shiftbpl6_64(); - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl6_64(); + if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { + copybpl6e_64(); + } + if (bpldat_copy[1] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[1]) { + copybpl6o_64(); } loaded_pix = getbpl6_64(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } loaded_pixs[0] = loaded_pix; - shiftbpl6_64(); internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } dtbuf[h][0] = dpix_val0; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -5497,7 +4836,11 @@ static void lts_aga_fm2_n0_p6_ihires_dlores(void) denise_cck++; } } -static void lts_aga_fm2_n0_p6_ihires_dlores_filtered(void) +static void lts_aga_fm2_ham1_p6_ilores_dlores_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_kehb0_p6_ilores_dlores_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -5510,6 +4853,7 @@ static void lts_aga_fm2_n0_p6_ihires_dlores_filtered(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -5517,36 +4861,33 @@ static void lts_aga_fm2_n0_p6_ihires_dlores_filtered(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + pix0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[pix0 & 31]; } last_bpl_pix = pix0; } shiftbpl6_64(); - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { copybpl6_64(); } loaded_pix = getbpl6_64(); - loaded_pixs[0] = loaded_pix; - uae_u8 pix1 = 0; - uae_u32 dpix_val1 = BLANK_COLOR; - if (!denise_blank_active) { - dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; } - last_bpl_pix = pix1; - } - shiftbpl6_64(); - if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { - copybpl6_64(); } - loaded_pix = getbpl6_64(); - loaded_pixs[1] = loaded_pix; + loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } dtbuf[h][0] = dpix_val0; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -5579,7 +4920,11 @@ static void lts_aga_fm2_n0_p6_ihires_dlores_filtered(void) denise_cck++; } } -static void lts_aga_fm2_n1_p6_ihires_dlores(void) +static void lts_aga_fm2_kehb0_p6_ilores_dlores_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_kehb1_p6_ilores_dlores_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -5592,6 +4937,7 @@ static void lts_aga_fm2_n1_p6_ihires_dlores(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -5599,22 +4945,36 @@ static void lts_aga_fm2_n1_p6_ihires_dlores(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + pix0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[pix0 & 31]; } last_bpl_pix = pix0; } shiftbpl6_64(); - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { copybpl6e_64(); } - if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { + if (bpldat_copy[1] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[1]) { copybpl6o_64(); } loaded_pix = getbpl6_64(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } loaded_pixs[0] = loaded_pix; - shiftbpl6_64(); internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } dtbuf[h][0] = dpix_val0; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -5647,7 +5007,11 @@ static void lts_aga_fm2_n1_p6_ihires_dlores(void) denise_cck++; } } -static void lts_aga_fm2_n1_p6_ihires_dlores_filtered(void) +static void lts_aga_fm2_kehb1_p6_ilores_dlores_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_n0_p8_ilores_dlores_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -5660,6 +5024,7 @@ static void lts_aga_fm2_n1_p6_ihires_dlores_filtered(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -5671,38 +5036,28 @@ static void lts_aga_fm2_n1_p6_ihires_dlores_filtered(void) } last_bpl_pix = pix0; } - shiftbpl6_64(); - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl6e_64(); - } - if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { - copybpl6o_64(); + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { + copybpl8_64(); } - loaded_pix = getbpl6_64(); - loaded_pixs[0] = loaded_pix; - uae_u8 pix1 = 0; - uae_u32 dpix_val1 = BLANK_COLOR; - if (!denise_blank_active) { - dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; + loaded_pix = getbpl8_64(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; } - last_bpl_pix = pix1; - } - shiftbpl6_64(); - if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { - copybpl6e_64(); } - if (bpldat_copy[1] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) { - copybpl6o_64(); - } - loaded_pix = getbpl6_64(); - loaded_pixs[1] = loaded_pix; + loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } dtbuf[h][0] = dpix_val0; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -5735,9 +5090,13 @@ static void lts_aga_fm2_n1_p6_ihires_dlores_filtered(void) denise_cck++; } } -static void lts_aga_fm2_dpf0_p6_ihires_dlores(void) +static void lts_aga_fm2_n0_p8_ilores_dlores_spr_filtered(void) { - while (denise_cck < denise_endcycle) { + lts_null(); +} +static void lts_aga_fm2_n1_p8_ilores_dlores_spr(void) +{ + while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); if (lts_changed) return; for (int h = 0; h < 2; h++) { @@ -5748,6 +5107,7 @@ static void lts_aga_fm2_dpf0_p6_ihires_dlores(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -5755,24 +5115,35 @@ static void lts_aga_fm2_dpf0_p6_ihires_dlores(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix0; } - shiftbpl6_64(); - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl6_64(); + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { + copybpl8e_64(); + } + if (bpldat_copy[1] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[1]) { + copybpl8o_64(); + } + loaded_pix = getbpl8_64(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } } - loaded_pix = getbpl6_64(); loaded_pixs[0] = loaded_pix; - shiftbpl6_64(); internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } dtbuf[h][0] = dpix_val0; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -5805,7 +5176,11 @@ static void lts_aga_fm2_dpf0_p6_ihires_dlores(void) denise_cck++; } } -static void lts_aga_fm2_dpf0_p6_ihires_dlores_filtered(void) +static void lts_aga_fm2_n1_p8_ilores_dlores_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_dpf0_p8_ilores_dlores_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -5818,6 +5193,7 @@ static void lts_aga_fm2_dpf0_p6_ihires_dlores_filtered(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -5834,37 +5210,28 @@ static void lts_aga_fm2_dpf0_p6_ihires_dlores_filtered(void) } last_bpl_pix = pix0; } - shiftbpl6_64(); - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl6_64(); + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { + copybpl8_64(); } - loaded_pix = getbpl6_64(); - loaded_pixs[0] = loaded_pix; - uae_u8 pix1 = 0; - uae_u32 dpix_val1 = BLANK_COLOR; - if (!denise_blank_active) { - dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - if (dpf_lookup_no[pix1]) { - val1 += dblpfofs[bpldualpf2of]; - } - val1 ^= bplcon4_denise_xor_val; - dpix_val1 = denise_colors.acolors[val1]; + loaded_pix = getbpl8_64(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; } - last_bpl_pix = pix1; - } - shiftbpl6_64(); - if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { - copybpl6_64(); } - loaded_pix = getbpl6_64(); - loaded_pixs[1] = loaded_pix; + loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } dtbuf[h][0] = dpix_val0; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -5897,7 +5264,11 @@ static void lts_aga_fm2_dpf0_p6_ihires_dlores_filtered(void) denise_cck++; } } -static void lts_aga_fm2_dpf1_p6_ihires_dlores(void) +static void lts_aga_fm2_dpf0_p8_ilores_dlores_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_dpf1_p8_ilores_dlores_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -5910,6 +5281,7 @@ static void lts_aga_fm2_dpf1_p6_ihires_dlores(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -5926,18 +5298,31 @@ static void lts_aga_fm2_dpf1_p6_ihires_dlores(void) } last_bpl_pix = pix0; } - shiftbpl6_64(); - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl6e_64(); + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { + copybpl8e_64(); } - if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { - copybpl6o_64(); + if (bpldat_copy[1] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[1]) { + copybpl8o_64(); + } + loaded_pix = getbpl8_64(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } } - loaded_pix = getbpl6_64(); loaded_pixs[0] = loaded_pix; - shiftbpl6_64(); internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } dtbuf[h][0] = dpix_val0; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -5970,7 +5355,11 @@ static void lts_aga_fm2_dpf1_p6_ihires_dlores(void) denise_cck++; } } -static void lts_aga_fm2_dpf1_p6_ihires_dlores_filtered(void) +static void lts_aga_fm2_dpf1_p8_ilores_dlores_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_ehb0_p8_ilores_dlores_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -5981,61 +5370,29 @@ 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; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; - } - shiftbpl6_64(); - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl6e_64(); - } - if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { - copybpl6o_64(); } - loaded_pix = getbpl6_64(); - loaded_pixs[0] = loaded_pix; - uae_u8 pix1 = 0; - uae_u32 dpix_val1 = BLANK_COLOR; - if (!denise_blank_active) { - dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - if (dpf_lookup_no[pix1]) { - val1 += dblpfofs[bpldualpf2of]; - } - val1 ^= bplcon4_denise_xor_val; - dpix_val1 = denise_colors.acolors[val1]; + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; } - last_bpl_pix = pix1; - } - shiftbpl6_64(); - if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { - copybpl6e_64(); - } - if (bpldat_copy[1] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) { - copybpl6o_64(); } - loaded_pix = getbpl6_64(); - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } dtbuf[h][0] = dpix_val0; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -6068,7 +5425,11 @@ static void lts_aga_fm2_dpf1_p6_ihires_dlores_filtered(void) denise_cck++; } } -static void lts_aga_fm2_ehb0_p6_ihires_dlores(void) +static void lts_aga_fm2_ehb0_p8_ilores_dlores_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_ehb1_p8_ilores_dlores_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -6079,34 +5440,29 @@ 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; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - pix0 ^= bplcon4_denise_xor_val; - if (!(pix0 & 0x20)) { - dpix_val0 = denise_colors.acolors[pix0]; - } else { - uae_u32 v = (denise_colors.color_regs_aga[pix0 & 0x1f] >> 1) & 0x7f7f7f; - dpix_val0 = CONVERT_RGB(v); - } - } - last_bpl_pix = pix0; } - shiftbpl6_64(); - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl6_64(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } } - loaded_pix = getbpl6_64(); - loaded_pixs[0] = loaded_pix; - shiftbpl6_64(); internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } dtbuf[h][0] = dpix_val0; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -6139,7 +5495,11 @@ static void lts_aga_fm2_ehb0_p6_ihires_dlores(void) denise_cck++; } } -static void lts_aga_fm2_ehb0_p6_ihires_dlores_filtered(void) +static void lts_aga_fm2_ehb1_p8_ilores_dlores_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_ham0_p8_ilores_dlores_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -6152,6 +5512,7 @@ static void lts_aga_fm2_ehb0_p6_ihires_dlores_filtered(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -6159,48 +5520,32 @@ static void lts_aga_fm2_ehb0_p6_ihires_dlores_filtered(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - pix0 ^= bplcon4_denise_xor_val; - if (!(pix0 & 0x20)) { - dpix_val0 = denise_colors.acolors[pix0]; - } else { - uae_u32 v = (denise_colors.color_regs_aga[pix0 & 0x1f] >> 1) & 0x7f7f7f; - dpix_val0 = CONVERT_RGB(v); - } + dpix_val0 = decode_ham_pixel_aga(pix0); } last_bpl_pix = pix0; } - shiftbpl6_64(); - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl6_64(); + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { + copybpl8_64(); } - loaded_pix = getbpl6_64(); - loaded_pixs[0] = loaded_pix; - uae_u8 pix1 = 0; - uae_u32 dpix_val1 = BLANK_COLOR; - if (!denise_blank_active) { - dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - pix1 ^= bplcon4_denise_xor_val; - if (!(pix1 & 0x20)) { - dpix_val1 = denise_colors.acolors[pix1]; - } else { - uae_u32 v = (denise_colors.color_regs_aga[pix1 & 0x1f] >> 1) & 0x7f7f7f; - dpix_val1 = CONVERT_RGB(v); - } + loaded_pix = getbpl8_64(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; } - last_bpl_pix = pix1; - } - shiftbpl6_64(); - if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { - copybpl6_64(); } - loaded_pix = getbpl6_64(); - loaded_pixs[1] = loaded_pix; + loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } dtbuf[h][0] = dpix_val0; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -6233,7 +5578,11 @@ static void lts_aga_fm2_ehb0_p6_ihires_dlores_filtered(void) denise_cck++; } } -static void lts_aga_fm2_ehb1_p6_ihires_dlores(void) +static void lts_aga_fm2_ham0_p8_ilores_dlores_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_ham1_p8_ilores_dlores_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -6246,6 +5595,7 @@ static void lts_aga_fm2_ehb1_p6_ihires_dlores(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -6253,28 +5603,35 @@ static void lts_aga_fm2_ehb1_p6_ihires_dlores(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - pix0 ^= bplcon4_denise_xor_val; - if (!(pix0 & 0x20)) { - dpix_val0 = denise_colors.acolors[pix0]; - } else { - uae_u32 v = (denise_colors.color_regs_aga[pix0 & 0x1f] >> 1) & 0x7f7f7f; - dpix_val0 = CONVERT_RGB(v); - } + dpix_val0 = decode_ham_pixel_aga(pix0); } last_bpl_pix = pix0; } - shiftbpl6_64(); - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl6e_64(); + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { + copybpl8e_64(); } - if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { - copybpl6o_64(); + if (bpldat_copy[1] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[1]) { + copybpl8o_64(); + } + loaded_pix = getbpl8_64(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } } - loaded_pix = getbpl6_64(); loaded_pixs[0] = loaded_pix; - shiftbpl6_64(); internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } dtbuf[h][0] = dpix_val0; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -6307,7 +5664,11 @@ static void lts_aga_fm2_ehb1_p6_ihires_dlores(void) denise_cck++; } } -static void lts_aga_fm2_ehb1_p6_ihires_dlores_filtered(void) +static void lts_aga_fm2_ham1_p8_ilores_dlores_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_kehb0_p8_ilores_dlores_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -6318,63 +5679,29 @@ 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; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - pix0 ^= bplcon4_denise_xor_val; - if (!(pix0 & 0x20)) { - dpix_val0 = denise_colors.acolors[pix0]; - } else { - uae_u32 v = (denise_colors.color_regs_aga[pix0 & 0x1f] >> 1) & 0x7f7f7f; - dpix_val0 = CONVERT_RGB(v); - } - } - last_bpl_pix = pix0; - } - shiftbpl6_64(); - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl6e_64(); - } - if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { - copybpl6o_64(); } - loaded_pix = getbpl6_64(); - loaded_pixs[0] = loaded_pix; - uae_u8 pix1 = 0; - uae_u32 dpix_val1 = BLANK_COLOR; - if (!denise_blank_active) { - dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - pix1 ^= bplcon4_denise_xor_val; - if (!(pix1 & 0x20)) { - dpix_val1 = denise_colors.acolors[pix1]; - } else { - uae_u32 v = (denise_colors.color_regs_aga[pix1 & 0x1f] >> 1) & 0x7f7f7f; - dpix_val1 = CONVERT_RGB(v); - } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; } - last_bpl_pix = pix1; - } - shiftbpl6_64(); - if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { - copybpl6e_64(); - } - if (bpldat_copy[1] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) { - copybpl6o_64(); } - loaded_pix = getbpl6_64(); - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } dtbuf[h][0] = dpix_val0; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -6407,7 +5734,11 @@ static void lts_aga_fm2_ehb1_p6_ihires_dlores_filtered(void) denise_cck++; } } -static void lts_aga_fm2_ham0_p6_ihires_dlores(void) +static void lts_aga_fm2_kehb0_p8_ilores_dlores_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_kehb1_p8_ilores_dlores_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -6418,43 +5749,29 @@ 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; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = decode_ham_pixel_aga(pix0); - } - last_bpl_pix = pix0; - } - shiftbpl6_64(); - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl6_64(); } - loaded_pix = getbpl6_64(); - loaded_pixs[0] = loaded_pix; - uae_u8 pix1 = 0; - uae_u32 dpix_val1 = BLANK_COLOR; - if (!denise_blank_active) { - dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - decode_ham_pixel_aga(pix1); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; } - last_bpl_pix = pix1; - } - shiftbpl6_64(); - if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { - copybpl6_64(); } - loaded_pix = getbpl6_64(); - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } dtbuf[h][0] = dpix_val0; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -6487,7 +5804,11 @@ static void lts_aga_fm2_ham0_p6_ihires_dlores(void) denise_cck++; } } -static void lts_aga_fm2_ham0_p6_ihires_dlores_filtered(void) +static void lts_aga_fm2_kehb1_p8_ilores_dlores_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_n0_p2_ihires_dlores(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -6507,36 +5828,19 @@ static void lts_aga_fm2_ham0_p6_ihires_dlores_filtered(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - dpix_val0 = decode_ham_pixel_aga(pix0); + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix0; } - shiftbpl6_64(); + shiftbpl2_64(); if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl6_64(); + copybpl2_64(); } - loaded_pix = getbpl6_64(); + loaded_pix = getbpl2_64(); loaded_pixs[0] = loaded_pix; - uae_u8 pix1 = 0; - uae_u32 dpix_val1 = BLANK_COLOR; - if (!denise_blank_active) { - dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - dpix_val1 = decode_ham_pixel_aga(pix1); - } - last_bpl_pix = pix1; - } - shiftbpl6_64(); - if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { - copybpl6_64(); - } - loaded_pix = getbpl6_64(); - loaded_pixs[1] = loaded_pix; + shiftbpl2_64(); internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - dpix_val0 = filter_pixel(dpix_val0, dpix_val1); dtbuf[h][0] = dpix_val0; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -6569,7 +5873,7 @@ static void lts_aga_fm2_ham0_p6_ihires_dlores_filtered(void) denise_cck++; } } -static void lts_aga_fm2_ham1_p6_ihires_dlores(void) +static void lts_aga_fm2_n0_p2_ihires_dlores_filtered(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -6589,18 +5893,15 @@ static void lts_aga_fm2_ham1_p6_ihires_dlores(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - dpix_val0 = decode_ham_pixel_aga(pix0); + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix0; } - shiftbpl6_64(); + shiftbpl2_64(); if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl6e_64(); - } - if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { - copybpl6o_64(); + copybpl2_64(); } - loaded_pix = getbpl6_64(); + loaded_pix = getbpl2_64(); loaded_pixs[0] = loaded_pix; uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; @@ -6608,21 +5909,20 @@ static void lts_aga_fm2_ham1_p6_ihires_dlores(void) dpix_val1 = bordercolor; if (denise_hdiw && bpl1dat_trigger) { pix1 = loaded_pixs[1]; - decode_ham_pixel_aga(pix1); + clxdat |= bplcoltable[pix1]; + dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix1; } - shiftbpl6_64(); + shiftbpl2_64(); if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { - copybpl6e_64(); - } - if (bpldat_copy[1] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) { - copybpl6o_64(); + copybpl2_64(); } - loaded_pix = getbpl6_64(); + loaded_pix = getbpl2_64(); loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); dtbuf[h][0] = dpix_val0; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -6655,7 +5955,7 @@ static void lts_aga_fm2_ham1_p6_ihires_dlores(void) denise_cck++; } } -static void lts_aga_fm2_ham1_p6_ihires_dlores_filtered(void) +static void lts_aga_fm2_n1_p2_ihires_dlores(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -6675,42 +5975,22 @@ static void lts_aga_fm2_ham1_p6_ihires_dlores_filtered(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - dpix_val0 = decode_ham_pixel_aga(pix0); + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix0; } - shiftbpl6_64(); + shiftbpl2_64(); if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl6e_64(); + copybpl2e_64(); } if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { - copybpl6o_64(); + copybpl2o_64(); } - loaded_pix = getbpl6_64(); + loaded_pix = getbpl2_64(); loaded_pixs[0] = loaded_pix; - uae_u8 pix1 = 0; - uae_u32 dpix_val1 = BLANK_COLOR; - if (!denise_blank_active) { - dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - dpix_val1 = decode_ham_pixel_aga(pix1); - } - last_bpl_pix = pix1; - } - shiftbpl6_64(); - if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { - copybpl6e_64(); - } - if (bpldat_copy[1] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) { - copybpl6o_64(); - } - loaded_pix = getbpl6_64(); - loaded_pixs[1] = loaded_pix; + shiftbpl2_64(); internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - dpix_val0 = filter_pixel(dpix_val0, dpix_val1); dtbuf[h][0] = dpix_val0; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -6743,7 +6023,7 @@ static void lts_aga_fm2_ham1_p6_ihires_dlores_filtered(void) denise_cck++; } } -static void lts_aga_fm2_kehb0_p6_ihires_dlores(void) +static void lts_aga_fm2_n1_p2_ihires_dlores_filtered(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -6763,82 +6043,18 @@ static void lts_aga_fm2_kehb0_p6_ihires_dlores(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - pix0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[pix0 & 31]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix0; } - shiftbpl6_64(); + shiftbpl2_64(); if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl6_64(); - } - loaded_pix = getbpl6_64(); - loaded_pixs[0] = loaded_pix; - shiftbpl6_64(); - internal_pixel_cnt += 4; - if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - dtbuf[h][0] = dpix_val0; - uae_u32 t0 = dtbuf[h ^ lol][0]; - #ifdef DEBUGGER - if (decode_specials_debug) { - t0 = decode_denise_specials_debug(t0, cnt + 0); - } - #endif - *buf1++ = t0; - *buf2++ = t0; - } - sprites_hidden = sprites_hidden2; - #ifdef DEBUGGER - *debug_dma_dhpos_odd = denise_hcounter; - #endif - denise_hcounter_cmp++; - denise_hcounter_cmp &= 511; - denise_hcounter++; - denise_hcounter &= 511; - denise_hcounter_next++; - denise_hcounter_next &= 511; - } - denise_pixtotal++; - if (denise_pixtotal == 0) { - internal_pixel_start_cnt = internal_pixel_cnt; - } - denise_hcounter = denise_hcounter_new; - if (denise_accurate_mode) { - denise_hcounter_cmp = denise_hcounter_new; - } - denise_cck++; - } -} -static void lts_aga_fm2_kehb0_p6_ihires_dlores_filtered(void) -{ - while (denise_cck < denise_endcycle) { - do_denise_cck(denise_linecnt, denise_startpos, denise_cck); - if (lts_changed) return; - for (int h = 0; h < 2; h++) { - if (h) { - denise_hcounter_next = denise_hcounter_new; - } - int cnt = denise_hcounter << 2; - int cnt_next = denise_hcounter_next << 2; - int cmp = denise_hcounter_cmp << 2; - if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; - uae_u8 pix0 = 0; - uae_u32 dpix_val0 = BLANK_COLOR; - if (!denise_blank_active) { - dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - pix0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[pix0 & 31]; - } - last_bpl_pix = pix0; + copybpl2e_64(); } - shiftbpl6_64(); - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl6_64(); + if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { + copybpl2o_64(); } - loaded_pix = getbpl6_64(); + loaded_pix = getbpl2_64(); loaded_pixs[0] = loaded_pix; uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; @@ -6847,16 +6063,18 @@ static void lts_aga_fm2_kehb0_p6_ihires_dlores_filtered(void) if (denise_hdiw && bpl1dat_trigger) { pix1 = loaded_pixs[1]; clxdat |= bplcoltable[pix1]; - pix1 ^= bplcon4_denise_xor_val; - dpix_val1 = denise_colors.acolors[pix1 & 31]; + dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix1; } - shiftbpl6_64(); + shiftbpl2_64(); if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { - copybpl6_64(); + copybpl2e_64(); } - loaded_pix = getbpl6_64(); + if (bpldat_copy[1] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) { + copybpl2o_64(); + } + loaded_pix = getbpl2_64(); loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { @@ -6893,7 +6111,7 @@ static void lts_aga_fm2_kehb0_p6_ihires_dlores_filtered(void) denise_cck++; } } -static void lts_aga_fm2_kehb1_p6_ihires_dlores(void) +static void lts_aga_fm2_dpf0_p2_ihires_dlores(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -6913,21 +6131,22 @@ static void lts_aga_fm2_kehb1_p6_ihires_dlores(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - pix0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[pix0 & 31]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; } last_bpl_pix = pix0; } - shiftbpl6_64(); + shiftbpl2_64(); if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl6e_64(); - } - if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { - copybpl6o_64(); + copybpl2_64(); } - loaded_pix = getbpl6_64(); + loaded_pix = getbpl2_64(); loaded_pixs[0] = loaded_pix; - shiftbpl6_64(); + shiftbpl2_64(); internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; @@ -6962,7 +6181,7 @@ static void lts_aga_fm2_kehb1_p6_ihires_dlores(void) denise_cck++; } } -static void lts_aga_fm2_kehb1_p6_ihires_dlores_filtered(void) +static void lts_aga_fm2_dpf0_p2_ihires_dlores_filtered(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -6982,19 +6201,20 @@ static void lts_aga_fm2_kehb1_p6_ihires_dlores_filtered(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - pix0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[pix0 & 31]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; } last_bpl_pix = pix0; } - shiftbpl6_64(); + shiftbpl2_64(); if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl6e_64(); - } - if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { - copybpl6o_64(); + copybpl2_64(); } - loaded_pix = getbpl6_64(); + loaded_pix = getbpl2_64(); loaded_pixs[0] = loaded_pix; uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; @@ -7003,19 +6223,20 @@ static void lts_aga_fm2_kehb1_p6_ihires_dlores_filtered(void) if (denise_hdiw && bpl1dat_trigger) { pix1 = loaded_pixs[1]; clxdat |= bplcoltable[pix1]; - pix1 ^= bplcon4_denise_xor_val; - dpix_val1 = denise_colors.acolors[pix1 & 31]; + uae_u8 val1 = dpf_lookup[pix1]; + if (dpf_lookup_no[pix1]) { + val1 += dblpfofs[bpldualpf2of]; + } + val1 ^= bplcon4_denise_xor_val; + dpix_val1 = denise_colors.acolors[val1]; } last_bpl_pix = pix1; } - shiftbpl6_64(); + shiftbpl2_64(); if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { - copybpl6e_64(); - } - if (bpldat_copy[1] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) { - copybpl6o_64(); + copybpl2_64(); } - loaded_pix = getbpl6_64(); + loaded_pix = getbpl2_64(); loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { @@ -7052,7 +6273,7 @@ static void lts_aga_fm2_kehb1_p6_ihires_dlores_filtered(void) denise_cck++; } } -static void lts_aga_fm2_n0_p8_ihires_dlores(void) +static void lts_aga_fm2_dpf1_p2_ihires_dlores(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -7072,17 +6293,25 @@ static void lts_aga_fm2_n0_p8_ihires_dlores(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; } last_bpl_pix = pix0; } - shiftbpl8_64(); + shiftbpl2_64(); if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); + copybpl2e_64(); } - loaded_pix = getbpl8_64(); + if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { + copybpl2o_64(); + } + loaded_pix = getbpl2_64(); loaded_pixs[0] = loaded_pix; - shiftbpl8_64(); + shiftbpl2_64(); internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; @@ -7117,7 +6346,7 @@ static void lts_aga_fm2_n0_p8_ihires_dlores(void) denise_cck++; } } -static void lts_aga_fm2_n0_p8_ihires_dlores_filtered(void) +static void lts_aga_fm2_dpf1_p2_ihires_dlores_filtered(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -7137,15 +6366,23 @@ static void lts_aga_fm2_n0_p8_ihires_dlores_filtered(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; } last_bpl_pix = pix0; } - shiftbpl8_64(); + shiftbpl2_64(); if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); + copybpl2e_64(); } - loaded_pix = getbpl8_64(); + if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { + copybpl2o_64(); + } + loaded_pix = getbpl2_64(); loaded_pixs[0] = loaded_pix; uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; @@ -7154,15 +6391,23 @@ static void lts_aga_fm2_n0_p8_ihires_dlores_filtered(void) if (denise_hdiw && bpl1dat_trigger) { pix1 = loaded_pixs[1]; clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; + uae_u8 val1 = dpf_lookup[pix1]; + if (dpf_lookup_no[pix1]) { + val1 += dblpfofs[bpldualpf2of]; + } + val1 ^= bplcon4_denise_xor_val; + dpix_val1 = denise_colors.acolors[val1]; } last_bpl_pix = pix1; } - shiftbpl8_64(); + shiftbpl2_64(); if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); + copybpl2e_64(); } - loaded_pix = getbpl8_64(); + if (bpldat_copy[1] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) { + copybpl2o_64(); + } + loaded_pix = getbpl2_64(); loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { @@ -7199,7 +6444,7 @@ static void lts_aga_fm2_n0_p8_ihires_dlores_filtered(void) denise_cck++; } } -static void lts_aga_fm2_n1_p8_ihires_dlores(void) +static void lts_aga_fm2_ehb0_p2_ihires_dlores(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -7210,29 +6455,12 @@ 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; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix0; } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8e_64(); - } - if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); - } - loaded_pix = getbpl8_64(); - loaded_pixs[0] = loaded_pix; - shiftbpl8_64(); internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; @@ -7267,7 +6495,7 @@ static void lts_aga_fm2_n1_p8_ihires_dlores(void) denise_cck++; } } -static void lts_aga_fm2_n1_p8_ihires_dlores_filtered(void) +static void lts_aga_fm2_ehb0_p2_ihires_dlores_filtered(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -7278,48 +6506,17 @@ 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; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix0; - } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8e_64(); - } - if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); } - loaded_pix = getbpl8_64(); - loaded_pixs[0] = loaded_pix; uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix1; } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8e_64(); - } - if (bpldat_copy[1] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); - } - loaded_pix = getbpl8_64(); - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dpix_val0 = filter_pixel(dpix_val0, dpix_val1); @@ -7355,7 +6552,7 @@ static void lts_aga_fm2_n1_p8_ihires_dlores_filtered(void) denise_cck++; } } -static void lts_aga_fm2_dpf0_p8_ihires_dlores(void) +static void lts_aga_fm2_ehb1_p2_ihires_dlores(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -7366,31 +6563,12 @@ 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; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; - } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); } - loaded_pix = getbpl8_64(); - loaded_pixs[0] = loaded_pix; - shiftbpl8_64(); internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; @@ -7425,7 +6603,7 @@ static void lts_aga_fm2_dpf0_p8_ihires_dlores(void) denise_cck++; } } -static void lts_aga_fm2_dpf0_p8_ihires_dlores_filtered(void) +static void lts_aga_fm2_ehb1_p2_ihires_dlores_filtered(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -7436,52 +6614,17 @@ 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; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; - } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); } - loaded_pix = getbpl8_64(); - loaded_pixs[0] = loaded_pix; uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - if (dpf_lookup_no[pix1]) { - val1 += dblpfofs[bpldualpf2of]; - } - val1 ^= bplcon4_denise_xor_val; - dpix_val1 = denise_colors.acolors[val1]; - } - last_bpl_pix = pix1; - } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); } - loaded_pix = getbpl8_64(); - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dpix_val0 = filter_pixel(dpix_val0, dpix_val1); @@ -7517,7 +6660,7 @@ static void lts_aga_fm2_dpf0_p8_ihires_dlores_filtered(void) denise_cck++; } } -static void lts_aga_fm2_dpf1_p8_ihires_dlores(void) +static void lts_aga_fm2_ham0_p2_ihires_dlores(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -7528,34 +6671,17 @@ 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; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8e_64(); - } - if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; } - loaded_pix = getbpl8_64(); - loaded_pixs[0] = loaded_pix; - shiftbpl8_64(); internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; @@ -7590,7 +6716,7 @@ static void lts_aga_fm2_dpf1_p8_ihires_dlores(void) denise_cck++; } } -static void lts_aga_fm2_dpf1_p8_ihires_dlores_filtered(void) +static void lts_aga_fm2_ham0_p2_ihires_dlores_filtered(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -7601,58 +6727,17 @@ 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; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; - } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8e_64(); - } - if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); } - loaded_pix = getbpl8_64(); - loaded_pixs[0] = loaded_pix; uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - if (dpf_lookup_no[pix1]) { - val1 += dblpfofs[bpldualpf2of]; - } - val1 ^= bplcon4_denise_xor_val; - dpix_val1 = denise_colors.acolors[val1]; - } - last_bpl_pix = pix1; - } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8e_64(); - } - if (bpldat_copy[1] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); } - loaded_pix = getbpl8_64(); - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dpix_val0 = filter_pixel(dpix_val0, dpix_val1); @@ -7688,23 +6773,7 @@ static void lts_aga_fm2_dpf1_p8_ihires_dlores_filtered(void) denise_cck++; } } -static void lts_aga_fm2_ehb0_p8_ihires_dlores(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb0_p8_ihires_dlores_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb1_p8_ihires_dlores(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb1_p8_ihires_dlores_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_ham0_p8_ihires_dlores(void) +static void lts_aga_fm2_ham1_p2_ihires_dlores(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -7715,41 +6784,17 @@ 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; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = decode_ham_pixel_aga(pix0); - } - last_bpl_pix = pix0; - } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); } - loaded_pix = getbpl8_64(); - loaded_pixs[0] = loaded_pix; uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - decode_ham_pixel_aga(pix1); - } - last_bpl_pix = pix1; - } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); } - loaded_pix = getbpl8_64(); - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; @@ -7784,7 +6829,7 @@ static void lts_aga_fm2_ham0_p8_ihires_dlores(void) denise_cck++; } } -static void lts_aga_fm2_ham0_p8_ihires_dlores_filtered(void) +static void lts_aga_fm2_ham1_p2_ihires_dlores_filtered(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -7795,42 +6840,17 @@ 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; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = decode_ham_pixel_aga(pix0); - } - last_bpl_pix = pix0; - } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); } - loaded_pix = getbpl8_64(); - loaded_pixs[0] = loaded_pix; uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - dpix_val1 = decode_ham_pixel_aga(pix1); - } - last_bpl_pix = pix1; - } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); } - loaded_pix = getbpl8_64(); - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dpix_val0 = filter_pixel(dpix_val0, dpix_val1); @@ -7866,7 +6886,7 @@ static void lts_aga_fm2_ham0_p8_ihires_dlores_filtered(void) denise_cck++; } } -static void lts_aga_fm2_ham1_p8_ihires_dlores(void) +static void lts_aga_fm2_kehb0_p2_ihires_dlores(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -7877,47 +6897,12 @@ 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; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = decode_ham_pixel_aga(pix0); - } - last_bpl_pix = pix0; - } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8e_64(); - } - if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); - } - loaded_pix = getbpl8_64(); - loaded_pixs[0] = loaded_pix; - uae_u8 pix1 = 0; - uae_u32 dpix_val1 = BLANK_COLOR; - if (!denise_blank_active) { - dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - decode_ham_pixel_aga(pix1); - } - last_bpl_pix = pix1; - } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8e_64(); - } - if (bpldat_copy[1] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); } - loaded_pix = getbpl8_64(); - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; @@ -7952,7 +6937,7 @@ static void lts_aga_fm2_ham1_p8_ihires_dlores(void) denise_cck++; } } -static void lts_aga_fm2_ham1_p8_ihires_dlores_filtered(void) +static void lts_aga_fm2_kehb0_p2_ihires_dlores_filtered(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -7963,48 +6948,17 @@ 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; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = decode_ham_pixel_aga(pix0); - } - last_bpl_pix = pix0; - } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8e_64(); - } - if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); } - loaded_pix = getbpl8_64(); - loaded_pixs[0] = loaded_pix; uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - dpix_val1 = decode_ham_pixel_aga(pix1); - } - last_bpl_pix = pix1; - } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8e_64(); - } - if (bpldat_copy[1] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); } - loaded_pix = getbpl8_64(); - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dpix_val0 = filter_pixel(dpix_val0, dpix_val1); @@ -8040,23 +6994,7 @@ static void lts_aga_fm2_ham1_p8_ihires_dlores_filtered(void) denise_cck++; } } -static void lts_aga_fm2_kehb0_p8_ihires_dlores(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb0_p8_ihires_dlores_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb1_p8_ihires_dlores(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb1_p8_ihires_dlores_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_n0_p2_ihires_dlores_spr(void) +static void lts_aga_fm2_kehb1_p2_ihires_dlores(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -8067,43 +7005,14 @@ 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; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix0; - } - shiftbpl2_64(); - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl2_64(); - } - loaded_pix = getbpl2_64(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } } - loaded_pixs[0] = loaded_pix; - shiftbpl2_64(); internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - } - } dtbuf[h][0] = dpix_val0; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -8136,7 +7045,7 @@ static void lts_aga_fm2_n0_p2_ihires_dlores_spr(void) denise_cck++; } } -static void lts_aga_fm2_n0_p2_ihires_dlores_spr_filtered(void) +static void lts_aga_fm2_kehb1_p2_ihires_dlores_filtered(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -8147,60 +7056,19 @@ 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; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix0; - } - shiftbpl2_64(); - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl2_64(); - } - loaded_pix = getbpl2_64(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } } - loaded_pixs[0] = loaded_pix; uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix1; } - shiftbpl2_64(); - if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { - copybpl2_64(); - } - loaded_pix = getbpl2_64(); - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - dpix_val1 = dpix_val0; - } - } dpix_val0 = filter_pixel(dpix_val0, dpix_val1); dtbuf[h][0] = dpix_val0; uae_u32 t0 = dtbuf[h ^ lol][0]; @@ -8234,7 +7102,7 @@ static void lts_aga_fm2_n0_p2_ihires_dlores_spr_filtered(void) denise_cck++; } } -static void lts_aga_fm2_n1_p2_ihires_dlores_spr(void) +static void lts_aga_fm2_n0_p4_ihires_dlores(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -8247,7 +7115,6 @@ static void lts_aga_fm2_n1_p2_ihires_dlores_spr(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -8259,32 +7126,15 @@ static void lts_aga_fm2_n1_p2_ihires_dlores_spr(void) } last_bpl_pix = pix0; } - shiftbpl2_64(); + shiftbpl4_64(); if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl2e_64(); - } - if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { - copybpl2o_64(); - } - loaded_pix = getbpl2_64(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } + copybpl4_64(); } + loaded_pix = getbpl4_64(); loaded_pixs[0] = loaded_pix; - shiftbpl2_64(); + shiftbpl4_64(); internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - } - } dtbuf[h][0] = dpix_val0; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -8317,7 +7167,7 @@ static void lts_aga_fm2_n1_p2_ihires_dlores_spr(void) denise_cck++; } } -static void lts_aga_fm2_n1_p2_ihires_dlores_spr_filtered(void) +static void lts_aga_fm2_n0_p4_ihires_dlores_filtered(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -8330,7 +7180,6 @@ static void lts_aga_fm2_n1_p2_ihires_dlores_spr_filtered(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -8342,22 +7191,11 @@ static void lts_aga_fm2_n1_p2_ihires_dlores_spr_filtered(void) } last_bpl_pix = pix0; } - shiftbpl2_64(); + shiftbpl4_64(); if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl2e_64(); - } - if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { - copybpl2o_64(); - } - loaded_pix = getbpl2_64(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } + copybpl4_64(); } + loaded_pix = getbpl4_64(); loaded_pixs[0] = loaded_pix; uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; @@ -8370,24 +7208,14 @@ static void lts_aga_fm2_n1_p2_ihires_dlores_spr_filtered(void) } last_bpl_pix = pix1; } - shiftbpl2_64(); + shiftbpl4_64(); if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { - copybpl2e_64(); - } - if (bpldat_copy[1] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) { - copybpl2o_64(); + copybpl4_64(); } - loaded_pix = getbpl2_64(); + loaded_pix = getbpl4_64(); loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - dpix_val1 = dpix_val0; - } - } dpix_val0 = filter_pixel(dpix_val0, dpix_val1); dtbuf[h][0] = dpix_val0; uae_u32 t0 = dtbuf[h ^ lol][0]; @@ -8421,7 +7249,7 @@ static void lts_aga_fm2_n1_p2_ihires_dlores_spr_filtered(void) denise_cck++; } } -static void lts_aga_fm2_dpf0_p2_ihires_dlores_spr(void) +static void lts_aga_fm2_n1_p4_ihires_dlores(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -8434,7 +7262,6 @@ static void lts_aga_fm2_dpf0_p2_ihires_dlores_spr(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -8442,38 +7269,22 @@ static void lts_aga_fm2_dpf0_p2_ihires_dlores_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix0; } - shiftbpl2_64(); + shiftbpl4_64(); if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl2_64(); + copybpl4e_64(); } - loaded_pix = getbpl2_64(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } + if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { + copybpl4o_64(); } + loaded_pix = getbpl4_64(); loaded_pixs[0] = loaded_pix; - shiftbpl2_64(); + shiftbpl4_64(); internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - } - } dtbuf[h][0] = dpix_val0; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -8506,7 +7317,7 @@ static void lts_aga_fm2_dpf0_p2_ihires_dlores_spr(void) denise_cck++; } } -static void lts_aga_fm2_dpf0_p2_ihires_dlores_spr_filtered(void) +static void lts_aga_fm2_n1_p4_ihires_dlores_filtered(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -8519,7 +7330,6 @@ static void lts_aga_fm2_dpf0_p2_ihires_dlores_spr_filtered(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -8527,28 +7337,18 @@ static void lts_aga_fm2_dpf0_p2_ihires_dlores_spr_filtered(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix0; } - shiftbpl2_64(); + shiftbpl4_64(); if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl2_64(); + copybpl4e_64(); } - loaded_pix = getbpl2_64(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } + if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { + copybpl4o_64(); } + loaded_pix = getbpl4_64(); loaded_pixs[0] = loaded_pix; uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; @@ -8557,30 +7357,21 @@ static void lts_aga_fm2_dpf0_p2_ihires_dlores_spr_filtered(void) if (denise_hdiw && bpl1dat_trigger) { pix1 = loaded_pixs[1]; clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - if (dpf_lookup_no[pix1]) { - val1 += dblpfofs[bpldualpf2of]; - } - val1 ^= bplcon4_denise_xor_val; - dpix_val1 = denise_colors.acolors[val1]; + dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix1; } - shiftbpl2_64(); + shiftbpl4_64(); if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { - copybpl2_64(); + copybpl4e_64(); } - loaded_pix = getbpl2_64(); + if (bpldat_copy[1] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) { + copybpl4o_64(); + } + loaded_pix = getbpl4_64(); loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - dpix_val1 = dpix_val0; - } - } dpix_val0 = filter_pixel(dpix_val0, dpix_val1); dtbuf[h][0] = dpix_val0; uae_u32 t0 = dtbuf[h ^ lol][0]; @@ -8614,7 +7405,7 @@ static void lts_aga_fm2_dpf0_p2_ihires_dlores_spr_filtered(void) denise_cck++; } } -static void lts_aga_fm2_dpf1_p2_ihires_dlores_spr(void) +static void lts_aga_fm2_dpf0_p4_ihires_dlores(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -8627,7 +7418,6 @@ static void lts_aga_fm2_dpf1_p2_ihires_dlores_spr(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -8644,32 +7434,15 @@ static void lts_aga_fm2_dpf1_p2_ihires_dlores_spr(void) } last_bpl_pix = pix0; } - shiftbpl2_64(); + shiftbpl4_64(); if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl2e_64(); - } - if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { - copybpl2o_64(); - } - loaded_pix = getbpl2_64(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } + copybpl4_64(); } + loaded_pix = getbpl4_64(); loaded_pixs[0] = loaded_pix; - shiftbpl2_64(); + shiftbpl4_64(); internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - } - } dtbuf[h][0] = dpix_val0; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -8702,7 +7475,7 @@ static void lts_aga_fm2_dpf1_p2_ihires_dlores_spr(void) denise_cck++; } } -static void lts_aga_fm2_dpf1_p2_ihires_dlores_spr_filtered(void) +static void lts_aga_fm2_dpf0_p4_ihires_dlores_filtered(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -8715,7 +7488,6 @@ static void lts_aga_fm2_dpf1_p2_ihires_dlores_spr_filtered(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -8732,22 +7504,11 @@ static void lts_aga_fm2_dpf1_p2_ihires_dlores_spr_filtered(void) } last_bpl_pix = pix0; } - shiftbpl2_64(); + shiftbpl4_64(); if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl2e_64(); - } - if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { - copybpl2o_64(); - } - loaded_pix = getbpl2_64(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } + copybpl4_64(); } + loaded_pix = getbpl4_64(); loaded_pixs[0] = loaded_pix; uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; @@ -8765,24 +7526,14 @@ static void lts_aga_fm2_dpf1_p2_ihires_dlores_spr_filtered(void) } last_bpl_pix = pix1; } - shiftbpl2_64(); + shiftbpl4_64(); if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { - copybpl2e_64(); - } - if (bpldat_copy[1] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) { - copybpl2o_64(); + copybpl4_64(); } - loaded_pix = getbpl2_64(); + loaded_pix = getbpl4_64(); loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - dpix_val1 = dpix_val0; - } - } dpix_val0 = filter_pixel(dpix_val0, dpix_val1); dtbuf[h][0] = dpix_val0; uae_u32 t0 = dtbuf[h ^ lol][0]; @@ -8816,55 +7567,7 @@ static void lts_aga_fm2_dpf1_p2_ihires_dlores_spr_filtered(void) denise_cck++; } } -static void lts_aga_fm2_ehb0_p2_ihires_dlores_spr(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb0_p2_ihires_dlores_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb1_p2_ihires_dlores_spr(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb1_p2_ihires_dlores_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_ham0_p2_ihires_dlores_spr(void) -{ - lts_null(); -} -static void lts_aga_fm2_ham0_p2_ihires_dlores_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_ham1_p2_ihires_dlores_spr(void) -{ - lts_null(); -} -static void lts_aga_fm2_ham1_p2_ihires_dlores_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb0_p2_ihires_dlores_spr(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb0_p2_ihires_dlores_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb1_p2_ihires_dlores_spr(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb1_p2_ihires_dlores_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_n0_p4_ihires_dlores_spr(void) +static void lts_aga_fm2_dpf1_p4_ihires_dlores(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -8877,7 +7580,6 @@ static void lts_aga_fm2_n0_p4_ihires_dlores_spr(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -8885,33 +7587,27 @@ static void lts_aga_fm2_n0_p4_ihires_dlores_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; } last_bpl_pix = pix0; } shiftbpl4_64(); if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl4_64(); + copybpl4e_64(); } - loaded_pix = getbpl4_64(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } + if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { + copybpl4o_64(); } + loaded_pix = getbpl4_64(); loaded_pixs[0] = loaded_pix; shiftbpl4_64(); internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - } - } dtbuf[h][0] = dpix_val0; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -8944,7 +7640,7 @@ static void lts_aga_fm2_n0_p4_ihires_dlores_spr(void) denise_cck++; } } -static void lts_aga_fm2_n0_p4_ihires_dlores_spr_filtered(void) +static void lts_aga_fm2_dpf1_p4_ihires_dlores_filtered(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -8957,7 +7653,6 @@ static void lts_aga_fm2_n0_p4_ihires_dlores_spr_filtered(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -8965,23 +7660,23 @@ static void lts_aga_fm2_n0_p4_ihires_dlores_spr_filtered(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; } last_bpl_pix = pix0; } shiftbpl4_64(); if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl4_64(); + copybpl4e_64(); } - loaded_pix = getbpl4_64(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } + if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { + copybpl4o_64(); } + loaded_pix = getbpl4_64(); loaded_pixs[0] = loaded_pix; uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; @@ -8990,25 +7685,26 @@ static void lts_aga_fm2_n0_p4_ihires_dlores_spr_filtered(void) if (denise_hdiw && bpl1dat_trigger) { pix1 = loaded_pixs[1]; clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; + uae_u8 val1 = dpf_lookup[pix1]; + if (dpf_lookup_no[pix1]) { + val1 += dblpfofs[bpldualpf2of]; + } + val1 ^= bplcon4_denise_xor_val; + dpix_val1 = denise_colors.acolors[val1]; } last_bpl_pix = pix1; } shiftbpl4_64(); if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { - copybpl4_64(); + copybpl4e_64(); + } + if (bpldat_copy[1] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) { + copybpl4o_64(); } loaded_pix = getbpl4_64(); loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - dpix_val1 = dpix_val0; - } - } dpix_val0 = filter_pixel(dpix_val0, dpix_val1); dtbuf[h][0] = dpix_val0; uae_u32 t0 = dtbuf[h ^ lol][0]; @@ -9042,7 +7738,7 @@ static void lts_aga_fm2_n0_p4_ihires_dlores_spr_filtered(void) denise_cck++; } } -static void lts_aga_fm2_n1_p4_ihires_dlores_spr(void) +static void lts_aga_fm2_ehb0_p4_ihires_dlores(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -9053,46 +7749,14 @@ 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; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix0; - } - shiftbpl4_64(); - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl4e_64(); - } - if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { - copybpl4o_64(); - } - loaded_pix = getbpl4_64(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } } - loaded_pixs[0] = loaded_pix; - shiftbpl4_64(); internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - } - } dtbuf[h][0] = dpix_val0; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -9125,7 +7789,7 @@ static void lts_aga_fm2_n1_p4_ihires_dlores_spr(void) denise_cck++; } } -static void lts_aga_fm2_n1_p4_ihires_dlores_spr_filtered(void) +static void lts_aga_fm2_ehb0_p4_ihires_dlores_filtered(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -9136,66 +7800,19 @@ 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; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix0; - } - shiftbpl4_64(); - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl4e_64(); - } - if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { - copybpl4o_64(); } - loaded_pix = getbpl4_64(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } - } - loaded_pixs[0] = loaded_pix; uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix1; } - shiftbpl4_64(); - if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { - copybpl4e_64(); - } - if (bpldat_copy[1] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) { - copybpl4o_64(); - } - loaded_pix = getbpl4_64(); - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - dpix_val1 = dpix_val0; - } - } dpix_val0 = filter_pixel(dpix_val0, dpix_val1); dtbuf[h][0] = dpix_val0; uae_u32 t0 = dtbuf[h ^ lol][0]; @@ -9229,7 +7846,7 @@ static void lts_aga_fm2_n1_p4_ihires_dlores_spr_filtered(void) denise_cck++; } } -static void lts_aga_fm2_dpf0_p4_ihires_dlores_spr(void) +static void lts_aga_fm2_ehb1_p4_ihires_dlores(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -9240,48 +7857,14 @@ 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; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; - } - shiftbpl4_64(); - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl4_64(); - } - loaded_pix = getbpl4_64(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } } - loaded_pixs[0] = loaded_pix; - shiftbpl4_64(); internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - } - } dtbuf[h][0] = dpix_val0; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -9314,7 +7897,7 @@ static void lts_aga_fm2_dpf0_p4_ihires_dlores_spr(void) denise_cck++; } } -static void lts_aga_fm2_dpf0_p4_ihires_dlores_spr_filtered(void) +static void lts_aga_fm2_ehb1_p4_ihires_dlores_filtered(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -9325,70 +7908,19 @@ 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; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; - } - shiftbpl4_64(); - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl4_64(); - } - loaded_pix = getbpl4_64(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } } - loaded_pixs[0] = loaded_pix; uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - if (dpf_lookup_no[pix1]) { - val1 += dblpfofs[bpldualpf2of]; - } - val1 ^= bplcon4_denise_xor_val; - dpix_val1 = denise_colors.acolors[val1]; - } - last_bpl_pix = pix1; - } - shiftbpl4_64(); - if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { - copybpl4_64(); } - loaded_pix = getbpl4_64(); - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - dpix_val1 = dpix_val0; - } - } dpix_val0 = filter_pixel(dpix_val0, dpix_val1); dtbuf[h][0] = dpix_val0; uae_u32 t0 = dtbuf[h ^ lol][0]; @@ -9422,7 +7954,7 @@ static void lts_aga_fm2_dpf0_p4_ihires_dlores_spr_filtered(void) denise_cck++; } } -static void lts_aga_fm2_dpf1_p4_ihires_dlores_spr(void) +static void lts_aga_fm2_ham0_p4_ihires_dlores(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -9433,51 +7965,19 @@ 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; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; } - shiftbpl4_64(); - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl4e_64(); - } - if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { - copybpl4o_64(); - } - loaded_pix = getbpl4_64(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; } - loaded_pixs[0] = loaded_pix; - shiftbpl4_64(); internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - } - } dtbuf[h][0] = dpix_val0; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -9510,7 +8010,7 @@ static void lts_aga_fm2_dpf1_p4_ihires_dlores_spr(void) denise_cck++; } } -static void lts_aga_fm2_dpf1_p4_ihires_dlores_spr_filtered(void) +static void lts_aga_fm2_ham0_p4_ihires_dlores_filtered(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -9521,76 +8021,19 @@ 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; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; - } - shiftbpl4_64(); - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl4e_64(); - } - if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { - copybpl4o_64(); - } - loaded_pix = getbpl4_64(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } } - loaded_pixs[0] = loaded_pix; uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - if (dpf_lookup_no[pix1]) { - val1 += dblpfofs[bpldualpf2of]; - } - val1 ^= bplcon4_denise_xor_val; - dpix_val1 = denise_colors.acolors[val1]; - } - last_bpl_pix = pix1; - } - shiftbpl4_64(); - if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { - copybpl4e_64(); - } - if (bpldat_copy[1] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) { - copybpl4o_64(); } - loaded_pix = getbpl4_64(); - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - dpix_val1 = dpix_val0; - } - } dpix_val0 = filter_pixel(dpix_val0, dpix_val1); dtbuf[h][0] = dpix_val0; uae_u32 t0 = dtbuf[h ^ lol][0]; @@ -9624,55 +8067,7 @@ static void lts_aga_fm2_dpf1_p4_ihires_dlores_spr_filtered(void) denise_cck++; } } -static void lts_aga_fm2_ehb0_p4_ihires_dlores_spr(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb0_p4_ihires_dlores_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb1_p4_ihires_dlores_spr(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb1_p4_ihires_dlores_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_ham0_p4_ihires_dlores_spr(void) -{ - lts_null(); -} -static void lts_aga_fm2_ham0_p4_ihires_dlores_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_ham1_p4_ihires_dlores_spr(void) -{ - lts_null(); -} -static void lts_aga_fm2_ham1_p4_ihires_dlores_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb0_p4_ihires_dlores_spr(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb0_p4_ihires_dlores_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb1_p4_ihires_dlores_spr(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb1_p4_ihires_dlores_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_n0_p6_ihires_dlores_spr(void) +static void lts_aga_fm2_ham1_p4_ihires_dlores(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -9683,43 +8078,19 @@ 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; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix0; } - shiftbpl6_64(); - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl6_64(); + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; } - loaded_pix = getbpl6_64(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } - } - loaded_pixs[0] = loaded_pix; - shiftbpl6_64(); internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - } - } dtbuf[h][0] = dpix_val0; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -9752,7 +8123,7 @@ static void lts_aga_fm2_n0_p6_ihires_dlores_spr(void) denise_cck++; } } -static void lts_aga_fm2_n0_p6_ihires_dlores_spr_filtered(void) +static void lts_aga_fm2_ham1_p4_ihires_dlores_filtered(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -9763,60 +8134,19 @@ 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; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix0; - } - shiftbpl6_64(); - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl6_64(); - } - loaded_pix = getbpl6_64(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } } - loaded_pixs[0] = loaded_pix; uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix1; - } - shiftbpl6_64(); - if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { - copybpl6_64(); } - loaded_pix = getbpl6_64(); - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - dpix_val1 = dpix_val0; - } - } dpix_val0 = filter_pixel(dpix_val0, dpix_val1); dtbuf[h][0] = dpix_val0; uae_u32 t0 = dtbuf[h ^ lol][0]; @@ -9850,7 +8180,7 @@ static void lts_aga_fm2_n0_p6_ihires_dlores_spr_filtered(void) denise_cck++; } } -static void lts_aga_fm2_n1_p6_ihires_dlores_spr(void) +static void lts_aga_fm2_kehb0_p4_ihires_dlores(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -9861,46 +8191,71 @@ 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; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); } - last_bpl_pix = pix0; + #endif + *buf1++ = t0; + *buf2++ = t0; } - shiftbpl6_64(); - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl6e_64(); + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_kehb0_p4_ihires_dlores_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; } - if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { - copybpl6o_64(); + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; } - loaded_pix = getbpl6_64(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; } - loaded_pixs[0] = loaded_pix; - shiftbpl6_64(); internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - } - } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); dtbuf[h][0] = dpix_val0; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -9933,7 +8288,7 @@ static void lts_aga_fm2_n1_p6_ihires_dlores_spr(void) denise_cck++; } } -static void lts_aga_fm2_n1_p6_ihires_dlores_spr_filtered(void) +static void lts_aga_fm2_kehb1_p4_ihires_dlores(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -9944,66 +8299,70 @@ 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; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix0; } - shiftbpl6_64(); - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl6e_64(); + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; } - if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { - copybpl6o_64(); + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_kehb1_p4_ihires_dlores_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; } - loaded_pix = getbpl6_64(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; } - loaded_pixs[0] = loaded_pix; uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix1; - } - shiftbpl6_64(); - if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { - copybpl6e_64(); } - if (bpldat_copy[1] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) { - copybpl6o_64(); - } - loaded_pix = getbpl6_64(); - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - dpix_val1 = dpix_val0; - } - } dpix_val0 = filter_pixel(dpix_val0, dpix_val1); dtbuf[h][0] = dpix_val0; uae_u32 t0 = dtbuf[h ^ lol][0]; @@ -10037,7 +8396,7 @@ static void lts_aga_fm2_n1_p6_ihires_dlores_spr_filtered(void) denise_cck++; } } -static void lts_aga_fm2_dpf0_p6_ihires_dlores_spr(void) +static void lts_aga_fm2_n0_p6_ihires_dlores(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -10050,7 +8409,6 @@ static void lts_aga_fm2_dpf0_p6_ihires_dlores_spr(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -10058,12 +8416,7 @@ static void lts_aga_fm2_dpf0_p6_ihires_dlores_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix0; } @@ -10072,24 +8425,10 @@ static void lts_aga_fm2_dpf0_p6_ihires_dlores_spr(void) copybpl6_64(); } loaded_pix = getbpl6_64(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } - } loaded_pixs[0] = loaded_pix; shiftbpl6_64(); internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - } - } dtbuf[h][0] = dpix_val0; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -10122,7 +8461,7 @@ static void lts_aga_fm2_dpf0_p6_ihires_dlores_spr(void) denise_cck++; } } -static void lts_aga_fm2_dpf0_p6_ihires_dlores_spr_filtered(void) +static void lts_aga_fm2_n0_p6_ihires_dlores_filtered(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -10135,7 +8474,6 @@ static void lts_aga_fm2_dpf0_p6_ihires_dlores_spr_filtered(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -10143,12 +8481,7 @@ static void lts_aga_fm2_dpf0_p6_ihires_dlores_spr_filtered(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix0; } @@ -10157,14 +8490,6 @@ static void lts_aga_fm2_dpf0_p6_ihires_dlores_spr_filtered(void) copybpl6_64(); } loaded_pix = getbpl6_64(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } - } loaded_pixs[0] = loaded_pix; uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; @@ -10173,12 +8498,7 @@ static void lts_aga_fm2_dpf0_p6_ihires_dlores_spr_filtered(void) if (denise_hdiw && bpl1dat_trigger) { pix1 = loaded_pixs[1]; clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - if (dpf_lookup_no[pix1]) { - val1 += dblpfofs[bpldualpf2of]; - } - val1 ^= bplcon4_denise_xor_val; - dpix_val1 = denise_colors.acolors[val1]; + dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix1; } @@ -10190,13 +8510,6 @@ static void lts_aga_fm2_dpf0_p6_ihires_dlores_spr_filtered(void) loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - dpix_val1 = dpix_val0; - } - } dpix_val0 = filter_pixel(dpix_val0, dpix_val1); dtbuf[h][0] = dpix_val0; uae_u32 t0 = dtbuf[h ^ lol][0]; @@ -10230,7 +8543,7 @@ static void lts_aga_fm2_dpf0_p6_ihires_dlores_spr_filtered(void) denise_cck++; } } -static void lts_aga_fm2_dpf1_p6_ihires_dlores_spr(void) +static void lts_aga_fm2_n1_p6_ihires_dlores(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -10243,7 +8556,6 @@ static void lts_aga_fm2_dpf1_p6_ihires_dlores_spr(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -10251,12 +8563,7 @@ static void lts_aga_fm2_dpf1_p6_ihires_dlores_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix0; } @@ -10268,24 +8575,10 @@ static void lts_aga_fm2_dpf1_p6_ihires_dlores_spr(void) copybpl6o_64(); } loaded_pix = getbpl6_64(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } - } loaded_pixs[0] = loaded_pix; shiftbpl6_64(); internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - } - } dtbuf[h][0] = dpix_val0; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -10318,7 +8611,7 @@ static void lts_aga_fm2_dpf1_p6_ihires_dlores_spr(void) denise_cck++; } } -static void lts_aga_fm2_dpf1_p6_ihires_dlores_spr_filtered(void) +static void lts_aga_fm2_n1_p6_ihires_dlores_filtered(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -10331,7 +8624,6 @@ static void lts_aga_fm2_dpf1_p6_ihires_dlores_spr_filtered(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -10339,12 +8631,7 @@ static void lts_aga_fm2_dpf1_p6_ihires_dlores_spr_filtered(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix0; } @@ -10356,14 +8643,6 @@ static void lts_aga_fm2_dpf1_p6_ihires_dlores_spr_filtered(void) copybpl6o_64(); } loaded_pix = getbpl6_64(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } - } loaded_pixs[0] = loaded_pix; uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; @@ -10372,12 +8651,7 @@ static void lts_aga_fm2_dpf1_p6_ihires_dlores_spr_filtered(void) if (denise_hdiw && bpl1dat_trigger) { pix1 = loaded_pixs[1]; clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - if (dpf_lookup_no[pix1]) { - val1 += dblpfofs[bpldualpf2of]; - } - val1 ^= bplcon4_denise_xor_val; - dpix_val1 = denise_colors.acolors[val1]; + dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix1; } @@ -10392,13 +8666,6 @@ static void lts_aga_fm2_dpf1_p6_ihires_dlores_spr_filtered(void) loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - dpix_val1 = dpix_val0; - } - } dpix_val0 = filter_pixel(dpix_val0, dpix_val1); dtbuf[h][0] = dpix_val0; uae_u32 t0 = dtbuf[h ^ lol][0]; @@ -10432,7 +8699,7 @@ static void lts_aga_fm2_dpf1_p6_ihires_dlores_spr_filtered(void) denise_cck++; } } -static void lts_aga_fm2_ehb0_p6_ihires_dlores_spr(void) +static void lts_aga_fm2_dpf0_p6_ihires_dlores(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -10445,7 +8712,6 @@ static void lts_aga_fm2_ehb0_p6_ihires_dlores_spr(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -10453,13 +8719,12 @@ static void lts_aga_fm2_ehb0_p6_ihires_dlores_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - pix0 ^= bplcon4_denise_xor_val; - if (!(pix0 & 0x20)) { - dpix_val0 = denise_colors.acolors[pix0]; - } else { - uae_u32 v = (denise_colors.color_regs_aga[pix0 & 0x1f] >> 1) & 0x7f7f7f; - dpix_val0 = CONVERT_RGB(v); + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; } last_bpl_pix = pix0; } @@ -10468,24 +8733,10 @@ static void lts_aga_fm2_ehb0_p6_ihires_dlores_spr(void) copybpl6_64(); } loaded_pix = getbpl6_64(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } - } loaded_pixs[0] = loaded_pix; shiftbpl6_64(); internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - } - } dtbuf[h][0] = dpix_val0; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -10518,7 +8769,7 @@ static void lts_aga_fm2_ehb0_p6_ihires_dlores_spr(void) denise_cck++; } } -static void lts_aga_fm2_ehb0_p6_ihires_dlores_spr_filtered(void) +static void lts_aga_fm2_dpf0_p6_ihires_dlores_filtered(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -10531,7 +8782,6 @@ static void lts_aga_fm2_ehb0_p6_ihires_dlores_spr_filtered(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -10539,13 +8789,12 @@ static void lts_aga_fm2_ehb0_p6_ihires_dlores_spr_filtered(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - pix0 ^= bplcon4_denise_xor_val; - if (!(pix0 & 0x20)) { - dpix_val0 = denise_colors.acolors[pix0]; - } else { - uae_u32 v = (denise_colors.color_regs_aga[pix0 & 0x1f] >> 1) & 0x7f7f7f; - dpix_val0 = CONVERT_RGB(v); + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; } last_bpl_pix = pix0; } @@ -10554,14 +8803,6 @@ static void lts_aga_fm2_ehb0_p6_ihires_dlores_spr_filtered(void) copybpl6_64(); } loaded_pix = getbpl6_64(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } - } loaded_pixs[0] = loaded_pix; uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; @@ -10570,13 +8811,12 @@ static void lts_aga_fm2_ehb0_p6_ihires_dlores_spr_filtered(void) if (denise_hdiw && bpl1dat_trigger) { pix1 = loaded_pixs[1]; clxdat |= bplcoltable[pix1]; - pix1 ^= bplcon4_denise_xor_val; - if (!(pix1 & 0x20)) { - dpix_val1 = denise_colors.acolors[pix1]; - } else { - uae_u32 v = (denise_colors.color_regs_aga[pix1 & 0x1f] >> 1) & 0x7f7f7f; - dpix_val1 = CONVERT_RGB(v); + uae_u8 val1 = dpf_lookup[pix1]; + if (dpf_lookup_no[pix1]) { + val1 += dblpfofs[bpldualpf2of]; } + val1 ^= bplcon4_denise_xor_val; + dpix_val1 = denise_colors.acolors[val1]; } last_bpl_pix = pix1; } @@ -10588,13 +8828,6 @@ static void lts_aga_fm2_ehb0_p6_ihires_dlores_spr_filtered(void) loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - dpix_val1 = dpix_val0; - } - } dpix_val0 = filter_pixel(dpix_val0, dpix_val1); dtbuf[h][0] = dpix_val0; uae_u32 t0 = dtbuf[h ^ lol][0]; @@ -10628,7 +8861,7 @@ static void lts_aga_fm2_ehb0_p6_ihires_dlores_spr_filtered(void) denise_cck++; } } -static void lts_aga_fm2_ehb1_p6_ihires_dlores_spr(void) +static void lts_aga_fm2_dpf1_p6_ihires_dlores(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -10641,7 +8874,6 @@ static void lts_aga_fm2_ehb1_p6_ihires_dlores_spr(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -10649,13 +8881,12 @@ static void lts_aga_fm2_ehb1_p6_ihires_dlores_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - pix0 ^= bplcon4_denise_xor_val; - if (!(pix0 & 0x20)) { - dpix_val0 = denise_colors.acolors[pix0]; - } else { - uae_u32 v = (denise_colors.color_regs_aga[pix0 & 0x1f] >> 1) & 0x7f7f7f; - dpix_val0 = CONVERT_RGB(v); + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; } last_bpl_pix = pix0; } @@ -10667,24 +8898,10 @@ static void lts_aga_fm2_ehb1_p6_ihires_dlores_spr(void) copybpl6o_64(); } loaded_pix = getbpl6_64(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } - } loaded_pixs[0] = loaded_pix; shiftbpl6_64(); internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - } - } dtbuf[h][0] = dpix_val0; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -10717,7 +8934,7 @@ static void lts_aga_fm2_ehb1_p6_ihires_dlores_spr(void) denise_cck++; } } -static void lts_aga_fm2_ehb1_p6_ihires_dlores_spr_filtered(void) +static void lts_aga_fm2_dpf1_p6_ihires_dlores_filtered(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -10730,7 +8947,6 @@ static void lts_aga_fm2_ehb1_p6_ihires_dlores_spr_filtered(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -10738,13 +8954,12 @@ static void lts_aga_fm2_ehb1_p6_ihires_dlores_spr_filtered(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - pix0 ^= bplcon4_denise_xor_val; - if (!(pix0 & 0x20)) { - dpix_val0 = denise_colors.acolors[pix0]; - } else { - uae_u32 v = (denise_colors.color_regs_aga[pix0 & 0x1f] >> 1) & 0x7f7f7f; - dpix_val0 = CONVERT_RGB(v); + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; } last_bpl_pix = pix0; } @@ -10756,14 +8971,6 @@ static void lts_aga_fm2_ehb1_p6_ihires_dlores_spr_filtered(void) copybpl6o_64(); } loaded_pix = getbpl6_64(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } - } loaded_pixs[0] = loaded_pix; uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; @@ -10772,13 +8979,12 @@ static void lts_aga_fm2_ehb1_p6_ihires_dlores_spr_filtered(void) if (denise_hdiw && bpl1dat_trigger) { pix1 = loaded_pixs[1]; clxdat |= bplcoltable[pix1]; - pix1 ^= bplcon4_denise_xor_val; - if (!(pix1 & 0x20)) { - dpix_val1 = denise_colors.acolors[pix1]; - } else { - uae_u32 v = (denise_colors.color_regs_aga[pix1 & 0x1f] >> 1) & 0x7f7f7f; - dpix_val1 = CONVERT_RGB(v); + uae_u8 val1 = dpf_lookup[pix1]; + if (dpf_lookup_no[pix1]) { + val1 += dblpfofs[bpldualpf2of]; } + val1 ^= bplcon4_denise_xor_val; + dpix_val1 = denise_colors.acolors[val1]; } last_bpl_pix = pix1; } @@ -10793,13 +8999,6 @@ static void lts_aga_fm2_ehb1_p6_ihires_dlores_spr_filtered(void) loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - dpix_val1 = dpix_val0; - } - } dpix_val0 = filter_pixel(dpix_val0, dpix_val1); dtbuf[h][0] = dpix_val0; uae_u32 t0 = dtbuf[h ^ lol][0]; @@ -10833,7 +9032,7 @@ static void lts_aga_fm2_ehb1_p6_ihires_dlores_spr_filtered(void) denise_cck++; } } -static void lts_aga_fm2_ham0_p6_ihires_dlores_spr(void) +static void lts_aga_fm2_ehb0_p6_ihires_dlores(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -10846,7 +9045,6 @@ static void lts_aga_fm2_ham0_p6_ihires_dlores_spr(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -10854,7 +9052,13 @@ static void lts_aga_fm2_ham0_p6_ihires_dlores_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - dpix_val0 = decode_ham_pixel_aga(pix0); + pix0 ^= bplcon4_denise_xor_val; + if (!(pix0 & 0x20)) { + dpix_val0 = denise_colors.acolors[pix0]; + } else { + uae_u32 v = (denise_colors.color_regs_aga[pix0 & 0x1f] >> 1) & 0x7f7f7f; + dpix_val0 = CONVERT_RGB(v); + } } last_bpl_pix = pix0; } @@ -10863,39 +9067,10 @@ static void lts_aga_fm2_ham0_p6_ihires_dlores_spr(void) copybpl6_64(); } loaded_pix = getbpl6_64(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } - } loaded_pixs[0] = loaded_pix; - uae_u8 pix1 = 0; - uae_u32 dpix_val1 = BLANK_COLOR; - if (!denise_blank_active) { - dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - decode_ham_pixel_aga(pix1); - } - last_bpl_pix = pix1; - } shiftbpl6_64(); - if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { - copybpl6_64(); - } - loaded_pix = getbpl6_64(); - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - } - } dtbuf[h][0] = dpix_val0; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -10928,7 +9103,7 @@ static void lts_aga_fm2_ham0_p6_ihires_dlores_spr(void) denise_cck++; } } -static void lts_aga_fm2_ham0_p6_ihires_dlores_spr_filtered(void) +static void lts_aga_fm2_ehb0_p6_ihires_dlores_filtered(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -10941,7 +9116,6 @@ static void lts_aga_fm2_ham0_p6_ihires_dlores_spr_filtered(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -10949,7 +9123,13 @@ static void lts_aga_fm2_ham0_p6_ihires_dlores_spr_filtered(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - dpix_val0 = decode_ham_pixel_aga(pix0); + pix0 ^= bplcon4_denise_xor_val; + if (!(pix0 & 0x20)) { + dpix_val0 = denise_colors.acolors[pix0]; + } else { + uae_u32 v = (denise_colors.color_regs_aga[pix0 & 0x1f] >> 1) & 0x7f7f7f; + dpix_val0 = CONVERT_RGB(v); + } } last_bpl_pix = pix0; } @@ -10958,14 +9138,6 @@ static void lts_aga_fm2_ham0_p6_ihires_dlores_spr_filtered(void) copybpl6_64(); } loaded_pix = getbpl6_64(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } - } loaded_pixs[0] = loaded_pix; uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; @@ -10974,7 +9146,13 @@ static void lts_aga_fm2_ham0_p6_ihires_dlores_spr_filtered(void) if (denise_hdiw && bpl1dat_trigger) { pix1 = loaded_pixs[1]; clxdat |= bplcoltable[pix1]; - dpix_val1 = decode_ham_pixel_aga(pix1); + pix1 ^= bplcon4_denise_xor_val; + if (!(pix1 & 0x20)) { + dpix_val1 = denise_colors.acolors[pix1]; + } else { + uae_u32 v = (denise_colors.color_regs_aga[pix1 & 0x1f] >> 1) & 0x7f7f7f; + dpix_val1 = CONVERT_RGB(v); + } } last_bpl_pix = pix1; } @@ -10986,13 +9164,6 @@ static void lts_aga_fm2_ham0_p6_ihires_dlores_spr_filtered(void) loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - dpix_val1 = dpix_val0; - } - } dpix_val0 = filter_pixel(dpix_val0, dpix_val1); dtbuf[h][0] = dpix_val0; uae_u32 t0 = dtbuf[h ^ lol][0]; @@ -11026,7 +9197,7 @@ static void lts_aga_fm2_ham0_p6_ihires_dlores_spr_filtered(void) denise_cck++; } } -static void lts_aga_fm2_ham1_p6_ihires_dlores_spr(void) +static void lts_aga_fm2_ehb1_p6_ihires_dlores(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -11039,7 +9210,6 @@ static void lts_aga_fm2_ham1_p6_ihires_dlores_spr(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -11047,7 +9217,13 @@ static void lts_aga_fm2_ham1_p6_ihires_dlores_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - dpix_val0 = decode_ham_pixel_aga(pix0); + pix0 ^= bplcon4_denise_xor_val; + if (!(pix0 & 0x20)) { + dpix_val0 = denise_colors.acolors[pix0]; + } else { + uae_u32 v = (denise_colors.color_regs_aga[pix0 & 0x1f] >> 1) & 0x7f7f7f; + dpix_val0 = CONVERT_RGB(v); + } } last_bpl_pix = pix0; } @@ -11059,42 +9235,10 @@ static void lts_aga_fm2_ham1_p6_ihires_dlores_spr(void) copybpl6o_64(); } loaded_pix = getbpl6_64(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } - } loaded_pixs[0] = loaded_pix; - uae_u8 pix1 = 0; - uae_u32 dpix_val1 = BLANK_COLOR; - if (!denise_blank_active) { - dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - decode_ham_pixel_aga(pix1); - } - last_bpl_pix = pix1; - } shiftbpl6_64(); - if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { - copybpl6e_64(); - } - if (bpldat_copy[1] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) { - copybpl6o_64(); - } - loaded_pix = getbpl6_64(); - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - } - } dtbuf[h][0] = dpix_val0; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -11127,7 +9271,7 @@ static void lts_aga_fm2_ham1_p6_ihires_dlores_spr(void) denise_cck++; } } -static void lts_aga_fm2_ham1_p6_ihires_dlores_spr_filtered(void) +static void lts_aga_fm2_ehb1_p6_ihires_dlores_filtered(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -11140,7 +9284,6 @@ static void lts_aga_fm2_ham1_p6_ihires_dlores_spr_filtered(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -11148,7 +9291,13 @@ static void lts_aga_fm2_ham1_p6_ihires_dlores_spr_filtered(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - dpix_val0 = decode_ham_pixel_aga(pix0); + pix0 ^= bplcon4_denise_xor_val; + if (!(pix0 & 0x20)) { + dpix_val0 = denise_colors.acolors[pix0]; + } else { + uae_u32 v = (denise_colors.color_regs_aga[pix0 & 0x1f] >> 1) & 0x7f7f7f; + dpix_val0 = CONVERT_RGB(v); + } } last_bpl_pix = pix0; } @@ -11160,14 +9309,6 @@ static void lts_aga_fm2_ham1_p6_ihires_dlores_spr_filtered(void) copybpl6o_64(); } loaded_pix = getbpl6_64(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } - } loaded_pixs[0] = loaded_pix; uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; @@ -11176,7 +9317,13 @@ static void lts_aga_fm2_ham1_p6_ihires_dlores_spr_filtered(void) if (denise_hdiw && bpl1dat_trigger) { pix1 = loaded_pixs[1]; clxdat |= bplcoltable[pix1]; - dpix_val1 = decode_ham_pixel_aga(pix1); + pix1 ^= bplcon4_denise_xor_val; + if (!(pix1 & 0x20)) { + dpix_val1 = denise_colors.acolors[pix1]; + } else { + uae_u32 v = (denise_colors.color_regs_aga[pix1 & 0x1f] >> 1) & 0x7f7f7f; + dpix_val1 = CONVERT_RGB(v); + } } last_bpl_pix = pix1; } @@ -11191,13 +9338,6 @@ static void lts_aga_fm2_ham1_p6_ihires_dlores_spr_filtered(void) loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - dpix_val1 = dpix_val0; - } - } dpix_val0 = filter_pixel(dpix_val0, dpix_val1); dtbuf[h][0] = dpix_val0; uae_u32 t0 = dtbuf[h ^ lol][0]; @@ -11231,7 +9371,7 @@ static void lts_aga_fm2_ham1_p6_ihires_dlores_spr_filtered(void) denise_cck++; } } -static void lts_aga_fm2_kehb0_p6_ihires_dlores_spr(void) +static void lts_aga_fm2_ham0_p6_ihires_dlores(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -11244,7 +9384,6 @@ static void lts_aga_fm2_kehb0_p6_ihires_dlores_spr(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -11252,8 +9391,7 @@ static void lts_aga_fm2_kehb0_p6_ihires_dlores_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - pix0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[pix0 & 31]; + dpix_val0 = decode_ham_pixel_aga(pix0); } last_bpl_pix = pix0; } @@ -11262,24 +9400,25 @@ static void lts_aga_fm2_kehb0_p6_ihires_dlores_spr(void) copybpl6_64(); } loaded_pix = getbpl6_64(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; + loaded_pixs[0] = loaded_pix; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + decode_ham_pixel_aga(pix1); } + last_bpl_pix = pix1; } - loaded_pixs[0] = loaded_pix; shiftbpl6_64(); + if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { + copybpl6_64(); + } + loaded_pix = getbpl6_64(); + loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - } - } dtbuf[h][0] = dpix_val0; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -11312,7 +9451,7 @@ static void lts_aga_fm2_kehb0_p6_ihires_dlores_spr(void) denise_cck++; } } -static void lts_aga_fm2_kehb0_p6_ihires_dlores_spr_filtered(void) +static void lts_aga_fm2_ham0_p6_ihires_dlores_filtered(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -11325,7 +9464,6 @@ static void lts_aga_fm2_kehb0_p6_ihires_dlores_spr_filtered(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -11333,8 +9471,7 @@ static void lts_aga_fm2_kehb0_p6_ihires_dlores_spr_filtered(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - pix0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[pix0 & 31]; + dpix_val0 = decode_ham_pixel_aga(pix0); } last_bpl_pix = pix0; } @@ -11343,14 +9480,6 @@ static void lts_aga_fm2_kehb0_p6_ihires_dlores_spr_filtered(void) copybpl6_64(); } loaded_pix = getbpl6_64(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } - } loaded_pixs[0] = loaded_pix; uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; @@ -11359,8 +9488,7 @@ static void lts_aga_fm2_kehb0_p6_ihires_dlores_spr_filtered(void) if (denise_hdiw && bpl1dat_trigger) { pix1 = loaded_pixs[1]; clxdat |= bplcoltable[pix1]; - pix1 ^= bplcon4_denise_xor_val; - dpix_val1 = denise_colors.acolors[pix1 & 31]; + dpix_val1 = decode_ham_pixel_aga(pix1); } last_bpl_pix = pix1; } @@ -11372,13 +9500,6 @@ static void lts_aga_fm2_kehb0_p6_ihires_dlores_spr_filtered(void) loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - dpix_val1 = dpix_val0; - } - } dpix_val0 = filter_pixel(dpix_val0, dpix_val1); dtbuf[h][0] = dpix_val0; uae_u32 t0 = dtbuf[h ^ lol][0]; @@ -11412,7 +9533,7 @@ static void lts_aga_fm2_kehb0_p6_ihires_dlores_spr_filtered(void) denise_cck++; } } -static void lts_aga_fm2_kehb1_p6_ihires_dlores_spr(void) +static void lts_aga_fm2_ham1_p6_ihires_dlores(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -11425,7 +9546,6 @@ static void lts_aga_fm2_kehb1_p6_ihires_dlores_spr(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -11433,8 +9553,7 @@ static void lts_aga_fm2_kehb1_p6_ihires_dlores_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - pix0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[pix0 & 31]; + dpix_val0 = decode_ham_pixel_aga(pix0); } last_bpl_pix = pix0; } @@ -11446,24 +9565,28 @@ static void lts_aga_fm2_kehb1_p6_ihires_dlores_spr(void) copybpl6o_64(); } loaded_pix = getbpl6_64(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; + loaded_pixs[0] = loaded_pix; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + decode_ham_pixel_aga(pix1); } + last_bpl_pix = pix1; } - loaded_pixs[0] = loaded_pix; shiftbpl6_64(); + if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { + copybpl6e_64(); + } + if (bpldat_copy[1] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) { + copybpl6o_64(); + } + loaded_pix = getbpl6_64(); + loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - } - } dtbuf[h][0] = dpix_val0; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -11496,7 +9619,7 @@ static void lts_aga_fm2_kehb1_p6_ihires_dlores_spr(void) denise_cck++; } } -static void lts_aga_fm2_kehb1_p6_ihires_dlores_spr_filtered(void) +static void lts_aga_fm2_ham1_p6_ihires_dlores_filtered(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -11509,7 +9632,6 @@ static void lts_aga_fm2_kehb1_p6_ihires_dlores_spr_filtered(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -11517,8 +9639,7 @@ static void lts_aga_fm2_kehb1_p6_ihires_dlores_spr_filtered(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - pix0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[pix0 & 31]; + dpix_val0 = decode_ham_pixel_aga(pix0); } last_bpl_pix = pix0; } @@ -11530,14 +9651,6 @@ static void lts_aga_fm2_kehb1_p6_ihires_dlores_spr_filtered(void) copybpl6o_64(); } loaded_pix = getbpl6_64(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } - } loaded_pixs[0] = loaded_pix; uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; @@ -11546,8 +9659,7 @@ static void lts_aga_fm2_kehb1_p6_ihires_dlores_spr_filtered(void) if (denise_hdiw && bpl1dat_trigger) { pix1 = loaded_pixs[1]; clxdat |= bplcoltable[pix1]; - pix1 ^= bplcon4_denise_xor_val; - dpix_val1 = denise_colors.acolors[pix1 & 31]; + dpix_val1 = decode_ham_pixel_aga(pix1); } last_bpl_pix = pix1; } @@ -11562,13 +9674,6 @@ static void lts_aga_fm2_kehb1_p6_ihires_dlores_spr_filtered(void) loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - dpix_val1 = dpix_val0; - } - } dpix_val0 = filter_pixel(dpix_val0, dpix_val1); dtbuf[h][0] = dpix_val0; uae_u32 t0 = dtbuf[h ^ lol][0]; @@ -11602,7 +9707,7 @@ static void lts_aga_fm2_kehb1_p6_ihires_dlores_spr_filtered(void) denise_cck++; } } -static void lts_aga_fm2_n0_p8_ihires_dlores_spr(void) +static void lts_aga_fm2_kehb0_p6_ihires_dlores(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -11615,7 +9720,6 @@ static void lts_aga_fm2_n0_p8_ihires_dlores_spr(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -11623,33 +9727,20 @@ static void lts_aga_fm2_n0_p8_ihires_dlores_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + pix0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[pix0 & 31]; } last_bpl_pix = pix0; } - shiftbpl8_64(); + shiftbpl6_64(); if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); - } - loaded_pix = getbpl8_64(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } + copybpl6_64(); } + loaded_pix = getbpl6_64(); loaded_pixs[0] = loaded_pix; - shiftbpl8_64(); + shiftbpl6_64(); internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - } - } dtbuf[h][0] = dpix_val0; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -11682,7 +9773,7 @@ static void lts_aga_fm2_n0_p8_ihires_dlores_spr(void) denise_cck++; } } -static void lts_aga_fm2_n0_p8_ihires_dlores_spr_filtered(void) +static void lts_aga_fm2_kehb0_p6_ihires_dlores_filtered(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -11695,7 +9786,6 @@ static void lts_aga_fm2_n0_p8_ihires_dlores_spr_filtered(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -11703,23 +9793,16 @@ static void lts_aga_fm2_n0_p8_ihires_dlores_spr_filtered(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + pix0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[pix0 & 31]; } last_bpl_pix = pix0; } - shiftbpl8_64(); + shiftbpl6_64(); if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); - } - loaded_pix = getbpl8_64(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } + copybpl6_64(); } + loaded_pix = getbpl6_64(); loaded_pixs[0] = loaded_pix; uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; @@ -11728,25 +9811,19 @@ static void lts_aga_fm2_n0_p8_ihires_dlores_spr_filtered(void) if (denise_hdiw && bpl1dat_trigger) { pix1 = loaded_pixs[1]; clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; + pix1 ^= bplcon4_denise_xor_val; + dpix_val1 = denise_colors.acolors[pix1 & 31]; } last_bpl_pix = pix1; } - shiftbpl8_64(); + shiftbpl6_64(); if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); + copybpl6_64(); } - loaded_pix = getbpl8_64(); + loaded_pix = getbpl6_64(); loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - dpix_val1 = dpix_val0; - } - } dpix_val0 = filter_pixel(dpix_val0, dpix_val1); dtbuf[h][0] = dpix_val0; uae_u32 t0 = dtbuf[h ^ lol][0]; @@ -11780,7 +9857,7 @@ static void lts_aga_fm2_n0_p8_ihires_dlores_spr_filtered(void) denise_cck++; } } -static void lts_aga_fm2_n1_p8_ihires_dlores_spr(void) +static void lts_aga_fm2_kehb1_p6_ihires_dlores(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -11793,7 +9870,6 @@ static void lts_aga_fm2_n1_p8_ihires_dlores_spr(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -11801,36 +9877,23 @@ static void lts_aga_fm2_n1_p8_ihires_dlores_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + pix0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[pix0 & 31]; } last_bpl_pix = pix0; } - shiftbpl8_64(); + shiftbpl6_64(); if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8e_64(); + copybpl6e_64(); } if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); - } - loaded_pix = getbpl8_64(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } + copybpl6o_64(); } + loaded_pix = getbpl6_64(); loaded_pixs[0] = loaded_pix; - shiftbpl8_64(); + shiftbpl6_64(); internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - } - } dtbuf[h][0] = dpix_val0; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -11863,7 +9926,7 @@ static void lts_aga_fm2_n1_p8_ihires_dlores_spr(void) denise_cck++; } } -static void lts_aga_fm2_n1_p8_ihires_dlores_spr_filtered(void) +static void lts_aga_fm2_kehb1_p6_ihires_dlores_filtered(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -11876,7 +9939,6 @@ static void lts_aga_fm2_n1_p8_ihires_dlores_spr_filtered(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -11884,26 +9946,19 @@ static void lts_aga_fm2_n1_p8_ihires_dlores_spr_filtered(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + pix0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[pix0 & 31]; } last_bpl_pix = pix0; } - shiftbpl8_64(); + shiftbpl6_64(); if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8e_64(); + copybpl6e_64(); } if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); - } - loaded_pix = getbpl8_64(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } + copybpl6o_64(); } + loaded_pix = getbpl6_64(); loaded_pixs[0] = loaded_pix; uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; @@ -11912,28 +9967,22 @@ static void lts_aga_fm2_n1_p8_ihires_dlores_spr_filtered(void) if (denise_hdiw && bpl1dat_trigger) { pix1 = loaded_pixs[1]; clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; + pix1 ^= bplcon4_denise_xor_val; + dpix_val1 = denise_colors.acolors[pix1 & 31]; } last_bpl_pix = pix1; } - shiftbpl8_64(); + shiftbpl6_64(); if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8e_64(); + copybpl6e_64(); } if (bpldat_copy[1] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); + copybpl6o_64(); } - loaded_pix = getbpl8_64(); + loaded_pix = getbpl6_64(); loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - dpix_val1 = dpix_val0; - } - } dpix_val0 = filter_pixel(dpix_val0, dpix_val1); dtbuf[h][0] = dpix_val0; uae_u32 t0 = dtbuf[h ^ lol][0]; @@ -11967,7 +10016,7 @@ static void lts_aga_fm2_n1_p8_ihires_dlores_spr_filtered(void) denise_cck++; } } -static void lts_aga_fm2_dpf0_p8_ihires_dlores_spr(void) +static void lts_aga_fm2_n0_p8_ihires_dlores(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -11980,7 +10029,6 @@ static void lts_aga_fm2_dpf0_p8_ihires_dlores_spr(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -11988,12 +10036,7 @@ static void lts_aga_fm2_dpf0_p8_ihires_dlores_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix0; } @@ -12002,24 +10045,10 @@ static void lts_aga_fm2_dpf0_p8_ihires_dlores_spr(void) copybpl8_64(); } loaded_pix = getbpl8_64(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } - } loaded_pixs[0] = loaded_pix; shiftbpl8_64(); internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - } - } dtbuf[h][0] = dpix_val0; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -12052,7 +10081,7 @@ static void lts_aga_fm2_dpf0_p8_ihires_dlores_spr(void) denise_cck++; } } -static void lts_aga_fm2_dpf0_p8_ihires_dlores_spr_filtered(void) +static void lts_aga_fm2_n0_p8_ihires_dlores_filtered(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -12065,7 +10094,6 @@ static void lts_aga_fm2_dpf0_p8_ihires_dlores_spr_filtered(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -12073,12 +10101,7 @@ static void lts_aga_fm2_dpf0_p8_ihires_dlores_spr_filtered(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix0; } @@ -12087,14 +10110,6 @@ static void lts_aga_fm2_dpf0_p8_ihires_dlores_spr_filtered(void) copybpl8_64(); } loaded_pix = getbpl8_64(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } - } loaded_pixs[0] = loaded_pix; uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; @@ -12103,12 +10118,7 @@ static void lts_aga_fm2_dpf0_p8_ihires_dlores_spr_filtered(void) if (denise_hdiw && bpl1dat_trigger) { pix1 = loaded_pixs[1]; clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - if (dpf_lookup_no[pix1]) { - val1 += dblpfofs[bpldualpf2of]; - } - val1 ^= bplcon4_denise_xor_val; - dpix_val1 = denise_colors.acolors[val1]; + dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix1; } @@ -12120,13 +10130,6 @@ static void lts_aga_fm2_dpf0_p8_ihires_dlores_spr_filtered(void) loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - dpix_val1 = dpix_val0; - } - } dpix_val0 = filter_pixel(dpix_val0, dpix_val1); dtbuf[h][0] = dpix_val0; uae_u32 t0 = dtbuf[h ^ lol][0]; @@ -12160,7 +10163,7 @@ static void lts_aga_fm2_dpf0_p8_ihires_dlores_spr_filtered(void) denise_cck++; } } -static void lts_aga_fm2_dpf1_p8_ihires_dlores_spr(void) +static void lts_aga_fm2_n1_p8_ihires_dlores(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -12173,7 +10176,6 @@ static void lts_aga_fm2_dpf1_p8_ihires_dlores_spr(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -12181,12 +10183,7 @@ static void lts_aga_fm2_dpf1_p8_ihires_dlores_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix0; } @@ -12198,24 +10195,98 @@ static void lts_aga_fm2_dpf1_p8_ihires_dlores_spr(void) copybpl8o_64(); } loaded_pix = getbpl8_64(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; + loaded_pixs[0] = loaded_pix; + shiftbpl8_64(); + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); } + #endif + *buf1++ = t0; + *buf2++ = t0; } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_n1_p8_ihires_dlores_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix0; + } + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8e_64(); + } + if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { + copybpl8o_64(); + } + loaded_pix = getbpl8_64(); loaded_pixs[0] = loaded_pix; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix1; + } shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8e_64(); + } + if (bpldat_copy[1] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) { + copybpl8o_64(); + } + loaded_pix = getbpl8_64(); + loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - } - } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); dtbuf[h][0] = dpix_val0; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -12248,7 +10319,7 @@ static void lts_aga_fm2_dpf1_p8_ihires_dlores_spr(void) denise_cck++; } } -static void lts_aga_fm2_dpf1_p8_ihires_dlores_spr_filtered(void) +static void lts_aga_fm2_dpf0_p8_ihires_dlores(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -12261,7 +10332,6 @@ static void lts_aga_fm2_dpf1_p8_ihires_dlores_spr_filtered(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -12280,20 +10350,79 @@ static void lts_aga_fm2_dpf1_p8_ihires_dlores_spr_filtered(void) } shiftbpl8_64(); if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8e_64(); - } - if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); + copybpl8_64(); } loaded_pix = getbpl8_64(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; + loaded_pixs[0] = loaded_pix; + shiftbpl8_64(); + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_dpf0_p8_ihires_dlores_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; } + last_bpl_pix = pix0; + } + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8_64(); } + loaded_pix = getbpl8_64(); loaded_pixs[0] = loaded_pix; uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; @@ -12313,22 +10442,12 @@ static void lts_aga_fm2_dpf1_p8_ihires_dlores_spr_filtered(void) } shiftbpl8_64(); if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8e_64(); - } - if (bpldat_copy[1] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); + copybpl8_64(); } loaded_pix = getbpl8_64(); loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - dpix_val1 = dpix_val0; - } - } dpix_val0 = filter_pixel(dpix_val0, dpix_val1); dtbuf[h][0] = dpix_val0; uae_u32 t0 = dtbuf[h ^ lol][0]; @@ -12362,23 +10481,7 @@ static void lts_aga_fm2_dpf1_p8_ihires_dlores_spr_filtered(void) denise_cck++; } } -static void lts_aga_fm2_ehb0_p8_ihires_dlores_spr(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb0_p8_ihires_dlores_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb1_p8_ihires_dlores_spr(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb1_p8_ihires_dlores_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_ham0_p8_ihires_dlores_spr(void) +static void lts_aga_fm2_dpf1_p8_ihires_dlores(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -12391,7 +10494,6 @@ static void lts_aga_fm2_ham0_p8_ihires_dlores_spr(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -12399,23 +10501,96 @@ static void lts_aga_fm2_ham0_p8_ihires_dlores_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - dpix_val0 = decode_ham_pixel_aga(pix0); + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; } last_bpl_pix = pix0; } shiftbpl8_64(); if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); + copybpl8e_64(); + } + if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { + copybpl8o_64(); } loaded_pix = getbpl8_64(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; + loaded_pixs[0] = loaded_pix; + shiftbpl8_64(); + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_dpf1_p8_ihires_dlores_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; } + last_bpl_pix = pix0; + } + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8e_64(); + } + if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { + copybpl8o_64(); } + loaded_pix = getbpl8_64(); loaded_pixs[0] = loaded_pix; uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; @@ -12423,24 +10598,187 @@ static void lts_aga_fm2_ham0_p8_ihires_dlores_spr(void) dpix_val1 = bordercolor; if (denise_hdiw && bpl1dat_trigger) { pix1 = loaded_pixs[1]; - decode_ham_pixel_aga(pix1); + clxdat |= bplcoltable[pix1]; + uae_u8 val1 = dpf_lookup[pix1]; + if (dpf_lookup_no[pix1]) { + val1 += dblpfofs[bpldualpf2of]; + } + val1 ^= bplcon4_denise_xor_val; + dpix_val1 = denise_colors.acolors[val1]; } last_bpl_pix = pix1; } shiftbpl8_64(); if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); + copybpl8e_64(); + } + if (bpldat_copy[1] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) { + copybpl8o_64(); } loaded_pix = getbpl8_64(); loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_ehb0_p8_ihires_dlores(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_ehb0_p8_ihires_dlores_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_ehb1_p8_ihires_dlores(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -12473,7 +10811,64 @@ static void lts_aga_fm2_ham0_p8_ihires_dlores_spr(void) denise_cck++; } } -static void lts_aga_fm2_ham0_p8_ihires_dlores_spr_filtered(void) +static void lts_aga_fm2_ehb1_p8_ihires_dlores_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_ham0_p8_ihires_dlores(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -12486,7 +10881,6 @@ static void lts_aga_fm2_ham0_p8_ihires_dlores_spr_filtered(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -12503,14 +10897,6 @@ static void lts_aga_fm2_ham0_p8_ihires_dlores_spr_filtered(void) copybpl8_64(); } loaded_pix = getbpl8_64(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } - } loaded_pixs[0] = loaded_pix; uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; @@ -12518,8 +10904,7 @@ static void lts_aga_fm2_ham0_p8_ihires_dlores_spr_filtered(void) dpix_val1 = bordercolor; if (denise_hdiw && bpl1dat_trigger) { pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - dpix_val1 = decode_ham_pixel_aga(pix1); + decode_ham_pixel_aga(pix1); } last_bpl_pix = pix1; } @@ -12531,14 +10916,6 @@ static void lts_aga_fm2_ham0_p8_ihires_dlores_spr_filtered(void) loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - dpix_val1 = dpix_val0; - } - } - dpix_val0 = filter_pixel(dpix_val0, dpix_val1); dtbuf[h][0] = dpix_val0; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -12571,7 +10948,7 @@ static void lts_aga_fm2_ham0_p8_ihires_dlores_spr_filtered(void) denise_cck++; } } -static void lts_aga_fm2_ham1_p8_ihires_dlores_spr(void) +static void lts_aga_fm2_ham0_p8_ihires_dlores_filtered(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -12584,7 +10961,6 @@ static void lts_aga_fm2_ham1_p8_ihires_dlores_spr(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -12598,20 +10974,9 @@ static void lts_aga_fm2_ham1_p8_ihires_dlores_spr(void) } shiftbpl8_64(); if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8e_64(); - } - if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); + copybpl8_64(); } loaded_pix = getbpl8_64(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } - } loaded_pixs[0] = loaded_pix; uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; @@ -12619,27 +10984,20 @@ static void lts_aga_fm2_ham1_p8_ihires_dlores_spr(void) dpix_val1 = bordercolor; if (denise_hdiw && bpl1dat_trigger) { pix1 = loaded_pixs[1]; - decode_ham_pixel_aga(pix1); + clxdat |= bplcoltable[pix1]; + dpix_val1 = decode_ham_pixel_aga(pix1); } last_bpl_pix = pix1; } shiftbpl8_64(); if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8e_64(); - } - if (bpldat_copy[1] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); + copybpl8_64(); } loaded_pix = getbpl8_64(); loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - } - } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); dtbuf[h][0] = dpix_val0; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -12672,7 +11030,7 @@ static void lts_aga_fm2_ham1_p8_ihires_dlores_spr(void) denise_cck++; } } -static void lts_aga_fm2_ham1_p8_ihires_dlores_spr_filtered(void) +static void lts_aga_fm2_ham1_p8_ihires_dlores(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -12685,7 +11043,6 @@ static void lts_aga_fm2_ham1_p8_ihires_dlores_spr_filtered(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -12705,14 +11062,6 @@ static void lts_aga_fm2_ham1_p8_ihires_dlores_spr_filtered(void) copybpl8o_64(); } loaded_pix = getbpl8_64(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } - } loaded_pixs[0] = loaded_pix; uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; @@ -12720,8 +11069,7 @@ static void lts_aga_fm2_ham1_p8_ihires_dlores_spr_filtered(void) dpix_val1 = bordercolor; if (denise_hdiw && bpl1dat_trigger) { pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - dpix_val1 = decode_ham_pixel_aga(pix1); + decode_ham_pixel_aga(pix1); } last_bpl_pix = pix1; } @@ -12736,14 +11084,6 @@ static void lts_aga_fm2_ham1_p8_ihires_dlores_spr_filtered(void) loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - dpix_val1 = dpix_val0; - } - } - dpix_val0 = filter_pixel(dpix_val0, dpix_val1); dtbuf[h][0] = dpix_val0; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -12776,663 +11116,31459 @@ static void lts_aga_fm2_ham1_p8_ihires_dlores_spr_filtered(void) denise_cck++; } } -static void lts_aga_fm2_kehb0_p8_ihires_dlores_spr(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb0_p8_ihires_dlores_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb1_p8_ihires_dlores_spr(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb1_p8_ihires_dlores_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_n0_p2_ishres_dlores(void) -{ - lts_null(); -} -static void lts_aga_fm2_n0_p2_ishres_dlores_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_n1_p2_ishres_dlores(void) -{ - lts_null(); -} -static void lts_aga_fm2_n1_p2_ishres_dlores_filtered(void) +static void lts_aga_fm2_ham1_p8_ihires_dlores_filtered(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = decode_ham_pixel_aga(pix0); + } + last_bpl_pix = pix0; + } + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8e_64(); + } + if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { + copybpl8o_64(); + } + loaded_pix = getbpl8_64(); + loaded_pixs[0] = loaded_pix; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + dpix_val1 = decode_ham_pixel_aga(pix1); + } + last_bpl_pix = pix1; + } + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8e_64(); + } + if (bpldat_copy[1] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) { + copybpl8o_64(); + } + loaded_pix = getbpl8_64(); + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm2_dpf0_p2_ishres_dlores(void) +static void lts_aga_fm2_kehb0_p8_ihires_dlores(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm2_dpf0_p2_ishres_dlores_filtered(void) +static void lts_aga_fm2_kehb0_p8_ihires_dlores_filtered(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm2_dpf1_p2_ishres_dlores(void) +static void lts_aga_fm2_kehb1_p8_ihires_dlores(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm2_dpf1_p2_ishres_dlores_filtered(void) +static void lts_aga_fm2_kehb1_p8_ihires_dlores_filtered(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm2_ehb0_p2_ishres_dlores(void) +static void lts_aga_fm2_n0_p2_ihires_dlores_spr(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix0; + } + shiftbpl2_64(); + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl2_64(); + } + loaded_pix = getbpl2_64(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + shiftbpl2_64(); + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm2_ehb0_p2_ishres_dlores_filtered(void) +static void lts_aga_fm2_n0_p2_ihires_dlores_spr_filtered(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix0; + } + shiftbpl2_64(); + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl2_64(); + } + loaded_pix = getbpl2_64(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix1; + } + shiftbpl2_64(); + if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { + copybpl2_64(); + } + loaded_pix = getbpl2_64(); + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm2_ehb1_p2_ishres_dlores(void) +static void lts_aga_fm2_n1_p2_ihires_dlores_spr(void) { - lts_null(); -} -static void lts_aga_fm2_ehb1_p2_ishres_dlores_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_ham0_p2_ishres_dlores(void) -{ - lts_null(); -} -static void lts_aga_fm2_ham0_p2_ishres_dlores_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_ham1_p2_ishres_dlores(void) -{ - lts_null(); -} -static void lts_aga_fm2_ham1_p2_ishres_dlores_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb0_p2_ishres_dlores(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb0_p2_ishres_dlores_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb1_p2_ishres_dlores(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb1_p2_ishres_dlores_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_n0_p4_ishres_dlores(void) -{ - lts_null(); -} -static void lts_aga_fm2_n0_p4_ishres_dlores_filtered(void) -{ - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix0; + } + shiftbpl2_64(); + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl2e_64(); + } + if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { + copybpl2o_64(); + } + loaded_pix = getbpl2_64(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + shiftbpl2_64(); + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm2_n1_p4_ishres_dlores(void) +static void lts_aga_fm2_n1_p2_ihires_dlores_spr_filtered(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix0; + } + shiftbpl2_64(); + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl2e_64(); + } + if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { + copybpl2o_64(); + } + loaded_pix = getbpl2_64(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix1; + } + shiftbpl2_64(); + if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { + copybpl2e_64(); + } + if (bpldat_copy[1] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) { + copybpl2o_64(); + } + loaded_pix = getbpl2_64(); + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm2_n1_p4_ishres_dlores_filtered(void) +static void lts_aga_fm2_dpf0_p2_ihires_dlores_spr(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + shiftbpl2_64(); + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl2_64(); + } + loaded_pix = getbpl2_64(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + shiftbpl2_64(); + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm2_dpf0_p4_ishres_dlores(void) +static void lts_aga_fm2_dpf0_p2_ihires_dlores_spr_filtered(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + shiftbpl2_64(); + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl2_64(); + } + loaded_pix = getbpl2_64(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + uae_u8 val1 = dpf_lookup[pix1]; + if (dpf_lookup_no[pix1]) { + val1 += dblpfofs[bpldualpf2of]; + } + val1 ^= bplcon4_denise_xor_val; + dpix_val1 = denise_colors.acolors[val1]; + } + last_bpl_pix = pix1; + } + shiftbpl2_64(); + if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { + copybpl2_64(); + } + loaded_pix = getbpl2_64(); + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm2_dpf0_p4_ishres_dlores_filtered(void) +static void lts_aga_fm2_dpf1_p2_ihires_dlores_spr(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + shiftbpl2_64(); + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl2e_64(); + } + if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { + copybpl2o_64(); + } + loaded_pix = getbpl2_64(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + shiftbpl2_64(); + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm2_dpf1_p4_ishres_dlores(void) +static void lts_aga_fm2_dpf1_p2_ihires_dlores_spr_filtered(void) { - lts_null(); -} -static void lts_aga_fm2_dpf1_p4_ishres_dlores_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb0_p4_ishres_dlores(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb0_p4_ishres_dlores_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb1_p4_ishres_dlores(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb1_p4_ishres_dlores_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_ham0_p4_ishres_dlores(void) -{ - lts_null(); -} -static void lts_aga_fm2_ham0_p4_ishres_dlores_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_ham1_p4_ishres_dlores(void) -{ - lts_null(); -} -static void lts_aga_fm2_ham1_p4_ishres_dlores_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb0_p4_ishres_dlores(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb0_p4_ishres_dlores_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb1_p4_ishres_dlores(void) -{ - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + shiftbpl2_64(); + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl2e_64(); + } + if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { + copybpl2o_64(); + } + loaded_pix = getbpl2_64(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + uae_u8 val1 = dpf_lookup[pix1]; + if (dpf_lookup_no[pix1]) { + val1 += dblpfofs[bpldualpf2of]; + } + val1 ^= bplcon4_denise_xor_val; + dpix_val1 = denise_colors.acolors[val1]; + } + last_bpl_pix = pix1; + } + shiftbpl2_64(); + if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { + copybpl2e_64(); + } + if (bpldat_copy[1] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) { + copybpl2o_64(); + } + loaded_pix = getbpl2_64(); + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm2_kehb1_p4_ishres_dlores_filtered(void) +static void lts_aga_fm2_ehb0_p2_ihires_dlores_spr(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm2_n0_p6_ishres_dlores(void) +static void lts_aga_fm2_ehb0_p2_ihires_dlores_spr_filtered(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm2_n0_p6_ishres_dlores_filtered(void) +static void lts_aga_fm2_ehb1_p2_ihires_dlores_spr(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm2_n1_p6_ishres_dlores(void) +static void lts_aga_fm2_ehb1_p2_ihires_dlores_spr_filtered(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm2_n1_p6_ishres_dlores_filtered(void) +static void lts_aga_fm2_ham0_p2_ihires_dlores_spr(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm2_dpf0_p6_ishres_dlores(void) +static void lts_aga_fm2_ham0_p2_ihires_dlores_spr_filtered(void) { - lts_null(); -} -static void lts_aga_fm2_dpf0_p6_ishres_dlores_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_dpf1_p6_ishres_dlores(void) -{ - lts_null(); -} -static void lts_aga_fm2_dpf1_p6_ishres_dlores_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb0_p6_ishres_dlores(void) -{ - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm2_ehb0_p6_ishres_dlores_filtered(void) +static void lts_aga_fm2_ham1_p2_ihires_dlores_spr(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm2_ehb1_p6_ishres_dlores(void) +static void lts_aga_fm2_ham1_p2_ihires_dlores_spr_filtered(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm2_ehb1_p6_ishres_dlores_filtered(void) +static void lts_aga_fm2_kehb0_p2_ihires_dlores_spr(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm2_ham0_p6_ishres_dlores(void) +static void lts_aga_fm2_kehb0_p2_ihires_dlores_spr_filtered(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm2_ham0_p6_ishres_dlores_filtered(void) +static void lts_aga_fm2_kehb1_p2_ihires_dlores_spr(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm2_ham1_p6_ishres_dlores(void) +static void lts_aga_fm2_kehb1_p2_ihires_dlores_spr_filtered(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm2_ham1_p6_ishres_dlores_filtered(void) +static void lts_aga_fm2_n0_p4_ihires_dlores_spr(void) { - lts_null(); -} -static void lts_aga_fm2_kehb0_p6_ishres_dlores(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb0_p6_ishres_dlores_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb1_p6_ishres_dlores(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb1_p6_ishres_dlores_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_n0_p8_ishres_dlores(void) -{ - lts_null(); -} -static void lts_aga_fm2_n0_p8_ishres_dlores_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_n1_p8_ishres_dlores(void) -{ - lts_null(); -} -static void lts_aga_fm2_n1_p8_ishres_dlores_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_dpf0_p8_ishres_dlores(void) -{ - lts_null(); -} -static void lts_aga_fm2_dpf0_p8_ishres_dlores_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_dpf1_p8_ishres_dlores(void) -{ - lts_null(); -} -static void lts_aga_fm2_dpf1_p8_ishres_dlores_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb0_p8_ishres_dlores(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb0_p8_ishres_dlores_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb1_p8_ishres_dlores(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb1_p8_ishres_dlores_filtered(void) -{ - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix0; + } + shiftbpl4_64(); + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl4_64(); + } + loaded_pix = getbpl4_64(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + shiftbpl4_64(); + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm2_ham0_p8_ishres_dlores(void) +static void lts_aga_fm2_n0_p4_ihires_dlores_spr_filtered(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix0; + } + shiftbpl4_64(); + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl4_64(); + } + loaded_pix = getbpl4_64(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix1; + } + shiftbpl4_64(); + if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { + copybpl4_64(); + } + loaded_pix = getbpl4_64(); + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm2_ham0_p8_ishres_dlores_filtered(void) +static void lts_aga_fm2_n1_p4_ihires_dlores_spr(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix0; + } + shiftbpl4_64(); + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl4e_64(); + } + if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { + copybpl4o_64(); + } + loaded_pix = getbpl4_64(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + shiftbpl4_64(); + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm2_ham1_p8_ishres_dlores(void) +static void lts_aga_fm2_n1_p4_ihires_dlores_spr_filtered(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix0; + } + shiftbpl4_64(); + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl4e_64(); + } + if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { + copybpl4o_64(); + } + loaded_pix = getbpl4_64(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix1; + } + shiftbpl4_64(); + if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { + copybpl4e_64(); + } + if (bpldat_copy[1] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) { + copybpl4o_64(); + } + loaded_pix = getbpl4_64(); + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm2_ham1_p8_ishres_dlores_filtered(void) +static void lts_aga_fm2_dpf0_p4_ihires_dlores_spr(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + shiftbpl4_64(); + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl4_64(); + } + loaded_pix = getbpl4_64(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + shiftbpl4_64(); + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm2_kehb0_p8_ishres_dlores(void) +static void lts_aga_fm2_dpf0_p4_ihires_dlores_spr_filtered(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + shiftbpl4_64(); + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl4_64(); + } + loaded_pix = getbpl4_64(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + uae_u8 val1 = dpf_lookup[pix1]; + if (dpf_lookup_no[pix1]) { + val1 += dblpfofs[bpldualpf2of]; + } + val1 ^= bplcon4_denise_xor_val; + dpix_val1 = denise_colors.acolors[val1]; + } + last_bpl_pix = pix1; + } + shiftbpl4_64(); + if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { + copybpl4_64(); + } + loaded_pix = getbpl4_64(); + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm2_kehb0_p8_ishres_dlores_filtered(void) +static void lts_aga_fm2_dpf1_p4_ihires_dlores_spr(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + shiftbpl4_64(); + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl4e_64(); + } + if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { + copybpl4o_64(); + } + loaded_pix = getbpl4_64(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + shiftbpl4_64(); + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm2_kehb1_p8_ishres_dlores(void) +static void lts_aga_fm2_dpf1_p4_ihires_dlores_spr_filtered(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + shiftbpl4_64(); + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl4e_64(); + } + if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { + copybpl4o_64(); + } + loaded_pix = getbpl4_64(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + uae_u8 val1 = dpf_lookup[pix1]; + if (dpf_lookup_no[pix1]) { + val1 += dblpfofs[bpldualpf2of]; + } + val1 ^= bplcon4_denise_xor_val; + dpix_val1 = denise_colors.acolors[val1]; + } + last_bpl_pix = pix1; + } + shiftbpl4_64(); + if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { + copybpl4e_64(); + } + if (bpldat_copy[1] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) { + copybpl4o_64(); + } + loaded_pix = getbpl4_64(); + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm2_kehb1_p8_ishres_dlores_filtered(void) +static void lts_aga_fm2_ehb0_p4_ihires_dlores_spr(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm2_n0_p2_ishres_dlores_spr(void) +static void lts_aga_fm2_ehb0_p4_ihires_dlores_spr_filtered(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm2_n0_p2_ishres_dlores_spr_filtered(void) +static void lts_aga_fm2_ehb1_p4_ihires_dlores_spr(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm2_n1_p2_ishres_dlores_spr(void) -{ - lts_null(); -} -static void lts_aga_fm2_n1_p2_ishres_dlores_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_dpf0_p2_ishres_dlores_spr(void) +static void lts_aga_fm2_ehb1_p4_ihires_dlores_spr_filtered(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm2_dpf0_p2_ishres_dlores_spr_filtered(void) +static void lts_aga_fm2_ham0_p4_ihires_dlores_spr(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm2_dpf1_p2_ishres_dlores_spr(void) +static void lts_aga_fm2_ham0_p4_ihires_dlores_spr_filtered(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm2_dpf1_p2_ishres_dlores_spr_filtered(void) +static void lts_aga_fm2_ham1_p4_ihires_dlores_spr(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm2_ehb0_p2_ishres_dlores_spr(void) +static void lts_aga_fm2_ham1_p4_ihires_dlores_spr_filtered(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm2_ehb0_p2_ishres_dlores_spr_filtered(void) +static void lts_aga_fm2_kehb0_p4_ihires_dlores_spr(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm2_ehb1_p2_ishres_dlores_spr(void) +static void lts_aga_fm2_kehb0_p4_ihires_dlores_spr_filtered(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm2_ehb1_p2_ishres_dlores_spr_filtered(void) +static void lts_aga_fm2_kehb1_p4_ihires_dlores_spr(void) { - lts_null(); -} -static void lts_aga_fm2_ham0_p2_ishres_dlores_spr(void) -{ - lts_null(); -} -static void lts_aga_fm2_ham0_p2_ishres_dlores_spr_filtered(void) -{ - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm2_ham1_p2_ishres_dlores_spr(void) +static void lts_aga_fm2_kehb1_p4_ihires_dlores_spr_filtered(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm2_ham1_p2_ishres_dlores_spr_filtered(void) +static void lts_aga_fm2_n0_p6_ihires_dlores_spr(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix0; + } + shiftbpl6_64(); + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl6_64(); + } + loaded_pix = getbpl6_64(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + shiftbpl6_64(); + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm2_kehb0_p2_ishres_dlores_spr(void) +static void lts_aga_fm2_n0_p6_ihires_dlores_spr_filtered(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix0; + } + shiftbpl6_64(); + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl6_64(); + } + loaded_pix = getbpl6_64(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix1; + } + shiftbpl6_64(); + if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { + copybpl6_64(); + } + loaded_pix = getbpl6_64(); + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm2_kehb0_p2_ishres_dlores_spr_filtered(void) +static void lts_aga_fm2_n1_p6_ihires_dlores_spr(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix0; + } + shiftbpl6_64(); + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl6e_64(); + } + if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { + copybpl6o_64(); + } + loaded_pix = getbpl6_64(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + shiftbpl6_64(); + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm2_kehb1_p2_ishres_dlores_spr(void) +static void lts_aga_fm2_n1_p6_ihires_dlores_spr_filtered(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix0; + } + shiftbpl6_64(); + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl6e_64(); + } + if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { + copybpl6o_64(); + } + loaded_pix = getbpl6_64(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix1; + } + shiftbpl6_64(); + if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { + copybpl6e_64(); + } + if (bpldat_copy[1] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) { + copybpl6o_64(); + } + loaded_pix = getbpl6_64(); + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm2_kehb1_p2_ishres_dlores_spr_filtered(void) +static void lts_aga_fm2_dpf0_p6_ihires_dlores_spr(void) { - lts_null(); -} -static void lts_aga_fm2_n0_p4_ishres_dlores_spr(void) -{ - lts_null(); -} -static void lts_aga_fm2_n0_p4_ishres_dlores_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_n1_p4_ishres_dlores_spr(void) -{ - lts_null(); -} -static void lts_aga_fm2_n1_p4_ishres_dlores_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_dpf0_p4_ishres_dlores_spr(void) -{ - lts_null(); -} -static void lts_aga_fm2_dpf0_p4_ishres_dlores_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_dpf1_p4_ishres_dlores_spr(void) -{ - lts_null(); -} -static void lts_aga_fm2_dpf1_p4_ishres_dlores_spr_filtered(void) -{ - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + shiftbpl6_64(); + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl6_64(); + } + loaded_pix = getbpl6_64(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + shiftbpl6_64(); + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm2_ehb0_p4_ishres_dlores_spr(void) +static void lts_aga_fm2_dpf0_p6_ihires_dlores_spr_filtered(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + shiftbpl6_64(); + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl6_64(); + } + loaded_pix = getbpl6_64(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + uae_u8 val1 = dpf_lookup[pix1]; + if (dpf_lookup_no[pix1]) { + val1 += dblpfofs[bpldualpf2of]; + } + val1 ^= bplcon4_denise_xor_val; + dpix_val1 = denise_colors.acolors[val1]; + } + last_bpl_pix = pix1; + } + shiftbpl6_64(); + if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { + copybpl6_64(); + } + loaded_pix = getbpl6_64(); + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm2_ehb0_p4_ishres_dlores_spr_filtered(void) +static void lts_aga_fm2_dpf1_p6_ihires_dlores_spr(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + shiftbpl6_64(); + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl6e_64(); + } + if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { + copybpl6o_64(); + } + loaded_pix = getbpl6_64(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + shiftbpl6_64(); + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm2_ehb1_p4_ishres_dlores_spr(void) +static void lts_aga_fm2_dpf1_p6_ihires_dlores_spr_filtered(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + shiftbpl6_64(); + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl6e_64(); + } + if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { + copybpl6o_64(); + } + loaded_pix = getbpl6_64(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + uae_u8 val1 = dpf_lookup[pix1]; + if (dpf_lookup_no[pix1]) { + val1 += dblpfofs[bpldualpf2of]; + } + val1 ^= bplcon4_denise_xor_val; + dpix_val1 = denise_colors.acolors[val1]; + } + last_bpl_pix = pix1; + } + shiftbpl6_64(); + if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { + copybpl6e_64(); + } + if (bpldat_copy[1] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) { + copybpl6o_64(); + } + loaded_pix = getbpl6_64(); + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm2_ehb1_p4_ishres_dlores_spr_filtered(void) +static void lts_aga_fm2_ehb0_p6_ihires_dlores_spr(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + pix0 ^= bplcon4_denise_xor_val; + if (!(pix0 & 0x20)) { + dpix_val0 = denise_colors.acolors[pix0]; + } else { + uae_u32 v = (denise_colors.color_regs_aga[pix0 & 0x1f] >> 1) & 0x7f7f7f; + dpix_val0 = CONVERT_RGB(v); + } + } + last_bpl_pix = pix0; + } + shiftbpl6_64(); + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl6_64(); + } + loaded_pix = getbpl6_64(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + shiftbpl6_64(); + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm2_ham0_p4_ishres_dlores_spr(void) +static void lts_aga_fm2_ehb0_p6_ihires_dlores_spr_filtered(void) { - lts_null(); -} -static void lts_aga_fm2_ham0_p4_ishres_dlores_spr_filtered(void) -{ - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + pix0 ^= bplcon4_denise_xor_val; + if (!(pix0 & 0x20)) { + dpix_val0 = denise_colors.acolors[pix0]; + } else { + uae_u32 v = (denise_colors.color_regs_aga[pix0 & 0x1f] >> 1) & 0x7f7f7f; + dpix_val0 = CONVERT_RGB(v); + } + } + last_bpl_pix = pix0; + } + shiftbpl6_64(); + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl6_64(); + } + loaded_pix = getbpl6_64(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + pix1 ^= bplcon4_denise_xor_val; + if (!(pix1 & 0x20)) { + dpix_val1 = denise_colors.acolors[pix1]; + } else { + uae_u32 v = (denise_colors.color_regs_aga[pix1 & 0x1f] >> 1) & 0x7f7f7f; + dpix_val1 = CONVERT_RGB(v); + } + } + last_bpl_pix = pix1; + } + shiftbpl6_64(); + if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { + copybpl6_64(); + } + loaded_pix = getbpl6_64(); + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm2_ham1_p4_ishres_dlores_spr(void) +static void lts_aga_fm2_ehb1_p6_ihires_dlores_spr(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + pix0 ^= bplcon4_denise_xor_val; + if (!(pix0 & 0x20)) { + dpix_val0 = denise_colors.acolors[pix0]; + } else { + uae_u32 v = (denise_colors.color_regs_aga[pix0 & 0x1f] >> 1) & 0x7f7f7f; + dpix_val0 = CONVERT_RGB(v); + } + } + last_bpl_pix = pix0; + } + shiftbpl6_64(); + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl6e_64(); + } + if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { + copybpl6o_64(); + } + loaded_pix = getbpl6_64(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + shiftbpl6_64(); + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm2_ham1_p4_ishres_dlores_spr_filtered(void) +static void lts_aga_fm2_ehb1_p6_ihires_dlores_spr_filtered(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + pix0 ^= bplcon4_denise_xor_val; + if (!(pix0 & 0x20)) { + dpix_val0 = denise_colors.acolors[pix0]; + } else { + uae_u32 v = (denise_colors.color_regs_aga[pix0 & 0x1f] >> 1) & 0x7f7f7f; + dpix_val0 = CONVERT_RGB(v); + } + } + last_bpl_pix = pix0; + } + shiftbpl6_64(); + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl6e_64(); + } + if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { + copybpl6o_64(); + } + loaded_pix = getbpl6_64(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + pix1 ^= bplcon4_denise_xor_val; + if (!(pix1 & 0x20)) { + dpix_val1 = denise_colors.acolors[pix1]; + } else { + uae_u32 v = (denise_colors.color_regs_aga[pix1 & 0x1f] >> 1) & 0x7f7f7f; + dpix_val1 = CONVERT_RGB(v); + } + } + last_bpl_pix = pix1; + } + shiftbpl6_64(); + if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { + copybpl6e_64(); + } + if (bpldat_copy[1] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) { + copybpl6o_64(); + } + loaded_pix = getbpl6_64(); + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm2_kehb0_p4_ishres_dlores_spr(void) +static void lts_aga_fm2_ham0_p6_ihires_dlores_spr(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = decode_ham_pixel_aga(pix0); + } + last_bpl_pix = pix0; + } + shiftbpl6_64(); + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl6_64(); + } + loaded_pix = getbpl6_64(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + decode_ham_pixel_aga(pix1); + } + last_bpl_pix = pix1; + } + shiftbpl6_64(); + if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { + copybpl6_64(); + } + loaded_pix = getbpl6_64(); + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm2_kehb0_p4_ishres_dlores_spr_filtered(void) +static void lts_aga_fm2_ham0_p6_ihires_dlores_spr_filtered(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = decode_ham_pixel_aga(pix0); + } + last_bpl_pix = pix0; + } + shiftbpl6_64(); + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl6_64(); + } + loaded_pix = getbpl6_64(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + dpix_val1 = decode_ham_pixel_aga(pix1); + } + last_bpl_pix = pix1; + } + shiftbpl6_64(); + if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { + copybpl6_64(); + } + loaded_pix = getbpl6_64(); + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm2_kehb1_p4_ishres_dlores_spr(void) +static void lts_aga_fm2_ham1_p6_ihires_dlores_spr(void) { - lts_null(); -} -static void lts_aga_fm2_kehb1_p4_ishres_dlores_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_n0_p6_ishres_dlores_spr(void) -{ - lts_null(); -} -static void lts_aga_fm2_n0_p6_ishres_dlores_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_n1_p6_ishres_dlores_spr(void) -{ - lts_null(); -} -static void lts_aga_fm2_n1_p6_ishres_dlores_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_dpf0_p6_ishres_dlores_spr(void) -{ - lts_null(); -} -static void lts_aga_fm2_dpf0_p6_ishres_dlores_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_dpf1_p6_ishres_dlores_spr(void) -{ - lts_null(); -} -static void lts_aga_fm2_dpf1_p6_ishres_dlores_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb0_p6_ishres_dlores_spr(void) -{ - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = decode_ham_pixel_aga(pix0); + } + last_bpl_pix = pix0; + } + shiftbpl6_64(); + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl6e_64(); + } + if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { + copybpl6o_64(); + } + loaded_pix = getbpl6_64(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + decode_ham_pixel_aga(pix1); + } + last_bpl_pix = pix1; + } + shiftbpl6_64(); + if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { + copybpl6e_64(); + } + if (bpldat_copy[1] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) { + copybpl6o_64(); + } + loaded_pix = getbpl6_64(); + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm2_ehb0_p6_ishres_dlores_spr_filtered(void) +static void lts_aga_fm2_ham1_p6_ihires_dlores_spr_filtered(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = decode_ham_pixel_aga(pix0); + } + last_bpl_pix = pix0; + } + shiftbpl6_64(); + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl6e_64(); + } + if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { + copybpl6o_64(); + } + loaded_pix = getbpl6_64(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + dpix_val1 = decode_ham_pixel_aga(pix1); + } + last_bpl_pix = pix1; + } + shiftbpl6_64(); + if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { + copybpl6e_64(); + } + if (bpldat_copy[1] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) { + copybpl6o_64(); + } + loaded_pix = getbpl6_64(); + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm2_ehb1_p6_ishres_dlores_spr(void) +static void lts_aga_fm2_kehb0_p6_ihires_dlores_spr(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + pix0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[pix0 & 31]; + } + last_bpl_pix = pix0; + } + shiftbpl6_64(); + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl6_64(); + } + loaded_pix = getbpl6_64(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + shiftbpl6_64(); + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm2_ehb1_p6_ishres_dlores_spr_filtered(void) +static void lts_aga_fm2_kehb0_p6_ihires_dlores_spr_filtered(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + pix0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[pix0 & 31]; + } + last_bpl_pix = pix0; + } + shiftbpl6_64(); + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl6_64(); + } + loaded_pix = getbpl6_64(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + pix1 ^= bplcon4_denise_xor_val; + dpix_val1 = denise_colors.acolors[pix1 & 31]; + } + last_bpl_pix = pix1; + } + shiftbpl6_64(); + if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { + copybpl6_64(); + } + loaded_pix = getbpl6_64(); + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm2_ham0_p6_ishres_dlores_spr(void) +static void lts_aga_fm2_kehb1_p6_ihires_dlores_spr(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + pix0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[pix0 & 31]; + } + last_bpl_pix = pix0; + } + shiftbpl6_64(); + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl6e_64(); + } + if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { + copybpl6o_64(); + } + loaded_pix = getbpl6_64(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + shiftbpl6_64(); + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm2_ham0_p6_ishres_dlores_spr_filtered(void) +static void lts_aga_fm2_kehb1_p6_ihires_dlores_spr_filtered(void) { - lts_null(); -} -static void lts_aga_fm2_ham1_p6_ishres_dlores_spr(void) -{ - lts_null(); -} -static void lts_aga_fm2_ham1_p6_ishres_dlores_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb0_p6_ishres_dlores_spr(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb0_p6_ishres_dlores_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb1_p6_ishres_dlores_spr(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb1_p6_ishres_dlores_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_n0_p8_ishres_dlores_spr(void) -{ - lts_null(); -} -static void lts_aga_fm2_n0_p8_ishres_dlores_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_n1_p8_ishres_dlores_spr(void) -{ - lts_null(); -} -static void lts_aga_fm2_n1_p8_ishres_dlores_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_dpf0_p8_ishres_dlores_spr(void) -{ - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + pix0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[pix0 & 31]; + } + last_bpl_pix = pix0; + } + shiftbpl6_64(); + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl6e_64(); + } + if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { + copybpl6o_64(); + } + loaded_pix = getbpl6_64(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + pix1 ^= bplcon4_denise_xor_val; + dpix_val1 = denise_colors.acolors[pix1 & 31]; + } + last_bpl_pix = pix1; + } + shiftbpl6_64(); + if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { + copybpl6e_64(); + } + if (bpldat_copy[1] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) { + copybpl6o_64(); + } + loaded_pix = getbpl6_64(); + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm2_dpf0_p8_ishres_dlores_spr_filtered(void) +static void lts_aga_fm2_n0_p8_ihires_dlores_spr(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix0; + } + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8_64(); + } + loaded_pix = getbpl8_64(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + shiftbpl8_64(); + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm2_dpf1_p8_ishres_dlores_spr(void) +static void lts_aga_fm2_n0_p8_ihires_dlores_spr_filtered(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix0; + } + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8_64(); + } + loaded_pix = getbpl8_64(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix1; + } + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8_64(); + } + loaded_pix = getbpl8_64(); + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm2_dpf1_p8_ishres_dlores_spr_filtered(void) +static void lts_aga_fm2_n1_p8_ihires_dlores_spr(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix0; + } + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8e_64(); + } + if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { + copybpl8o_64(); + } + loaded_pix = getbpl8_64(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + shiftbpl8_64(); + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm2_ehb0_p8_ishres_dlores_spr(void) +static void lts_aga_fm2_n1_p8_ihires_dlores_spr_filtered(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix0; + } + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8e_64(); + } + if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { + copybpl8o_64(); + } + loaded_pix = getbpl8_64(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix1; + } + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8e_64(); + } + if (bpldat_copy[1] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) { + copybpl8o_64(); + } + loaded_pix = getbpl8_64(); + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm2_ehb0_p8_ishres_dlores_spr_filtered(void) +static void lts_aga_fm2_dpf0_p8_ihires_dlores_spr(void) { - lts_null(); -} -static void lts_aga_fm2_ehb1_p8_ishres_dlores_spr(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb1_p8_ishres_dlores_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_ham0_p8_ishres_dlores_spr(void) -{ - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8_64(); + } + loaded_pix = getbpl8_64(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + shiftbpl8_64(); + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm2_ham0_p8_ishres_dlores_spr_filtered(void) +static void lts_aga_fm2_dpf0_p8_ihires_dlores_spr_filtered(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8_64(); + } + loaded_pix = getbpl8_64(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + uae_u8 val1 = dpf_lookup[pix1]; + if (dpf_lookup_no[pix1]) { + val1 += dblpfofs[bpldualpf2of]; + } + val1 ^= bplcon4_denise_xor_val; + dpix_val1 = denise_colors.acolors[val1]; + } + last_bpl_pix = pix1; + } + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8_64(); + } + loaded_pix = getbpl8_64(); + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm2_ham1_p8_ishres_dlores_spr(void) +static void lts_aga_fm2_dpf1_p8_ihires_dlores_spr(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8e_64(); + } + if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { + copybpl8o_64(); + } + loaded_pix = getbpl8_64(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + shiftbpl8_64(); + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm2_ham1_p8_ishres_dlores_spr_filtered(void) +static void lts_aga_fm2_dpf1_p8_ihires_dlores_spr_filtered(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8e_64(); + } + if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { + copybpl8o_64(); + } + loaded_pix = getbpl8_64(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + uae_u8 val1 = dpf_lookup[pix1]; + if (dpf_lookup_no[pix1]) { + val1 += dblpfofs[bpldualpf2of]; + } + val1 ^= bplcon4_denise_xor_val; + dpix_val1 = denise_colors.acolors[val1]; + } + last_bpl_pix = pix1; + } + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8e_64(); + } + if (bpldat_copy[1] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) { + copybpl8o_64(); + } + loaded_pix = getbpl8_64(); + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm2_kehb0_p8_ishres_dlores_spr(void) +static void lts_aga_fm2_ehb0_p8_ihires_dlores_spr(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm2_kehb0_p8_ishres_dlores_spr_filtered(void) +static void lts_aga_fm2_ehb0_p8_ihires_dlores_spr_filtered(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_ehb1_p8_ihires_dlores_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_ehb1_p8_ihires_dlores_spr_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_ham0_p8_ihires_dlores_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = decode_ham_pixel_aga(pix0); + } + last_bpl_pix = pix0; + } + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8_64(); + } + loaded_pix = getbpl8_64(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + decode_ham_pixel_aga(pix1); + } + last_bpl_pix = pix1; + } + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8_64(); + } + loaded_pix = getbpl8_64(); + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_ham0_p8_ihires_dlores_spr_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = decode_ham_pixel_aga(pix0); + } + last_bpl_pix = pix0; + } + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8_64(); + } + loaded_pix = getbpl8_64(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + dpix_val1 = decode_ham_pixel_aga(pix1); + } + last_bpl_pix = pix1; + } + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8_64(); + } + loaded_pix = getbpl8_64(); + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_ham1_p8_ihires_dlores_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = decode_ham_pixel_aga(pix0); + } + last_bpl_pix = pix0; + } + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8e_64(); + } + if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { + copybpl8o_64(); + } + loaded_pix = getbpl8_64(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + decode_ham_pixel_aga(pix1); + } + last_bpl_pix = pix1; + } + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8e_64(); + } + if (bpldat_copy[1] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) { + copybpl8o_64(); + } + loaded_pix = getbpl8_64(); + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_ham1_p8_ihires_dlores_spr_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = decode_ham_pixel_aga(pix0); + } + last_bpl_pix = pix0; + } + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8e_64(); + } + if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { + copybpl8o_64(); + } + loaded_pix = getbpl8_64(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + dpix_val1 = decode_ham_pixel_aga(pix1); + } + last_bpl_pix = pix1; + } + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8e_64(); + } + if (bpldat_copy[1] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) { + copybpl8o_64(); + } + loaded_pix = getbpl8_64(); + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_kehb0_p8_ihires_dlores_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_kehb0_p8_ihires_dlores_spr_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_kehb1_p8_ihires_dlores_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_kehb1_p8_ihires_dlores_spr_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_n0_p2_ishres_dlores(void) +{ + lts_null(); +} +static void lts_aga_fm2_n0_p2_ishres_dlores_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_n1_p2_ishres_dlores(void) +{ + lts_null(); +} +static void lts_aga_fm2_n1_p2_ishres_dlores_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_dpf0_p2_ishres_dlores(void) +{ + lts_null(); +} +static void lts_aga_fm2_dpf0_p2_ishres_dlores_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_dpf1_p2_ishres_dlores(void) +{ + lts_null(); +} +static void lts_aga_fm2_dpf1_p2_ishres_dlores_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_ehb0_p2_ishres_dlores(void) +{ + lts_null(); +} +static void lts_aga_fm2_ehb0_p2_ishres_dlores_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_ehb1_p2_ishres_dlores(void) +{ + lts_null(); +} +static void lts_aga_fm2_ehb1_p2_ishres_dlores_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_ham0_p2_ishres_dlores(void) +{ + lts_null(); +} +static void lts_aga_fm2_ham0_p2_ishres_dlores_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_ham1_p2_ishres_dlores(void) +{ + lts_null(); +} +static void lts_aga_fm2_ham1_p2_ishres_dlores_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_kehb0_p2_ishres_dlores(void) +{ + lts_null(); +} +static void lts_aga_fm2_kehb0_p2_ishres_dlores_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_kehb1_p2_ishres_dlores(void) +{ + lts_null(); +} +static void lts_aga_fm2_kehb1_p2_ishres_dlores_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_n0_p4_ishres_dlores(void) +{ + lts_null(); +} +static void lts_aga_fm2_n0_p4_ishres_dlores_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_n1_p4_ishres_dlores(void) +{ + lts_null(); +} +static void lts_aga_fm2_n1_p4_ishres_dlores_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_dpf0_p4_ishres_dlores(void) +{ + lts_null(); +} +static void lts_aga_fm2_dpf0_p4_ishres_dlores_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_dpf1_p4_ishres_dlores(void) +{ + lts_null(); +} +static void lts_aga_fm2_dpf1_p4_ishres_dlores_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_ehb0_p4_ishres_dlores(void) +{ + lts_null(); +} +static void lts_aga_fm2_ehb0_p4_ishres_dlores_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_ehb1_p4_ishres_dlores(void) +{ + lts_null(); +} +static void lts_aga_fm2_ehb1_p4_ishres_dlores_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_ham0_p4_ishres_dlores(void) +{ + lts_null(); +} +static void lts_aga_fm2_ham0_p4_ishres_dlores_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_ham1_p4_ishres_dlores(void) +{ + lts_null(); +} +static void lts_aga_fm2_ham1_p4_ishres_dlores_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_kehb0_p4_ishres_dlores(void) +{ + lts_null(); +} +static void lts_aga_fm2_kehb0_p4_ishres_dlores_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_kehb1_p4_ishres_dlores(void) +{ + lts_null(); +} +static void lts_aga_fm2_kehb1_p4_ishres_dlores_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_n0_p6_ishres_dlores(void) +{ + lts_null(); +} +static void lts_aga_fm2_n0_p6_ishres_dlores_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_n1_p6_ishres_dlores(void) +{ + lts_null(); +} +static void lts_aga_fm2_n1_p6_ishres_dlores_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_dpf0_p6_ishres_dlores(void) +{ + lts_null(); +} +static void lts_aga_fm2_dpf0_p6_ishres_dlores_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_dpf1_p6_ishres_dlores(void) +{ + lts_null(); +} +static void lts_aga_fm2_dpf1_p6_ishres_dlores_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_ehb0_p6_ishres_dlores(void) +{ + lts_null(); +} +static void lts_aga_fm2_ehb0_p6_ishres_dlores_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_ehb1_p6_ishres_dlores(void) +{ + lts_null(); +} +static void lts_aga_fm2_ehb1_p6_ishres_dlores_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_ham0_p6_ishres_dlores(void) +{ + lts_null(); +} +static void lts_aga_fm2_ham0_p6_ishres_dlores_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_ham1_p6_ishres_dlores(void) +{ + lts_null(); +} +static void lts_aga_fm2_ham1_p6_ishres_dlores_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_kehb0_p6_ishres_dlores(void) +{ + lts_null(); +} +static void lts_aga_fm2_kehb0_p6_ishres_dlores_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_kehb1_p6_ishres_dlores(void) +{ + lts_null(); +} +static void lts_aga_fm2_kehb1_p6_ishres_dlores_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_n0_p8_ishres_dlores(void) +{ + lts_null(); +} +static void lts_aga_fm2_n0_p8_ishres_dlores_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_n1_p8_ishres_dlores(void) +{ + lts_null(); +} +static void lts_aga_fm2_n1_p8_ishres_dlores_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_dpf0_p8_ishres_dlores(void) +{ + lts_null(); +} +static void lts_aga_fm2_dpf0_p8_ishres_dlores_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_dpf1_p8_ishres_dlores(void) +{ + lts_null(); +} +static void lts_aga_fm2_dpf1_p8_ishres_dlores_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_ehb0_p8_ishres_dlores(void) +{ + lts_null(); +} +static void lts_aga_fm2_ehb0_p8_ishres_dlores_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_ehb1_p8_ishres_dlores(void) +{ + lts_null(); +} +static void lts_aga_fm2_ehb1_p8_ishres_dlores_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_ham0_p8_ishres_dlores(void) +{ + lts_null(); +} +static void lts_aga_fm2_ham0_p8_ishres_dlores_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_ham1_p8_ishres_dlores(void) +{ + lts_null(); +} +static void lts_aga_fm2_ham1_p8_ishres_dlores_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_kehb0_p8_ishres_dlores(void) +{ + lts_null(); +} +static void lts_aga_fm2_kehb0_p8_ishres_dlores_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_kehb1_p8_ishres_dlores(void) +{ + lts_null(); +} +static void lts_aga_fm2_kehb1_p8_ishres_dlores_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_n0_p2_ishres_dlores_spr(void) +{ + lts_null(); +} +static void lts_aga_fm2_n0_p2_ishres_dlores_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_n1_p2_ishres_dlores_spr(void) +{ + lts_null(); +} +static void lts_aga_fm2_n1_p2_ishres_dlores_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_dpf0_p2_ishres_dlores_spr(void) +{ + lts_null(); +} +static void lts_aga_fm2_dpf0_p2_ishres_dlores_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_dpf1_p2_ishres_dlores_spr(void) +{ + lts_null(); +} +static void lts_aga_fm2_dpf1_p2_ishres_dlores_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_ehb0_p2_ishres_dlores_spr(void) +{ + lts_null(); +} +static void lts_aga_fm2_ehb0_p2_ishres_dlores_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_ehb1_p2_ishres_dlores_spr(void) +{ + lts_null(); +} +static void lts_aga_fm2_ehb1_p2_ishres_dlores_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_ham0_p2_ishres_dlores_spr(void) +{ + lts_null(); +} +static void lts_aga_fm2_ham0_p2_ishres_dlores_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_ham1_p2_ishres_dlores_spr(void) +{ + lts_null(); +} +static void lts_aga_fm2_ham1_p2_ishres_dlores_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_kehb0_p2_ishres_dlores_spr(void) +{ + lts_null(); +} +static void lts_aga_fm2_kehb0_p2_ishres_dlores_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_kehb1_p2_ishres_dlores_spr(void) +{ + lts_null(); +} +static void lts_aga_fm2_kehb1_p2_ishres_dlores_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_n0_p4_ishres_dlores_spr(void) +{ + lts_null(); +} +static void lts_aga_fm2_n0_p4_ishres_dlores_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_n1_p4_ishres_dlores_spr(void) +{ + lts_null(); +} +static void lts_aga_fm2_n1_p4_ishres_dlores_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_dpf0_p4_ishres_dlores_spr(void) +{ + lts_null(); +} +static void lts_aga_fm2_dpf0_p4_ishres_dlores_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_dpf1_p4_ishres_dlores_spr(void) +{ + lts_null(); +} +static void lts_aga_fm2_dpf1_p4_ishres_dlores_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_ehb0_p4_ishres_dlores_spr(void) +{ + lts_null(); +} +static void lts_aga_fm2_ehb0_p4_ishres_dlores_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_ehb1_p4_ishres_dlores_spr(void) +{ + lts_null(); +} +static void lts_aga_fm2_ehb1_p4_ishres_dlores_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_ham0_p4_ishres_dlores_spr(void) +{ + lts_null(); +} +static void lts_aga_fm2_ham0_p4_ishres_dlores_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_ham1_p4_ishres_dlores_spr(void) +{ + lts_null(); +} +static void lts_aga_fm2_ham1_p4_ishres_dlores_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_kehb0_p4_ishres_dlores_spr(void) +{ + lts_null(); +} +static void lts_aga_fm2_kehb0_p4_ishres_dlores_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_kehb1_p4_ishres_dlores_spr(void) +{ + lts_null(); +} +static void lts_aga_fm2_kehb1_p4_ishres_dlores_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_n0_p6_ishres_dlores_spr(void) +{ + lts_null(); +} +static void lts_aga_fm2_n0_p6_ishres_dlores_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_n1_p6_ishres_dlores_spr(void) +{ + lts_null(); +} +static void lts_aga_fm2_n1_p6_ishres_dlores_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_dpf0_p6_ishres_dlores_spr(void) +{ + lts_null(); +} +static void lts_aga_fm2_dpf0_p6_ishres_dlores_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_dpf1_p6_ishres_dlores_spr(void) +{ + lts_null(); +} +static void lts_aga_fm2_dpf1_p6_ishres_dlores_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_ehb0_p6_ishres_dlores_spr(void) +{ + lts_null(); +} +static void lts_aga_fm2_ehb0_p6_ishres_dlores_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_ehb1_p6_ishres_dlores_spr(void) +{ + lts_null(); +} +static void lts_aga_fm2_ehb1_p6_ishres_dlores_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_ham0_p6_ishres_dlores_spr(void) +{ + lts_null(); +} +static void lts_aga_fm2_ham0_p6_ishres_dlores_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_ham1_p6_ishres_dlores_spr(void) +{ + lts_null(); +} +static void lts_aga_fm2_ham1_p6_ishres_dlores_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_kehb0_p6_ishres_dlores_spr(void) +{ + lts_null(); +} +static void lts_aga_fm2_kehb0_p6_ishres_dlores_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_kehb1_p6_ishres_dlores_spr(void) +{ + lts_null(); +} +static void lts_aga_fm2_kehb1_p6_ishres_dlores_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_n0_p8_ishres_dlores_spr(void) +{ + lts_null(); +} +static void lts_aga_fm2_n0_p8_ishres_dlores_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_n1_p8_ishres_dlores_spr(void) +{ + lts_null(); +} +static void lts_aga_fm2_n1_p8_ishres_dlores_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_dpf0_p8_ishres_dlores_spr(void) +{ + lts_null(); +} +static void lts_aga_fm2_dpf0_p8_ishres_dlores_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_dpf1_p8_ishres_dlores_spr(void) +{ + lts_null(); +} +static void lts_aga_fm2_dpf1_p8_ishres_dlores_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_ehb0_p8_ishres_dlores_spr(void) +{ + lts_null(); +} +static void lts_aga_fm2_ehb0_p8_ishres_dlores_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_ehb1_p8_ishres_dlores_spr(void) +{ + lts_null(); +} +static void lts_aga_fm2_ehb1_p8_ishres_dlores_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_ham0_p8_ishres_dlores_spr(void) +{ + lts_null(); +} +static void lts_aga_fm2_ham0_p8_ishres_dlores_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_ham1_p8_ishres_dlores_spr(void) +{ + lts_null(); +} +static void lts_aga_fm2_ham1_p8_ishres_dlores_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_kehb0_p8_ishres_dlores_spr(void) +{ + lts_null(); +} +static void lts_aga_fm2_kehb0_p8_ishres_dlores_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_kehb1_p8_ishres_dlores_spr(void) +{ + lts_null(); +} +static void lts_aga_fm2_kehb1_p8_ishres_dlores_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_n0_p2_ilores_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl2_64(); + loaded_pix = getbpl2_64(); + } + if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { + copybpl2_64(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl2_64(); + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl2_64(); + loaded_pix = getbpl2_64(); + } + if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { + copybpl2_64(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl2_64(); + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_n0_p2_ilores_dhires_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_n1_p2_ilores_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl2e_64(); + loaded_pix = getbpl2_64(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl2o_64(); + loaded_pix = getbpl2_64(); + } + 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] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[1]) { + copybpl2o_64(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl2_64(); + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl2e_64(); + loaded_pix = getbpl2_64(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl2o_64(); + loaded_pix = getbpl2_64(); + } + 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] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[1]) { + copybpl2o_64(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl2_64(); + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_n1_p2_ilores_dhires_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_dpf0_p2_ilores_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl2_64(); + loaded_pix = getbpl2_64(); + } + if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { + copybpl2_64(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl2_64(); + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl2_64(); + loaded_pix = getbpl2_64(); + } + if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { + copybpl2_64(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl2_64(); + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_dpf0_p2_ilores_dhires_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_dpf1_p2_ilores_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl2e_64(); + loaded_pix = getbpl2_64(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl2o_64(); + loaded_pix = getbpl2_64(); + } + 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] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[1]) { + copybpl2o_64(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl2_64(); + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl2e_64(); + loaded_pix = getbpl2_64(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl2o_64(); + loaded_pix = getbpl2_64(); + } + 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] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[1]) { + copybpl2o_64(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl2_64(); + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_dpf1_p2_ilores_dhires_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_ehb0_p2_ilores_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_ehb0_p2_ilores_dhires_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_ehb1_p2_ilores_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_ehb1_p2_ilores_dhires_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_ham0_p2_ilores_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_ham0_p2_ilores_dhires_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_ham1_p2_ilores_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_ham1_p2_ilores_dhires_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_kehb0_p2_ilores_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_kehb0_p2_ilores_dhires_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_kehb1_p2_ilores_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_kehb1_p2_ilores_dhires_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_n0_p4_ilores_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4_64(); + loaded_pix = getbpl4_64(); + } + if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { + copybpl4_64(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4_64(); + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4_64(); + loaded_pix = getbpl4_64(); + } + if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { + copybpl4_64(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4_64(); + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_n0_p4_ilores_dhires_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_n1_p4_ilores_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4e_64(); + loaded_pix = getbpl4_64(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl4o_64(); + loaded_pix = getbpl4_64(); + } + 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] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[1]) { + copybpl4o_64(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl4_64(); + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4e_64(); + loaded_pix = getbpl4_64(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl4o_64(); + loaded_pix = getbpl4_64(); + } + 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] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[1]) { + copybpl4o_64(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl4_64(); + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_n1_p4_ilores_dhires_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_dpf0_p4_ilores_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4_64(); + loaded_pix = getbpl4_64(); + } + if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { + copybpl4_64(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4_64(); + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4_64(); + loaded_pix = getbpl4_64(); + } + if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { + copybpl4_64(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4_64(); + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_dpf0_p4_ilores_dhires_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_dpf1_p4_ilores_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4e_64(); + loaded_pix = getbpl4_64(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl4o_64(); + loaded_pix = getbpl4_64(); + } + 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] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[1]) { + copybpl4o_64(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl4_64(); + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4e_64(); + loaded_pix = getbpl4_64(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl4o_64(); + loaded_pix = getbpl4_64(); + } + 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] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[1]) { + copybpl4o_64(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl4_64(); + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_dpf1_p4_ilores_dhires_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_ehb0_p4_ilores_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_ehb0_p4_ilores_dhires_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_ehb1_p4_ilores_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_ehb1_p4_ilores_dhires_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_ham0_p4_ilores_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_ham0_p4_ilores_dhires_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_ham1_p4_ilores_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_ham1_p4_ilores_dhires_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_kehb0_p4_ilores_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_kehb0_p4_ilores_dhires_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_kehb1_p4_ilores_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_kehb1_p4_ilores_dhires_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_n0_p6_ilores_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6_64(); + loaded_pix = getbpl6_64(); + } + if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { + copybpl6_64(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6_64(); + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6_64(); + loaded_pix = getbpl6_64(); + } + if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { + copybpl6_64(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6_64(); + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_n0_p6_ilores_dhires_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_n1_p6_ilores_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6e_64(); + loaded_pix = getbpl6_64(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl6o_64(); + loaded_pix = getbpl6_64(); + } + 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] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[1]) { + copybpl6o_64(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl6_64(); + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6e_64(); + loaded_pix = getbpl6_64(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl6o_64(); + loaded_pix = getbpl6_64(); + } + 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] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[1]) { + copybpl6o_64(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl6_64(); + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_n1_p6_ilores_dhires_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_dpf0_p6_ilores_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6_64(); + loaded_pix = getbpl6_64(); + } + if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { + copybpl6_64(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6_64(); + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6_64(); + loaded_pix = getbpl6_64(); + } + if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { + copybpl6_64(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6_64(); + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_dpf0_p6_ilores_dhires_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_dpf1_p6_ilores_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6e_64(); + loaded_pix = getbpl6_64(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl6o_64(); + loaded_pix = getbpl6_64(); + } + 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] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[1]) { + copybpl6o_64(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl6_64(); + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6e_64(); + loaded_pix = getbpl6_64(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl6o_64(); + loaded_pix = getbpl6_64(); + } + 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] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[1]) { + copybpl6o_64(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl6_64(); + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_dpf1_p6_ilores_dhires_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_ehb0_p6_ilores_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + pix0 ^= bplcon4_denise_xor_val; + if (!(pix0 & 0x20)) { + dpix_val0 = denise_colors.acolors[pix0]; + } else { + uae_u32 v = (denise_colors.color_regs_aga[pix0 & 0x1f] >> 1) & 0x7f7f7f; + dpix_val0 = CONVERT_RGB(v); + } + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6_64(); + loaded_pix = getbpl6_64(); + } + if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { + copybpl6_64(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6_64(); + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + pix2 ^= bplcon4_denise_xor_val; + if (!(pix2 & 0x20)) { + dpix_val2 = denise_colors.acolors[pix2]; + } else { + uae_u32 v = (denise_colors.color_regs_aga[pix2 & 0x1f] >> 1) & 0x7f7f7f; + dpix_val2 = CONVERT_RGB(v); + } + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6_64(); + loaded_pix = getbpl6_64(); + } + if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { + copybpl6_64(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6_64(); + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_ehb0_p6_ilores_dhires_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_ehb1_p6_ilores_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + pix0 ^= bplcon4_denise_xor_val; + if (!(pix0 & 0x20)) { + dpix_val0 = denise_colors.acolors[pix0]; + } else { + uae_u32 v = (denise_colors.color_regs_aga[pix0 & 0x1f] >> 1) & 0x7f7f7f; + dpix_val0 = CONVERT_RGB(v); + } + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6e_64(); + loaded_pix = getbpl6_64(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl6o_64(); + loaded_pix = getbpl6_64(); + } + 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] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[1]) { + copybpl6o_64(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl6_64(); + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + pix2 ^= bplcon4_denise_xor_val; + if (!(pix2 & 0x20)) { + dpix_val2 = denise_colors.acolors[pix2]; + } else { + uae_u32 v = (denise_colors.color_regs_aga[pix2 & 0x1f] >> 1) & 0x7f7f7f; + dpix_val2 = CONVERT_RGB(v); + } + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6e_64(); + loaded_pix = getbpl6_64(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl6o_64(); + loaded_pix = getbpl6_64(); + } + 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] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[1]) { + copybpl6o_64(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl6_64(); + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_ehb1_p6_ilores_dhires_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_ham0_p6_ilores_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = decode_ham_pixel_aga(pix0); + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6_64(); + loaded_pix = getbpl6_64(); + } + if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { + copybpl6_64(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6_64(); + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = decode_ham_pixel_aga(pix2); + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6_64(); + loaded_pix = getbpl6_64(); + } + if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { + copybpl6_64(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6_64(); + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_ham0_p6_ilores_dhires_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_ham1_p6_ilores_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = decode_ham_pixel_aga(pix0); + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6e_64(); + loaded_pix = getbpl6_64(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl6o_64(); + loaded_pix = getbpl6_64(); + } + 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] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[1]) { + copybpl6o_64(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl6_64(); + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = decode_ham_pixel_aga(pix2); + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6e_64(); + loaded_pix = getbpl6_64(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl6o_64(); + loaded_pix = getbpl6_64(); + } + 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] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[1]) { + copybpl6o_64(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl6_64(); + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_ham1_p6_ilores_dhires_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_kehb0_p6_ilores_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + pix0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[pix0 & 31]; + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6_64(); + loaded_pix = getbpl6_64(); + } + if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { + copybpl6_64(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6_64(); + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + pix2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[pix2 & 31]; + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6_64(); + loaded_pix = getbpl6_64(); + } + if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { + copybpl6_64(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6_64(); + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_kehb0_p6_ilores_dhires_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_kehb1_p6_ilores_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + pix0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[pix0 & 31]; + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6e_64(); + loaded_pix = getbpl6_64(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl6o_64(); + loaded_pix = getbpl6_64(); + } + 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] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[1]) { + copybpl6o_64(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl6_64(); + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + pix2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[pix2 & 31]; + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6e_64(); + loaded_pix = getbpl6_64(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl6o_64(); + loaded_pix = getbpl6_64(); + } + 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] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[1]) { + copybpl6o_64(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl6_64(); + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_kehb1_p6_ilores_dhires_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_n0_p8_ilores_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8_64(); + loaded_pix = getbpl8_64(); + } + if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { + copybpl8_64(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8_64(); + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8_64(); + loaded_pix = getbpl8_64(); + } + if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { + copybpl8_64(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8_64(); + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_n0_p8_ilores_dhires_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_n1_p8_ilores_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8e_64(); + loaded_pix = getbpl8_64(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl8o_64(); + loaded_pix = getbpl8_64(); + } + 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] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[1]) { + copybpl8o_64(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl8_64(); + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8e_64(); + loaded_pix = getbpl8_64(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl8o_64(); + loaded_pix = getbpl8_64(); + } + 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] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[1]) { + copybpl8o_64(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl8_64(); + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_n1_p8_ilores_dhires_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_dpf0_p8_ilores_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8_64(); + loaded_pix = getbpl8_64(); + } + if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { + copybpl8_64(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8_64(); + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8_64(); + loaded_pix = getbpl8_64(); + } + if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { + copybpl8_64(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8_64(); + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_dpf0_p8_ilores_dhires_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_dpf1_p8_ilores_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8e_64(); + loaded_pix = getbpl8_64(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl8o_64(); + loaded_pix = getbpl8_64(); + } + 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] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[1]) { + copybpl8o_64(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl8_64(); + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8e_64(); + loaded_pix = getbpl8_64(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl8o_64(); + loaded_pix = getbpl8_64(); + } + 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] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[1]) { + copybpl8o_64(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl8_64(); + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_dpf1_p8_ilores_dhires_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_ehb0_p8_ilores_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_ehb0_p8_ilores_dhires_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_ehb1_p8_ilores_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_ehb1_p8_ilores_dhires_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_ham0_p8_ilores_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = decode_ham_pixel_aga(pix0); + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8_64(); + loaded_pix = getbpl8_64(); + } + if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { + copybpl8_64(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8_64(); + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = decode_ham_pixel_aga(pix2); + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8_64(); + loaded_pix = getbpl8_64(); + } + if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { + copybpl8_64(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8_64(); + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_ham0_p8_ilores_dhires_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_ham1_p8_ilores_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = decode_ham_pixel_aga(pix0); + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8e_64(); + loaded_pix = getbpl8_64(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl8o_64(); + loaded_pix = getbpl8_64(); + } + 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] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[1]) { + copybpl8o_64(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl8_64(); + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = decode_ham_pixel_aga(pix2); + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8e_64(); + loaded_pix = getbpl8_64(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl8o_64(); + loaded_pix = getbpl8_64(); + } + 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] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[1]) { + copybpl8o_64(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl8_64(); + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_ham1_p8_ilores_dhires_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_kehb0_p8_ilores_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_kehb0_p8_ilores_dhires_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_kehb1_p8_ilores_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_kehb1_p8_ilores_dhires_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_n0_p2_ilores_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl2_64(); + loaded_pix = getbpl2_64(); + } + if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { + copybpl2_64(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl2_64(); + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl2_64(); + loaded_pix = getbpl2_64(); + } + if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { + copybpl2_64(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl2_64(); + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_n0_p2_ilores_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_n1_p2_ilores_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl2e_64(); + loaded_pix = getbpl2_64(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl2o_64(); + loaded_pix = getbpl2_64(); + } + 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] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[1]) { + copybpl2o_64(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl2_64(); + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl2e_64(); + loaded_pix = getbpl2_64(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl2o_64(); + loaded_pix = getbpl2_64(); + } + 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] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[1]) { + copybpl2o_64(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl2_64(); + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_n1_p2_ilores_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_dpf0_p2_ilores_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl2_64(); + loaded_pix = getbpl2_64(); + } + if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { + copybpl2_64(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl2_64(); + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl2_64(); + loaded_pix = getbpl2_64(); + } + if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { + copybpl2_64(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl2_64(); + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_dpf0_p2_ilores_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_dpf1_p2_ilores_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl2e_64(); + loaded_pix = getbpl2_64(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl2o_64(); + loaded_pix = getbpl2_64(); + } + 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] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[1]) { + copybpl2o_64(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl2_64(); + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl2e_64(); + loaded_pix = getbpl2_64(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl2o_64(); + loaded_pix = getbpl2_64(); + } + 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] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[1]) { + copybpl2o_64(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl2_64(); + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_dpf1_p2_ilores_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_ehb0_p2_ilores_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_ehb0_p2_ilores_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_ehb1_p2_ilores_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_ehb1_p2_ilores_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_ham0_p2_ilores_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_ham0_p2_ilores_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_ham1_p2_ilores_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_ham1_p2_ilores_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_kehb0_p2_ilores_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_kehb0_p2_ilores_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_kehb1_p2_ilores_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_kehb1_p2_ilores_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_n0_p4_ilores_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4_64(); + loaded_pix = getbpl4_64(); + } + if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { + copybpl4_64(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4_64(); + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4_64(); + loaded_pix = getbpl4_64(); + } + if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { + copybpl4_64(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4_64(); + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_n0_p4_ilores_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_n1_p4_ilores_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4e_64(); + loaded_pix = getbpl4_64(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl4o_64(); + loaded_pix = getbpl4_64(); + } + 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] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[1]) { + copybpl4o_64(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl4_64(); + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4e_64(); + loaded_pix = getbpl4_64(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl4o_64(); + loaded_pix = getbpl4_64(); + } + 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] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[1]) { + copybpl4o_64(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl4_64(); + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_n1_p4_ilores_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_dpf0_p4_ilores_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4_64(); + loaded_pix = getbpl4_64(); + } + if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { + copybpl4_64(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4_64(); + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4_64(); + loaded_pix = getbpl4_64(); + } + if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { + copybpl4_64(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4_64(); + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_dpf0_p4_ilores_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_dpf1_p4_ilores_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4e_64(); + loaded_pix = getbpl4_64(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl4o_64(); + loaded_pix = getbpl4_64(); + } + 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] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[1]) { + copybpl4o_64(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl4_64(); + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4e_64(); + loaded_pix = getbpl4_64(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl4o_64(); + loaded_pix = getbpl4_64(); + } + 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] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[1]) { + copybpl4o_64(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl4_64(); + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_dpf1_p4_ilores_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_ehb0_p4_ilores_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_ehb0_p4_ilores_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_ehb1_p4_ilores_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_ehb1_p4_ilores_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_ham0_p4_ilores_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_ham0_p4_ilores_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_ham1_p4_ilores_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_ham1_p4_ilores_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_kehb0_p4_ilores_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_kehb0_p4_ilores_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_kehb1_p4_ilores_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_kehb1_p4_ilores_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_n0_p6_ilores_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6_64(); + loaded_pix = getbpl6_64(); + } + if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { + copybpl6_64(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6_64(); + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6_64(); + loaded_pix = getbpl6_64(); + } + if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { + copybpl6_64(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6_64(); + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_n0_p6_ilores_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_n1_p6_ilores_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6e_64(); + loaded_pix = getbpl6_64(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl6o_64(); + loaded_pix = getbpl6_64(); + } + 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] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[1]) { + copybpl6o_64(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl6_64(); + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6e_64(); + loaded_pix = getbpl6_64(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl6o_64(); + loaded_pix = getbpl6_64(); + } + 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] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[1]) { + copybpl6o_64(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl6_64(); + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_n1_p6_ilores_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_dpf0_p6_ilores_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6_64(); + loaded_pix = getbpl6_64(); + } + if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { + copybpl6_64(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6_64(); + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6_64(); + loaded_pix = getbpl6_64(); + } + if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { + copybpl6_64(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6_64(); + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_dpf0_p6_ilores_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_dpf1_p6_ilores_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6e_64(); + loaded_pix = getbpl6_64(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl6o_64(); + loaded_pix = getbpl6_64(); + } + 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] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[1]) { + copybpl6o_64(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl6_64(); + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6e_64(); + loaded_pix = getbpl6_64(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl6o_64(); + loaded_pix = getbpl6_64(); + } + 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] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[1]) { + copybpl6o_64(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl6_64(); + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_dpf1_p6_ilores_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_ehb0_p6_ilores_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + pix0 ^= bplcon4_denise_xor_val; + if (!(pix0 & 0x20)) { + dpix_val0 = denise_colors.acolors[pix0]; + } else { + uae_u32 v = (denise_colors.color_regs_aga[pix0 & 0x1f] >> 1) & 0x7f7f7f; + dpix_val0 = CONVERT_RGB(v); + } + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6_64(); + loaded_pix = getbpl6_64(); + } + if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { + copybpl6_64(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6_64(); + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + pix2 ^= bplcon4_denise_xor_val; + if (!(pix2 & 0x20)) { + dpix_val2 = denise_colors.acolors[pix2]; + } else { + uae_u32 v = (denise_colors.color_regs_aga[pix2 & 0x1f] >> 1) & 0x7f7f7f; + dpix_val2 = CONVERT_RGB(v); + } + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6_64(); + loaded_pix = getbpl6_64(); + } + if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { + copybpl6_64(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6_64(); + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_ehb0_p6_ilores_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_ehb1_p6_ilores_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + pix0 ^= bplcon4_denise_xor_val; + if (!(pix0 & 0x20)) { + dpix_val0 = denise_colors.acolors[pix0]; + } else { + uae_u32 v = (denise_colors.color_regs_aga[pix0 & 0x1f] >> 1) & 0x7f7f7f; + dpix_val0 = CONVERT_RGB(v); + } + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6e_64(); + loaded_pix = getbpl6_64(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl6o_64(); + loaded_pix = getbpl6_64(); + } + 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] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[1]) { + copybpl6o_64(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl6_64(); + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + pix2 ^= bplcon4_denise_xor_val; + if (!(pix2 & 0x20)) { + dpix_val2 = denise_colors.acolors[pix2]; + } else { + uae_u32 v = (denise_colors.color_regs_aga[pix2 & 0x1f] >> 1) & 0x7f7f7f; + dpix_val2 = CONVERT_RGB(v); + } + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6e_64(); + loaded_pix = getbpl6_64(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl6o_64(); + loaded_pix = getbpl6_64(); + } + 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] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[1]) { + copybpl6o_64(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl6_64(); + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_ehb1_p6_ilores_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_ham0_p6_ilores_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = decode_ham_pixel_aga(pix0); + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6_64(); + loaded_pix = getbpl6_64(); + } + if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { + copybpl6_64(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6_64(); + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = decode_ham_pixel_aga(pix2); + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6_64(); + loaded_pix = getbpl6_64(); + } + if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { + copybpl6_64(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6_64(); + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_ham0_p6_ilores_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_ham1_p6_ilores_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = decode_ham_pixel_aga(pix0); + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6e_64(); + loaded_pix = getbpl6_64(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl6o_64(); + loaded_pix = getbpl6_64(); + } + 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] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[1]) { + copybpl6o_64(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl6_64(); + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = decode_ham_pixel_aga(pix2); + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6e_64(); + loaded_pix = getbpl6_64(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl6o_64(); + loaded_pix = getbpl6_64(); + } + 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] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[1]) { + copybpl6o_64(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl6_64(); + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_ham1_p6_ilores_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_kehb0_p6_ilores_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + pix0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[pix0 & 31]; + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6_64(); + loaded_pix = getbpl6_64(); + } + if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { + copybpl6_64(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6_64(); + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + pix2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[pix2 & 31]; + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6_64(); + loaded_pix = getbpl6_64(); + } + if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { + copybpl6_64(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6_64(); + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_kehb0_p6_ilores_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_kehb1_p6_ilores_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + pix0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[pix0 & 31]; + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6e_64(); + loaded_pix = getbpl6_64(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl6o_64(); + loaded_pix = getbpl6_64(); + } + 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] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[1]) { + copybpl6o_64(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl6_64(); + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + pix2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[pix2 & 31]; + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6e_64(); + loaded_pix = getbpl6_64(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl6o_64(); + loaded_pix = getbpl6_64(); + } + 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] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[1]) { + copybpl6o_64(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl6_64(); + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_kehb1_p6_ilores_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_n0_p8_ilores_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8_64(); + loaded_pix = getbpl8_64(); + } + if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { + copybpl8_64(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8_64(); + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8_64(); + loaded_pix = getbpl8_64(); + } + if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { + copybpl8_64(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8_64(); + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_n0_p8_ilores_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_n1_p8_ilores_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8e_64(); + loaded_pix = getbpl8_64(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl8o_64(); + loaded_pix = getbpl8_64(); + } + 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] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[1]) { + copybpl8o_64(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl8_64(); + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8e_64(); + loaded_pix = getbpl8_64(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl8o_64(); + loaded_pix = getbpl8_64(); + } + 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] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[1]) { + copybpl8o_64(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl8_64(); + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_n1_p8_ilores_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_dpf0_p8_ilores_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8_64(); + loaded_pix = getbpl8_64(); + } + if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { + copybpl8_64(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8_64(); + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8_64(); + loaded_pix = getbpl8_64(); + } + if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { + copybpl8_64(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8_64(); + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_dpf0_p8_ilores_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_dpf1_p8_ilores_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8e_64(); + loaded_pix = getbpl8_64(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl8o_64(); + loaded_pix = getbpl8_64(); + } + 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] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[1]) { + copybpl8o_64(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl8_64(); + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8e_64(); + loaded_pix = getbpl8_64(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl8o_64(); + loaded_pix = getbpl8_64(); + } + 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] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[1]) { + copybpl8o_64(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl8_64(); + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_dpf1_p8_ilores_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_ehb0_p8_ilores_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_ehb0_p8_ilores_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_ehb1_p8_ilores_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_ehb1_p8_ilores_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_ham0_p8_ilores_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = decode_ham_pixel_aga(pix0); + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8_64(); + loaded_pix = getbpl8_64(); + } + if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { + copybpl8_64(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8_64(); + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = decode_ham_pixel_aga(pix2); + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8_64(); + loaded_pix = getbpl8_64(); + } + if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { + copybpl8_64(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8_64(); + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_ham0_p8_ilores_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_ham1_p8_ilores_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = decode_ham_pixel_aga(pix0); + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8e_64(); + loaded_pix = getbpl8_64(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl8o_64(); + loaded_pix = getbpl8_64(); + } + 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] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[1]) { + copybpl8o_64(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl8_64(); + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = decode_ham_pixel_aga(pix2); + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8e_64(); + loaded_pix = getbpl8_64(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl8o_64(); + loaded_pix = getbpl8_64(); + } + 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] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[1]) { + copybpl8o_64(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl8_64(); + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_ham1_p8_ilores_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_kehb0_p8_ilores_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_kehb0_p8_ilores_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_kehb1_p8_ilores_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_kehb1_p8_ilores_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_n0_p2_ihires_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix0; + } + shiftbpl2_64(); + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl2_64(); + } + loaded_pix = getbpl2_64(); + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix2; + } + shiftbpl2_64(); + if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { + copybpl2_64(); + } + loaded_pix = getbpl2_64(); + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_n0_p2_ihires_dhires_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_n1_p2_ihires_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix0; + } + shiftbpl2_64(); + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl2e_64(); + } + if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { + copybpl2o_64(); + } + loaded_pix = getbpl2_64(); + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix2; + } + shiftbpl2_64(); + if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { + copybpl2e_64(); + } + if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) { + copybpl2o_64(); + } + loaded_pix = getbpl2_64(); + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_n1_p2_ihires_dhires_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_dpf0_p2_ihires_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + shiftbpl2_64(); + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl2_64(); + } + loaded_pix = getbpl2_64(); + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; + } + last_bpl_pix = pix2; + } + shiftbpl2_64(); + if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { + copybpl2_64(); + } + loaded_pix = getbpl2_64(); + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_dpf0_p2_ihires_dhires_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_dpf1_p2_ihires_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + shiftbpl2_64(); + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl2e_64(); + } + if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { + copybpl2o_64(); + } + loaded_pix = getbpl2_64(); + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; + } + last_bpl_pix = pix2; + } + shiftbpl2_64(); + if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { + copybpl2e_64(); + } + if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) { + copybpl2o_64(); + } + loaded_pix = getbpl2_64(); + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_dpf1_p2_ihires_dhires_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_ehb0_p2_ihires_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_ehb0_p2_ihires_dhires_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_ehb1_p2_ihires_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_ehb1_p2_ihires_dhires_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_ham0_p2_ihires_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_ham0_p2_ihires_dhires_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_ham1_p2_ihires_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_ham1_p2_ihires_dhires_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_kehb0_p2_ihires_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_kehb0_p2_ihires_dhires_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_kehb1_p2_ihires_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_kehb1_p2_ihires_dhires_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_n0_p4_ihires_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix0; + } + shiftbpl4_64(); + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl4_64(); + } + loaded_pix = getbpl4_64(); + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix2; + } + shiftbpl4_64(); + if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { + copybpl4_64(); + } + loaded_pix = getbpl4_64(); + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_n0_p4_ihires_dhires_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_n1_p4_ihires_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix0; + } + shiftbpl4_64(); + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl4e_64(); + } + if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { + copybpl4o_64(); + } + loaded_pix = getbpl4_64(); + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix2; + } + shiftbpl4_64(); + if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { + copybpl4e_64(); + } + if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) { + copybpl4o_64(); + } + loaded_pix = getbpl4_64(); + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_n1_p4_ihires_dhires_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_dpf0_p4_ihires_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + shiftbpl4_64(); + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl4_64(); + } + loaded_pix = getbpl4_64(); + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; + } + last_bpl_pix = pix2; + } + shiftbpl4_64(); + if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { + copybpl4_64(); + } + loaded_pix = getbpl4_64(); + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_dpf0_p4_ihires_dhires_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_dpf1_p4_ihires_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + shiftbpl4_64(); + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl4e_64(); + } + if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { + copybpl4o_64(); + } + loaded_pix = getbpl4_64(); + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; + } + last_bpl_pix = pix2; + } + shiftbpl4_64(); + if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { + copybpl4e_64(); + } + if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) { + copybpl4o_64(); + } + loaded_pix = getbpl4_64(); + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_dpf1_p4_ihires_dhires_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_ehb0_p4_ihires_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_ehb0_p4_ihires_dhires_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_ehb1_p4_ihires_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_ehb1_p4_ihires_dhires_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_ham0_p4_ihires_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_ham0_p4_ihires_dhires_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_ham1_p4_ihires_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_ham1_p4_ihires_dhires_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_kehb0_p4_ihires_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_kehb0_p4_ihires_dhires_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_kehb1_p4_ihires_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_kehb1_p4_ihires_dhires_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_n0_p6_ihires_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix0; + } + shiftbpl6_64(); + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl6_64(); + } + loaded_pix = getbpl6_64(); + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix2; + } + shiftbpl6_64(); + if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { + copybpl6_64(); + } + loaded_pix = getbpl6_64(); + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_n0_p6_ihires_dhires_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_n1_p6_ihires_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix0; + } + shiftbpl6_64(); + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl6e_64(); + } + if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { + copybpl6o_64(); + } + loaded_pix = getbpl6_64(); + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix2; + } + shiftbpl6_64(); + if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { + copybpl6e_64(); + } + if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) { + copybpl6o_64(); + } + loaded_pix = getbpl6_64(); + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_n1_p6_ihires_dhires_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_dpf0_p6_ihires_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + shiftbpl6_64(); + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl6_64(); + } + loaded_pix = getbpl6_64(); + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; + } + last_bpl_pix = pix2; + } + shiftbpl6_64(); + if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { + copybpl6_64(); + } + loaded_pix = getbpl6_64(); + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_dpf0_p6_ihires_dhires_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_dpf1_p6_ihires_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + shiftbpl6_64(); + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl6e_64(); + } + if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { + copybpl6o_64(); + } + loaded_pix = getbpl6_64(); + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; + } + last_bpl_pix = pix2; + } + shiftbpl6_64(); + if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { + copybpl6e_64(); + } + if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) { + copybpl6o_64(); + } + loaded_pix = getbpl6_64(); + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_dpf1_p6_ihires_dhires_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_ehb0_p6_ihires_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + pix0 ^= bplcon4_denise_xor_val; + if (!(pix0 & 0x20)) { + dpix_val0 = denise_colors.acolors[pix0]; + } else { + uae_u32 v = (denise_colors.color_regs_aga[pix0 & 0x1f] >> 1) & 0x7f7f7f; + dpix_val0 = CONVERT_RGB(v); + } + } + last_bpl_pix = pix0; + } + shiftbpl6_64(); + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl6_64(); + } + loaded_pix = getbpl6_64(); + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + pix2 ^= bplcon4_denise_xor_val; + if (!(pix2 & 0x20)) { + dpix_val2 = denise_colors.acolors[pix2]; + } else { + uae_u32 v = (denise_colors.color_regs_aga[pix2 & 0x1f] >> 1) & 0x7f7f7f; + dpix_val2 = CONVERT_RGB(v); + } + } + last_bpl_pix = pix2; + } + shiftbpl6_64(); + if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { + copybpl6_64(); + } + loaded_pix = getbpl6_64(); + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_ehb0_p6_ihires_dhires_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_ehb1_p6_ihires_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + pix0 ^= bplcon4_denise_xor_val; + if (!(pix0 & 0x20)) { + dpix_val0 = denise_colors.acolors[pix0]; + } else { + uae_u32 v = (denise_colors.color_regs_aga[pix0 & 0x1f] >> 1) & 0x7f7f7f; + dpix_val0 = CONVERT_RGB(v); + } + } + last_bpl_pix = pix0; + } + shiftbpl6_64(); + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl6e_64(); + } + if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { + copybpl6o_64(); + } + loaded_pix = getbpl6_64(); + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + pix2 ^= bplcon4_denise_xor_val; + if (!(pix2 & 0x20)) { + dpix_val2 = denise_colors.acolors[pix2]; + } else { + uae_u32 v = (denise_colors.color_regs_aga[pix2 & 0x1f] >> 1) & 0x7f7f7f; + dpix_val2 = CONVERT_RGB(v); + } + } + last_bpl_pix = pix2; + } + shiftbpl6_64(); + if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { + copybpl6e_64(); + } + if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) { + copybpl6o_64(); + } + loaded_pix = getbpl6_64(); + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_ehb1_p6_ihires_dhires_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_ham0_p6_ihires_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = decode_ham_pixel_aga(pix0); + } + last_bpl_pix = pix0; + } + shiftbpl6_64(); + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl6_64(); + } + loaded_pix = getbpl6_64(); + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = decode_ham_pixel_aga(pix2); + } + last_bpl_pix = pix2; + } + shiftbpl6_64(); + if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { + copybpl6_64(); + } + loaded_pix = getbpl6_64(); + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_ham0_p6_ihires_dhires_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_ham1_p6_ihires_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = decode_ham_pixel_aga(pix0); + } + last_bpl_pix = pix0; + } + shiftbpl6_64(); + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl6e_64(); + } + if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { + copybpl6o_64(); + } + loaded_pix = getbpl6_64(); + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = decode_ham_pixel_aga(pix2); + } + last_bpl_pix = pix2; + } + shiftbpl6_64(); + if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { + copybpl6e_64(); + } + if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) { + copybpl6o_64(); + } + loaded_pix = getbpl6_64(); + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_ham1_p6_ihires_dhires_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_kehb0_p6_ihires_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + pix0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[pix0 & 31]; + } + last_bpl_pix = pix0; + } + shiftbpl6_64(); + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl6_64(); + } + loaded_pix = getbpl6_64(); + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + pix2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[pix2 & 31]; + } + last_bpl_pix = pix2; + } + shiftbpl6_64(); + if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { + copybpl6_64(); + } + loaded_pix = getbpl6_64(); + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_kehb0_p6_ihires_dhires_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_kehb1_p6_ihires_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + pix0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[pix0 & 31]; + } + last_bpl_pix = pix0; + } + shiftbpl6_64(); + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl6e_64(); + } + if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { + copybpl6o_64(); + } + loaded_pix = getbpl6_64(); + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + pix2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[pix2 & 31]; + } + last_bpl_pix = pix2; + } + shiftbpl6_64(); + if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { + copybpl6e_64(); + } + if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) { + copybpl6o_64(); + } + loaded_pix = getbpl6_64(); + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_kehb1_p6_ihires_dhires_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_n0_p8_ihires_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix0; + } + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8_64(); + } + loaded_pix = getbpl8_64(); + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix2; + } + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8_64(); + } + loaded_pix = getbpl8_64(); + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_n0_p8_ihires_dhires_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_n1_p8_ihires_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix0; + } + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8e_64(); + } + if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { + copybpl8o_64(); + } + loaded_pix = getbpl8_64(); + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix2; + } + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8e_64(); + } + if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) { + copybpl8o_64(); + } + loaded_pix = getbpl8_64(); + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_n1_p8_ihires_dhires_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_dpf0_p8_ihires_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8_64(); + } + loaded_pix = getbpl8_64(); + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; + } + last_bpl_pix = pix2; + } + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8_64(); + } + loaded_pix = getbpl8_64(); + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_dpf0_p8_ihires_dhires_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_dpf1_p8_ihires_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8e_64(); + } + if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { + copybpl8o_64(); + } + loaded_pix = getbpl8_64(); + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; + } + last_bpl_pix = pix2; + } + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8e_64(); + } + if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) { + copybpl8o_64(); + } + loaded_pix = getbpl8_64(); + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_dpf1_p8_ihires_dhires_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_ehb0_p8_ihires_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_ehb0_p8_ihires_dhires_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_ehb1_p8_ihires_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_ehb1_p8_ihires_dhires_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_ham0_p8_ihires_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = decode_ham_pixel_aga(pix0); + } + last_bpl_pix = pix0; + } + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8_64(); + } + loaded_pix = getbpl8_64(); + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = decode_ham_pixel_aga(pix2); + } + last_bpl_pix = pix2; + } + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8_64(); + } + loaded_pix = getbpl8_64(); + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_ham0_p8_ihires_dhires_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_ham1_p8_ihires_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = decode_ham_pixel_aga(pix0); + } + last_bpl_pix = pix0; + } + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8e_64(); + } + if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { + copybpl8o_64(); + } + loaded_pix = getbpl8_64(); + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = decode_ham_pixel_aga(pix2); + } + last_bpl_pix = pix2; + } + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8e_64(); + } + if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) { + copybpl8o_64(); + } + loaded_pix = getbpl8_64(); + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_ham1_p8_ihires_dhires_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_kehb0_p8_ihires_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_kehb0_p8_ihires_dhires_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_kehb1_p8_ihires_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_kehb1_p8_ihires_dhires_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_n0_p2_ihires_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix0; + } + shiftbpl2_64(); + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl2_64(); + } + loaded_pix = getbpl2_64(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix2; + } + shiftbpl2_64(); + if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { + copybpl2_64(); + } + loaded_pix = getbpl2_64(); + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_n0_p2_ihires_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_n1_p2_ihires_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix0; + } + shiftbpl2_64(); + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl2e_64(); + } + if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { + copybpl2o_64(); + } + loaded_pix = getbpl2_64(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix2; + } + shiftbpl2_64(); + if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { + copybpl2e_64(); + } + if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) { + copybpl2o_64(); + } + loaded_pix = getbpl2_64(); + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_n1_p2_ihires_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_dpf0_p2_ihires_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + shiftbpl2_64(); + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl2_64(); + } + loaded_pix = getbpl2_64(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; + } + last_bpl_pix = pix2; + } + shiftbpl2_64(); + if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { + copybpl2_64(); + } + loaded_pix = getbpl2_64(); + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_dpf0_p2_ihires_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_dpf1_p2_ihires_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + shiftbpl2_64(); + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl2e_64(); + } + if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { + copybpl2o_64(); + } + loaded_pix = getbpl2_64(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; + } + last_bpl_pix = pix2; + } + shiftbpl2_64(); + if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { + copybpl2e_64(); + } + if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) { + copybpl2o_64(); + } + loaded_pix = getbpl2_64(); + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_dpf1_p2_ihires_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_ehb0_p2_ihires_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_ehb0_p2_ihires_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_ehb1_p2_ihires_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_ehb1_p2_ihires_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_ham0_p2_ihires_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_ham0_p2_ihires_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_ham1_p2_ihires_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_ham1_p2_ihires_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_kehb0_p2_ihires_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_kehb0_p2_ihires_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_kehb1_p2_ihires_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_kehb1_p2_ihires_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_n0_p4_ihires_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix0; + } + shiftbpl4_64(); + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl4_64(); + } + loaded_pix = getbpl4_64(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix2; + } + shiftbpl4_64(); + if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { + copybpl4_64(); + } + loaded_pix = getbpl4_64(); + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_n0_p4_ihires_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_n1_p4_ihires_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix0; + } + shiftbpl4_64(); + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl4e_64(); + } + if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { + copybpl4o_64(); + } + loaded_pix = getbpl4_64(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix2; + } + shiftbpl4_64(); + if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { + copybpl4e_64(); + } + if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) { + copybpl4o_64(); + } + loaded_pix = getbpl4_64(); + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_n1_p4_ihires_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_dpf0_p4_ihires_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + shiftbpl4_64(); + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl4_64(); + } + loaded_pix = getbpl4_64(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; + } + last_bpl_pix = pix2; + } + shiftbpl4_64(); + if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { + copybpl4_64(); + } + loaded_pix = getbpl4_64(); + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_dpf0_p4_ihires_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_dpf1_p4_ihires_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + shiftbpl4_64(); + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl4e_64(); + } + if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { + copybpl4o_64(); + } + loaded_pix = getbpl4_64(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; + } + last_bpl_pix = pix2; + } + shiftbpl4_64(); + if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { + copybpl4e_64(); + } + if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) { + copybpl4o_64(); + } + loaded_pix = getbpl4_64(); + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_dpf1_p4_ihires_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_ehb0_p4_ihires_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_ehb0_p4_ihires_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_ehb1_p4_ihires_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_ehb1_p4_ihires_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_ham0_p4_ihires_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_ham0_p4_ihires_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_ham1_p4_ihires_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_ham1_p4_ihires_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_kehb0_p4_ihires_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_kehb0_p4_ihires_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_kehb1_p4_ihires_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_kehb1_p4_ihires_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_n0_p6_ihires_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix0; + } + shiftbpl6_64(); + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl6_64(); + } + loaded_pix = getbpl6_64(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix2; + } + shiftbpl6_64(); + if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { + copybpl6_64(); + } + loaded_pix = getbpl6_64(); + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_n0_p6_ihires_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_n1_p6_ihires_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix0; + } + shiftbpl6_64(); + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl6e_64(); + } + if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { + copybpl6o_64(); + } + loaded_pix = getbpl6_64(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix2; + } + shiftbpl6_64(); + if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { + copybpl6e_64(); + } + if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) { + copybpl6o_64(); + } + loaded_pix = getbpl6_64(); + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_n1_p6_ihires_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_dpf0_p6_ihires_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + shiftbpl6_64(); + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl6_64(); + } + loaded_pix = getbpl6_64(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; + } + last_bpl_pix = pix2; + } + shiftbpl6_64(); + if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { + copybpl6_64(); + } + loaded_pix = getbpl6_64(); + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_dpf0_p6_ihires_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_dpf1_p6_ihires_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + shiftbpl6_64(); + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl6e_64(); + } + if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { + copybpl6o_64(); + } + loaded_pix = getbpl6_64(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; + } + last_bpl_pix = pix2; + } + shiftbpl6_64(); + if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { + copybpl6e_64(); + } + if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) { + copybpl6o_64(); + } + loaded_pix = getbpl6_64(); + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_dpf1_p6_ihires_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_ehb0_p6_ihires_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + pix0 ^= bplcon4_denise_xor_val; + if (!(pix0 & 0x20)) { + dpix_val0 = denise_colors.acolors[pix0]; + } else { + uae_u32 v = (denise_colors.color_regs_aga[pix0 & 0x1f] >> 1) & 0x7f7f7f; + dpix_val0 = CONVERT_RGB(v); + } + } + last_bpl_pix = pix0; + } + shiftbpl6_64(); + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl6_64(); + } + loaded_pix = getbpl6_64(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + pix2 ^= bplcon4_denise_xor_val; + if (!(pix2 & 0x20)) { + dpix_val2 = denise_colors.acolors[pix2]; + } else { + uae_u32 v = (denise_colors.color_regs_aga[pix2 & 0x1f] >> 1) & 0x7f7f7f; + dpix_val2 = CONVERT_RGB(v); + } + } + last_bpl_pix = pix2; + } + shiftbpl6_64(); + if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { + copybpl6_64(); + } + loaded_pix = getbpl6_64(); + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_ehb0_p6_ihires_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_ehb1_p6_ihires_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + pix0 ^= bplcon4_denise_xor_val; + if (!(pix0 & 0x20)) { + dpix_val0 = denise_colors.acolors[pix0]; + } else { + uae_u32 v = (denise_colors.color_regs_aga[pix0 & 0x1f] >> 1) & 0x7f7f7f; + dpix_val0 = CONVERT_RGB(v); + } + } + last_bpl_pix = pix0; + } + shiftbpl6_64(); + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl6e_64(); + } + if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { + copybpl6o_64(); + } + loaded_pix = getbpl6_64(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + pix2 ^= bplcon4_denise_xor_val; + if (!(pix2 & 0x20)) { + dpix_val2 = denise_colors.acolors[pix2]; + } else { + uae_u32 v = (denise_colors.color_regs_aga[pix2 & 0x1f] >> 1) & 0x7f7f7f; + dpix_val2 = CONVERT_RGB(v); + } + } + last_bpl_pix = pix2; + } + shiftbpl6_64(); + if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { + copybpl6e_64(); + } + if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) { + copybpl6o_64(); + } + loaded_pix = getbpl6_64(); + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_ehb1_p6_ihires_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_ham0_p6_ihires_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = decode_ham_pixel_aga(pix0); + } + last_bpl_pix = pix0; + } + shiftbpl6_64(); + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl6_64(); + } + loaded_pix = getbpl6_64(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = decode_ham_pixel_aga(pix2); + } + last_bpl_pix = pix2; + } + shiftbpl6_64(); + if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { + copybpl6_64(); + } + loaded_pix = getbpl6_64(); + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_ham0_p6_ihires_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_ham1_p6_ihires_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = decode_ham_pixel_aga(pix0); + } + last_bpl_pix = pix0; + } + shiftbpl6_64(); + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl6e_64(); + } + if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { + copybpl6o_64(); + } + loaded_pix = getbpl6_64(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = decode_ham_pixel_aga(pix2); + } + last_bpl_pix = pix2; + } + shiftbpl6_64(); + if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { + copybpl6e_64(); + } + if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) { + copybpl6o_64(); + } + loaded_pix = getbpl6_64(); + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_ham1_p6_ihires_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_kehb0_p6_ihires_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + pix0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[pix0 & 31]; + } + last_bpl_pix = pix0; + } + shiftbpl6_64(); + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl6_64(); + } + loaded_pix = getbpl6_64(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + pix2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[pix2 & 31]; + } + last_bpl_pix = pix2; + } + shiftbpl6_64(); + if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { + copybpl6_64(); + } + loaded_pix = getbpl6_64(); + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_kehb0_p6_ihires_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_kehb1_p6_ihires_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + pix0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[pix0 & 31]; + } + last_bpl_pix = pix0; + } + shiftbpl6_64(); + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl6e_64(); + } + if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { + copybpl6o_64(); + } + loaded_pix = getbpl6_64(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + pix2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[pix2 & 31]; + } + last_bpl_pix = pix2; + } + shiftbpl6_64(); + if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { + copybpl6e_64(); + } + if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) { + copybpl6o_64(); + } + loaded_pix = getbpl6_64(); + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_kehb1_p6_ihires_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_n0_p8_ihires_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix0; + } + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8_64(); + } + loaded_pix = getbpl8_64(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix2; + } + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8_64(); + } + loaded_pix = getbpl8_64(); + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_n0_p8_ihires_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_n1_p8_ihires_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix0; + } + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8e_64(); + } + if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { + copybpl8o_64(); + } + loaded_pix = getbpl8_64(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix2; + } + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8e_64(); + } + if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) { + copybpl8o_64(); + } + loaded_pix = getbpl8_64(); + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_n1_p8_ihires_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_dpf0_p8_ihires_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8_64(); + } + loaded_pix = getbpl8_64(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; + } + last_bpl_pix = pix2; + } + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8_64(); + } + loaded_pix = getbpl8_64(); + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_dpf0_p8_ihires_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_dpf1_p8_ihires_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8e_64(); + } + if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { + copybpl8o_64(); + } + loaded_pix = getbpl8_64(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; + } + last_bpl_pix = pix2; + } + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8e_64(); + } + if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) { + copybpl8o_64(); + } + loaded_pix = getbpl8_64(); + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_dpf1_p8_ihires_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_ehb0_p8_ihires_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_ehb0_p8_ihires_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_ehb1_p8_ihires_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_ehb1_p8_ihires_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_ham0_p8_ihires_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = decode_ham_pixel_aga(pix0); + } + last_bpl_pix = pix0; + } + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8_64(); + } + loaded_pix = getbpl8_64(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = decode_ham_pixel_aga(pix2); + } + last_bpl_pix = pix2; + } + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8_64(); + } + loaded_pix = getbpl8_64(); + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_ham0_p8_ihires_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_ham1_p8_ihires_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = decode_ham_pixel_aga(pix0); + } + last_bpl_pix = pix0; + } + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8e_64(); + } + if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { + copybpl8o_64(); + } + loaded_pix = getbpl8_64(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = decode_ham_pixel_aga(pix2); + } + last_bpl_pix = pix2; + } + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8e_64(); + } + if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) { + copybpl8o_64(); + } + loaded_pix = getbpl8_64(); + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_ham1_p8_ihires_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_kehb0_p8_ihires_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_kehb0_p8_ihires_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_kehb1_p8_ihires_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_kehb1_p8_ihires_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_n0_p2_ishres_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix0; + } + shiftbpl2_64(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl2_64(); + } + loaded_pix = getbpl2_64(); + loaded_pixs[0] = loaded_pix; + shiftbpl2_64(); + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix2; + } + shiftbpl2_64(); + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl2_64(); + } + loaded_pix = getbpl2_64(); + loaded_pixs[2] = loaded_pix; + shiftbpl2_64(); + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_n0_p2_ishres_dhires_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix0; + } + shiftbpl2_64(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl2_64(); + } + loaded_pix = getbpl2_64(); + loaded_pixs[0] = loaded_pix; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix1; + } + shiftbpl2_64(); + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl2_64(); + } + loaded_pix = getbpl2_64(); + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix2; + } + shiftbpl2_64(); + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl2_64(); + } + loaded_pix = getbpl2_64(); + loaded_pixs[2] = loaded_pix; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix3; + } + shiftbpl2_64(); + if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { + copybpl2_64(); + } + loaded_pix = getbpl2_64(); + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_n1_p2_ishres_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix0; + } + shiftbpl2_64(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl2e_64(); + } + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl2o_64(); + } + loaded_pix = getbpl2_64(); + loaded_pixs[0] = loaded_pix; + shiftbpl2_64(); + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix2; + } + shiftbpl2_64(); + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl2e_64(); + } + if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { + copybpl2o_64(); + } + loaded_pix = getbpl2_64(); + loaded_pixs[2] = loaded_pix; + shiftbpl2_64(); + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_n1_p2_ishres_dhires_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix0; + } + shiftbpl2_64(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl2e_64(); + } + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl2o_64(); + } + loaded_pix = getbpl2_64(); + loaded_pixs[0] = loaded_pix; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix1; + } + shiftbpl2_64(); + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl2e_64(); + } + if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { + copybpl2o_64(); + } + loaded_pix = getbpl2_64(); + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix2; + } + shiftbpl2_64(); + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl2e_64(); + } + if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { + copybpl2o_64(); + } + loaded_pix = getbpl2_64(); + loaded_pixs[2] = loaded_pix; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix3; + } + shiftbpl2_64(); + if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { + copybpl2e_64(); + } + if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) { + copybpl2o_64(); + } + loaded_pix = getbpl2_64(); + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_dpf0_p2_ishres_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + shiftbpl2_64(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl2_64(); + } + loaded_pix = getbpl2_64(); + loaded_pixs[0] = loaded_pix; + shiftbpl2_64(); + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; + } + last_bpl_pix = pix2; + } + shiftbpl2_64(); + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl2_64(); + } + loaded_pix = getbpl2_64(); + loaded_pixs[2] = loaded_pix; + shiftbpl2_64(); + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_dpf0_p2_ishres_dhires_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + shiftbpl2_64(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl2_64(); + } + loaded_pix = getbpl2_64(); + loaded_pixs[0] = loaded_pix; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + uae_u8 val1 = dpf_lookup[pix1]; + if (dpf_lookup_no[pix1]) { + val1 += dblpfofs[bpldualpf2of]; + } + val1 ^= bplcon4_denise_xor_val; + dpix_val1 = denise_colors.acolors[val1]; + } + last_bpl_pix = pix1; + } + shiftbpl2_64(); + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl2_64(); + } + loaded_pix = getbpl2_64(); + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; + } + last_bpl_pix = pix2; + } + shiftbpl2_64(); + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl2_64(); + } + loaded_pix = getbpl2_64(); + loaded_pixs[2] = loaded_pix; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + uae_u8 val3 = dpf_lookup[pix3]; + if (dpf_lookup_no[pix3]) { + val3 += dblpfofs[bpldualpf2of]; + } + val3 ^= bplcon4_denise_xor_val; + dpix_val3 = denise_colors.acolors[val3]; + } + last_bpl_pix = pix3; + } + shiftbpl2_64(); + if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { + copybpl2_64(); + } + loaded_pix = getbpl2_64(); + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_dpf1_p2_ishres_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + shiftbpl2_64(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl2e_64(); + } + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl2o_64(); + } + loaded_pix = getbpl2_64(); + loaded_pixs[0] = loaded_pix; + shiftbpl2_64(); + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; + } + last_bpl_pix = pix2; + } + shiftbpl2_64(); + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl2e_64(); + } + if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { + copybpl2o_64(); + } + loaded_pix = getbpl2_64(); + loaded_pixs[2] = loaded_pix; + shiftbpl2_64(); + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_dpf1_p2_ishres_dhires_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + shiftbpl2_64(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl2e_64(); + } + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl2o_64(); + } + loaded_pix = getbpl2_64(); + loaded_pixs[0] = loaded_pix; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + uae_u8 val1 = dpf_lookup[pix1]; + if (dpf_lookup_no[pix1]) { + val1 += dblpfofs[bpldualpf2of]; + } + val1 ^= bplcon4_denise_xor_val; + dpix_val1 = denise_colors.acolors[val1]; + } + last_bpl_pix = pix1; + } + shiftbpl2_64(); + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl2e_64(); + } + if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { + copybpl2o_64(); + } + loaded_pix = getbpl2_64(); + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; + } + last_bpl_pix = pix2; + } + shiftbpl2_64(); + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl2e_64(); + } + if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { + copybpl2o_64(); + } + loaded_pix = getbpl2_64(); + loaded_pixs[2] = loaded_pix; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + uae_u8 val3 = dpf_lookup[pix3]; + if (dpf_lookup_no[pix3]) { + val3 += dblpfofs[bpldualpf2of]; + } + val3 ^= bplcon4_denise_xor_val; + dpix_val3 = denise_colors.acolors[val3]; + } + last_bpl_pix = pix3; + } + shiftbpl2_64(); + if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { + copybpl2e_64(); + } + if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) { + copybpl2o_64(); + } + loaded_pix = getbpl2_64(); + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_ehb0_p2_ishres_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_ehb0_p2_ishres_dhires_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_ehb1_p2_ishres_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_ehb1_p2_ishres_dhires_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_ham0_p2_ishres_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_ham0_p2_ishres_dhires_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_ham1_p2_ishres_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_ham1_p2_ishres_dhires_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_kehb0_p2_ishres_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_kehb0_p2_ishres_dhires_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_kehb1_p2_ishres_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_kehb1_p2_ishres_dhires_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_n0_p4_ishres_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix0; + } + shiftbpl4_64(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4_64(); + } + loaded_pix = getbpl4_64(); + loaded_pixs[0] = loaded_pix; + shiftbpl4_64(); + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix2; + } + shiftbpl4_64(); + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4_64(); + } + loaded_pix = getbpl4_64(); + loaded_pixs[2] = loaded_pix; + shiftbpl4_64(); + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_n0_p4_ishres_dhires_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix0; + } + shiftbpl4_64(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4_64(); + } + loaded_pix = getbpl4_64(); + loaded_pixs[0] = loaded_pix; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix1; + } + shiftbpl4_64(); + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4_64(); + } + loaded_pix = getbpl4_64(); + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix2; + } + shiftbpl4_64(); + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4_64(); + } + loaded_pix = getbpl4_64(); + loaded_pixs[2] = loaded_pix; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix3; + } + shiftbpl4_64(); + if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4_64(); + } + loaded_pix = getbpl4_64(); + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_n1_p4_ishres_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix0; + } + shiftbpl4_64(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4e_64(); + } + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl4o_64(); + } + loaded_pix = getbpl4_64(); + loaded_pixs[0] = loaded_pix; + shiftbpl4_64(); + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix2; + } + shiftbpl4_64(); + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4e_64(); + } + if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { + copybpl4o_64(); + } + loaded_pix = getbpl4_64(); + loaded_pixs[2] = loaded_pix; + shiftbpl4_64(); + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_n1_p4_ishres_dhires_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix0; + } + shiftbpl4_64(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4e_64(); + } + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl4o_64(); + } + loaded_pix = getbpl4_64(); + loaded_pixs[0] = loaded_pix; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix1; + } + shiftbpl4_64(); + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4e_64(); + } + if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { + copybpl4o_64(); + } + loaded_pix = getbpl4_64(); + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix2; + } + shiftbpl4_64(); + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4e_64(); + } + if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { + copybpl4o_64(); + } + loaded_pix = getbpl4_64(); + loaded_pixs[2] = loaded_pix; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix3; + } + shiftbpl4_64(); + if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4e_64(); + } + if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) { + copybpl4o_64(); + } + loaded_pix = getbpl4_64(); + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_dpf0_p4_ishres_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + shiftbpl4_64(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4_64(); + } + loaded_pix = getbpl4_64(); + loaded_pixs[0] = loaded_pix; + shiftbpl4_64(); + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; + } + last_bpl_pix = pix2; + } + shiftbpl4_64(); + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4_64(); + } + loaded_pix = getbpl4_64(); + loaded_pixs[2] = loaded_pix; + shiftbpl4_64(); + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_dpf0_p4_ishres_dhires_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + shiftbpl4_64(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4_64(); + } + loaded_pix = getbpl4_64(); + loaded_pixs[0] = loaded_pix; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + uae_u8 val1 = dpf_lookup[pix1]; + if (dpf_lookup_no[pix1]) { + val1 += dblpfofs[bpldualpf2of]; + } + val1 ^= bplcon4_denise_xor_val; + dpix_val1 = denise_colors.acolors[val1]; + } + last_bpl_pix = pix1; + } + shiftbpl4_64(); + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4_64(); + } + loaded_pix = getbpl4_64(); + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; + } + last_bpl_pix = pix2; + } + shiftbpl4_64(); + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4_64(); + } + loaded_pix = getbpl4_64(); + loaded_pixs[2] = loaded_pix; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + uae_u8 val3 = dpf_lookup[pix3]; + if (dpf_lookup_no[pix3]) { + val3 += dblpfofs[bpldualpf2of]; + } + val3 ^= bplcon4_denise_xor_val; + dpix_val3 = denise_colors.acolors[val3]; + } + last_bpl_pix = pix3; + } + shiftbpl4_64(); + if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4_64(); + } + loaded_pix = getbpl4_64(); + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_dpf1_p4_ishres_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + shiftbpl4_64(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4e_64(); + } + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl4o_64(); + } + loaded_pix = getbpl4_64(); + loaded_pixs[0] = loaded_pix; + shiftbpl4_64(); + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; + } + last_bpl_pix = pix2; + } + shiftbpl4_64(); + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4e_64(); + } + if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { + copybpl4o_64(); + } + loaded_pix = getbpl4_64(); + loaded_pixs[2] = loaded_pix; + shiftbpl4_64(); + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_dpf1_p4_ishres_dhires_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + shiftbpl4_64(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4e_64(); + } + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl4o_64(); + } + loaded_pix = getbpl4_64(); + loaded_pixs[0] = loaded_pix; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + uae_u8 val1 = dpf_lookup[pix1]; + if (dpf_lookup_no[pix1]) { + val1 += dblpfofs[bpldualpf2of]; + } + val1 ^= bplcon4_denise_xor_val; + dpix_val1 = denise_colors.acolors[val1]; + } + last_bpl_pix = pix1; + } + shiftbpl4_64(); + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4e_64(); + } + if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { + copybpl4o_64(); + } + loaded_pix = getbpl4_64(); + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; + } + last_bpl_pix = pix2; + } + shiftbpl4_64(); + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4e_64(); + } + if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { + copybpl4o_64(); + } + loaded_pix = getbpl4_64(); + loaded_pixs[2] = loaded_pix; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + uae_u8 val3 = dpf_lookup[pix3]; + if (dpf_lookup_no[pix3]) { + val3 += dblpfofs[bpldualpf2of]; + } + val3 ^= bplcon4_denise_xor_val; + dpix_val3 = denise_colors.acolors[val3]; + } + last_bpl_pix = pix3; + } + shiftbpl4_64(); + if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4e_64(); + } + if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) { + copybpl4o_64(); + } + loaded_pix = getbpl4_64(); + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_ehb0_p4_ishres_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_ehb0_p4_ishres_dhires_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_ehb1_p4_ishres_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_ehb1_p4_ishres_dhires_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_ham0_p4_ishres_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_ham0_p4_ishres_dhires_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_ham1_p4_ishres_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_ham1_p4_ishres_dhires_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_kehb0_p4_ishres_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_kehb0_p4_ishres_dhires_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_kehb1_p4_ishres_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_kehb1_p4_ishres_dhires_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_n0_p6_ishres_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix0; + } + shiftbpl6_64(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6_64(); + } + loaded_pix = getbpl6_64(); + loaded_pixs[0] = loaded_pix; + shiftbpl6_64(); + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix2; + } + shiftbpl6_64(); + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6_64(); + } + loaded_pix = getbpl6_64(); + loaded_pixs[2] = loaded_pix; + shiftbpl6_64(); + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_n0_p6_ishres_dhires_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix0; + } + shiftbpl6_64(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6_64(); + } + loaded_pix = getbpl6_64(); + loaded_pixs[0] = loaded_pix; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix1; + } + shiftbpl6_64(); + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6_64(); + } + loaded_pix = getbpl6_64(); + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix2; + } + shiftbpl6_64(); + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6_64(); + } + loaded_pix = getbpl6_64(); + loaded_pixs[2] = loaded_pix; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix3; + } + shiftbpl6_64(); + if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6_64(); + } + loaded_pix = getbpl6_64(); + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_n1_p6_ishres_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix0; + } + shiftbpl6_64(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6e_64(); + } + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl6o_64(); + } + loaded_pix = getbpl6_64(); + loaded_pixs[0] = loaded_pix; + shiftbpl6_64(); + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix2; + } + shiftbpl6_64(); + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6e_64(); + } + if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { + copybpl6o_64(); + } + loaded_pix = getbpl6_64(); + loaded_pixs[2] = loaded_pix; + shiftbpl6_64(); + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_n1_p6_ishres_dhires_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix0; + } + shiftbpl6_64(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6e_64(); + } + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl6o_64(); + } + loaded_pix = getbpl6_64(); + loaded_pixs[0] = loaded_pix; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix1; + } + shiftbpl6_64(); + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6e_64(); + } + if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { + copybpl6o_64(); + } + loaded_pix = getbpl6_64(); + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix2; + } + shiftbpl6_64(); + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6e_64(); + } + if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { + copybpl6o_64(); + } + loaded_pix = getbpl6_64(); + loaded_pixs[2] = loaded_pix; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix3; + } + shiftbpl6_64(); + if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6e_64(); + } + if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) { + copybpl6o_64(); + } + loaded_pix = getbpl6_64(); + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_dpf0_p6_ishres_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + shiftbpl6_64(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6_64(); + } + loaded_pix = getbpl6_64(); + loaded_pixs[0] = loaded_pix; + shiftbpl6_64(); + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; + } + last_bpl_pix = pix2; + } + shiftbpl6_64(); + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6_64(); + } + loaded_pix = getbpl6_64(); + loaded_pixs[2] = loaded_pix; + shiftbpl6_64(); + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_dpf0_p6_ishres_dhires_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + shiftbpl6_64(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6_64(); + } + loaded_pix = getbpl6_64(); + loaded_pixs[0] = loaded_pix; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + uae_u8 val1 = dpf_lookup[pix1]; + if (dpf_lookup_no[pix1]) { + val1 += dblpfofs[bpldualpf2of]; + } + val1 ^= bplcon4_denise_xor_val; + dpix_val1 = denise_colors.acolors[val1]; + } + last_bpl_pix = pix1; + } + shiftbpl6_64(); + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6_64(); + } + loaded_pix = getbpl6_64(); + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; + } + last_bpl_pix = pix2; + } + shiftbpl6_64(); + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6_64(); + } + loaded_pix = getbpl6_64(); + loaded_pixs[2] = loaded_pix; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + uae_u8 val3 = dpf_lookup[pix3]; + if (dpf_lookup_no[pix3]) { + val3 += dblpfofs[bpldualpf2of]; + } + val3 ^= bplcon4_denise_xor_val; + dpix_val3 = denise_colors.acolors[val3]; + } + last_bpl_pix = pix3; + } + shiftbpl6_64(); + if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6_64(); + } + loaded_pix = getbpl6_64(); + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_dpf1_p6_ishres_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + shiftbpl6_64(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6e_64(); + } + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl6o_64(); + } + loaded_pix = getbpl6_64(); + loaded_pixs[0] = loaded_pix; + shiftbpl6_64(); + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; + } + last_bpl_pix = pix2; + } + shiftbpl6_64(); + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6e_64(); + } + if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { + copybpl6o_64(); + } + loaded_pix = getbpl6_64(); + loaded_pixs[2] = loaded_pix; + shiftbpl6_64(); + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_dpf1_p6_ishres_dhires_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + shiftbpl6_64(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6e_64(); + } + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl6o_64(); + } + loaded_pix = getbpl6_64(); + loaded_pixs[0] = loaded_pix; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + uae_u8 val1 = dpf_lookup[pix1]; + if (dpf_lookup_no[pix1]) { + val1 += dblpfofs[bpldualpf2of]; + } + val1 ^= bplcon4_denise_xor_val; + dpix_val1 = denise_colors.acolors[val1]; + } + last_bpl_pix = pix1; + } + shiftbpl6_64(); + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6e_64(); + } + if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { + copybpl6o_64(); + } + loaded_pix = getbpl6_64(); + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; + } + last_bpl_pix = pix2; + } + shiftbpl6_64(); + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6e_64(); + } + if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { + copybpl6o_64(); + } + loaded_pix = getbpl6_64(); + loaded_pixs[2] = loaded_pix; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + uae_u8 val3 = dpf_lookup[pix3]; + if (dpf_lookup_no[pix3]) { + val3 += dblpfofs[bpldualpf2of]; + } + val3 ^= bplcon4_denise_xor_val; + dpix_val3 = denise_colors.acolors[val3]; + } + last_bpl_pix = pix3; + } + shiftbpl6_64(); + if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6e_64(); + } + if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) { + copybpl6o_64(); + } + loaded_pix = getbpl6_64(); + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_ehb0_p6_ishres_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + pix0 ^= bplcon4_denise_xor_val; + if (!(pix0 & 0x20)) { + dpix_val0 = denise_colors.acolors[pix0]; + } else { + uae_u32 v = (denise_colors.color_regs_aga[pix0 & 0x1f] >> 1) & 0x7f7f7f; + dpix_val0 = CONVERT_RGB(v); + } + } + last_bpl_pix = pix0; + } + shiftbpl6_64(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6_64(); + } + loaded_pix = getbpl6_64(); + loaded_pixs[0] = loaded_pix; + shiftbpl6_64(); + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + pix2 ^= bplcon4_denise_xor_val; + if (!(pix2 & 0x20)) { + dpix_val2 = denise_colors.acolors[pix2]; + } else { + uae_u32 v = (denise_colors.color_regs_aga[pix2 & 0x1f] >> 1) & 0x7f7f7f; + dpix_val2 = CONVERT_RGB(v); + } + } + last_bpl_pix = pix2; + } + shiftbpl6_64(); + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6_64(); + } + loaded_pix = getbpl6_64(); + loaded_pixs[2] = loaded_pix; + shiftbpl6_64(); + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_ehb0_p6_ishres_dhires_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + pix0 ^= bplcon4_denise_xor_val; + if (!(pix0 & 0x20)) { + dpix_val0 = denise_colors.acolors[pix0]; + } else { + uae_u32 v = (denise_colors.color_regs_aga[pix0 & 0x1f] >> 1) & 0x7f7f7f; + dpix_val0 = CONVERT_RGB(v); + } + } + last_bpl_pix = pix0; + } + shiftbpl6_64(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6_64(); + } + loaded_pix = getbpl6_64(); + loaded_pixs[0] = loaded_pix; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + pix1 ^= bplcon4_denise_xor_val; + if (!(pix1 & 0x20)) { + dpix_val1 = denise_colors.acolors[pix1]; + } else { + uae_u32 v = (denise_colors.color_regs_aga[pix1 & 0x1f] >> 1) & 0x7f7f7f; + dpix_val1 = CONVERT_RGB(v); + } + } + last_bpl_pix = pix1; + } + shiftbpl6_64(); + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6_64(); + } + loaded_pix = getbpl6_64(); + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + pix2 ^= bplcon4_denise_xor_val; + if (!(pix2 & 0x20)) { + dpix_val2 = denise_colors.acolors[pix2]; + } else { + uae_u32 v = (denise_colors.color_regs_aga[pix2 & 0x1f] >> 1) & 0x7f7f7f; + dpix_val2 = CONVERT_RGB(v); + } + } + last_bpl_pix = pix2; + } + shiftbpl6_64(); + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6_64(); + } + loaded_pix = getbpl6_64(); + loaded_pixs[2] = loaded_pix; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + pix3 ^= bplcon4_denise_xor_val; + if (!(pix3 & 0x20)) { + dpix_val3 = denise_colors.acolors[pix3]; + } else { + uae_u32 v = (denise_colors.color_regs_aga[pix3 & 0x1f] >> 1) & 0x7f7f7f; + dpix_val3 = CONVERT_RGB(v); + } + } + last_bpl_pix = pix3; + } + shiftbpl6_64(); + if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6_64(); + } + loaded_pix = getbpl6_64(); + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_ehb1_p6_ishres_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + pix0 ^= bplcon4_denise_xor_val; + if (!(pix0 & 0x20)) { + dpix_val0 = denise_colors.acolors[pix0]; + } else { + uae_u32 v = (denise_colors.color_regs_aga[pix0 & 0x1f] >> 1) & 0x7f7f7f; + dpix_val0 = CONVERT_RGB(v); + } + } + last_bpl_pix = pix0; + } + shiftbpl6_64(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6e_64(); + } + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl6o_64(); + } + loaded_pix = getbpl6_64(); + loaded_pixs[0] = loaded_pix; + shiftbpl6_64(); + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + pix2 ^= bplcon4_denise_xor_val; + if (!(pix2 & 0x20)) { + dpix_val2 = denise_colors.acolors[pix2]; + } else { + uae_u32 v = (denise_colors.color_regs_aga[pix2 & 0x1f] >> 1) & 0x7f7f7f; + dpix_val2 = CONVERT_RGB(v); + } + } + last_bpl_pix = pix2; + } + shiftbpl6_64(); + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6e_64(); + } + if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { + copybpl6o_64(); + } + loaded_pix = getbpl6_64(); + loaded_pixs[2] = loaded_pix; + shiftbpl6_64(); + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_ehb1_p6_ishres_dhires_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + pix0 ^= bplcon4_denise_xor_val; + if (!(pix0 & 0x20)) { + dpix_val0 = denise_colors.acolors[pix0]; + } else { + uae_u32 v = (denise_colors.color_regs_aga[pix0 & 0x1f] >> 1) & 0x7f7f7f; + dpix_val0 = CONVERT_RGB(v); + } + } + last_bpl_pix = pix0; + } + shiftbpl6_64(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6e_64(); + } + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl6o_64(); + } + loaded_pix = getbpl6_64(); + loaded_pixs[0] = loaded_pix; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + pix1 ^= bplcon4_denise_xor_val; + if (!(pix1 & 0x20)) { + dpix_val1 = denise_colors.acolors[pix1]; + } else { + uae_u32 v = (denise_colors.color_regs_aga[pix1 & 0x1f] >> 1) & 0x7f7f7f; + dpix_val1 = CONVERT_RGB(v); + } + } + last_bpl_pix = pix1; + } + shiftbpl6_64(); + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6e_64(); + } + if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { + copybpl6o_64(); + } + loaded_pix = getbpl6_64(); + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + pix2 ^= bplcon4_denise_xor_val; + if (!(pix2 & 0x20)) { + dpix_val2 = denise_colors.acolors[pix2]; + } else { + uae_u32 v = (denise_colors.color_regs_aga[pix2 & 0x1f] >> 1) & 0x7f7f7f; + dpix_val2 = CONVERT_RGB(v); + } + } + last_bpl_pix = pix2; + } + shiftbpl6_64(); + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6e_64(); + } + if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { + copybpl6o_64(); + } + loaded_pix = getbpl6_64(); + loaded_pixs[2] = loaded_pix; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + pix3 ^= bplcon4_denise_xor_val; + if (!(pix3 & 0x20)) { + dpix_val3 = denise_colors.acolors[pix3]; + } else { + uae_u32 v = (denise_colors.color_regs_aga[pix3 & 0x1f] >> 1) & 0x7f7f7f; + dpix_val3 = CONVERT_RGB(v); + } + } + last_bpl_pix = pix3; + } + shiftbpl6_64(); + if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6e_64(); + } + if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) { + copybpl6o_64(); + } + loaded_pix = getbpl6_64(); + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_ham0_p6_ishres_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = decode_ham_pixel_aga(pix0); + } + last_bpl_pix = pix0; + } + shiftbpl6_64(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6_64(); + } + loaded_pix = getbpl6_64(); + loaded_pixs[0] = loaded_pix; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + decode_ham_pixel_aga(pix1); + } + last_bpl_pix = pix1; + } + shiftbpl6_64(); + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6_64(); + } + loaded_pix = getbpl6_64(); + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = decode_ham_pixel_aga(pix2); + } + last_bpl_pix = pix2; + } + shiftbpl6_64(); + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6_64(); + } + loaded_pix = getbpl6_64(); + loaded_pixs[2] = loaded_pix; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + decode_ham_pixel_aga(pix3); + } + last_bpl_pix = pix3; + } + shiftbpl6_64(); + if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6_64(); + } + loaded_pix = getbpl6_64(); + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_ham0_p6_ishres_dhires_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = decode_ham_pixel_aga(pix0); + } + last_bpl_pix = pix0; + } + shiftbpl6_64(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6_64(); + } + loaded_pix = getbpl6_64(); + loaded_pixs[0] = loaded_pix; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + dpix_val1 = decode_ham_pixel_aga(pix1); + } + last_bpl_pix = pix1; + } + shiftbpl6_64(); + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6_64(); + } + loaded_pix = getbpl6_64(); + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = decode_ham_pixel_aga(pix2); + } + last_bpl_pix = pix2; + } + shiftbpl6_64(); + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6_64(); + } + loaded_pix = getbpl6_64(); + loaded_pixs[2] = loaded_pix; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + dpix_val3 = decode_ham_pixel_aga(pix3); + } + last_bpl_pix = pix3; + } + shiftbpl6_64(); + if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6_64(); + } + loaded_pix = getbpl6_64(); + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_ham1_p6_ishres_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = decode_ham_pixel_aga(pix0); + } + last_bpl_pix = pix0; + } + shiftbpl6_64(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6e_64(); + } + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl6o_64(); + } + loaded_pix = getbpl6_64(); + loaded_pixs[0] = loaded_pix; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + decode_ham_pixel_aga(pix1); + } + last_bpl_pix = pix1; + } + shiftbpl6_64(); + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6e_64(); + } + if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { + copybpl6o_64(); + } + loaded_pix = getbpl6_64(); + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = decode_ham_pixel_aga(pix2); + } + last_bpl_pix = pix2; + } + shiftbpl6_64(); + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6e_64(); + } + if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { + copybpl6o_64(); + } + loaded_pix = getbpl6_64(); + loaded_pixs[2] = loaded_pix; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + decode_ham_pixel_aga(pix3); + } + last_bpl_pix = pix3; + } + shiftbpl6_64(); + if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6e_64(); + } + if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) { + copybpl6o_64(); + } + loaded_pix = getbpl6_64(); + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_ham1_p6_ishres_dhires_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = decode_ham_pixel_aga(pix0); + } + last_bpl_pix = pix0; + } + shiftbpl6_64(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6e_64(); + } + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl6o_64(); + } + loaded_pix = getbpl6_64(); + loaded_pixs[0] = loaded_pix; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + dpix_val1 = decode_ham_pixel_aga(pix1); + } + last_bpl_pix = pix1; + } + shiftbpl6_64(); + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6e_64(); + } + if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { + copybpl6o_64(); + } + loaded_pix = getbpl6_64(); + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = decode_ham_pixel_aga(pix2); + } + last_bpl_pix = pix2; + } + shiftbpl6_64(); + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6e_64(); + } + if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { + copybpl6o_64(); + } + loaded_pix = getbpl6_64(); + loaded_pixs[2] = loaded_pix; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + dpix_val3 = decode_ham_pixel_aga(pix3); + } + last_bpl_pix = pix3; + } + shiftbpl6_64(); + if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6e_64(); + } + if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) { + copybpl6o_64(); + } + loaded_pix = getbpl6_64(); + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm2_kehb1_p8_ishres_dlores_spr(void) +static void lts_aga_fm2_kehb0_p6_ishres_dhires(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + pix0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[pix0 & 31]; + } + last_bpl_pix = pix0; + } + shiftbpl6_64(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6_64(); + } + loaded_pix = getbpl6_64(); + loaded_pixs[0] = loaded_pix; + shiftbpl6_64(); + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + pix2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[pix2 & 31]; + } + last_bpl_pix = pix2; + } + shiftbpl6_64(); + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6_64(); + } + loaded_pix = getbpl6_64(); + loaded_pixs[2] = loaded_pix; + shiftbpl6_64(); + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm2_kehb1_p8_ishres_dlores_spr_filtered(void) +static void lts_aga_fm2_kehb0_p6_ishres_dhires_filtered(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + pix0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[pix0 & 31]; + } + last_bpl_pix = pix0; + } + shiftbpl6_64(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6_64(); + } + loaded_pix = getbpl6_64(); + loaded_pixs[0] = loaded_pix; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + pix1 ^= bplcon4_denise_xor_val; + dpix_val1 = denise_colors.acolors[pix1 & 31]; + } + last_bpl_pix = pix1; + } + shiftbpl6_64(); + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6_64(); + } + loaded_pix = getbpl6_64(); + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + pix2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[pix2 & 31]; + } + last_bpl_pix = pix2; + } + shiftbpl6_64(); + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6_64(); + } + loaded_pix = getbpl6_64(); + loaded_pixs[2] = loaded_pix; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + pix3 ^= bplcon4_denise_xor_val; + dpix_val3 = denise_colors.acolors[pix3 & 31]; + } + last_bpl_pix = pix3; + } + shiftbpl6_64(); + if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6_64(); + } + loaded_pix = getbpl6_64(); + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + dtbuf[h][2] = dpix_val2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm2_n0_p2_ilores_dhires(void) +static void lts_aga_fm2_kehb1_p6_ishres_dhires(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -13452,22 +42588,21 @@ static void lts_aga_fm2_n0_p2_ilores_dhires(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + pix0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[pix0 & 31]; } last_bpl_pix = pix0; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl2_64(); - loaded_pix = getbpl2_64(); + shiftbpl6_64(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6e_64(); } - if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { - copybpl2_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl2_64(); + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl6o_64(); } + loaded_pix = getbpl6_64(); loaded_pixs[0] = loaded_pix; + shiftbpl6_64(); internal_pixel_cnt += 2; uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; @@ -13476,22 +42611,21 @@ static void lts_aga_fm2_n0_p2_ilores_dhires(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + pix2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[pix2 & 31]; } last_bpl_pix = pix2; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl2_64(); - loaded_pix = getbpl2_64(); + shiftbpl6_64(); + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6e_64(); } - if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { - copybpl2_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl2_64(); + if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { + copybpl6o_64(); } + loaded_pix = getbpl6_64(); loaded_pixs[2] = loaded_pix; + shiftbpl6_64(); internal_pixel_cnt += 2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; @@ -13535,11 +42669,7 @@ static void lts_aga_fm2_n0_p2_ilores_dhires(void) denise_cck++; } } -static void lts_aga_fm2_n0_p2_ilores_dhires_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_n1_p2_ilores_dhires(void) +static void lts_aga_fm2_kehb1_p6_ishres_dhires_filtered(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -13559,33 +42689,41 @@ static void lts_aga_fm2_n1_p2_ilores_dhires(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + pix0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[pix0 & 31]; } last_bpl_pix = pix0; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl2e_64(); - loaded_pix = getbpl2_64(); + shiftbpl6_64(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6e_64(); } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl2o_64(); - loaded_pix = getbpl2_64(); + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl6o_64(); } - if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { - copybpl2e_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl2_64(); + loaded_pix = getbpl6_64(); + loaded_pixs[0] = loaded_pix; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + pix1 ^= bplcon4_denise_xor_val; + dpix_val1 = denise_colors.acolors[pix1 & 31]; + } + last_bpl_pix = pix1; } - if (bpldat_copy[1] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[1]) { - copybpl2o_64(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl2_64(); + shiftbpl6_64(); + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6e_64(); } - loaded_pixs[0] = loaded_pix; + if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { + copybpl6o_64(); + } + loaded_pix = getbpl6_64(); + loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 2; uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; @@ -13594,36 +42732,46 @@ static void lts_aga_fm2_n1_p2_ilores_dhires(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + pix2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[pix2 & 31]; } last_bpl_pix = pix2; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl2e_64(); - loaded_pix = getbpl2_64(); + shiftbpl6_64(); + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6e_64(); } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl2o_64(); - loaded_pix = getbpl2_64(); + if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { + copybpl6o_64(); } - if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { - copybpl2e_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl2_64(); + loaded_pix = getbpl6_64(); + loaded_pixs[2] = loaded_pix; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + pix3 ^= bplcon4_denise_xor_val; + dpix_val3 = denise_colors.acolors[pix3 & 31]; + } + last_bpl_pix = pix3; } - if (bpldat_copy[1] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[1]) { - copybpl2o_64(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl2_64(); + shiftbpl6_64(); + if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6e_64(); } - loaded_pixs[2] = loaded_pix; + if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) { + copybpl6o_64(); + } + loaded_pix = getbpl6_64(); + loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); dtbuf[h][0] = dpix_val0; + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); dtbuf[h][2] = dpix_val2; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -13664,11 +42812,7 @@ static void lts_aga_fm2_n1_p2_ilores_dhires(void) denise_cck++; } } -static void lts_aga_fm2_n1_p2_ilores_dhires_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_dpf0_p2_ilores_dhires(void) +static void lts_aga_fm2_n0_p8_ishres_dhires(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -13688,27 +42832,17 @@ static void lts_aga_fm2_dpf0_p2_ilores_dhires(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix0; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl2_64(); - loaded_pix = getbpl2_64(); - } - if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { - copybpl2_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl2_64(); + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8_64(); } + loaded_pix = getbpl8_64(); loaded_pixs[0] = loaded_pix; + shiftbpl8_64(); internal_pixel_cnt += 2; uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; @@ -13717,27 +42851,17 @@ static void lts_aga_fm2_dpf0_p2_ilores_dhires(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix2; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl2_64(); - loaded_pix = getbpl2_64(); - } - if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { - copybpl2_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl2_64(); + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8_64(); } + loaded_pix = getbpl8_64(); loaded_pixs[2] = loaded_pix; + shiftbpl8_64(); internal_pixel_cnt += 2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; @@ -13781,11 +42905,7 @@ static void lts_aga_fm2_dpf0_p2_ilores_dhires(void) denise_cck++; } } -static void lts_aga_fm2_dpf0_p2_ilores_dhires_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_dpf1_p2_ilores_dhires(void) +static void lts_aga_fm2_n0_p8_ishres_dhires_filtered(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -13805,38 +42925,33 @@ static void lts_aga_fm2_dpf1_p2_ilores_dhires(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix0; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl2e_64(); - loaded_pix = getbpl2_64(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl2o_64(); - loaded_pix = getbpl2_64(); + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8_64(); } - if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { - copybpl2e_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl2_64(); + loaded_pix = getbpl8_64(); + loaded_pixs[0] = loaded_pix; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix1; } - if (bpldat_copy[1] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[1]) { - copybpl2o_64(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl2_64(); + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8_64(); } - loaded_pixs[0] = loaded_pix; + loaded_pix = getbpl8_64(); + loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 2; uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; @@ -13845,41 +42960,38 @@ static void lts_aga_fm2_dpf1_p2_ilores_dhires(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix2; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl2e_64(); - loaded_pix = getbpl2_64(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl2o_64(); - loaded_pix = getbpl2_64(); + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8_64(); } - if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { - copybpl2e_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl2_64(); + loaded_pix = getbpl8_64(); + loaded_pixs[2] = loaded_pix; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix3; } - if (bpldat_copy[1] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[1]) { - copybpl2o_64(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl2_64(); + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8_64(); } - loaded_pixs[2] = loaded_pix; + loaded_pix = getbpl8_64(); + loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); dtbuf[h][0] = dpix_val0; + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); dtbuf[h][2] = dpix_val2; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -13920,59 +43032,7 @@ static void lts_aga_fm2_dpf1_p2_ilores_dhires(void) denise_cck++; } } -static void lts_aga_fm2_dpf1_p2_ilores_dhires_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb0_p2_ilores_dhires(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb0_p2_ilores_dhires_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb1_p2_ilores_dhires(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb1_p2_ilores_dhires_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_ham0_p2_ilores_dhires(void) -{ - lts_null(); -} -static void lts_aga_fm2_ham0_p2_ilores_dhires_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_ham1_p2_ilores_dhires(void) -{ - lts_null(); -} -static void lts_aga_fm2_ham1_p2_ilores_dhires_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb0_p2_ilores_dhires(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb0_p2_ilores_dhires_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb1_p2_ilores_dhires(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb1_p2_ilores_dhires_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_n0_p4_ilores_dhires(void) +static void lts_aga_fm2_n1_p8_ishres_dhires(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -13996,18 +43056,16 @@ static void lts_aga_fm2_n0_p4_ilores_dhires(void) } last_bpl_pix = pix0; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4_64(); - loaded_pix = getbpl4_64(); + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8e_64(); } - if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { - copybpl4_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4_64(); + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o_64(); } + loaded_pix = getbpl8_64(); loaded_pixs[0] = loaded_pix; + shiftbpl8_64(); internal_pixel_cnt += 2; uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; @@ -14020,18 +43078,16 @@ static void lts_aga_fm2_n0_p4_ilores_dhires(void) } last_bpl_pix = pix2; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4_64(); - loaded_pix = getbpl4_64(); + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8e_64(); } - if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { - copybpl4_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4_64(); + if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o_64(); } + loaded_pix = getbpl8_64(); loaded_pixs[2] = loaded_pix; + shiftbpl8_64(); internal_pixel_cnt += 2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; @@ -14075,11 +43131,7 @@ static void lts_aga_fm2_n0_p4_ilores_dhires(void) denise_cck++; } } -static void lts_aga_fm2_n0_p4_ilores_dhires_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_n1_p4_ilores_dhires(void) +static void lts_aga_fm2_n1_p8_ishres_dhires_filtered(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -14103,29 +43155,35 @@ static void lts_aga_fm2_n1_p4_ilores_dhires(void) } last_bpl_pix = pix0; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4e_64(); - loaded_pix = getbpl4_64(); + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8e_64(); } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl4o_64(); - loaded_pix = getbpl4_64(); + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o_64(); } - if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { - copybpl4e_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4_64(); + loaded_pix = getbpl8_64(); + loaded_pixs[0] = loaded_pix; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix1; } - if (bpldat_copy[1] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[1]) { - copybpl4o_64(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl4_64(); + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8e_64(); } - loaded_pixs[0] = loaded_pix; + if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o_64(); + } + loaded_pix = getbpl8_64(); + loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 2; uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; @@ -14138,32 +43196,40 @@ static void lts_aga_fm2_n1_p4_ilores_dhires(void) } last_bpl_pix = pix2; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4e_64(); - loaded_pix = getbpl4_64(); + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8e_64(); } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl4o_64(); - loaded_pix = getbpl4_64(); + if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o_64(); } - if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { - copybpl4e_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4_64(); + loaded_pix = getbpl8_64(); + loaded_pixs[2] = loaded_pix; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix3; } - if (bpldat_copy[1] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[1]) { - copybpl4o_64(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl4_64(); + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8e_64(); } - loaded_pixs[2] = loaded_pix; + if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o_64(); + } + loaded_pix = getbpl8_64(); + loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); dtbuf[h][0] = dpix_val0; + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); dtbuf[h][2] = dpix_val2; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -14204,11 +43270,7 @@ static void lts_aga_fm2_n1_p4_ilores_dhires(void) denise_cck++; } } -static void lts_aga_fm2_n1_p4_ilores_dhires_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_dpf0_p4_ilores_dhires(void) +static void lts_aga_fm2_dpf0_p8_ishres_dhires(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -14237,18 +43299,13 @@ static void lts_aga_fm2_dpf0_p4_ilores_dhires(void) } last_bpl_pix = pix0; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4_64(); - loaded_pix = getbpl4_64(); - } - if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { - copybpl4_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4_64(); + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8_64(); } + loaded_pix = getbpl8_64(); loaded_pixs[0] = loaded_pix; + shiftbpl8_64(); internal_pixel_cnt += 2; uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; @@ -14266,18 +43323,13 @@ static void lts_aga_fm2_dpf0_p4_ilores_dhires(void) } last_bpl_pix = pix2; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4_64(); - loaded_pix = getbpl4_64(); - } - if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { - copybpl4_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4_64(); + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8_64(); } + loaded_pix = getbpl8_64(); loaded_pixs[2] = loaded_pix; + shiftbpl8_64(); internal_pixel_cnt += 2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; @@ -14321,11 +43373,7 @@ static void lts_aga_fm2_dpf0_p4_ilores_dhires(void) denise_cck++; } } -static void lts_aga_fm2_dpf0_p4_ilores_dhires_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_dpf1_p4_ilores_dhires(void) +static void lts_aga_fm2_dpf0_p8_ishres_dhires_filtered(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -14354,29 +43402,34 @@ static void lts_aga_fm2_dpf1_p4_ilores_dhires(void) } last_bpl_pix = pix0; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4e_64(); - loaded_pix = getbpl4_64(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl4o_64(); - loaded_pix = getbpl4_64(); + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8_64(); } - if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { - copybpl4e_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4_64(); + loaded_pix = getbpl8_64(); + loaded_pixs[0] = loaded_pix; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + uae_u8 val1 = dpf_lookup[pix1]; + if (dpf_lookup_no[pix1]) { + val1 += dblpfofs[bpldualpf2of]; + } + val1 ^= bplcon4_denise_xor_val; + dpix_val1 = denise_colors.acolors[val1]; + } + last_bpl_pix = pix1; } - if (bpldat_copy[1] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[1]) { - copybpl4o_64(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl4_64(); + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8_64(); } - loaded_pixs[0] = loaded_pix; + loaded_pix = getbpl8_64(); + loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 2; uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; @@ -14394,32 +43447,39 @@ static void lts_aga_fm2_dpf1_p4_ilores_dhires(void) } last_bpl_pix = pix2; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4e_64(); - loaded_pix = getbpl4_64(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl4o_64(); - loaded_pix = getbpl4_64(); + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8_64(); } - if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { - copybpl4e_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4_64(); + loaded_pix = getbpl8_64(); + loaded_pixs[2] = loaded_pix; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + uae_u8 val3 = dpf_lookup[pix3]; + if (dpf_lookup_no[pix3]) { + val3 += dblpfofs[bpldualpf2of]; + } + val3 ^= bplcon4_denise_xor_val; + dpix_val3 = denise_colors.acolors[val3]; + } + last_bpl_pix = pix3; } - if (bpldat_copy[1] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[1]) { - copybpl4o_64(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl4_64(); + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8_64(); } - loaded_pixs[2] = loaded_pix; + loaded_pix = getbpl8_64(); + loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); dtbuf[h][0] = dpix_val0; + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); dtbuf[h][2] = dpix_val2; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -14460,59 +43520,7 @@ static void lts_aga_fm2_dpf1_p4_ilores_dhires(void) denise_cck++; } } -static void lts_aga_fm2_dpf1_p4_ilores_dhires_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb0_p4_ilores_dhires(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb0_p4_ilores_dhires_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb1_p4_ilores_dhires(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb1_p4_ilores_dhires_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_ham0_p4_ilores_dhires(void) -{ - lts_null(); -} -static void lts_aga_fm2_ham0_p4_ilores_dhires_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_ham1_p4_ilores_dhires(void) -{ - lts_null(); -} -static void lts_aga_fm2_ham1_p4_ilores_dhires_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb0_p4_ilores_dhires(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb0_p4_ilores_dhires_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb1_p4_ilores_dhires(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb1_p4_ilores_dhires_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_n0_p6_ilores_dhires(void) +static void lts_aga_fm2_dpf1_p8_ishres_dhires(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -14532,22 +43540,25 @@ static void lts_aga_fm2_n0_p6_ilores_dhires(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; } last_bpl_pix = pix0; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6_64(); - loaded_pix = getbpl6_64(); + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8e_64(); } - if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { - copybpl6_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6_64(); + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o_64(); } + loaded_pix = getbpl8_64(); loaded_pixs[0] = loaded_pix; + shiftbpl8_64(); internal_pixel_cnt += 2; uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; @@ -14556,22 +43567,25 @@ static void lts_aga_fm2_n0_p6_ilores_dhires(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; } last_bpl_pix = pix2; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6_64(); - loaded_pix = getbpl6_64(); + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8e_64(); } - if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { - copybpl6_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6_64(); + if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o_64(); } + loaded_pix = getbpl8_64(); loaded_pixs[2] = loaded_pix; + shiftbpl8_64(); internal_pixel_cnt += 2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; @@ -14615,11 +43629,7 @@ static void lts_aga_fm2_n0_p6_ilores_dhires(void) denise_cck++; } } -static void lts_aga_fm2_n0_p6_ilores_dhires_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_n1_p6_ilores_dhires(void) +static void lts_aga_fm2_dpf1_p8_ishres_dhires_filtered(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -14639,33 +43649,49 @@ static void lts_aga_fm2_n1_p6_ilores_dhires(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8e_64(); + } + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o_64(); + } + loaded_pix = getbpl8_64(); + loaded_pixs[0] = loaded_pix; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + uae_u8 val1 = dpf_lookup[pix1]; + if (dpf_lookup_no[pix1]) { + val1 += dblpfofs[bpldualpf2of]; + } + val1 ^= bplcon4_denise_xor_val; + dpix_val1 = denise_colors.acolors[val1]; } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6e_64(); - loaded_pix = getbpl6_64(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl6o_64(); - loaded_pix = getbpl6_64(); + last_bpl_pix = pix1; } - if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { - copybpl6e_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6_64(); + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8e_64(); } - if (bpldat_copy[1] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[1]) { - copybpl6o_64(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl6_64(); + if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o_64(); } - loaded_pixs[0] = loaded_pix; + loaded_pix = getbpl8_64(); + loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 2; uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; @@ -14674,36 +43700,54 @@ static void lts_aga_fm2_n1_p6_ilores_dhires(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; } last_bpl_pix = pix2; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6e_64(); - loaded_pix = getbpl6_64(); + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8e_64(); } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl6o_64(); - loaded_pix = getbpl6_64(); + if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o_64(); } - if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { - copybpl6e_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6_64(); + loaded_pix = getbpl8_64(); + loaded_pixs[2] = loaded_pix; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + uae_u8 val3 = dpf_lookup[pix3]; + if (dpf_lookup_no[pix3]) { + val3 += dblpfofs[bpldualpf2of]; + } + val3 ^= bplcon4_denise_xor_val; + dpix_val3 = denise_colors.acolors[val3]; + } + last_bpl_pix = pix3; } - if (bpldat_copy[1] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[1]) { - copybpl6o_64(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl6_64(); + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8e_64(); } - loaded_pixs[2] = loaded_pix; + if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o_64(); + } + loaded_pix = getbpl8_64(); + loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); dtbuf[h][0] = dpix_val0; + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); dtbuf[h][2] = dpix_val2; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -14744,11 +43788,7 @@ static void lts_aga_fm2_n1_p6_ilores_dhires(void) denise_cck++; } } -static void lts_aga_fm2_n1_p6_ilores_dhires_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_dpf0_p6_ilores_dhires(void) +static void lts_aga_fm2_ehb0_p8_ishres_dhires(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -14759,65 +43799,18 @@ 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; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6_64(); - loaded_pix = getbpl6_64(); - } - if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { - copybpl6_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6_64(); - } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 2; uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6_64(); - loaded_pix = getbpl6_64(); - } - if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { - copybpl6_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6_64(); } - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; @@ -14861,11 +43854,7 @@ static void lts_aga_fm2_dpf0_p6_ilores_dhires(void) denise_cck++; } } -static void lts_aga_fm2_dpf0_p6_ilores_dhires_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_dpf1_p6_ilores_dhires(void) +static void lts_aga_fm2_ehb0_p8_ishres_dhires_filtered(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -14876,90 +43865,33 @@ 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; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6e_64(); - loaded_pix = getbpl6_64(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl6o_64(); - loaded_pix = getbpl6_64(); - } - 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] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[1]) { - copybpl6o_64(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl6_64(); + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 2; uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6e_64(); - loaded_pix = getbpl6_64(); } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl6o_64(); - loaded_pix = getbpl6_64(); - } - 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] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[1]) { - copybpl6o_64(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl6_64(); + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; } - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); dtbuf[h][0] = dpix_val0; + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); dtbuf[h][2] = dpix_val2; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -15000,11 +43932,7 @@ static void lts_aga_fm2_dpf1_p6_ilores_dhires(void) denise_cck++; } } -static void lts_aga_fm2_dpf1_p6_ilores_dhires_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb0_p6_ilores_dhires(void) +static void lts_aga_fm2_ehb1_p8_ishres_dhires(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -15015,67 +43943,18 @@ 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; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - pix0 ^= bplcon4_denise_xor_val; - if (!(pix0 & 0x20)) { - dpix_val0 = denise_colors.acolors[pix0]; - } else { - uae_u32 v = (denise_colors.color_regs_aga[pix0 & 0x1f] >> 1) & 0x7f7f7f; - dpix_val0 = CONVERT_RGB(v); - } - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6_64(); - loaded_pix = getbpl6_64(); - } - if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { - copybpl6_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6_64(); } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 2; uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - pix2 ^= bplcon4_denise_xor_val; - if (!(pix2 & 0x20)) { - dpix_val2 = denise_colors.acolors[pix2]; - } else { - uae_u32 v = (denise_colors.color_regs_aga[pix2 & 0x1f] >> 1) & 0x7f7f7f; - dpix_val2 = CONVERT_RGB(v); - } - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6_64(); - loaded_pix = getbpl6_64(); - } - if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { - copybpl6_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6_64(); } - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; @@ -15119,11 +43998,7 @@ static void lts_aga_fm2_ehb0_p6_ilores_dhires(void) denise_cck++; } } -static void lts_aga_fm2_ehb0_p6_ilores_dhires_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb1_p6_ilores_dhires(void) +static void lts_aga_fm2_ehb1_p8_ishres_dhires_filtered(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -15134,92 +44009,33 @@ 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; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - pix0 ^= bplcon4_denise_xor_val; - if (!(pix0 & 0x20)) { - dpix_val0 = denise_colors.acolors[pix0]; - } else { - uae_u32 v = (denise_colors.color_regs_aga[pix0 & 0x1f] >> 1) & 0x7f7f7f; - dpix_val0 = CONVERT_RGB(v); - } - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6e_64(); - loaded_pix = getbpl6_64(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl6o_64(); - loaded_pix = getbpl6_64(); - } - 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] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[1]) { - copybpl6o_64(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl6_64(); + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 2; uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - pix2 ^= bplcon4_denise_xor_val; - if (!(pix2 & 0x20)) { - dpix_val2 = denise_colors.acolors[pix2]; - } else { - uae_u32 v = (denise_colors.color_regs_aga[pix2 & 0x1f] >> 1) & 0x7f7f7f; - dpix_val2 = CONVERT_RGB(v); - } - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6e_64(); - loaded_pix = getbpl6_64(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl6o_64(); - loaded_pix = getbpl6_64(); - } - 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] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[1]) { - copybpl6o_64(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl6_64(); + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; } - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); dtbuf[h][0] = dpix_val0; + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); dtbuf[h][2] = dpix_val2; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -15260,11 +44076,7 @@ static void lts_aga_fm2_ehb1_p6_ilores_dhires(void) denise_cck++; } } -static void lts_aga_fm2_ehb1_p6_ilores_dhires_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_ham0_p6_ilores_dhires(void) +static void lts_aga_fm2_ham0_p8_ishres_dhires(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -15288,18 +44100,28 @@ static void lts_aga_fm2_ham0_p6_ilores_dhires(void) } last_bpl_pix = pix0; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6_64(); - loaded_pix = getbpl6_64(); - } - if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { - copybpl6_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6_64(); + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8_64(); } + loaded_pix = getbpl8_64(); loaded_pixs[0] = loaded_pix; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + decode_ham_pixel_aga(pix1); + } + last_bpl_pix = pix1; + } + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8_64(); + } + loaded_pix = getbpl8_64(); + loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 2; uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; @@ -15312,18 +44134,28 @@ static void lts_aga_fm2_ham0_p6_ilores_dhires(void) } last_bpl_pix = pix2; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6_64(); - loaded_pix = getbpl6_64(); - } - if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { - copybpl6_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6_64(); + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8_64(); } + loaded_pix = getbpl8_64(); loaded_pixs[2] = loaded_pix; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + decode_ham_pixel_aga(pix3); + } + last_bpl_pix = pix3; + } + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8_64(); + } + loaded_pix = getbpl8_64(); + loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; @@ -15367,11 +44199,7 @@ static void lts_aga_fm2_ham0_p6_ilores_dhires(void) denise_cck++; } } -static void lts_aga_fm2_ham0_p6_ilores_dhires_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_ham1_p6_ilores_dhires(void) +static void lts_aga_fm2_ham0_p8_ishres_dhires_filtered(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -15395,29 +44223,29 @@ static void lts_aga_fm2_ham1_p6_ilores_dhires(void) } last_bpl_pix = pix0; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6e_64(); - loaded_pix = getbpl6_64(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl6o_64(); - loaded_pix = getbpl6_64(); + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8_64(); } - if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { - copybpl6e_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6_64(); + loaded_pix = getbpl8_64(); + loaded_pixs[0] = loaded_pix; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + dpix_val1 = decode_ham_pixel_aga(pix1); + } + last_bpl_pix = pix1; } - if (bpldat_copy[1] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[1]) { - copybpl6o_64(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl6_64(); + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8_64(); } - loaded_pixs[0] = loaded_pix; + loaded_pix = getbpl8_64(); + loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 2; uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; @@ -15430,32 +44258,34 @@ static void lts_aga_fm2_ham1_p6_ilores_dhires(void) } last_bpl_pix = pix2; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6e_64(); - loaded_pix = getbpl6_64(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl6o_64(); - loaded_pix = getbpl6_64(); + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8_64(); } - if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { - copybpl6e_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6_64(); + loaded_pix = getbpl8_64(); + loaded_pixs[2] = loaded_pix; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + dpix_val3 = decode_ham_pixel_aga(pix3); + } + last_bpl_pix = pix3; } - if (bpldat_copy[1] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[1]) { - copybpl6o_64(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl6_64(); + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8_64(); } - loaded_pixs[2] = loaded_pix; + loaded_pix = getbpl8_64(); + loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); dtbuf[h][0] = dpix_val0; + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); dtbuf[h][2] = dpix_val2; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -15496,11 +44326,7 @@ static void lts_aga_fm2_ham1_p6_ilores_dhires(void) denise_cck++; } } -static void lts_aga_fm2_ham1_p6_ilores_dhires_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb0_p6_ilores_dhires(void) +static void lts_aga_fm2_ham1_p8_ishres_dhires(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -15520,23 +44346,38 @@ static void lts_aga_fm2_kehb0_p6_ilores_dhires(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - pix0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[pix0 & 31]; + dpix_val0 = decode_ham_pixel_aga(pix0); } last_bpl_pix = pix0; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6_64(); - loaded_pix = getbpl6_64(); + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8e_64(); } - if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { - copybpl6_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6_64(); + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o_64(); } + loaded_pix = getbpl8_64(); loaded_pixs[0] = loaded_pix; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + decode_ham_pixel_aga(pix1); + } + last_bpl_pix = pix1; + } + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8e_64(); + } + if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o_64(); + } + loaded_pix = getbpl8_64(); + loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 2; uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; @@ -15545,23 +44386,38 @@ static void lts_aga_fm2_kehb0_p6_ilores_dhires(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - pix2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[pix2 & 31]; + dpix_val2 = decode_ham_pixel_aga(pix2); } last_bpl_pix = pix2; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6_64(); - loaded_pix = getbpl6_64(); + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8e_64(); } - if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { - copybpl6_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6_64(); + if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o_64(); } + loaded_pix = getbpl8_64(); loaded_pixs[2] = loaded_pix; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + decode_ham_pixel_aga(pix3); + } + last_bpl_pix = pix3; + } + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8e_64(); + } + if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o_64(); + } + loaded_pix = getbpl8_64(); + loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; @@ -15605,11 +44461,7 @@ static void lts_aga_fm2_kehb0_p6_ilores_dhires(void) denise_cck++; } } -static void lts_aga_fm2_kehb0_p6_ilores_dhires_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb1_p6_ilores_dhires(void) +static void lts_aga_fm2_ham1_p8_ishres_dhires_filtered(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -15629,34 +44481,39 @@ static void lts_aga_fm2_kehb1_p6_ilores_dhires(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - pix0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[pix0 & 31]; + dpix_val0 = decode_ham_pixel_aga(pix0); } last_bpl_pix = pix0; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6e_64(); - loaded_pix = getbpl6_64(); + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8e_64(); } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl6o_64(); - loaded_pix = getbpl6_64(); + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o_64(); } - if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { - copybpl6e_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6_64(); + loaded_pix = getbpl8_64(); + loaded_pixs[0] = loaded_pix; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + dpix_val1 = decode_ham_pixel_aga(pix1); + } + last_bpl_pix = pix1; } - if (bpldat_copy[1] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[1]) { - copybpl6o_64(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl6_64(); + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8e_64(); } - loaded_pixs[0] = loaded_pix; + if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o_64(); + } + loaded_pix = getbpl8_64(); + loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 2; uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; @@ -15665,37 +44522,44 @@ static void lts_aga_fm2_kehb1_p6_ilores_dhires(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - pix2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[pix2 & 31]; + dpix_val2 = decode_ham_pixel_aga(pix2); } last_bpl_pix = pix2; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6e_64(); - loaded_pix = getbpl6_64(); + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8e_64(); } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl6o_64(); - loaded_pix = getbpl6_64(); + if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o_64(); } - if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { - copybpl6e_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6_64(); + loaded_pix = getbpl8_64(); + loaded_pixs[2] = loaded_pix; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + dpix_val3 = decode_ham_pixel_aga(pix3); + } + last_bpl_pix = pix3; } - if (bpldat_copy[1] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[1]) { - copybpl6o_64(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl6_64(); + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8e_64(); } - loaded_pixs[2] = loaded_pix; + if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o_64(); + } + loaded_pix = getbpl8_64(); + loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); dtbuf[h][0] = dpix_val0; + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); dtbuf[h][2] = dpix_val2; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -15736,11 +44600,7 @@ static void lts_aga_fm2_kehb1_p6_ilores_dhires(void) denise_cck++; } } -static void lts_aga_fm2_kehb1_p6_ilores_dhires_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_n0_p8_ilores_dhires(void) +static void lts_aga_fm2_kehb0_p8_ishres_dhires(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -15751,55 +44611,18 @@ 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; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8_64(); - loaded_pix = getbpl8_64(); - } - if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_64(); } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 2; uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8_64(); - loaded_pix = getbpl8_64(); - } - if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_64(); } - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; @@ -15843,11 +44666,7 @@ static void lts_aga_fm2_n0_p8_ilores_dhires(void) denise_cck++; } } -static void lts_aga_fm2_n0_p8_ilores_dhires_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_n1_p8_ilores_dhires(void) +static void lts_aga_fm2_kehb0_p8_ishres_dhires_filtered(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -15858,80 +44677,33 @@ 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; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8e_64(); - loaded_pix = getbpl8_64(); } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl8o_64(); - loaded_pix = getbpl8_64(); - } - 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] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl8_64(); + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 2; uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8e_64(); - loaded_pix = getbpl8_64(); } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl8o_64(); - loaded_pix = getbpl8_64(); - } - 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] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl8_64(); + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; } - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); dtbuf[h][0] = dpix_val0; + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); dtbuf[h][2] = dpix_val2; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -15972,11 +44744,7 @@ static void lts_aga_fm2_n1_p8_ilores_dhires(void) denise_cck++; } } -static void lts_aga_fm2_n1_p8_ilores_dhires_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_dpf0_p8_ilores_dhires(void) +static void lts_aga_fm2_kehb1_p8_ishres_dhires(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -15987,65 +44755,18 @@ 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; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8_64(); - loaded_pix = getbpl8_64(); - } - if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_64(); } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 2; uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8_64(); - loaded_pix = getbpl8_64(); - } - if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_64(); } - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; @@ -16089,11 +44810,7 @@ static void lts_aga_fm2_dpf0_p8_ilores_dhires(void) denise_cck++; } } -static void lts_aga_fm2_dpf0_p8_ilores_dhires_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_dpf1_p8_ilores_dhires(void) +static void lts_aga_fm2_kehb1_p8_ishres_dhires_filtered(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -16104,90 +44821,33 @@ 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; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8e_64(); - loaded_pix = getbpl8_64(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl8o_64(); - loaded_pix = getbpl8_64(); - } - 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] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl8_64(); + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 2; uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8e_64(); - loaded_pix = getbpl8_64(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl8o_64(); - loaded_pix = getbpl8_64(); - } - 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] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl8_64(); + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; } - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); dtbuf[h][0] = dpix_val0; + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); dtbuf[h][2] = dpix_val2; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -16228,27 +44888,7 @@ static void lts_aga_fm2_dpf1_p8_ilores_dhires(void) denise_cck++; } } -static void lts_aga_fm2_dpf1_p8_ilores_dhires_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb0_p8_ilores_dhires(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb0_p8_ilores_dhires_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb1_p8_ilores_dhires(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb1_p8_ilores_dhires_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_ham0_p8_ilores_dhires(void) +static void lts_aga_fm2_n0_p2_ishres_dhires_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -16261,6 +44901,7 @@ static void lts_aga_fm2_ham0_p8_ilores_dhires(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -16268,23 +44909,27 @@ static void lts_aga_fm2_ham0_p8_ilores_dhires(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - dpix_val0 = decode_ham_pixel_aga(pix0); + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix0; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8_64(); - loaded_pix = getbpl8_64(); + shiftbpl2_64(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl2_64(); } - if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_64(); + loaded_pix = getbpl2_64(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } } loaded_pixs[0] = loaded_pix; + shiftbpl2_64(); internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { @@ -16292,25 +44937,40 @@ static void lts_aga_fm2_ham0_p8_ilores_dhires(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - dpix_val2 = decode_ham_pixel_aga(pix2); + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix2; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8_64(); - loaded_pix = getbpl8_64(); + shiftbpl2_64(); + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl2_64(); } - if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_64(); + loaded_pix = getbpl2_64(); + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } } loaded_pixs[2] = loaded_pix; + shiftbpl2_64(); internal_pixel_cnt += 2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } dtbuf[h][2] = dpix_val2; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -16351,11 +45011,7 @@ static void lts_aga_fm2_ham0_p8_ilores_dhires(void) denise_cck++; } } -static void lts_aga_fm2_ham0_p8_ilores_dhires_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_ham1_p8_ilores_dhires(void) +static void lts_aga_fm2_n0_p2_ishres_dhires_spr_filtered(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -16368,6 +45024,7 @@ static void lts_aga_fm2_ham1_p8_ilores_dhires(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -16375,34 +45032,43 @@ static void lts_aga_fm2_ham1_p8_ilores_dhires(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - dpix_val0 = decode_ham_pixel_aga(pix0); + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix0; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8e_64(); - loaded_pix = getbpl8_64(); + shiftbpl2_64(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl2_64(); } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl8o_64(); - loaded_pix = getbpl8_64(); + loaded_pix = getbpl2_64(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } } - if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { - copybpl8e_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_64(); + loaded_pixs[0] = loaded_pix; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix1; } - if (bpldat_copy[1] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl8_64(); + shiftbpl2_64(); + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl2_64(); } - loaded_pixs[0] = loaded_pix; + loaded_pix = getbpl2_64(); + loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { @@ -16410,36 +45076,60 @@ static void lts_aga_fm2_ham1_p8_ilores_dhires(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - dpix_val2 = decode_ham_pixel_aga(pix2); + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix2; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8e_64(); - loaded_pix = getbpl8_64(); + shiftbpl2_64(); + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl2_64(); } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl8o_64(); - loaded_pix = getbpl8_64(); + loaded_pix = getbpl2_64(); + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } } - if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { - copybpl8e_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_64(); + loaded_pixs[2] = loaded_pix; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix3; } - if (bpldat_copy[1] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl8_64(); + shiftbpl2_64(); + if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { + copybpl2_64(); } - loaded_pixs[2] = loaded_pix; + loaded_pix = getbpl2_64(); + loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + dpix_val3 = dpix_val2; + } + } + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); dtbuf[h][2] = dpix_val2; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -16480,27 +45170,7 @@ static void lts_aga_fm2_ham1_p8_ilores_dhires(void) denise_cck++; } } -static void lts_aga_fm2_ham1_p8_ilores_dhires_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb0_p8_ilores_dhires(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb0_p8_ilores_dhires_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb1_p8_ilores_dhires(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb1_p8_ilores_dhires_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_n0_p2_ilores_dhires_spr(void) +static void lts_aga_fm2_n1_p2_ishres_dhires_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -16525,17 +45195,14 @@ static void lts_aga_fm2_n0_p2_ilores_dhires_spr(void) } last_bpl_pix = pix0; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl2_64(); - loaded_pix = getbpl2_64(); + shiftbpl2_64(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl2e_64(); } - if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { - copybpl2_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl2_64(); + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl2o_64(); } + loaded_pix = getbpl2_64(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -16545,6 +45212,7 @@ static void lts_aga_fm2_n0_p2_ilores_dhires_spr(void) } } loaded_pixs[0] = loaded_pix; + shiftbpl2_64(); internal_pixel_cnt += 2; matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; @@ -16558,17 +45226,14 @@ static void lts_aga_fm2_n0_p2_ilores_dhires_spr(void) } last_bpl_pix = pix2; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl2_64(); - loaded_pix = getbpl2_64(); + shiftbpl2_64(); + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl2e_64(); } - if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { - copybpl2_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl2_64(); + if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { + copybpl2o_64(); } + loaded_pix = getbpl2_64(); uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -16578,6 +45243,7 @@ static void lts_aga_fm2_n0_p2_ilores_dhires_spr(void) } } loaded_pixs[2] = loaded_pix; + shiftbpl2_64(); internal_pixel_cnt += 2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { @@ -16633,11 +45299,7 @@ static void lts_aga_fm2_n0_p2_ilores_dhires_spr(void) denise_cck++; } } -static void lts_aga_fm2_n0_p2_ilores_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_n1_p2_ilores_dhires_spr(void) +static void lts_aga_fm2_n1_p2_ishres_dhires_spr_filtered(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -16662,28 +45324,14 @@ static void lts_aga_fm2_n1_p2_ilores_dhires_spr(void) } last_bpl_pix = pix0; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl2e_64(); - loaded_pix = getbpl2_64(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl2o_64(); - loaded_pix = getbpl2_64(); - } - if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { + shiftbpl2_64(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { copybpl2e_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl2_64(); } - if (bpldat_copy[1] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[1]) { + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { copybpl2o_64(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl2_64(); } + loaded_pix = getbpl2_64(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -16693,6 +45341,26 @@ static void lts_aga_fm2_n1_p2_ilores_dhires_spr(void) } } loaded_pixs[0] = loaded_pix; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix1; + } + shiftbpl2_64(); + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl2e_64(); + } + if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { + copybpl2o_64(); + } + loaded_pix = getbpl2_64(); + loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 2; matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; @@ -16706,28 +45374,14 @@ static void lts_aga_fm2_n1_p2_ilores_dhires_spr(void) } last_bpl_pix = pix2; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl2e_64(); - loaded_pix = getbpl2_64(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl2o_64(); - loaded_pix = getbpl2_64(); - } - if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { + shiftbpl2_64(); + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { copybpl2e_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl2_64(); } - if (bpldat_copy[1] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[1]) { + if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { copybpl2o_64(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl2_64(); } + loaded_pix = getbpl2_64(); uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -16737,21 +45391,45 @@ static void lts_aga_fm2_n1_p2_ilores_dhires_spr(void) } } loaded_pixs[2] = loaded_pix; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix3; + } + shiftbpl2_64(); + if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { + copybpl2e_64(); + } + if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) { + copybpl2o_64(); + } + loaded_pix = getbpl2_64(); + loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { uae_u32 spix0 = denise_render_sprites2(pix0, sv0); if (spix0) { dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; } } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); dtbuf[h][0] = dpix_val0; if (sv2) { uae_u32 spix2 = denise_render_sprites2(pix2, sv2); if (spix2) { dpix_val2 = denise_colors.acolors[spix2]; + dpix_val3 = dpix_val2; } } + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); dtbuf[h][2] = dpix_val2; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -16792,11 +45470,7 @@ static void lts_aga_fm2_n1_p2_ilores_dhires_spr(void) denise_cck++; } } -static void lts_aga_fm2_n1_p2_ilores_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_dpf0_p2_ilores_dhires_spr(void) +static void lts_aga_fm2_dpf0_p2_ishres_dhires_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -16826,17 +45500,11 @@ static void lts_aga_fm2_dpf0_p2_ilores_dhires_spr(void) } last_bpl_pix = pix0; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl2_64(); - loaded_pix = getbpl2_64(); - } - if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { + shiftbpl2_64(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { copybpl2_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl2_64(); } + loaded_pix = getbpl2_64(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -16846,6 +45514,7 @@ static void lts_aga_fm2_dpf0_p2_ilores_dhires_spr(void) } } loaded_pixs[0] = loaded_pix; + shiftbpl2_64(); internal_pixel_cnt += 2; matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; @@ -16864,17 +45533,11 @@ static void lts_aga_fm2_dpf0_p2_ilores_dhires_spr(void) } last_bpl_pix = pix2; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl2_64(); - loaded_pix = getbpl2_64(); - } - if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { + shiftbpl2_64(); + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { copybpl2_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl2_64(); } + loaded_pix = getbpl2_64(); uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -16884,6 +45547,7 @@ static void lts_aga_fm2_dpf0_p2_ilores_dhires_spr(void) } } loaded_pixs[2] = loaded_pix; + shiftbpl2_64(); internal_pixel_cnt += 2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { @@ -16939,11 +45603,7 @@ static void lts_aga_fm2_dpf0_p2_ilores_dhires_spr(void) denise_cck++; } } -static void lts_aga_fm2_dpf0_p2_ilores_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_dpf1_p2_ilores_dhires_spr(void) +static void lts_aga_fm2_dpf0_p2_ishres_dhires_spr_filtered(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -16973,28 +45633,11 @@ static void lts_aga_fm2_dpf1_p2_ilores_dhires_spr(void) } last_bpl_pix = pix0; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl2e_64(); - loaded_pix = getbpl2_64(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl2o_64(); - loaded_pix = getbpl2_64(); - } - 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] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[1]) { - copybpl2o_64(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl2_64(); + shiftbpl2_64(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl2_64(); } + loaded_pix = getbpl2_64(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -17004,6 +45647,28 @@ static void lts_aga_fm2_dpf1_p2_ilores_dhires_spr(void) } } loaded_pixs[0] = loaded_pix; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + uae_u8 val1 = dpf_lookup[pix1]; + if (dpf_lookup_no[pix1]) { + val1 += dblpfofs[bpldualpf2of]; + } + val1 ^= bplcon4_denise_xor_val; + dpix_val1 = denise_colors.acolors[val1]; + } + last_bpl_pix = pix1; + } + shiftbpl2_64(); + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl2_64(); + } + loaded_pix = getbpl2_64(); + loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 2; matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; @@ -17022,28 +45687,11 @@ static void lts_aga_fm2_dpf1_p2_ilores_dhires_spr(void) } last_bpl_pix = pix2; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl2e_64(); - loaded_pix = getbpl2_64(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl2o_64(); - loaded_pix = getbpl2_64(); - } - 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] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[1]) { - copybpl2o_64(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl2_64(); + shiftbpl2_64(); + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl2_64(); } + loaded_pix = getbpl2_64(); uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -17053,21 +45701,47 @@ static void lts_aga_fm2_dpf1_p2_ilores_dhires_spr(void) } } loaded_pixs[2] = loaded_pix; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + uae_u8 val3 = dpf_lookup[pix3]; + if (dpf_lookup_no[pix3]) { + val3 += dblpfofs[bpldualpf2of]; + } + val3 ^= bplcon4_denise_xor_val; + dpix_val3 = denise_colors.acolors[val3]; + } + last_bpl_pix = pix3; + } + shiftbpl2_64(); + if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { + copybpl2_64(); + } + loaded_pix = getbpl2_64(); + loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { uae_u32 spix0 = denise_render_sprites2(pix0, sv0); if (spix0) { dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; } } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); dtbuf[h][0] = dpix_val0; if (sv2) { uae_u32 spix2 = denise_render_sprites2(pix2, sv2); if (spix2) { dpix_val2 = denise_colors.acolors[spix2]; + dpix_val3 = dpix_val2; } } + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); dtbuf[h][2] = dpix_val2; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -17108,59 +45782,7 @@ static void lts_aga_fm2_dpf1_p2_ilores_dhires_spr(void) denise_cck++; } } -static void lts_aga_fm2_dpf1_p2_ilores_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb0_p2_ilores_dhires_spr(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb0_p2_ilores_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb1_p2_ilores_dhires_spr(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb1_p2_ilores_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_ham0_p2_ilores_dhires_spr(void) -{ - lts_null(); -} -static void lts_aga_fm2_ham0_p2_ilores_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_ham1_p2_ilores_dhires_spr(void) -{ - lts_null(); -} -static void lts_aga_fm2_ham1_p2_ilores_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb0_p2_ilores_dhires_spr(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb0_p2_ilores_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb1_p2_ilores_dhires_spr(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb1_p2_ilores_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_n0_p4_ilores_dhires_spr(void) +static void lts_aga_fm2_dpf1_p2_ishres_dhires_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -17181,21 +45803,23 @@ static void lts_aga_fm2_n0_p4_ilores_dhires_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; } last_bpl_pix = pix0; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4_64(); - loaded_pix = getbpl4_64(); + shiftbpl2_64(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl2e_64(); } - if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { - copybpl4_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4_64(); + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl2o_64(); } + loaded_pix = getbpl2_64(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -17205,6 +45829,7 @@ static void lts_aga_fm2_n0_p4_ilores_dhires_spr(void) } } loaded_pixs[0] = loaded_pix; + shiftbpl2_64(); internal_pixel_cnt += 2; matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; @@ -17214,21 +45839,23 @@ static void lts_aga_fm2_n0_p4_ilores_dhires_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4_64(); - loaded_pix = getbpl4_64(); + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; + } + last_bpl_pix = pix2; } - if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { - copybpl4_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4_64(); + shiftbpl2_64(); + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl2e_64(); + } + if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { + copybpl2o_64(); } + loaded_pix = getbpl2_64(); uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -17238,6 +45865,7 @@ static void lts_aga_fm2_n0_p4_ilores_dhires_spr(void) } } loaded_pixs[2] = loaded_pix; + shiftbpl2_64(); internal_pixel_cnt += 2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { @@ -17293,11 +45921,7 @@ static void lts_aga_fm2_n0_p4_ilores_dhires_spr(void) denise_cck++; } } -static void lts_aga_fm2_n0_p4_ilores_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_n1_p4_ilores_dhires_spr(void) +static void lts_aga_fm2_dpf1_p2_ishres_dhires_spr_filtered(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -17318,32 +45942,23 @@ static void lts_aga_fm2_n1_p4_ilores_dhires_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; } last_bpl_pix = pix0; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4e_64(); - loaded_pix = getbpl4_64(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl4o_64(); - loaded_pix = getbpl4_64(); - } - if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { - copybpl4e_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4_64(); + shiftbpl2_64(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl2e_64(); } - if (bpldat_copy[1] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[1]) { - copybpl4o_64(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl4_64(); + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl2o_64(); } + loaded_pix = getbpl2_64(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -17353,6 +45968,31 @@ static void lts_aga_fm2_n1_p4_ilores_dhires_spr(void) } } loaded_pixs[0] = loaded_pix; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + uae_u8 val1 = dpf_lookup[pix1]; + if (dpf_lookup_no[pix1]) { + val1 += dblpfofs[bpldualpf2of]; + } + val1 ^= bplcon4_denise_xor_val; + dpix_val1 = denise_colors.acolors[val1]; + } + last_bpl_pix = pix1; + } + shiftbpl2_64(); + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl2e_64(); + } + if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { + copybpl2o_64(); + } + loaded_pix = getbpl2_64(); + loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 2; matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; @@ -17362,32 +46002,23 @@ static void lts_aga_fm2_n1_p4_ilores_dhires_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; } last_bpl_pix = pix2; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4e_64(); - loaded_pix = getbpl4_64(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl4o_64(); - loaded_pix = getbpl4_64(); - } - if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { - copybpl4e_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4_64(); + shiftbpl2_64(); + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl2e_64(); } - if (bpldat_copy[1] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[1]) { - copybpl4o_64(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl4_64(); + if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { + copybpl2o_64(); } + loaded_pix = getbpl2_64(); uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -17397,21 +46028,50 @@ static void lts_aga_fm2_n1_p4_ilores_dhires_spr(void) } } loaded_pixs[2] = loaded_pix; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + uae_u8 val3 = dpf_lookup[pix3]; + if (dpf_lookup_no[pix3]) { + val3 += dblpfofs[bpldualpf2of]; + } + val3 ^= bplcon4_denise_xor_val; + dpix_val3 = denise_colors.acolors[val3]; + } + last_bpl_pix = pix3; + } + shiftbpl2_64(); + if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { + copybpl2e_64(); + } + if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) { + copybpl2o_64(); + } + loaded_pix = getbpl2_64(); + loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { uae_u32 spix0 = denise_render_sprites2(pix0, sv0); if (spix0) { dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; } } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); dtbuf[h][0] = dpix_val0; if (sv2) { uae_u32 spix2 = denise_render_sprites2(pix2, sv2); if (spix2) { dpix_val2 = denise_colors.acolors[spix2]; + dpix_val3 = dpix_val2; } } + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); dtbuf[h][2] = dpix_val2; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -17452,11 +46112,7 @@ static void lts_aga_fm2_n1_p4_ilores_dhires_spr(void) denise_cck++; } } -static void lts_aga_fm2_n1_p4_ilores_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_dpf0_p4_ilores_dhires_spr(void) +static void lts_aga_fm2_ehb0_p2_ishres_dhires_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -17467,35 +46123,12 @@ 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; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4_64(); - loaded_pix = getbpl4_64(); - } - if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { - copybpl4_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4_64(); } uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { @@ -17505,35 +46138,12 @@ static void lts_aga_fm2_dpf0_p4_ilores_dhires_spr(void) sv0 = svt; } } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 2; matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4_64(); - loaded_pix = getbpl4_64(); - } - if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { - copybpl4_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4_64(); } uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { @@ -17543,7 +46153,6 @@ static void lts_aga_fm2_dpf0_p4_ilores_dhires_spr(void) sv2 = svt; } } - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { @@ -17599,11 +46208,7 @@ static void lts_aga_fm2_dpf0_p4_ilores_dhires_spr(void) denise_cck++; } } -static void lts_aga_fm2_dpf0_p4_ilores_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_dpf1_p4_ilores_dhires_spr(void) +static void lts_aga_fm2_ehb0_p2_ishres_dhires_spr_filtered(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -17614,46 +46219,12 @@ 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; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4e_64(); - loaded_pix = getbpl4_64(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl4o_64(); - loaded_pix = getbpl4_64(); - } - 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] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[1]) { - copybpl4o_64(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl4_64(); } uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { @@ -17663,46 +46234,17 @@ static void lts_aga_fm2_dpf1_p4_ilores_dhires_spr(void) sv0 = svt; } } - loaded_pixs[0] = loaded_pix; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } internal_pixel_cnt += 2; matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4e_64(); - loaded_pix = getbpl4_64(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl4o_64(); - loaded_pix = getbpl4_64(); - } - 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] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[1]) { - copybpl4o_64(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl4_64(); } uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { @@ -17712,22 +46254,30 @@ static void lts_aga_fm2_dpf1_p4_ilores_dhires_spr(void) sv2 = svt; } } - loaded_pixs[2] = loaded_pix; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } internal_pixel_cnt += 2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { uae_u32 spix0 = denise_render_sprites2(pix0, sv0); if (spix0) { dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; } } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); dtbuf[h][0] = dpix_val0; if (sv2) { uae_u32 spix2 = denise_render_sprites2(pix2, sv2); if (spix2) { dpix_val2 = denise_colors.acolors[spix2]; + dpix_val3 = dpix_val2; } } + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); dtbuf[h][2] = dpix_val2; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -17768,59 +46318,7 @@ static void lts_aga_fm2_dpf1_p4_ilores_dhires_spr(void) denise_cck++; } } -static void lts_aga_fm2_dpf1_p4_ilores_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb0_p4_ilores_dhires_spr(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb0_p4_ilores_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb1_p4_ilores_dhires_spr(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb1_p4_ilores_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_ham0_p4_ilores_dhires_spr(void) -{ - lts_null(); -} -static void lts_aga_fm2_ham0_p4_ilores_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_ham1_p4_ilores_dhires_spr(void) -{ - lts_null(); -} -static void lts_aga_fm2_ham1_p4_ilores_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb0_p4_ilores_dhires_spr(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb0_p4_ilores_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb1_p4_ilores_dhires_spr(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb1_p4_ilores_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_n0_p6_ilores_dhires_spr(void) +static void lts_aga_fm2_ehb1_p2_ishres_dhires_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -17831,30 +46329,12 @@ 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; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6_64(); - loaded_pix = getbpl6_64(); - } - if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { - copybpl6_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6_64(); } uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { @@ -17864,30 +46344,12 @@ static void lts_aga_fm2_n0_p6_ilores_dhires_spr(void) sv0 = svt; } } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 2; matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6_64(); - loaded_pix = getbpl6_64(); - } - if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { - copybpl6_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6_64(); } uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { @@ -17897,7 +46359,6 @@ static void lts_aga_fm2_n0_p6_ilores_dhires_spr(void) sv2 = svt; } } - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { @@ -17953,11 +46414,7 @@ static void lts_aga_fm2_n0_p6_ilores_dhires_spr(void) denise_cck++; } } -static void lts_aga_fm2_n0_p6_ilores_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_n1_p6_ilores_dhires_spr(void) +static void lts_aga_fm2_ehb1_p2_ishres_dhires_spr_filtered(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -17968,41 +46425,12 @@ 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; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6e_64(); - loaded_pix = getbpl6_64(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl6o_64(); - loaded_pix = getbpl6_64(); - } - 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] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[1]) { - copybpl6o_64(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl6_64(); } uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { @@ -18012,41 +46440,17 @@ static void lts_aga_fm2_n1_p6_ilores_dhires_spr(void) sv0 = svt; } } - loaded_pixs[0] = loaded_pix; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } internal_pixel_cnt += 2; matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6e_64(); - loaded_pix = getbpl6_64(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl6o_64(); - loaded_pix = getbpl6_64(); - } - 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] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[1]) { - copybpl6o_64(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl6_64(); } uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { @@ -18056,22 +46460,30 @@ static void lts_aga_fm2_n1_p6_ilores_dhires_spr(void) sv2 = svt; } } - loaded_pixs[2] = loaded_pix; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } internal_pixel_cnt += 2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { uae_u32 spix0 = denise_render_sprites2(pix0, sv0); if (spix0) { dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; } } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); dtbuf[h][0] = dpix_val0; if (sv2) { uae_u32 spix2 = denise_render_sprites2(pix2, sv2); if (spix2) { dpix_val2 = denise_colors.acolors[spix2]; + dpix_val3 = dpix_val2; } } + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); dtbuf[h][2] = dpix_val2; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -18112,11 +46524,7 @@ static void lts_aga_fm2_n1_p6_ilores_dhires_spr(void) denise_cck++; } } -static void lts_aga_fm2_n1_p6_ilores_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_dpf0_p6_ilores_dhires_spr(void) +static void lts_aga_fm2_ham0_p2_ishres_dhires_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -18127,35 +46535,12 @@ 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; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6_64(); - loaded_pix = getbpl6_64(); - } - if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { - copybpl6_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6_64(); } uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { @@ -18165,35 +46550,17 @@ static void lts_aga_fm2_dpf0_p6_ilores_dhires_spr(void) sv0 = svt; } } - loaded_pixs[0] = loaded_pix; - internal_pixel_cnt += 2; - matchsprites_aga(cnt + 2); - uae_u8 pix2 = 0; - uae_u32 dpix_val2 = BLANK_COLOR; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { - dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6_64(); - loaded_pix = getbpl6_64(); - } - if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { - copybpl6_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6_64(); + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; } uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { @@ -18203,7 +46570,11 @@ static void lts_aga_fm2_dpf0_p6_ilores_dhires_spr(void) sv2 = svt; } } - loaded_pixs[2] = loaded_pix; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } internal_pixel_cnt += 2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { @@ -18259,11 +46630,7 @@ static void lts_aga_fm2_dpf0_p6_ilores_dhires_spr(void) denise_cck++; } } -static void lts_aga_fm2_dpf0_p6_ilores_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_dpf1_p6_ilores_dhires_spr(void) +static void lts_aga_fm2_ham0_p2_ishres_dhires_spr_filtered(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -18274,46 +46641,12 @@ 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; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6e_64(); - loaded_pix = getbpl6_64(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl6o_64(); - loaded_pix = getbpl6_64(); - } - 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] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[1]) { - copybpl6o_64(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl6_64(); } uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { @@ -18323,46 +46656,17 @@ static void lts_aga_fm2_dpf1_p6_ilores_dhires_spr(void) sv0 = svt; } } - loaded_pixs[0] = loaded_pix; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } internal_pixel_cnt += 2; matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6e_64(); - loaded_pix = getbpl6_64(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl6o_64(); - loaded_pix = getbpl6_64(); - } - 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] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[1]) { - copybpl6o_64(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl6_64(); } uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { @@ -18372,22 +46676,30 @@ static void lts_aga_fm2_dpf1_p6_ilores_dhires_spr(void) sv2 = svt; } } - loaded_pixs[2] = loaded_pix; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } internal_pixel_cnt += 2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { uae_u32 spix0 = denise_render_sprites2(pix0, sv0); if (spix0) { dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; } } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); dtbuf[h][0] = dpix_val0; if (sv2) { uae_u32 spix2 = denise_render_sprites2(pix2, sv2); if (spix2) { dpix_val2 = denise_colors.acolors[spix2]; + dpix_val3 = dpix_val2; } } + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); dtbuf[h][2] = dpix_val2; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -18428,11 +46740,7 @@ static void lts_aga_fm2_dpf1_p6_ilores_dhires_spr(void) denise_cck++; } } -static void lts_aga_fm2_dpf1_p6_ilores_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb0_p6_ilores_dhires_spr(void) +static void lts_aga_fm2_ham1_p2_ishres_dhires_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -18443,36 +46751,12 @@ 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; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - pix0 ^= bplcon4_denise_xor_val; - if (!(pix0 & 0x20)) { - dpix_val0 = denise_colors.acolors[pix0]; - } else { - uae_u32 v = (denise_colors.color_regs_aga[pix0 & 0x1f] >> 1) & 0x7f7f7f; - dpix_val0 = CONVERT_RGB(v); - } - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6_64(); - loaded_pix = getbpl6_64(); - } - if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { - copybpl6_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6_64(); } uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { @@ -18482,36 +46766,17 @@ static void lts_aga_fm2_ehb0_p6_ilores_dhires_spr(void) sv0 = svt; } } - loaded_pixs[0] = loaded_pix; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } internal_pixel_cnt += 2; matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - pix2 ^= bplcon4_denise_xor_val; - if (!(pix2 & 0x20)) { - dpix_val2 = denise_colors.acolors[pix2]; - } else { - uae_u32 v = (denise_colors.color_regs_aga[pix2 & 0x1f] >> 1) & 0x7f7f7f; - dpix_val2 = CONVERT_RGB(v); - } - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6_64(); - loaded_pix = getbpl6_64(); - } - if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { - copybpl6_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6_64(); } uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { @@ -18521,7 +46786,11 @@ static void lts_aga_fm2_ehb0_p6_ilores_dhires_spr(void) sv2 = svt; } } - loaded_pixs[2] = loaded_pix; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } internal_pixel_cnt += 2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { @@ -18577,11 +46846,7 @@ static void lts_aga_fm2_ehb0_p6_ilores_dhires_spr(void) denise_cck++; } } -static void lts_aga_fm2_ehb0_p6_ilores_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb1_p6_ilores_dhires_spr(void) +static void lts_aga_fm2_ham1_p2_ishres_dhires_spr_filtered(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -18592,47 +46857,12 @@ 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; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - pix0 ^= bplcon4_denise_xor_val; - if (!(pix0 & 0x20)) { - dpix_val0 = denise_colors.acolors[pix0]; - } else { - uae_u32 v = (denise_colors.color_regs_aga[pix0 & 0x1f] >> 1) & 0x7f7f7f; - dpix_val0 = CONVERT_RGB(v); - } - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6e_64(); - loaded_pix = getbpl6_64(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl6o_64(); - loaded_pix = getbpl6_64(); - } - 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] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[1]) { - copybpl6o_64(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl6_64(); } uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { @@ -18642,47 +46872,17 @@ static void lts_aga_fm2_ehb1_p6_ilores_dhires_spr(void) sv0 = svt; } } - loaded_pixs[0] = loaded_pix; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } internal_pixel_cnt += 2; matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - pix2 ^= bplcon4_denise_xor_val; - if (!(pix2 & 0x20)) { - dpix_val2 = denise_colors.acolors[pix2]; - } else { - uae_u32 v = (denise_colors.color_regs_aga[pix2 & 0x1f] >> 1) & 0x7f7f7f; - dpix_val2 = CONVERT_RGB(v); - } - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6e_64(); - loaded_pix = getbpl6_64(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl6o_64(); - loaded_pix = getbpl6_64(); - } - 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] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[1]) { - copybpl6o_64(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl6_64(); } uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { @@ -18692,22 +46892,30 @@ static void lts_aga_fm2_ehb1_p6_ilores_dhires_spr(void) sv2 = svt; } } - loaded_pixs[2] = loaded_pix; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } internal_pixel_cnt += 2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { uae_u32 spix0 = denise_render_sprites2(pix0, sv0); if (spix0) { dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; } } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); dtbuf[h][0] = dpix_val0; if (sv2) { uae_u32 spix2 = denise_render_sprites2(pix2, sv2); if (spix2) { dpix_val2 = denise_colors.acolors[spix2]; + dpix_val3 = dpix_val2; } } + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); dtbuf[h][2] = dpix_val2; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -18748,11 +46956,7 @@ static void lts_aga_fm2_ehb1_p6_ilores_dhires_spr(void) denise_cck++; } } -static void lts_aga_fm2_ehb1_p6_ilores_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_ham0_p6_ilores_dhires_spr(void) +static void lts_aga_fm2_kehb0_p2_ishres_dhires_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -18763,30 +46967,12 @@ 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; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = decode_ham_pixel_aga(pix0); - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6_64(); - loaded_pix = getbpl6_64(); - } - if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { - copybpl6_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6_64(); } uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { @@ -18796,30 +46982,12 @@ static void lts_aga_fm2_ham0_p6_ilores_dhires_spr(void) sv0 = svt; } } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 2; matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = decode_ham_pixel_aga(pix2); - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6_64(); - loaded_pix = getbpl6_64(); - } - if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { - copybpl6_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6_64(); } uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { @@ -18829,7 +46997,6 @@ static void lts_aga_fm2_ham0_p6_ilores_dhires_spr(void) sv2 = svt; } } - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { @@ -18885,11 +47052,7 @@ static void lts_aga_fm2_ham0_p6_ilores_dhires_spr(void) denise_cck++; } } -static void lts_aga_fm2_ham0_p6_ilores_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_ham1_p6_ilores_dhires_spr(void) +static void lts_aga_fm2_kehb0_p2_ishres_dhires_spr_filtered(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -18900,41 +47063,12 @@ 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; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = decode_ham_pixel_aga(pix0); - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6e_64(); - loaded_pix = getbpl6_64(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl6o_64(); - loaded_pix = getbpl6_64(); - } - 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] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[1]) { - copybpl6o_64(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl6_64(); } uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { @@ -18944,41 +47078,17 @@ static void lts_aga_fm2_ham1_p6_ilores_dhires_spr(void) sv0 = svt; } } - loaded_pixs[0] = loaded_pix; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } internal_pixel_cnt += 2; matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = decode_ham_pixel_aga(pix2); - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6e_64(); - loaded_pix = getbpl6_64(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl6o_64(); - loaded_pix = getbpl6_64(); - } - 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] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[1]) { - copybpl6o_64(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl6_64(); } uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { @@ -18988,22 +47098,30 @@ static void lts_aga_fm2_ham1_p6_ilores_dhires_spr(void) sv2 = svt; } } - loaded_pixs[2] = loaded_pix; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } internal_pixel_cnt += 2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { uae_u32 spix0 = denise_render_sprites2(pix0, sv0); if (spix0) { dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; } } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); dtbuf[h][0] = dpix_val0; if (sv2) { uae_u32 spix2 = denise_render_sprites2(pix2, sv2); if (spix2) { dpix_val2 = denise_colors.acolors[spix2]; + dpix_val3 = dpix_val2; } } + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); dtbuf[h][2] = dpix_val2; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -19044,11 +47162,7 @@ static void lts_aga_fm2_ham1_p6_ilores_dhires_spr(void) denise_cck++; } } -static void lts_aga_fm2_ham1_p6_ilores_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb0_p6_ilores_dhires_spr(void) +static void lts_aga_fm2_kehb1_p2_ishres_dhires_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -19059,31 +47173,12 @@ 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; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - pix0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[pix0 & 31]; - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6_64(); - loaded_pix = getbpl6_64(); - } - if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { - copybpl6_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6_64(); } uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { @@ -19093,31 +47188,12 @@ static void lts_aga_fm2_kehb0_p6_ilores_dhires_spr(void) sv0 = svt; } } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 2; matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - pix2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[pix2 & 31]; - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6_64(); - loaded_pix = getbpl6_64(); - } - if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { - copybpl6_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6_64(); } uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { @@ -19127,7 +47203,6 @@ static void lts_aga_fm2_kehb0_p6_ilores_dhires_spr(void) sv2 = svt; } } - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { @@ -19183,11 +47258,7 @@ static void lts_aga_fm2_kehb0_p6_ilores_dhires_spr(void) denise_cck++; } } -static void lts_aga_fm2_kehb0_p6_ilores_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb1_p6_ilores_dhires_spr(void) +static void lts_aga_fm2_kehb1_p2_ishres_dhires_spr_filtered(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -19198,42 +47269,12 @@ 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; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - pix0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[pix0 & 31]; - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6e_64(); - loaded_pix = getbpl6_64(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl6o_64(); - loaded_pix = getbpl6_64(); - } - 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] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[1]) { - copybpl6o_64(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl6_64(); } uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { @@ -19243,42 +47284,17 @@ static void lts_aga_fm2_kehb1_p6_ilores_dhires_spr(void) sv0 = svt; } } - loaded_pixs[0] = loaded_pix; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } internal_pixel_cnt += 2; matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - pix2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[pix2 & 31]; - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6e_64(); - loaded_pix = getbpl6_64(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl6o_64(); - loaded_pix = getbpl6_64(); - } - 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] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[1]) { - copybpl6o_64(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl6_64(); } uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { @@ -19288,22 +47304,30 @@ static void lts_aga_fm2_kehb1_p6_ilores_dhires_spr(void) sv2 = svt; } } - loaded_pixs[2] = loaded_pix; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } internal_pixel_cnt += 2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { uae_u32 spix0 = denise_render_sprites2(pix0, sv0); if (spix0) { dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; } } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); dtbuf[h][0] = dpix_val0; if (sv2) { uae_u32 spix2 = denise_render_sprites2(pix2, sv2); if (spix2) { dpix_val2 = denise_colors.acolors[spix2]; + dpix_val3 = dpix_val2; } } + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); dtbuf[h][2] = dpix_val2; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -19344,11 +47368,7 @@ static void lts_aga_fm2_kehb1_p6_ilores_dhires_spr(void) denise_cck++; } } -static void lts_aga_fm2_kehb1_p6_ilores_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_n0_p8_ilores_dhires_spr(void) +static void lts_aga_fm2_n0_p4_ishres_dhires_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -19373,17 +47393,11 @@ static void lts_aga_fm2_n0_p8_ilores_dhires_spr(void) } last_bpl_pix = pix0; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8_64(); - loaded_pix = getbpl8_64(); - } - if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_64(); + shiftbpl4_64(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4_64(); } + loaded_pix = getbpl4_64(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -19393,6 +47407,7 @@ static void lts_aga_fm2_n0_p8_ilores_dhires_spr(void) } } loaded_pixs[0] = loaded_pix; + shiftbpl4_64(); internal_pixel_cnt += 2; matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; @@ -19406,17 +47421,11 @@ static void lts_aga_fm2_n0_p8_ilores_dhires_spr(void) } last_bpl_pix = pix2; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8_64(); - loaded_pix = getbpl8_64(); - } - if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_64(); + shiftbpl4_64(); + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4_64(); } + loaded_pix = getbpl4_64(); uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -19426,6 +47435,7 @@ static void lts_aga_fm2_n0_p8_ilores_dhires_spr(void) } } loaded_pixs[2] = loaded_pix; + shiftbpl4_64(); internal_pixel_cnt += 2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { @@ -19481,11 +47491,7 @@ static void lts_aga_fm2_n0_p8_ilores_dhires_spr(void) denise_cck++; } } -static void lts_aga_fm2_n0_p8_ilores_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_n1_p8_ilores_dhires_spr(void) +static void lts_aga_fm2_n0_p4_ishres_dhires_spr_filtered(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -19510,28 +47516,11 @@ static void lts_aga_fm2_n1_p8_ilores_dhires_spr(void) } last_bpl_pix = pix0; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8e_64(); - loaded_pix = getbpl8_64(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl8o_64(); - loaded_pix = getbpl8_64(); - } - 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] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl8_64(); + shiftbpl4_64(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4_64(); } + loaded_pix = getbpl4_64(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -19541,6 +47530,23 @@ static void lts_aga_fm2_n1_p8_ilores_dhires_spr(void) } } loaded_pixs[0] = loaded_pix; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix1; + } + shiftbpl4_64(); + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4_64(); + } + loaded_pix = getbpl4_64(); + loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 2; matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; @@ -19554,28 +47560,11 @@ static void lts_aga_fm2_n1_p8_ilores_dhires_spr(void) } last_bpl_pix = pix2; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8e_64(); - loaded_pix = getbpl8_64(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl8o_64(); - loaded_pix = getbpl8_64(); - } - 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] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl8_64(); + shiftbpl4_64(); + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4_64(); } + loaded_pix = getbpl4_64(); uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -19585,21 +47574,42 @@ static void lts_aga_fm2_n1_p8_ilores_dhires_spr(void) } } loaded_pixs[2] = loaded_pix; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix3; + } + shiftbpl4_64(); + if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4_64(); + } + loaded_pix = getbpl4_64(); + loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { uae_u32 spix0 = denise_render_sprites2(pix0, sv0); if (spix0) { dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; } } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); dtbuf[h][0] = dpix_val0; if (sv2) { uae_u32 spix2 = denise_render_sprites2(pix2, sv2); if (spix2) { dpix_val2 = denise_colors.acolors[spix2]; + dpix_val3 = dpix_val2; } } + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); dtbuf[h][2] = dpix_val2; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -19640,11 +47650,7 @@ static void lts_aga_fm2_n1_p8_ilores_dhires_spr(void) denise_cck++; } } -static void lts_aga_fm2_n1_p8_ilores_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_dpf0_p8_ilores_dhires_spr(void) +static void lts_aga_fm2_n1_p4_ishres_dhires_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -19665,26 +47671,18 @@ static void lts_aga_fm2_dpf0_p8_ilores_dhires_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix0; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8_64(); - loaded_pix = getbpl8_64(); + shiftbpl4_64(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4e_64(); } - if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_64(); + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl4o_64(); } + loaded_pix = getbpl4_64(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -19694,6 +47692,7 @@ static void lts_aga_fm2_dpf0_p8_ilores_dhires_spr(void) } } loaded_pixs[0] = loaded_pix; + shiftbpl4_64(); internal_pixel_cnt += 2; matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; @@ -19703,26 +47702,18 @@ static void lts_aga_fm2_dpf0_p8_ilores_dhires_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix2; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8_64(); - loaded_pix = getbpl8_64(); + shiftbpl4_64(); + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4e_64(); } - if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_64(); + if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { + copybpl4o_64(); } + loaded_pix = getbpl4_64(); uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -19732,6 +47723,7 @@ static void lts_aga_fm2_dpf0_p8_ilores_dhires_spr(void) } } loaded_pixs[2] = loaded_pix; + shiftbpl4_64(); internal_pixel_cnt += 2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { @@ -19787,11 +47779,7 @@ static void lts_aga_fm2_dpf0_p8_ilores_dhires_spr(void) denise_cck++; } } -static void lts_aga_fm2_dpf0_p8_ilores_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_dpf1_p8_ilores_dhires_spr(void) +static void lts_aga_fm2_n1_p4_ishres_dhires_spr_filtered(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -19812,37 +47800,18 @@ static void lts_aga_fm2_dpf1_p8_ilores_dhires_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix0; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8e_64(); - loaded_pix = getbpl8_64(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl8o_64(); - loaded_pix = getbpl8_64(); - } - if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { - copybpl8e_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_64(); + shiftbpl4_64(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4e_64(); } - if (bpldat_copy[1] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl8_64(); + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl4o_64(); } + loaded_pix = getbpl4_64(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -19852,6 +47821,26 @@ static void lts_aga_fm2_dpf1_p8_ilores_dhires_spr(void) } } loaded_pixs[0] = loaded_pix; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix1; + } + shiftbpl4_64(); + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4e_64(); + } + if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { + copybpl4o_64(); + } + loaded_pix = getbpl4_64(); + loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 2; matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; @@ -19861,37 +47850,18 @@ static void lts_aga_fm2_dpf1_p8_ilores_dhires_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix2; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8e_64(); - loaded_pix = getbpl8_64(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl8o_64(); - loaded_pix = getbpl8_64(); - } - if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { - copybpl8e_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_64(); + shiftbpl4_64(); + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4e_64(); } - if (bpldat_copy[1] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl8_64(); + if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { + copybpl4o_64(); } + loaded_pix = getbpl4_64(); uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -19901,21 +47871,45 @@ static void lts_aga_fm2_dpf1_p8_ilores_dhires_spr(void) } } loaded_pixs[2] = loaded_pix; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix3; + } + shiftbpl4_64(); + if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4e_64(); + } + if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) { + copybpl4o_64(); + } + loaded_pix = getbpl4_64(); + loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { uae_u32 spix0 = denise_render_sprites2(pix0, sv0); if (spix0) { dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; } } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); dtbuf[h][0] = dpix_val0; if (sv2) { uae_u32 spix2 = denise_render_sprites2(pix2, sv2); if (spix2) { dpix_val2 = denise_colors.acolors[spix2]; + dpix_val3 = dpix_val2; } } + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); dtbuf[h][2] = dpix_val2; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -19956,27 +47950,7 @@ static void lts_aga_fm2_dpf1_p8_ilores_dhires_spr(void) denise_cck++; } } -static void lts_aga_fm2_dpf1_p8_ilores_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb0_p8_ilores_dhires_spr(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb0_p8_ilores_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb1_p8_ilores_dhires_spr(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb1_p8_ilores_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_ham0_p8_ilores_dhires_spr(void) +static void lts_aga_fm2_dpf0_p4_ishres_dhires_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -19997,21 +47971,20 @@ static void lts_aga_fm2_ham0_p8_ilores_dhires_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - dpix_val0 = decode_ham_pixel_aga(pix0); + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; } last_bpl_pix = pix0; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8_64(); - loaded_pix = getbpl8_64(); - } - if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_64(); + shiftbpl4_64(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4_64(); } + loaded_pix = getbpl4_64(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -20021,6 +47994,7 @@ static void lts_aga_fm2_ham0_p8_ilores_dhires_spr(void) } } loaded_pixs[0] = loaded_pix; + shiftbpl4_64(); internal_pixel_cnt += 2; matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; @@ -20030,21 +48004,20 @@ static void lts_aga_fm2_ham0_p8_ilores_dhires_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - dpix_val2 = decode_ham_pixel_aga(pix2); + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; } last_bpl_pix = pix2; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8_64(); - loaded_pix = getbpl8_64(); - } - if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_64(); + shiftbpl4_64(); + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4_64(); } + loaded_pix = getbpl4_64(); uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -20054,6 +48027,7 @@ static void lts_aga_fm2_ham0_p8_ilores_dhires_spr(void) } } loaded_pixs[2] = loaded_pix; + shiftbpl4_64(); internal_pixel_cnt += 2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { @@ -20109,11 +48083,7 @@ static void lts_aga_fm2_ham0_p8_ilores_dhires_spr(void) denise_cck++; } } -static void lts_aga_fm2_ham0_p8_ilores_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_ham1_p8_ilores_dhires_spr(void) +static void lts_aga_fm2_dpf0_p4_ishres_dhires_spr_filtered(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -20134,32 +48104,20 @@ static void lts_aga_fm2_ham1_p8_ilores_dhires_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - dpix_val0 = decode_ham_pixel_aga(pix0); + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; } last_bpl_pix = pix0; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8e_64(); - loaded_pix = getbpl8_64(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl8o_64(); - loaded_pix = getbpl8_64(); - } - 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] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl8_64(); + shiftbpl4_64(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4_64(); } + loaded_pix = getbpl4_64(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -20169,6 +48127,28 @@ static void lts_aga_fm2_ham1_p8_ilores_dhires_spr(void) } } loaded_pixs[0] = loaded_pix; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + uae_u8 val1 = dpf_lookup[pix1]; + if (dpf_lookup_no[pix1]) { + val1 += dblpfofs[bpldualpf2of]; + } + val1 ^= bplcon4_denise_xor_val; + dpix_val1 = denise_colors.acolors[val1]; + } + last_bpl_pix = pix1; + } + shiftbpl4_64(); + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4_64(); + } + loaded_pix = getbpl4_64(); + loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 2; matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; @@ -20178,32 +48158,20 @@ static void lts_aga_fm2_ham1_p8_ilores_dhires_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - dpix_val2 = decode_ham_pixel_aga(pix2); + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; } last_bpl_pix = pix2; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8e_64(); - loaded_pix = getbpl8_64(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl8o_64(); - loaded_pix = getbpl8_64(); - } - 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] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl8_64(); + shiftbpl4_64(); + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4_64(); } + loaded_pix = getbpl4_64(); uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -20213,21 +48181,47 @@ static void lts_aga_fm2_ham1_p8_ilores_dhires_spr(void) } } loaded_pixs[2] = loaded_pix; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + uae_u8 val3 = dpf_lookup[pix3]; + if (dpf_lookup_no[pix3]) { + val3 += dblpfofs[bpldualpf2of]; + } + val3 ^= bplcon4_denise_xor_val; + dpix_val3 = denise_colors.acolors[val3]; + } + last_bpl_pix = pix3; + } + shiftbpl4_64(); + if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4_64(); + } + loaded_pix = getbpl4_64(); + loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { uae_u32 spix0 = denise_render_sprites2(pix0, sv0); if (spix0) { dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; } } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); dtbuf[h][0] = dpix_val0; if (sv2) { uae_u32 spix2 = denise_render_sprites2(pix2, sv2); if (spix2) { dpix_val2 = denise_colors.acolors[spix2]; + dpix_val3 = dpix_val2; } } + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); dtbuf[h][2] = dpix_val2; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -20251,44 +48245,24 @@ static void lts_aga_fm2_ham1_p8_ilores_dhires_spr(void) *debug_dma_dhpos_odd = denise_hcounter; #endif denise_hcounter_cmp++; - denise_hcounter_cmp &= 511; - denise_hcounter++; - denise_hcounter &= 511; - denise_hcounter_next++; - denise_hcounter_next &= 511; - } - denise_pixtotal++; - if (denise_pixtotal == 0) { - internal_pixel_start_cnt = internal_pixel_cnt; - } - denise_hcounter = denise_hcounter_new; - if (denise_accurate_mode) { - denise_hcounter_cmp = denise_hcounter_new; - } - denise_cck++; - } -} -static void lts_aga_fm2_ham1_p8_ilores_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb0_p8_ilores_dhires_spr(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb0_p8_ilores_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb1_p8_ilores_dhires_spr(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb1_p8_ilores_dhires_spr_filtered(void) -{ - lts_null(); + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm2_n0_p2_ihires_dhires(void) +static void lts_aga_fm2_dpf1_p4_ishres_dhires_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -20301,6 +48275,7 @@ static void lts_aga_fm2_n0_p2_ihires_dhires(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -20308,17 +48283,35 @@ static void lts_aga_fm2_n0_p2_ihires_dhires(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; } last_bpl_pix = pix0; } - shiftbpl2_64(); - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl2_64(); + shiftbpl4_64(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4e_64(); + } + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl4o_64(); + } + loaded_pix = getbpl4_64(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } } - loaded_pix = getbpl2_64(); loaded_pixs[0] = loaded_pix; + shiftbpl4_64(); internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { @@ -20326,19 +48319,48 @@ static void lts_aga_fm2_n0_p2_ihires_dhires(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; } last_bpl_pix = pix2; } - shiftbpl2_64(); - if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { - copybpl2_64(); + shiftbpl4_64(); + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4e_64(); + } + if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { + copybpl4o_64(); + } + loaded_pix = getbpl4_64(); + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } } - loaded_pix = getbpl2_64(); loaded_pixs[2] = loaded_pix; + shiftbpl4_64(); internal_pixel_cnt += 2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } dtbuf[h][2] = dpix_val2; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -20379,11 +48401,7 @@ static void lts_aga_fm2_n0_p2_ihires_dhires(void) denise_cck++; } } -static void lts_aga_fm2_n0_p2_ihires_dhires_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_n1_p2_ihires_dhires(void) +static void lts_aga_fm2_dpf1_p4_ishres_dhires_spr_filtered(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -20396,6 +48414,7 @@ static void lts_aga_fm2_n1_p2_ihires_dhires(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -20403,20 +48422,59 @@ static void lts_aga_fm2_n1_p2_ihires_dhires(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; } last_bpl_pix = pix0; } - shiftbpl2_64(); - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl2e_64(); + shiftbpl4_64(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4e_64(); } - if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { - copybpl2o_64(); + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl4o_64(); + } + loaded_pix = getbpl4_64(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } } - loaded_pix = getbpl2_64(); loaded_pixs[0] = loaded_pix; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + uae_u8 val1 = dpf_lookup[pix1]; + if (dpf_lookup_no[pix1]) { + val1 += dblpfofs[bpldualpf2of]; + } + val1 ^= bplcon4_denise_xor_val; + dpix_val1 = denise_colors.acolors[val1]; + } + last_bpl_pix = pix1; + } + shiftbpl4_64(); + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4e_64(); + } + if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { + copybpl4o_64(); + } + loaded_pix = getbpl4_64(); + loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { @@ -20424,22 +48482,76 @@ static void lts_aga_fm2_n1_p2_ihires_dhires(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; } last_bpl_pix = pix2; } - shiftbpl2_64(); - if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { - copybpl2e_64(); + shiftbpl4_64(); + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4e_64(); } - if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) { - copybpl2o_64(); + if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { + copybpl4o_64(); + } + loaded_pix = getbpl4_64(); + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } } - loaded_pix = getbpl2_64(); loaded_pixs[2] = loaded_pix; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + uae_u8 val3 = dpf_lookup[pix3]; + if (dpf_lookup_no[pix3]) { + val3 += dblpfofs[bpldualpf2of]; + } + val3 ^= bplcon4_denise_xor_val; + dpix_val3 = denise_colors.acolors[val3]; + } + last_bpl_pix = pix3; + } + shiftbpl4_64(); + if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4e_64(); + } + if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) { + copybpl4o_64(); + } + loaded_pix = getbpl4_64(); + loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + dpix_val3 = dpix_val2; + } + } + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); dtbuf[h][2] = dpix_val2; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -20480,11 +48592,7 @@ static void lts_aga_fm2_n1_p2_ihires_dhires(void) denise_cck++; } } -static void lts_aga_fm2_n1_p2_ihires_dhires_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_dpf0_p2_ihires_dhires(void) +static void lts_aga_fm2_ehb0_p4_ishres_dhires_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -20495,56 +48603,51 @@ 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; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; } - shiftbpl2_64(); - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl2_64(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } } - loaded_pix = getbpl2_64(); - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; - } - last_bpl_pix = pix2; } - shiftbpl2_64(); - if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { - copybpl2_64(); + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } } - loaded_pix = getbpl2_64(); - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } dtbuf[h][2] = dpix_val2; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -20585,11 +48688,7 @@ static void lts_aga_fm2_dpf0_p2_ihires_dhires(void) denise_cck++; } } -static void lts_aga_fm2_dpf0_p2_ihires_dhires_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_dpf1_p2_ihires_dhires(void) +static void lts_aga_fm2_ehb0_p4_ishres_dhires_spr_filtered(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -20600,62 +48699,65 @@ 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; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; } - shiftbpl2_64(); - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl2e_64(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } } - if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { - copybpl2o_64(); + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; } - loaded_pix = getbpl2_64(); - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; - } - last_bpl_pix = pix2; } - shiftbpl2_64(); - if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { - copybpl2e_64(); + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } } - if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) { - copybpl2o_64(); + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; } - loaded_pix = getbpl2_64(); - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + dpix_val3 = dpix_val2; + } + } + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); dtbuf[h][2] = dpix_val2; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -20696,59 +48798,7 @@ static void lts_aga_fm2_dpf1_p2_ihires_dhires(void) denise_cck++; } } -static void lts_aga_fm2_dpf1_p2_ihires_dhires_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb0_p2_ihires_dhires(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb0_p2_ihires_dhires_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb1_p2_ihires_dhires(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb1_p2_ihires_dhires_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_ham0_p2_ihires_dhires(void) -{ - lts_null(); -} -static void lts_aga_fm2_ham0_p2_ihires_dhires_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_ham1_p2_ihires_dhires(void) -{ - lts_null(); -} -static void lts_aga_fm2_ham1_p2_ihires_dhires_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb0_p2_ihires_dhires(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb0_p2_ihires_dhires_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb1_p2_ihires_dhires(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb1_p2_ihires_dhires_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_n0_p4_ihires_dhires(void) +static void lts_aga_fm2_ehb1_p4_ishres_dhires_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -20759,46 +48809,51 @@ 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; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix0; } - shiftbpl4_64(); - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl4_64(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } } - loaded_pix = getbpl4_64(); - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix2; } - shiftbpl4_64(); - if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { - copybpl4_64(); + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } } - loaded_pix = getbpl4_64(); - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } dtbuf[h][2] = dpix_val2; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -20839,11 +48894,7 @@ static void lts_aga_fm2_n0_p4_ihires_dhires(void) denise_cck++; } } -static void lts_aga_fm2_n0_p4_ihires_dhires_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_n1_p4_ihires_dhires(void) +static void lts_aga_fm2_ehb1_p4_ishres_dhires_spr_filtered(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -20854,52 +48905,65 @@ 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; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix0; } - shiftbpl4_64(); - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl4e_64(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } } - if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { - copybpl4o_64(); + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; } - loaded_pix = getbpl4_64(); - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 2; - uae_u8 pix2 = 0; - uae_u32 dpix_val2 = BLANK_COLOR; - if (!denise_blank_active) { - dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; } - shiftbpl4_64(); - if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { - copybpl4e_64(); + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } } - if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) { - copybpl4o_64(); + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; } - loaded_pix = getbpl4_64(); - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + dpix_val3 = dpix_val2; + } + } + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); dtbuf[h][2] = dpix_val2; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -20940,11 +49004,7 @@ static void lts_aga_fm2_n1_p4_ihires_dhires(void) denise_cck++; } } -static void lts_aga_fm2_n1_p4_ihires_dhires_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_dpf0_p4_ihires_dhires(void) +static void lts_aga_fm2_ham0_p4_ishres_dhires_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -20955,56 +49015,61 @@ 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; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; } - last_bpl_pix = pix0; } - shiftbpl4_64(); - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl4_64(); + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; } - loaded_pix = getbpl4_64(); - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; } - last_bpl_pix = pix2; } - shiftbpl4_64(); - if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { - copybpl4_64(); + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; } - loaded_pix = getbpl4_64(); - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } dtbuf[h][2] = dpix_val2; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -21045,11 +49110,7 @@ static void lts_aga_fm2_dpf0_p4_ihires_dhires(void) denise_cck++; } } -static void lts_aga_fm2_dpf0_p4_ihires_dhires_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_dpf1_p4_ihires_dhires(void) +static void lts_aga_fm2_ham0_p4_ishres_dhires_spr_filtered(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -21060,62 +49121,65 @@ 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; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; } - shiftbpl4_64(); - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl4e_64(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } } - if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { - copybpl4o_64(); + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; } - loaded_pix = getbpl4_64(); - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; - } - last_bpl_pix = pix2; } - shiftbpl4_64(); - if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { - copybpl4e_64(); + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } } - if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) { - copybpl4o_64(); + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; } - loaded_pix = getbpl4_64(); - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + dpix_val3 = dpix_val2; + } + } + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); dtbuf[h][2] = dpix_val2; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -21156,59 +49220,7 @@ static void lts_aga_fm2_dpf1_p4_ihires_dhires(void) denise_cck++; } } -static void lts_aga_fm2_dpf1_p4_ihires_dhires_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb0_p4_ihires_dhires(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb0_p4_ihires_dhires_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb1_p4_ihires_dhires(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb1_p4_ihires_dhires_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_ham0_p4_ihires_dhires(void) -{ - lts_null(); -} -static void lts_aga_fm2_ham0_p4_ihires_dhires_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_ham1_p4_ihires_dhires(void) -{ - lts_null(); -} -static void lts_aga_fm2_ham1_p4_ihires_dhires_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb0_p4_ihires_dhires(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb0_p4_ihires_dhires_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb1_p4_ihires_dhires(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb1_p4_ihires_dhires_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_n0_p6_ihires_dhires(void) +static void lts_aga_fm2_ham1_p4_ishres_dhires_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -21219,46 +49231,61 @@ 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; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; } - last_bpl_pix = pix0; } - shiftbpl6_64(); - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl6_64(); + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; } - loaded_pix = getbpl6_64(); - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; } - last_bpl_pix = pix2; } - shiftbpl6_64(); - if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { - copybpl6_64(); + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; } - loaded_pix = getbpl6_64(); - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } dtbuf[h][2] = dpix_val2; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -21299,11 +49326,7 @@ static void lts_aga_fm2_n0_p6_ihires_dhires(void) denise_cck++; } } -static void lts_aga_fm2_n0_p6_ihires_dhires_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_n1_p6_ihires_dhires(void) +static void lts_aga_fm2_ham1_p4_ishres_dhires_spr_filtered(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -21314,52 +49337,65 @@ 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; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix0; } - shiftbpl6_64(); - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl6e_64(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } } - if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { - copybpl6o_64(); + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; } - loaded_pix = getbpl6_64(); - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix2; } - shiftbpl6_64(); - if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { - copybpl6e_64(); + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } } - if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) { - copybpl6o_64(); + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; } - loaded_pix = getbpl6_64(); - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + dpix_val3 = dpix_val2; + } + } + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); dtbuf[h][2] = dpix_val2; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -21400,11 +49436,7 @@ static void lts_aga_fm2_n1_p6_ihires_dhires(void) denise_cck++; } } -static void lts_aga_fm2_n1_p6_ihires_dhires_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_dpf0_p6_ihires_dhires(void) +static void lts_aga_fm2_kehb0_p4_ishres_dhires_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -21415,56 +49447,51 @@ 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; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; } - shiftbpl6_64(); - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl6_64(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } } - loaded_pix = getbpl6_64(); - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; - } - last_bpl_pix = pix2; } - shiftbpl6_64(); - if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { - copybpl6_64(); + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } } - loaded_pix = getbpl6_64(); - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } dtbuf[h][2] = dpix_val2; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -21505,11 +49532,7 @@ static void lts_aga_fm2_dpf0_p6_ihires_dhires(void) denise_cck++; } } -static void lts_aga_fm2_dpf0_p6_ihires_dhires_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_dpf1_p6_ihires_dhires(void) +static void lts_aga_fm2_kehb0_p4_ishres_dhires_spr_filtered(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -21520,62 +49543,65 @@ 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; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; } - shiftbpl6_64(); - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl6e_64(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } } - if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { - copybpl6o_64(); + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; } - loaded_pix = getbpl6_64(); - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; - } - last_bpl_pix = pix2; } - shiftbpl6_64(); - if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { - copybpl6e_64(); + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } } - if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) { - copybpl6o_64(); + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; } - loaded_pix = getbpl6_64(); - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + dpix_val3 = dpix_val2; + } + } + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); dtbuf[h][2] = dpix_val2; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -21616,11 +49642,7 @@ static void lts_aga_fm2_dpf1_p6_ihires_dhires(void) denise_cck++; } } -static void lts_aga_fm2_dpf1_p6_ihires_dhires_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb0_p6_ihires_dhires(void) +static void lts_aga_fm2_kehb1_p4_ishres_dhires_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -21631,58 +49653,51 @@ 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; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - pix0 ^= bplcon4_denise_xor_val; - if (!(pix0 & 0x20)) { - dpix_val0 = denise_colors.acolors[pix0]; - } else { - uae_u32 v = (denise_colors.color_regs_aga[pix0 & 0x1f] >> 1) & 0x7f7f7f; - dpix_val0 = CONVERT_RGB(v); - } - } - last_bpl_pix = pix0; } - shiftbpl6_64(); - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl6_64(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } } - loaded_pix = getbpl6_64(); - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - pix2 ^= bplcon4_denise_xor_val; - if (!(pix2 & 0x20)) { - dpix_val2 = denise_colors.acolors[pix2]; - } else { - uae_u32 v = (denise_colors.color_regs_aga[pix2 & 0x1f] >> 1) & 0x7f7f7f; - dpix_val2 = CONVERT_RGB(v); - } - } - last_bpl_pix = pix2; } - shiftbpl6_64(); - if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { - copybpl6_64(); + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } } - loaded_pix = getbpl6_64(); - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } dtbuf[h][2] = dpix_val2; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -21723,11 +49738,7 @@ static void lts_aga_fm2_ehb0_p6_ihires_dhires(void) denise_cck++; } } -static void lts_aga_fm2_ehb0_p6_ihires_dhires_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb1_p6_ihires_dhires(void) +static void lts_aga_fm2_kehb1_p4_ishres_dhires_spr_filtered(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -21738,64 +49749,65 @@ 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; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - pix0 ^= bplcon4_denise_xor_val; - if (!(pix0 & 0x20)) { - dpix_val0 = denise_colors.acolors[pix0]; - } else { - uae_u32 v = (denise_colors.color_regs_aga[pix0 & 0x1f] >> 1) & 0x7f7f7f; - dpix_val0 = CONVERT_RGB(v); - } - } - last_bpl_pix = pix0; } - shiftbpl6_64(); - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl6e_64(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } } - if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { - copybpl6o_64(); + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; } - loaded_pix = getbpl6_64(); - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - pix2 ^= bplcon4_denise_xor_val; - if (!(pix2 & 0x20)) { - dpix_val2 = denise_colors.acolors[pix2]; - } else { - uae_u32 v = (denise_colors.color_regs_aga[pix2 & 0x1f] >> 1) & 0x7f7f7f; - dpix_val2 = CONVERT_RGB(v); - } - } - last_bpl_pix = pix2; } - shiftbpl6_64(); - if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { - copybpl6e_64(); + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } } - if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) { - copybpl6o_64(); + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; } - loaded_pix = getbpl6_64(); - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + dpix_val3 = dpix_val2; + } + } + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); dtbuf[h][2] = dpix_val2; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -21836,11 +49848,7 @@ static void lts_aga_fm2_ehb1_p6_ihires_dhires(void) denise_cck++; } } -static void lts_aga_fm2_ehb1_p6_ihires_dhires_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_ham0_p6_ihires_dhires(void) +static void lts_aga_fm2_n0_p6_ishres_dhires_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -21853,6 +49861,7 @@ static void lts_aga_fm2_ham0_p6_ihires_dhires(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -21860,17 +49869,27 @@ static void lts_aga_fm2_ham0_p6_ihires_dhires(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - dpix_val0 = decode_ham_pixel_aga(pix0); + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix0; } shiftbpl6_64(); - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { copybpl6_64(); } loaded_pix = getbpl6_64(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } loaded_pixs[0] = loaded_pix; + shiftbpl6_64(); internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { @@ -21878,19 +49897,40 @@ static void lts_aga_fm2_ham0_p6_ihires_dhires(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - dpix_val2 = decode_ham_pixel_aga(pix2); + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix2; } shiftbpl6_64(); - if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { copybpl6_64(); } loaded_pix = getbpl6_64(); + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } loaded_pixs[2] = loaded_pix; + shiftbpl6_64(); internal_pixel_cnt += 2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } dtbuf[h][2] = dpix_val2; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -21931,11 +49971,7 @@ static void lts_aga_fm2_ham0_p6_ihires_dhires(void) denise_cck++; } } -static void lts_aga_fm2_ham0_p6_ihires_dhires_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_ham1_p6_ihires_dhires(void) +static void lts_aga_fm2_n0_p6_ishres_dhires_spr_filtered(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -21948,6 +49984,7 @@ static void lts_aga_fm2_ham1_p6_ihires_dhires(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -21955,20 +49992,43 @@ static void lts_aga_fm2_ham1_p6_ihires_dhires(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - dpix_val0 = decode_ham_pixel_aga(pix0); + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix0; } shiftbpl6_64(); - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl6e_64(); - } - if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { - copybpl6o_64(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6_64(); } loaded_pix = getbpl6_64(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } loaded_pixs[0] = loaded_pix; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix1; + } + shiftbpl6_64(); + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6_64(); + } + loaded_pix = getbpl6_64(); + loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { @@ -21976,22 +50036,60 @@ static void lts_aga_fm2_ham1_p6_ihires_dhires(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - dpix_val2 = decode_ham_pixel_aga(pix2); + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix2; } shiftbpl6_64(); - if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { - copybpl6e_64(); - } - if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) { - copybpl6o_64(); + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6_64(); } loaded_pix = getbpl6_64(); + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } loaded_pixs[2] = loaded_pix; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix3; + } + shiftbpl6_64(); + if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6_64(); + } + loaded_pix = getbpl6_64(); + loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + dpix_val3 = dpix_val2; + } + } + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); dtbuf[h][2] = dpix_val2; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -22032,11 +50130,7 @@ static void lts_aga_fm2_ham1_p6_ihires_dhires(void) denise_cck++; } } -static void lts_aga_fm2_ham1_p6_ihires_dhires_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb0_p6_ihires_dhires(void) +static void lts_aga_fm2_n1_p6_ishres_dhires_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -22049,6 +50143,7 @@ static void lts_aga_fm2_kehb0_p6_ihires_dhires(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -22056,18 +50151,30 @@ static void lts_aga_fm2_kehb0_p6_ihires_dhires(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - pix0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[pix0 & 31]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix0; } shiftbpl6_64(); - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl6_64(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6e_64(); + } + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl6o_64(); } loaded_pix = getbpl6_64(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } loaded_pixs[0] = loaded_pix; + shiftbpl6_64(); internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { @@ -22075,20 +50182,43 @@ static void lts_aga_fm2_kehb0_p6_ihires_dhires(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - pix2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[pix2 & 31]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix2; } shiftbpl6_64(); - if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { - copybpl6_64(); + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6e_64(); + } + if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { + copybpl6o_64(); } loaded_pix = getbpl6_64(); + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } loaded_pixs[2] = loaded_pix; + shiftbpl6_64(); internal_pixel_cnt += 2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } dtbuf[h][2] = dpix_val2; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -22129,11 +50259,7 @@ static void lts_aga_fm2_kehb0_p6_ihires_dhires(void) denise_cck++; } } -static void lts_aga_fm2_kehb0_p6_ihires_dhires_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb1_p6_ihires_dhires(void) +static void lts_aga_fm2_n1_p6_ishres_dhires_spr_filtered(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -22146,6 +50272,7 @@ static void lts_aga_fm2_kehb1_p6_ihires_dhires(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -22153,21 +50280,49 @@ static void lts_aga_fm2_kehb1_p6_ihires_dhires(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - pix0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[pix0 & 31]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix0; } shiftbpl6_64(); - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { copybpl6e_64(); } - if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { copybpl6o_64(); } loaded_pix = getbpl6_64(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } loaded_pixs[0] = loaded_pix; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix1; + } + shiftbpl6_64(); + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6e_64(); + } + if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { + copybpl6o_64(); + } + loaded_pix = getbpl6_64(); + loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { @@ -22175,23 +50330,66 @@ static void lts_aga_fm2_kehb1_p6_ihires_dhires(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - pix2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[pix2 & 31]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix2; } shiftbpl6_64(); - if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { copybpl6e_64(); } - if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) { + if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { copybpl6o_64(); } loaded_pix = getbpl6_64(); + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } loaded_pixs[2] = loaded_pix; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix3; + } + shiftbpl6_64(); + if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6e_64(); + } + if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) { + copybpl6o_64(); + } + loaded_pix = getbpl6_64(); + loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + dpix_val3 = dpix_val2; + } + } + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); dtbuf[h][2] = dpix_val2; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -22232,11 +50430,7 @@ static void lts_aga_fm2_kehb1_p6_ihires_dhires(void) denise_cck++; } } -static void lts_aga_fm2_kehb1_p6_ihires_dhires_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_n0_p8_ihires_dhires(void) +static void lts_aga_fm2_dpf0_p6_ishres_dhires_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -22249,6 +50443,7 @@ static void lts_aga_fm2_n0_p8_ihires_dhires(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -22256,17 +50451,32 @@ static void lts_aga_fm2_n0_p8_ihires_dhires(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; } last_bpl_pix = pix0; } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); + shiftbpl6_64(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6_64(); + } + loaded_pix = getbpl6_64(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } } - loaded_pix = getbpl8_64(); loaded_pixs[0] = loaded_pix; + shiftbpl6_64(); internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { @@ -22274,19 +50484,45 @@ static void lts_aga_fm2_n0_p8_ihires_dhires(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; + } + last_bpl_pix = pix2; + } + shiftbpl6_64(); + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6_64(); + } + loaded_pix = getbpl6_64(); + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; } - last_bpl_pix = pix2; - } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); } - loaded_pix = getbpl8_64(); loaded_pixs[2] = loaded_pix; + shiftbpl6_64(); internal_pixel_cnt += 2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } dtbuf[h][2] = dpix_val2; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -22327,11 +50563,7 @@ static void lts_aga_fm2_n0_p8_ihires_dhires(void) denise_cck++; } } -static void lts_aga_fm2_n0_p8_ihires_dhires_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_n1_p8_ihires_dhires(void) +static void lts_aga_fm2_dpf0_p6_ishres_dhires_spr_filtered(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -22344,6 +50576,7 @@ static void lts_aga_fm2_n1_p8_ihires_dhires(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -22351,20 +50584,53 @@ static void lts_aga_fm2_n1_p8_ihires_dhires(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; } last_bpl_pix = pix0; } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8e_64(); + shiftbpl6_64(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6_64(); } - if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); + loaded_pix = getbpl6_64(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } } - loaded_pix = getbpl8_64(); loaded_pixs[0] = loaded_pix; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + uae_u8 val1 = dpf_lookup[pix1]; + if (dpf_lookup_no[pix1]) { + val1 += dblpfofs[bpldualpf2of]; + } + val1 ^= bplcon4_denise_xor_val; + dpix_val1 = denise_colors.acolors[val1]; + } + last_bpl_pix = pix1; + } + shiftbpl6_64(); + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6_64(); + } + loaded_pix = getbpl6_64(); + loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { @@ -22372,22 +50638,70 @@ static void lts_aga_fm2_n1_p8_ihires_dhires(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; } last_bpl_pix = pix2; } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8e_64(); + shiftbpl6_64(); + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6_64(); } - if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); + loaded_pix = getbpl6_64(); + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } } - loaded_pix = getbpl8_64(); loaded_pixs[2] = loaded_pix; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + uae_u8 val3 = dpf_lookup[pix3]; + if (dpf_lookup_no[pix3]) { + val3 += dblpfofs[bpldualpf2of]; + } + val3 ^= bplcon4_denise_xor_val; + dpix_val3 = denise_colors.acolors[val3]; + } + last_bpl_pix = pix3; + } + shiftbpl6_64(); + if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6_64(); + } + loaded_pix = getbpl6_64(); + loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + dpix_val3 = dpix_val2; + } + } + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); dtbuf[h][2] = dpix_val2; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -22428,11 +50742,7 @@ static void lts_aga_fm2_n1_p8_ihires_dhires(void) denise_cck++; } } -static void lts_aga_fm2_n1_p8_ihires_dhires_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_dpf0_p8_ihires_dhires(void) +static void lts_aga_fm2_dpf1_p6_ishres_dhires_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -22445,6 +50755,7 @@ static void lts_aga_fm2_dpf0_p8_ihires_dhires(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -22461,13 +50772,26 @@ static void lts_aga_fm2_dpf0_p8_ihires_dhires(void) } last_bpl_pix = pix0; } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); + shiftbpl6_64(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6e_64(); + } + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl6o_64(); + } + loaded_pix = getbpl6_64(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } } - loaded_pix = getbpl8_64(); loaded_pixs[0] = loaded_pix; + shiftbpl6_64(); internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { @@ -22484,15 +50808,39 @@ static void lts_aga_fm2_dpf0_p8_ihires_dhires(void) } last_bpl_pix = pix2; } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); + shiftbpl6_64(); + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6e_64(); + } + if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { + copybpl6o_64(); + } + loaded_pix = getbpl6_64(); + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } } - loaded_pix = getbpl8_64(); loaded_pixs[2] = loaded_pix; + shiftbpl6_64(); internal_pixel_cnt += 2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } dtbuf[h][2] = dpix_val2; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -22533,11 +50881,7 @@ static void lts_aga_fm2_dpf0_p8_ihires_dhires(void) denise_cck++; } } -static void lts_aga_fm2_dpf0_p8_ihires_dhires_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_dpf1_p8_ihires_dhires(void) +static void lts_aga_fm2_dpf1_p6_ishres_dhires_spr_filtered(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -22550,6 +50894,7 @@ static void lts_aga_fm2_dpf1_p8_ihires_dhires(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -22566,16 +50911,50 @@ static void lts_aga_fm2_dpf1_p8_ihires_dhires(void) } last_bpl_pix = pix0; } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8e_64(); + shiftbpl6_64(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6e_64(); } - if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl6o_64(); + } + loaded_pix = getbpl6_64(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } } - loaded_pix = getbpl8_64(); loaded_pixs[0] = loaded_pix; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + uae_u8 val1 = dpf_lookup[pix1]; + if (dpf_lookup_no[pix1]) { + val1 += dblpfofs[bpldualpf2of]; + } + val1 ^= bplcon4_denise_xor_val; + dpix_val1 = denise_colors.acolors[val1]; + } + last_bpl_pix = pix1; + } + shiftbpl6_64(); + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6e_64(); + } + if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { + copybpl6o_64(); + } + loaded_pix = getbpl6_64(); + loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { @@ -22592,18 +50971,67 @@ static void lts_aga_fm2_dpf1_p8_ihires_dhires(void) } last_bpl_pix = pix2; } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8e_64(); + shiftbpl6_64(); + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6e_64(); } - if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); + if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { + copybpl6o_64(); + } + loaded_pix = getbpl6_64(); + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } } - loaded_pix = getbpl8_64(); loaded_pixs[2] = loaded_pix; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + uae_u8 val3 = dpf_lookup[pix3]; + if (dpf_lookup_no[pix3]) { + val3 += dblpfofs[bpldualpf2of]; + } + val3 ^= bplcon4_denise_xor_val; + dpix_val3 = denise_colors.acolors[val3]; + } + last_bpl_pix = pix3; + } + shiftbpl6_64(); + if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6e_64(); + } + if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) { + copybpl6o_64(); + } + loaded_pix = getbpl6_64(); + loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + dpix_val3 = dpix_val2; + } + } + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); dtbuf[h][2] = dpix_val2; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -22644,27 +51072,7 @@ static void lts_aga_fm2_dpf1_p8_ihires_dhires(void) denise_cck++; } } -static void lts_aga_fm2_dpf1_p8_ihires_dhires_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb0_p8_ihires_dhires(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb0_p8_ihires_dhires_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb1_p8_ihires_dhires(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb1_p8_ihires_dhires_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_ham0_p8_ihires_dhires(void) +static void lts_aga_fm2_ehb0_p6_ishres_dhires_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -22677,6 +51085,7 @@ static void lts_aga_fm2_ham0_p8_ihires_dhires(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -22684,17 +51093,33 @@ static void lts_aga_fm2_ham0_p8_ihires_dhires(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - dpix_val0 = decode_ham_pixel_aga(pix0); + pix0 ^= bplcon4_denise_xor_val; + if (!(pix0 & 0x20)) { + dpix_val0 = denise_colors.acolors[pix0]; + } else { + uae_u32 v = (denise_colors.color_regs_aga[pix0 & 0x1f] >> 1) & 0x7f7f7f; + dpix_val0 = CONVERT_RGB(v); + } } last_bpl_pix = pix0; } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); + shiftbpl6_64(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6_64(); + } + loaded_pix = getbpl6_64(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } } - loaded_pix = getbpl8_64(); loaded_pixs[0] = loaded_pix; + shiftbpl6_64(); internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { @@ -22702,19 +51127,46 @@ static void lts_aga_fm2_ham0_p8_ihires_dhires(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - dpix_val2 = decode_ham_pixel_aga(pix2); + pix2 ^= bplcon4_denise_xor_val; + if (!(pix2 & 0x20)) { + dpix_val2 = denise_colors.acolors[pix2]; + } else { + uae_u32 v = (denise_colors.color_regs_aga[pix2 & 0x1f] >> 1) & 0x7f7f7f; + dpix_val2 = CONVERT_RGB(v); + } } last_bpl_pix = pix2; } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); + shiftbpl6_64(); + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6_64(); + } + loaded_pix = getbpl6_64(); + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } } - loaded_pix = getbpl8_64(); loaded_pixs[2] = loaded_pix; + shiftbpl6_64(); internal_pixel_cnt += 2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } dtbuf[h][2] = dpix_val2; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -22755,11 +51207,7 @@ static void lts_aga_fm2_ham0_p8_ihires_dhires(void) denise_cck++; } } -static void lts_aga_fm2_ham0_p8_ihires_dhires_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_ham1_p8_ihires_dhires(void) +static void lts_aga_fm2_ehb0_p6_ishres_dhires_spr_filtered(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -22772,6 +51220,7 @@ static void lts_aga_fm2_ham1_p8_ihires_dhires(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -22779,20 +51228,55 @@ static void lts_aga_fm2_ham1_p8_ihires_dhires(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - dpix_val0 = decode_ham_pixel_aga(pix0); + pix0 ^= bplcon4_denise_xor_val; + if (!(pix0 & 0x20)) { + dpix_val0 = denise_colors.acolors[pix0]; + } else { + uae_u32 v = (denise_colors.color_regs_aga[pix0 & 0x1f] >> 1) & 0x7f7f7f; + dpix_val0 = CONVERT_RGB(v); + } } last_bpl_pix = pix0; } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8e_64(); + shiftbpl6_64(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6_64(); } - if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); + loaded_pix = getbpl6_64(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } } - loaded_pix = getbpl8_64(); loaded_pixs[0] = loaded_pix; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + pix1 ^= bplcon4_denise_xor_val; + if (!(pix1 & 0x20)) { + dpix_val1 = denise_colors.acolors[pix1]; + } else { + uae_u32 v = (denise_colors.color_regs_aga[pix1 & 0x1f] >> 1) & 0x7f7f7f; + dpix_val1 = CONVERT_RGB(v); + } + } + last_bpl_pix = pix1; + } + shiftbpl6_64(); + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6_64(); + } + loaded_pix = getbpl6_64(); + loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { @@ -22800,22 +51284,72 @@ static void lts_aga_fm2_ham1_p8_ihires_dhires(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - dpix_val2 = decode_ham_pixel_aga(pix2); + pix2 ^= bplcon4_denise_xor_val; + if (!(pix2 & 0x20)) { + dpix_val2 = denise_colors.acolors[pix2]; + } else { + uae_u32 v = (denise_colors.color_regs_aga[pix2 & 0x1f] >> 1) & 0x7f7f7f; + dpix_val2 = CONVERT_RGB(v); + } } last_bpl_pix = pix2; } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8e_64(); + shiftbpl6_64(); + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6_64(); } - if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); + loaded_pix = getbpl6_64(); + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } } - loaded_pix = getbpl8_64(); loaded_pixs[2] = loaded_pix; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + pix3 ^= bplcon4_denise_xor_val; + if (!(pix3 & 0x20)) { + dpix_val3 = denise_colors.acolors[pix3]; + } else { + uae_u32 v = (denise_colors.color_regs_aga[pix3 & 0x1f] >> 1) & 0x7f7f7f; + dpix_val3 = CONVERT_RGB(v); + } + } + last_bpl_pix = pix3; + } + shiftbpl6_64(); + if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6_64(); + } + loaded_pix = getbpl6_64(); + loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + dpix_val3 = dpix_val2; + } + } + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); dtbuf[h][2] = dpix_val2; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -22856,27 +51390,7 @@ static void lts_aga_fm2_ham1_p8_ihires_dhires(void) denise_cck++; } } -static void lts_aga_fm2_ham1_p8_ihires_dhires_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb0_p8_ihires_dhires(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb0_p8_ihires_dhires_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb1_p8_ihires_dhires(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb1_p8_ihires_dhires_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_n0_p2_ihires_dhires_spr(void) +static void lts_aga_fm2_ehb1_p6_ishres_dhires_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -22897,15 +51411,24 @@ static void lts_aga_fm2_n0_p2_ihires_dhires_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + pix0 ^= bplcon4_denise_xor_val; + if (!(pix0 & 0x20)) { + dpix_val0 = denise_colors.acolors[pix0]; + } else { + uae_u32 v = (denise_colors.color_regs_aga[pix0 & 0x1f] >> 1) & 0x7f7f7f; + dpix_val0 = CONVERT_RGB(v); + } } last_bpl_pix = pix0; } - shiftbpl2_64(); - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl2_64(); + shiftbpl6_64(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6e_64(); } - loaded_pix = getbpl2_64(); + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl6o_64(); + } + loaded_pix = getbpl6_64(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -22915,6 +51438,7 @@ static void lts_aga_fm2_n0_p2_ihires_dhires_spr(void) } } loaded_pixs[0] = loaded_pix; + shiftbpl6_64(); internal_pixel_cnt += 2; matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; @@ -22924,15 +51448,24 @@ static void lts_aga_fm2_n0_p2_ihires_dhires_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + pix2 ^= bplcon4_denise_xor_val; + if (!(pix2 & 0x20)) { + dpix_val2 = denise_colors.acolors[pix2]; + } else { + uae_u32 v = (denise_colors.color_regs_aga[pix2 & 0x1f] >> 1) & 0x7f7f7f; + dpix_val2 = CONVERT_RGB(v); + } } last_bpl_pix = pix2; } - shiftbpl2_64(); - if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { - copybpl2_64(); + shiftbpl6_64(); + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6e_64(); } - loaded_pix = getbpl2_64(); + if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { + copybpl6o_64(); + } + loaded_pix = getbpl6_64(); uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -22942,6 +51475,7 @@ static void lts_aga_fm2_n0_p2_ihires_dhires_spr(void) } } loaded_pixs[2] = loaded_pix; + shiftbpl6_64(); internal_pixel_cnt += 2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { @@ -22997,11 +51531,7 @@ static void lts_aga_fm2_n0_p2_ihires_dhires_spr(void) denise_cck++; } } -static void lts_aga_fm2_n0_p2_ihires_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_n1_p2_ihires_dhires_spr(void) +static void lts_aga_fm2_ehb1_p6_ishres_dhires_spr_filtered(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -23022,18 +51552,24 @@ static void lts_aga_fm2_n1_p2_ihires_dhires_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + pix0 ^= bplcon4_denise_xor_val; + if (!(pix0 & 0x20)) { + dpix_val0 = denise_colors.acolors[pix0]; + } else { + uae_u32 v = (denise_colors.color_regs_aga[pix0 & 0x1f] >> 1) & 0x7f7f7f; + dpix_val0 = CONVERT_RGB(v); + } } last_bpl_pix = pix0; } - shiftbpl2_64(); - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl2e_64(); + shiftbpl6_64(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6e_64(); } - if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { - copybpl2o_64(); + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl6o_64(); } - loaded_pix = getbpl2_64(); + loaded_pix = getbpl6_64(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -23043,6 +51579,32 @@ static void lts_aga_fm2_n1_p2_ihires_dhires_spr(void) } } loaded_pixs[0] = loaded_pix; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + pix1 ^= bplcon4_denise_xor_val; + if (!(pix1 & 0x20)) { + dpix_val1 = denise_colors.acolors[pix1]; + } else { + uae_u32 v = (denise_colors.color_regs_aga[pix1 & 0x1f] >> 1) & 0x7f7f7f; + dpix_val1 = CONVERT_RGB(v); + } + } + last_bpl_pix = pix1; + } + shiftbpl6_64(); + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6e_64(); + } + if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { + copybpl6o_64(); + } + loaded_pix = getbpl6_64(); + loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 2; matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; @@ -23052,18 +51614,24 @@ static void lts_aga_fm2_n1_p2_ihires_dhires_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + pix2 ^= bplcon4_denise_xor_val; + if (!(pix2 & 0x20)) { + dpix_val2 = denise_colors.acolors[pix2]; + } else { + uae_u32 v = (denise_colors.color_regs_aga[pix2 & 0x1f] >> 1) & 0x7f7f7f; + dpix_val2 = CONVERT_RGB(v); + } } last_bpl_pix = pix2; } - shiftbpl2_64(); - if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { - copybpl2e_64(); + shiftbpl6_64(); + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6e_64(); } - if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) { - copybpl2o_64(); + if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { + copybpl6o_64(); } - loaded_pix = getbpl2_64(); + loaded_pix = getbpl6_64(); uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -23073,21 +51641,51 @@ static void lts_aga_fm2_n1_p2_ihires_dhires_spr(void) } } loaded_pixs[2] = loaded_pix; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + pix3 ^= bplcon4_denise_xor_val; + if (!(pix3 & 0x20)) { + dpix_val3 = denise_colors.acolors[pix3]; + } else { + uae_u32 v = (denise_colors.color_regs_aga[pix3 & 0x1f] >> 1) & 0x7f7f7f; + dpix_val3 = CONVERT_RGB(v); + } + } + last_bpl_pix = pix3; + } + shiftbpl6_64(); + if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6e_64(); + } + if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) { + copybpl6o_64(); + } + loaded_pix = getbpl6_64(); + loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { uae_u32 spix0 = denise_render_sprites2(pix0, sv0); if (spix0) { dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; } } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); dtbuf[h][0] = dpix_val0; if (sv2) { uae_u32 spix2 = denise_render_sprites2(pix2, sv2); if (spix2) { dpix_val2 = denise_colors.acolors[spix2]; + dpix_val3 = dpix_val2; } } + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); dtbuf[h][2] = dpix_val2; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -23128,11 +51726,7 @@ static void lts_aga_fm2_n1_p2_ihires_dhires_spr(void) denise_cck++; } } -static void lts_aga_fm2_n1_p2_ihires_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_dpf0_p2_ihires_dhires_spr(void) +static void lts_aga_fm2_ham0_p6_ishres_dhires_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -23153,20 +51747,15 @@ static void lts_aga_fm2_dpf0_p2_ihires_dhires_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; + dpix_val0 = decode_ham_pixel_aga(pix0); } last_bpl_pix = pix0; } - shiftbpl2_64(); - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl2_64(); + shiftbpl6_64(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6_64(); } - loaded_pix = getbpl2_64(); + loaded_pix = getbpl6_64(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -23176,6 +51765,22 @@ static void lts_aga_fm2_dpf0_p2_ihires_dhires_spr(void) } } loaded_pixs[0] = loaded_pix; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + decode_ham_pixel_aga(pix1); + } + last_bpl_pix = pix1; + } + shiftbpl6_64(); + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6_64(); + } + loaded_pix = getbpl6_64(); + loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 2; matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; @@ -23185,20 +51790,15 @@ static void lts_aga_fm2_dpf0_p2_ihires_dhires_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; + dpix_val2 = decode_ham_pixel_aga(pix2); } last_bpl_pix = pix2; } - shiftbpl2_64(); - if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { - copybpl2_64(); + shiftbpl6_64(); + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6_64(); } - loaded_pix = getbpl2_64(); + loaded_pix = getbpl6_64(); uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -23208,6 +51808,22 @@ static void lts_aga_fm2_dpf0_p2_ihires_dhires_spr(void) } } loaded_pixs[2] = loaded_pix; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + decode_ham_pixel_aga(pix3); + } + last_bpl_pix = pix3; + } + shiftbpl6_64(); + if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6_64(); + } + loaded_pix = getbpl6_64(); + loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { @@ -23263,11 +51879,7 @@ static void lts_aga_fm2_dpf0_p2_ihires_dhires_spr(void) denise_cck++; } } -static void lts_aga_fm2_dpf0_p2_ihires_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_dpf1_p2_ihires_dhires_spr(void) +static void lts_aga_fm2_ham0_p6_ishres_dhires_spr_filtered(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -23288,23 +51900,15 @@ static void lts_aga_fm2_dpf1_p2_ihires_dhires_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; + dpix_val0 = decode_ham_pixel_aga(pix0); } last_bpl_pix = pix0; } - shiftbpl2_64(); - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl2e_64(); - } - if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { - copybpl2o_64(); + shiftbpl6_64(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6_64(); } - loaded_pix = getbpl2_64(); + loaded_pix = getbpl6_64(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -23314,6 +51918,23 @@ static void lts_aga_fm2_dpf1_p2_ihires_dhires_spr(void) } } loaded_pixs[0] = loaded_pix; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + dpix_val1 = decode_ham_pixel_aga(pix1); + } + last_bpl_pix = pix1; + } + shiftbpl6_64(); + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6_64(); + } + loaded_pix = getbpl6_64(); + loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 2; matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; @@ -23323,23 +51944,15 @@ static void lts_aga_fm2_dpf1_p2_ihires_dhires_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; + dpix_val2 = decode_ham_pixel_aga(pix2); } last_bpl_pix = pix2; } - shiftbpl2_64(); - if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { - copybpl2e_64(); - } - if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) { - copybpl2o_64(); + shiftbpl6_64(); + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6_64(); } - loaded_pix = getbpl2_64(); + loaded_pix = getbpl6_64(); uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -23349,21 +51962,42 @@ static void lts_aga_fm2_dpf1_p2_ihires_dhires_spr(void) } } loaded_pixs[2] = loaded_pix; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + dpix_val3 = decode_ham_pixel_aga(pix3); + } + last_bpl_pix = pix3; + } + shiftbpl6_64(); + if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6_64(); + } + loaded_pix = getbpl6_64(); + loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { uae_u32 spix0 = denise_render_sprites2(pix0, sv0); if (spix0) { dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; } } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); dtbuf[h][0] = dpix_val0; if (sv2) { uae_u32 spix2 = denise_render_sprites2(pix2, sv2); if (spix2) { dpix_val2 = denise_colors.acolors[spix2]; + dpix_val3 = dpix_val2; } } + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); dtbuf[h][2] = dpix_val2; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -23404,59 +52038,7 @@ static void lts_aga_fm2_dpf1_p2_ihires_dhires_spr(void) denise_cck++; } } -static void lts_aga_fm2_dpf1_p2_ihires_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb0_p2_ihires_dhires_spr(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb0_p2_ihires_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb1_p2_ihires_dhires_spr(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb1_p2_ihires_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_ham0_p2_ihires_dhires_spr(void) -{ - lts_null(); -} -static void lts_aga_fm2_ham0_p2_ihires_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_ham1_p2_ihires_dhires_spr(void) -{ - lts_null(); -} -static void lts_aga_fm2_ham1_p2_ihires_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb0_p2_ihires_dhires_spr(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb0_p2_ihires_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb1_p2_ihires_dhires_spr(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb1_p2_ihires_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_n0_p4_ihires_dhires_spr(void) +static void lts_aga_fm2_ham1_p6_ishres_dhires_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -23477,15 +52059,18 @@ static void lts_aga_fm2_n0_p4_ihires_dhires_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + dpix_val0 = decode_ham_pixel_aga(pix0); } last_bpl_pix = pix0; } - shiftbpl4_64(); - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl4_64(); + shiftbpl6_64(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6e_64(); } - loaded_pix = getbpl4_64(); + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl6o_64(); + } + loaded_pix = getbpl6_64(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -23495,6 +52080,25 @@ static void lts_aga_fm2_n0_p4_ihires_dhires_spr(void) } } loaded_pixs[0] = loaded_pix; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + decode_ham_pixel_aga(pix1); + } + last_bpl_pix = pix1; + } + shiftbpl6_64(); + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6e_64(); + } + if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { + copybpl6o_64(); + } + loaded_pix = getbpl6_64(); + loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 2; matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; @@ -23504,15 +52108,18 @@ static void lts_aga_fm2_n0_p4_ihires_dhires_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + dpix_val2 = decode_ham_pixel_aga(pix2); } last_bpl_pix = pix2; } - shiftbpl4_64(); - if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { - copybpl4_64(); + shiftbpl6_64(); + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6e_64(); } - loaded_pix = getbpl4_64(); + if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { + copybpl6o_64(); + } + loaded_pix = getbpl6_64(); uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -23522,6 +52129,25 @@ static void lts_aga_fm2_n0_p4_ihires_dhires_spr(void) } } loaded_pixs[2] = loaded_pix; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + decode_ham_pixel_aga(pix3); + } + last_bpl_pix = pix3; + } + shiftbpl6_64(); + if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6e_64(); + } + if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) { + copybpl6o_64(); + } + loaded_pix = getbpl6_64(); + loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { @@ -23577,11 +52203,7 @@ static void lts_aga_fm2_n0_p4_ihires_dhires_spr(void) denise_cck++; } } -static void lts_aga_fm2_n0_p4_ihires_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_n1_p4_ihires_dhires_spr(void) +static void lts_aga_fm2_ham1_p6_ishres_dhires_spr_filtered(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -23602,18 +52224,18 @@ static void lts_aga_fm2_n1_p4_ihires_dhires_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + dpix_val0 = decode_ham_pixel_aga(pix0); } last_bpl_pix = pix0; } - shiftbpl4_64(); - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl4e_64(); + shiftbpl6_64(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6e_64(); } - if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { - copybpl4o_64(); + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl6o_64(); } - loaded_pix = getbpl4_64(); + loaded_pix = getbpl6_64(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -23623,6 +52245,26 @@ static void lts_aga_fm2_n1_p4_ihires_dhires_spr(void) } } loaded_pixs[0] = loaded_pix; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + dpix_val1 = decode_ham_pixel_aga(pix1); + } + last_bpl_pix = pix1; + } + shiftbpl6_64(); + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6e_64(); + } + if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { + copybpl6o_64(); + } + loaded_pix = getbpl6_64(); + loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 2; matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; @@ -23632,18 +52274,18 @@ static void lts_aga_fm2_n1_p4_ihires_dhires_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + dpix_val2 = decode_ham_pixel_aga(pix2); } last_bpl_pix = pix2; } - shiftbpl4_64(); - if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { - copybpl4e_64(); + shiftbpl6_64(); + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6e_64(); } - if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) { - copybpl4o_64(); + if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { + copybpl6o_64(); } - loaded_pix = getbpl4_64(); + loaded_pix = getbpl6_64(); uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -23653,21 +52295,45 @@ static void lts_aga_fm2_n1_p4_ihires_dhires_spr(void) } } loaded_pixs[2] = loaded_pix; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + dpix_val3 = decode_ham_pixel_aga(pix3); + } + last_bpl_pix = pix3; + } + shiftbpl6_64(); + if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6e_64(); + } + if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) { + copybpl6o_64(); + } + loaded_pix = getbpl6_64(); + loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { uae_u32 spix0 = denise_render_sprites2(pix0, sv0); if (spix0) { dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; } } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); dtbuf[h][0] = dpix_val0; if (sv2) { uae_u32 spix2 = denise_render_sprites2(pix2, sv2); if (spix2) { dpix_val2 = denise_colors.acolors[spix2]; + dpix_val3 = dpix_val2; } } + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); dtbuf[h][2] = dpix_val2; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -23708,11 +52374,7 @@ static void lts_aga_fm2_n1_p4_ihires_dhires_spr(void) denise_cck++; } } -static void lts_aga_fm2_n1_p4_ihires_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_dpf0_p4_ihires_dhires_spr(void) +static void lts_aga_fm2_kehb0_p6_ishres_dhires_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -23733,20 +52395,16 @@ static void lts_aga_fm2_dpf0_p4_ihires_dhires_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; + pix0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[pix0 & 31]; } last_bpl_pix = pix0; } - shiftbpl4_64(); - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl4_64(); + shiftbpl6_64(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6_64(); } - loaded_pix = getbpl4_64(); + loaded_pix = getbpl6_64(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -23756,6 +52414,7 @@ static void lts_aga_fm2_dpf0_p4_ihires_dhires_spr(void) } } loaded_pixs[0] = loaded_pix; + shiftbpl6_64(); internal_pixel_cnt += 2; matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; @@ -23765,20 +52424,16 @@ static void lts_aga_fm2_dpf0_p4_ihires_dhires_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; + pix2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[pix2 & 31]; } last_bpl_pix = pix2; } - shiftbpl4_64(); - if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { - copybpl4_64(); + shiftbpl6_64(); + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6_64(); } - loaded_pix = getbpl4_64(); + loaded_pix = getbpl6_64(); uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -23788,6 +52443,7 @@ static void lts_aga_fm2_dpf0_p4_ihires_dhires_spr(void) } } loaded_pixs[2] = loaded_pix; + shiftbpl6_64(); internal_pixel_cnt += 2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { @@ -23843,11 +52499,7 @@ static void lts_aga_fm2_dpf0_p4_ihires_dhires_spr(void) denise_cck++; } } -static void lts_aga_fm2_dpf0_p4_ihires_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_dpf1_p4_ihires_dhires_spr(void) +static void lts_aga_fm2_kehb0_p6_ishres_dhires_spr_filtered(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -23868,23 +52520,16 @@ static void lts_aga_fm2_dpf1_p4_ihires_dhires_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; + pix0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[pix0 & 31]; } last_bpl_pix = pix0; } - shiftbpl4_64(); - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl4e_64(); - } - if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { - copybpl4o_64(); + shiftbpl6_64(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6_64(); } - loaded_pix = getbpl4_64(); + loaded_pix = getbpl6_64(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -23894,6 +52539,24 @@ static void lts_aga_fm2_dpf1_p4_ihires_dhires_spr(void) } } loaded_pixs[0] = loaded_pix; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + pix1 ^= bplcon4_denise_xor_val; + dpix_val1 = denise_colors.acolors[pix1 & 31]; + } + last_bpl_pix = pix1; + } + shiftbpl6_64(); + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6_64(); + } + loaded_pix = getbpl6_64(); + loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 2; matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; @@ -23903,23 +52566,16 @@ static void lts_aga_fm2_dpf1_p4_ihires_dhires_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; + pix2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[pix2 & 31]; } last_bpl_pix = pix2; } - shiftbpl4_64(); - if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { - copybpl4e_64(); - } - if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) { - copybpl4o_64(); + shiftbpl6_64(); + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6_64(); } - loaded_pix = getbpl4_64(); + loaded_pix = getbpl6_64(); uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -23929,21 +52585,43 @@ static void lts_aga_fm2_dpf1_p4_ihires_dhires_spr(void) } } loaded_pixs[2] = loaded_pix; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + pix3 ^= bplcon4_denise_xor_val; + dpix_val3 = denise_colors.acolors[pix3 & 31]; + } + last_bpl_pix = pix3; + } + shiftbpl6_64(); + if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6_64(); + } + loaded_pix = getbpl6_64(); + loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { uae_u32 spix0 = denise_render_sprites2(pix0, sv0); if (spix0) { dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; } } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); dtbuf[h][0] = dpix_val0; if (sv2) { uae_u32 spix2 = denise_render_sprites2(pix2, sv2); if (spix2) { dpix_val2 = denise_colors.acolors[spix2]; + dpix_val3 = dpix_val2; } } + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); dtbuf[h][2] = dpix_val2; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -23984,59 +52662,7 @@ static void lts_aga_fm2_dpf1_p4_ihires_dhires_spr(void) denise_cck++; } } -static void lts_aga_fm2_dpf1_p4_ihires_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb0_p4_ihires_dhires_spr(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb0_p4_ihires_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb1_p4_ihires_dhires_spr(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb1_p4_ihires_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_ham0_p4_ihires_dhires_spr(void) -{ - lts_null(); -} -static void lts_aga_fm2_ham0_p4_ihires_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_ham1_p4_ihires_dhires_spr(void) -{ - lts_null(); -} -static void lts_aga_fm2_ham1_p4_ihires_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb0_p4_ihires_dhires_spr(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb0_p4_ihires_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb1_p4_ihires_dhires_spr(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb1_p4_ihires_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_n0_p6_ihires_dhires_spr(void) +static void lts_aga_fm2_kehb1_p6_ishres_dhires_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -24057,13 +52683,17 @@ static void lts_aga_fm2_n0_p6_ihires_dhires_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + pix0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[pix0 & 31]; } last_bpl_pix = pix0; } shiftbpl6_64(); - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl6_64(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6e_64(); + } + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl6o_64(); } loaded_pix = getbpl6_64(); uae_u32 sv0 = 0; @@ -24075,6 +52705,7 @@ static void lts_aga_fm2_n0_p6_ihires_dhires_spr(void) } } loaded_pixs[0] = loaded_pix; + shiftbpl6_64(); internal_pixel_cnt += 2; matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; @@ -24084,13 +52715,17 @@ static void lts_aga_fm2_n0_p6_ihires_dhires_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + pix2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[pix2 & 31]; } last_bpl_pix = pix2; } shiftbpl6_64(); - if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { - copybpl6_64(); + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6e_64(); + } + if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { + copybpl6o_64(); } loaded_pix = getbpl6_64(); uae_u32 sv2 = 0; @@ -24102,6 +52737,7 @@ static void lts_aga_fm2_n0_p6_ihires_dhires_spr(void) } } loaded_pixs[2] = loaded_pix; + shiftbpl6_64(); internal_pixel_cnt += 2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { @@ -24157,11 +52793,7 @@ static void lts_aga_fm2_n0_p6_ihires_dhires_spr(void) denise_cck++; } } -static void lts_aga_fm2_n0_p6_ihires_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_n1_p6_ihires_dhires_spr(void) +static void lts_aga_fm2_kehb1_p6_ishres_dhires_spr_filtered(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -24182,15 +52814,16 @@ static void lts_aga_fm2_n1_p6_ihires_dhires_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + pix0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[pix0 & 31]; } last_bpl_pix = pix0; } shiftbpl6_64(); - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { copybpl6e_64(); } - if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { copybpl6o_64(); } loaded_pix = getbpl6_64(); @@ -24203,6 +52836,27 @@ static void lts_aga_fm2_n1_p6_ihires_dhires_spr(void) } } loaded_pixs[0] = loaded_pix; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + pix1 ^= bplcon4_denise_xor_val; + dpix_val1 = denise_colors.acolors[pix1 & 31]; + } + last_bpl_pix = pix1; + } + shiftbpl6_64(); + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6e_64(); + } + if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { + copybpl6o_64(); + } + loaded_pix = getbpl6_64(); + loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 2; matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; @@ -24212,15 +52866,16 @@ static void lts_aga_fm2_n1_p6_ihires_dhires_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + pix2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[pix2 & 31]; } last_bpl_pix = pix2; } shiftbpl6_64(); - if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { copybpl6e_64(); } - if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) { + if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { copybpl6o_64(); } loaded_pix = getbpl6_64(); @@ -24233,21 +52888,46 @@ static void lts_aga_fm2_n1_p6_ihires_dhires_spr(void) } } loaded_pixs[2] = loaded_pix; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + pix3 ^= bplcon4_denise_xor_val; + dpix_val3 = denise_colors.acolors[pix3 & 31]; + } + last_bpl_pix = pix3; + } + shiftbpl6_64(); + if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6e_64(); + } + if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) { + copybpl6o_64(); + } + loaded_pix = getbpl6_64(); + loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { uae_u32 spix0 = denise_render_sprites2(pix0, sv0); if (spix0) { dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; } } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); dtbuf[h][0] = dpix_val0; if (sv2) { uae_u32 spix2 = denise_render_sprites2(pix2, sv2); if (spix2) { dpix_val2 = denise_colors.acolors[spix2]; + dpix_val3 = dpix_val2; } } + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); dtbuf[h][2] = dpix_val2; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -24288,11 +52968,7 @@ static void lts_aga_fm2_n1_p6_ihires_dhires_spr(void) denise_cck++; } } -static void lts_aga_fm2_n1_p6_ihires_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_dpf0_p6_ihires_dhires_spr(void) +static void lts_aga_fm2_n0_p8_ishres_dhires_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -24313,20 +52989,15 @@ static void lts_aga_fm2_dpf0_p6_ihires_dhires_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix0; } - shiftbpl6_64(); - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl6_64(); + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8_64(); } - loaded_pix = getbpl6_64(); + loaded_pix = getbpl8_64(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -24336,6 +53007,7 @@ static void lts_aga_fm2_dpf0_p6_ihires_dhires_spr(void) } } loaded_pixs[0] = loaded_pix; + shiftbpl8_64(); internal_pixel_cnt += 2; matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; @@ -24345,20 +53017,15 @@ static void lts_aga_fm2_dpf0_p6_ihires_dhires_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix2; } - shiftbpl6_64(); - if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { - copybpl6_64(); + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8_64(); } - loaded_pix = getbpl6_64(); + loaded_pix = getbpl8_64(); uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -24368,6 +53035,7 @@ static void lts_aga_fm2_dpf0_p6_ihires_dhires_spr(void) } } loaded_pixs[2] = loaded_pix; + shiftbpl8_64(); internal_pixel_cnt += 2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { @@ -24423,11 +53091,7 @@ static void lts_aga_fm2_dpf0_p6_ihires_dhires_spr(void) denise_cck++; } } -static void lts_aga_fm2_dpf0_p6_ihires_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_dpf1_p6_ihires_dhires_spr(void) +static void lts_aga_fm2_n0_p8_ishres_dhires_spr_filtered(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -24448,23 +53112,15 @@ static void lts_aga_fm2_dpf1_p6_ihires_dhires_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix0; } - shiftbpl6_64(); - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl6e_64(); - } - if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { - copybpl6o_64(); + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8_64(); } - loaded_pix = getbpl6_64(); + loaded_pix = getbpl8_64(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -24474,6 +53130,23 @@ static void lts_aga_fm2_dpf1_p6_ihires_dhires_spr(void) } } loaded_pixs[0] = loaded_pix; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix1; + } + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8_64(); + } + loaded_pix = getbpl8_64(); + loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 2; matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; @@ -24483,23 +53156,15 @@ static void lts_aga_fm2_dpf1_p6_ihires_dhires_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix2; } - shiftbpl6_64(); - if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { - copybpl6e_64(); - } - if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) { - copybpl6o_64(); + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8_64(); } - loaded_pix = getbpl6_64(); + loaded_pix = getbpl8_64(); uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -24509,21 +53174,42 @@ static void lts_aga_fm2_dpf1_p6_ihires_dhires_spr(void) } } loaded_pixs[2] = loaded_pix; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix3; + } + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8_64(); + } + loaded_pix = getbpl8_64(); + loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { uae_u32 spix0 = denise_render_sprites2(pix0, sv0); if (spix0) { dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; } } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); dtbuf[h][0] = dpix_val0; if (sv2) { uae_u32 spix2 = denise_render_sprites2(pix2, sv2); if (spix2) { dpix_val2 = denise_colors.acolors[spix2]; + dpix_val3 = dpix_val2; } } + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); dtbuf[h][2] = dpix_val2; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -24564,11 +53250,7 @@ static void lts_aga_fm2_dpf1_p6_ihires_dhires_spr(void) denise_cck++; } } -static void lts_aga_fm2_dpf1_p6_ihires_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb0_p6_ihires_dhires_spr(void) +static void lts_aga_fm2_n1_p8_ishres_dhires_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -24589,21 +53271,18 @@ static void lts_aga_fm2_ehb0_p6_ihires_dhires_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - pix0 ^= bplcon4_denise_xor_val; - if (!(pix0 & 0x20)) { - dpix_val0 = denise_colors.acolors[pix0]; - } else { - uae_u32 v = (denise_colors.color_regs_aga[pix0 & 0x1f] >> 1) & 0x7f7f7f; - dpix_val0 = CONVERT_RGB(v); - } + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix0; } - shiftbpl6_64(); - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl6_64(); + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8e_64(); } - loaded_pix = getbpl6_64(); + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o_64(); + } + loaded_pix = getbpl8_64(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -24613,6 +53292,7 @@ static void lts_aga_fm2_ehb0_p6_ihires_dhires_spr(void) } } loaded_pixs[0] = loaded_pix; + shiftbpl8_64(); internal_pixel_cnt += 2; matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; @@ -24622,21 +53302,18 @@ static void lts_aga_fm2_ehb0_p6_ihires_dhires_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - pix2 ^= bplcon4_denise_xor_val; - if (!(pix2 & 0x20)) { - dpix_val2 = denise_colors.acolors[pix2]; - } else { - uae_u32 v = (denise_colors.color_regs_aga[pix2 & 0x1f] >> 1) & 0x7f7f7f; - dpix_val2 = CONVERT_RGB(v); - } + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix2; } - shiftbpl6_64(); - if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { - copybpl6_64(); + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8e_64(); } - loaded_pix = getbpl6_64(); + if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o_64(); + } + loaded_pix = getbpl8_64(); uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -24646,6 +53323,7 @@ static void lts_aga_fm2_ehb0_p6_ihires_dhires_spr(void) } } loaded_pixs[2] = loaded_pix; + shiftbpl8_64(); internal_pixel_cnt += 2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { @@ -24701,11 +53379,7 @@ static void lts_aga_fm2_ehb0_p6_ihires_dhires_spr(void) denise_cck++; } } -static void lts_aga_fm2_ehb0_p6_ihires_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb1_p6_ihires_dhires_spr(void) +static void lts_aga_fm2_n1_p8_ishres_dhires_spr_filtered(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -24726,24 +53400,18 @@ static void lts_aga_fm2_ehb1_p6_ihires_dhires_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - pix0 ^= bplcon4_denise_xor_val; - if (!(pix0 & 0x20)) { - dpix_val0 = denise_colors.acolors[pix0]; - } else { - uae_u32 v = (denise_colors.color_regs_aga[pix0 & 0x1f] >> 1) & 0x7f7f7f; - dpix_val0 = CONVERT_RGB(v); - } + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix0; } - shiftbpl6_64(); - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl6e_64(); + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8e_64(); } - if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { - copybpl6o_64(); + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o_64(); } - loaded_pix = getbpl6_64(); + loaded_pix = getbpl8_64(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -24753,6 +53421,26 @@ static void lts_aga_fm2_ehb1_p6_ihires_dhires_spr(void) } } loaded_pixs[0] = loaded_pix; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix1; + } + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8e_64(); + } + if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o_64(); + } + loaded_pix = getbpl8_64(); + loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 2; matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; @@ -24762,24 +53450,18 @@ static void lts_aga_fm2_ehb1_p6_ihires_dhires_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - pix2 ^= bplcon4_denise_xor_val; - if (!(pix2 & 0x20)) { - dpix_val2 = denise_colors.acolors[pix2]; - } else { - uae_u32 v = (denise_colors.color_regs_aga[pix2 & 0x1f] >> 1) & 0x7f7f7f; - dpix_val2 = CONVERT_RGB(v); - } + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix2; } - shiftbpl6_64(); - if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { - copybpl6e_64(); + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8e_64(); } - if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) { - copybpl6o_64(); + if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o_64(); } - loaded_pix = getbpl6_64(); + loaded_pix = getbpl8_64(); uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -24789,21 +53471,45 @@ static void lts_aga_fm2_ehb1_p6_ihires_dhires_spr(void) } } loaded_pixs[2] = loaded_pix; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix3; + } + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8e_64(); + } + if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o_64(); + } + loaded_pix = getbpl8_64(); + loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { uae_u32 spix0 = denise_render_sprites2(pix0, sv0); if (spix0) { dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; } } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); dtbuf[h][0] = dpix_val0; if (sv2) { uae_u32 spix2 = denise_render_sprites2(pix2, sv2); if (spix2) { dpix_val2 = denise_colors.acolors[spix2]; + dpix_val3 = dpix_val2; } } + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); dtbuf[h][2] = dpix_val2; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -24844,11 +53550,7 @@ static void lts_aga_fm2_ehb1_p6_ihires_dhires_spr(void) denise_cck++; } } -static void lts_aga_fm2_ehb1_p6_ihires_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_ham0_p6_ihires_dhires_spr(void) +static void lts_aga_fm2_dpf0_p8_ishres_dhires_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -24869,15 +53571,20 @@ static void lts_aga_fm2_ham0_p6_ihires_dhires_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - dpix_val0 = decode_ham_pixel_aga(pix0); + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; } last_bpl_pix = pix0; } - shiftbpl6_64(); - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl6_64(); + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8_64(); } - loaded_pix = getbpl6_64(); + loaded_pix = getbpl8_64(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -24887,6 +53594,7 @@ static void lts_aga_fm2_ham0_p6_ihires_dhires_spr(void) } } loaded_pixs[0] = loaded_pix; + shiftbpl8_64(); internal_pixel_cnt += 2; matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; @@ -24896,15 +53604,20 @@ static void lts_aga_fm2_ham0_p6_ihires_dhires_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - dpix_val2 = decode_ham_pixel_aga(pix2); + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; } last_bpl_pix = pix2; } - shiftbpl6_64(); - if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { - copybpl6_64(); + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8_64(); } - loaded_pix = getbpl6_64(); + loaded_pix = getbpl8_64(); uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -24914,6 +53627,7 @@ static void lts_aga_fm2_ham0_p6_ihires_dhires_spr(void) } } loaded_pixs[2] = loaded_pix; + shiftbpl8_64(); internal_pixel_cnt += 2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { @@ -24969,11 +53683,7 @@ static void lts_aga_fm2_ham0_p6_ihires_dhires_spr(void) denise_cck++; } } -static void lts_aga_fm2_ham0_p6_ihires_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_ham1_p6_ihires_dhires_spr(void) +static void lts_aga_fm2_dpf0_p8_ishres_dhires_spr_filtered(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -24994,18 +53704,20 @@ static void lts_aga_fm2_ham1_p6_ihires_dhires_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - dpix_val0 = decode_ham_pixel_aga(pix0); + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; } last_bpl_pix = pix0; } - shiftbpl6_64(); - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl6e_64(); - } - if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { - copybpl6o_64(); + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8_64(); } - loaded_pix = getbpl6_64(); + loaded_pix = getbpl8_64(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -25015,6 +53727,28 @@ static void lts_aga_fm2_ham1_p6_ihires_dhires_spr(void) } } loaded_pixs[0] = loaded_pix; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + uae_u8 val1 = dpf_lookup[pix1]; + if (dpf_lookup_no[pix1]) { + val1 += dblpfofs[bpldualpf2of]; + } + val1 ^= bplcon4_denise_xor_val; + dpix_val1 = denise_colors.acolors[val1]; + } + last_bpl_pix = pix1; + } + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8_64(); + } + loaded_pix = getbpl8_64(); + loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 2; matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; @@ -25024,18 +53758,20 @@ static void lts_aga_fm2_ham1_p6_ihires_dhires_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - dpix_val2 = decode_ham_pixel_aga(pix2); + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; } last_bpl_pix = pix2; } - shiftbpl6_64(); - if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { - copybpl6e_64(); - } - if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) { - copybpl6o_64(); + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8_64(); } - loaded_pix = getbpl6_64(); + loaded_pix = getbpl8_64(); uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -25045,21 +53781,47 @@ static void lts_aga_fm2_ham1_p6_ihires_dhires_spr(void) } } loaded_pixs[2] = loaded_pix; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + uae_u8 val3 = dpf_lookup[pix3]; + if (dpf_lookup_no[pix3]) { + val3 += dblpfofs[bpldualpf2of]; + } + val3 ^= bplcon4_denise_xor_val; + dpix_val3 = denise_colors.acolors[val3]; + } + last_bpl_pix = pix3; + } + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8_64(); + } + loaded_pix = getbpl8_64(); + loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { uae_u32 spix0 = denise_render_sprites2(pix0, sv0); if (spix0) { dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; } } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); dtbuf[h][0] = dpix_val0; if (sv2) { uae_u32 spix2 = denise_render_sprites2(pix2, sv2); if (spix2) { dpix_val2 = denise_colors.acolors[spix2]; + dpix_val3 = dpix_val2; } } + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); dtbuf[h][2] = dpix_val2; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -25100,11 +53862,7 @@ static void lts_aga_fm2_ham1_p6_ihires_dhires_spr(void) denise_cck++; } } -static void lts_aga_fm2_ham1_p6_ihires_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb0_p6_ihires_dhires_spr(void) +static void lts_aga_fm2_dpf1_p8_ishres_dhires_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -25125,16 +53883,23 @@ static void lts_aga_fm2_kehb0_p6_ihires_dhires_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - pix0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[pix0 & 31]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; } last_bpl_pix = pix0; } - shiftbpl6_64(); - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl6_64(); + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8e_64(); } - loaded_pix = getbpl6_64(); + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o_64(); + } + loaded_pix = getbpl8_64(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -25144,6 +53909,7 @@ static void lts_aga_fm2_kehb0_p6_ihires_dhires_spr(void) } } loaded_pixs[0] = loaded_pix; + shiftbpl8_64(); internal_pixel_cnt += 2; matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; @@ -25153,16 +53919,23 @@ static void lts_aga_fm2_kehb0_p6_ihires_dhires_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - pix2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[pix2 & 31]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; } last_bpl_pix = pix2; } - shiftbpl6_64(); - if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { - copybpl6_64(); + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8e_64(); } - loaded_pix = getbpl6_64(); + if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o_64(); + } + loaded_pix = getbpl8_64(); uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -25172,6 +53945,7 @@ static void lts_aga_fm2_kehb0_p6_ihires_dhires_spr(void) } } loaded_pixs[2] = loaded_pix; + shiftbpl8_64(); internal_pixel_cnt += 2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { @@ -25227,11 +54001,7 @@ static void lts_aga_fm2_kehb0_p6_ihires_dhires_spr(void) denise_cck++; } } -static void lts_aga_fm2_kehb0_p6_ihires_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb1_p6_ihires_dhires_spr(void) +static void lts_aga_fm2_dpf1_p8_ishres_dhires_spr_filtered(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -25252,19 +54022,23 @@ static void lts_aga_fm2_kehb1_p6_ihires_dhires_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - pix0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[pix0 & 31]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; } last_bpl_pix = pix0; } - shiftbpl6_64(); - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl6e_64(); + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8e_64(); } - if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { - copybpl6o_64(); + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o_64(); } - loaded_pix = getbpl6_64(); + loaded_pix = getbpl8_64(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -25274,6 +54048,31 @@ static void lts_aga_fm2_kehb1_p6_ihires_dhires_spr(void) } } loaded_pixs[0] = loaded_pix; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + uae_u8 val1 = dpf_lookup[pix1]; + if (dpf_lookup_no[pix1]) { + val1 += dblpfofs[bpldualpf2of]; + } + val1 ^= bplcon4_denise_xor_val; + dpix_val1 = denise_colors.acolors[val1]; + } + last_bpl_pix = pix1; + } + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8e_64(); + } + if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o_64(); + } + loaded_pix = getbpl8_64(); + loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 2; matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; @@ -25283,19 +54082,23 @@ static void lts_aga_fm2_kehb1_p6_ihires_dhires_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - pix2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[pix2 & 31]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; } last_bpl_pix = pix2; } - shiftbpl6_64(); - if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { - copybpl6e_64(); + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8e_64(); } - if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) { - copybpl6o_64(); + if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o_64(); } - loaded_pix = getbpl6_64(); + loaded_pix = getbpl8_64(); uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -25305,21 +54108,50 @@ static void lts_aga_fm2_kehb1_p6_ihires_dhires_spr(void) } } loaded_pixs[2] = loaded_pix; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + uae_u8 val3 = dpf_lookup[pix3]; + if (dpf_lookup_no[pix3]) { + val3 += dblpfofs[bpldualpf2of]; + } + val3 ^= bplcon4_denise_xor_val; + dpix_val3 = denise_colors.acolors[val3]; + } + last_bpl_pix = pix3; + } + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8e_64(); + } + if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o_64(); + } + loaded_pix = getbpl8_64(); + loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { uae_u32 spix0 = denise_render_sprites2(pix0, sv0); if (spix0) { dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; } } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); dtbuf[h][0] = dpix_val0; if (sv2) { uae_u32 spix2 = denise_render_sprites2(pix2, sv2); if (spix2) { dpix_val2 = denise_colors.acolors[spix2]; + dpix_val3 = dpix_val2; } } + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); dtbuf[h][2] = dpix_val2; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -25360,11 +54192,7 @@ static void lts_aga_fm2_kehb1_p6_ihires_dhires_spr(void) denise_cck++; } } -static void lts_aga_fm2_kehb1_p6_ihires_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_n0_p8_ihires_dhires_spr(void) +static void lts_aga_fm2_ehb0_p8_ishres_dhires_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -25375,25 +54203,13 @@ 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; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix0; } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); - } - loaded_pix = getbpl8_64(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -25402,25 +54218,13 @@ static void lts_aga_fm2_n0_p8_ihires_dhires_spr(void) sv0 = svt; } } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 2; matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix2; - } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); } - loaded_pix = getbpl8_64(); uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -25429,7 +54233,6 @@ static void lts_aga_fm2_n0_p8_ihires_dhires_spr(void) sv2 = svt; } } - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { @@ -25485,11 +54288,7 @@ static void lts_aga_fm2_n0_p8_ihires_dhires_spr(void) denise_cck++; } } -static void lts_aga_fm2_n0_p8_ihires_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_n1_p8_ihires_dhires_spr(void) +static void lts_aga_fm2_ehb0_p8_ishres_dhires_spr_filtered(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -25500,28 +54299,13 @@ 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; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix0; - } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8e_64(); } - if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); - } - loaded_pix = getbpl8_64(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -25530,28 +54314,18 @@ static void lts_aga_fm2_n1_p8_ihires_dhires_spr(void) sv0 = svt; } } - loaded_pixs[0] = loaded_pix; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } internal_pixel_cnt += 2; matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix2; - } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8e_64(); } - if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); - } - loaded_pix = getbpl8_64(); uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -25560,22 +54334,30 @@ static void lts_aga_fm2_n1_p8_ihires_dhires_spr(void) sv2 = svt; } } - loaded_pixs[2] = loaded_pix; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } internal_pixel_cnt += 2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { uae_u32 spix0 = denise_render_sprites2(pix0, sv0); if (spix0) { dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; } } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); dtbuf[h][0] = dpix_val0; if (sv2) { uae_u32 spix2 = denise_render_sprites2(pix2, sv2); if (spix2) { dpix_val2 = denise_colors.acolors[spix2]; + dpix_val3 = dpix_val2; } } + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); dtbuf[h][2] = dpix_val2; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -25616,11 +54398,7 @@ static void lts_aga_fm2_n1_p8_ihires_dhires_spr(void) denise_cck++; } } -static void lts_aga_fm2_n1_p8_ihires_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_dpf0_p8_ihires_dhires_spr(void) +static void lts_aga_fm2_ehb1_p8_ishres_dhires_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -25631,30 +54409,13 @@ 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; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); - } - loaded_pix = getbpl8_64(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -25663,30 +54424,13 @@ static void lts_aga_fm2_dpf0_p8_ihires_dhires_spr(void) sv0 = svt; } } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 2; matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; - } - last_bpl_pix = pix2; - } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); } - loaded_pix = getbpl8_64(); uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -25695,7 +54439,6 @@ static void lts_aga_fm2_dpf0_p8_ihires_dhires_spr(void) sv2 = svt; } } - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { @@ -25751,11 +54494,7 @@ static void lts_aga_fm2_dpf0_p8_ihires_dhires_spr(void) denise_cck++; } } -static void lts_aga_fm2_dpf0_p8_ihires_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_dpf1_p8_ihires_dhires_spr(void) +static void lts_aga_fm2_ehb1_p8_ishres_dhires_spr_filtered(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -25766,33 +54505,13 @@ 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; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; - } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8e_64(); } - if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); - } - loaded_pix = getbpl8_64(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -25801,33 +54520,18 @@ static void lts_aga_fm2_dpf1_p8_ihires_dhires_spr(void) sv0 = svt; } } - loaded_pixs[0] = loaded_pix; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } internal_pixel_cnt += 2; matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; - } - last_bpl_pix = pix2; - } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8e_64(); } - if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); - } - loaded_pix = getbpl8_64(); uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -25836,22 +54540,30 @@ static void lts_aga_fm2_dpf1_p8_ihires_dhires_spr(void) sv2 = svt; } } - loaded_pixs[2] = loaded_pix; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } internal_pixel_cnt += 2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { uae_u32 spix0 = denise_render_sprites2(pix0, sv0); if (spix0) { dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; } } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); dtbuf[h][0] = dpix_val0; if (sv2) { uae_u32 spix2 = denise_render_sprites2(pix2, sv2); if (spix2) { dpix_val2 = denise_colors.acolors[spix2]; + dpix_val3 = dpix_val2; } } + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); dtbuf[h][2] = dpix_val2; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -25892,27 +54604,7 @@ static void lts_aga_fm2_dpf1_p8_ihires_dhires_spr(void) denise_cck++; } } -static void lts_aga_fm2_dpf1_p8_ihires_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb0_p8_ihires_dhires_spr(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb0_p8_ihires_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb1_p8_ihires_dhires_spr(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb1_p8_ihires_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_ham0_p8_ihires_dhires_spr(void) +static void lts_aga_fm2_ham0_p8_ishres_dhires_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -25938,7 +54630,7 @@ static void lts_aga_fm2_ham0_p8_ihires_dhires_spr(void) last_bpl_pix = pix0; } shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { copybpl8_64(); } loaded_pix = getbpl8_64(); @@ -25951,6 +54643,22 @@ static void lts_aga_fm2_ham0_p8_ihires_dhires_spr(void) } } loaded_pixs[0] = loaded_pix; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + decode_ham_pixel_aga(pix1); + } + last_bpl_pix = pix1; + } + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8_64(); + } + loaded_pix = getbpl8_64(); + loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 2; matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; @@ -25965,7 +54673,7 @@ static void lts_aga_fm2_ham0_p8_ihires_dhires_spr(void) last_bpl_pix = pix2; } shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { copybpl8_64(); } loaded_pix = getbpl8_64(); @@ -25978,6 +54686,22 @@ static void lts_aga_fm2_ham0_p8_ihires_dhires_spr(void) } } loaded_pixs[2] = loaded_pix; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + decode_ham_pixel_aga(pix3); + } + last_bpl_pix = pix3; + } + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8_64(); + } + loaded_pix = getbpl8_64(); + loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { @@ -26033,11 +54757,7 @@ static void lts_aga_fm2_ham0_p8_ihires_dhires_spr(void) denise_cck++; } } -static void lts_aga_fm2_ham0_p8_ihires_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_ham1_p8_ihires_dhires_spr(void) +static void lts_aga_fm2_ham0_p8_ishres_dhires_spr_filtered(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -26063,11 +54783,8 @@ static void lts_aga_fm2_ham1_p8_ihires_dhires_spr(void) last_bpl_pix = pix0; } shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8e_64(); - } - if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8_64(); } loaded_pix = getbpl8_64(); uae_u32 sv0 = 0; @@ -26079,6 +54796,23 @@ static void lts_aga_fm2_ham1_p8_ihires_dhires_spr(void) } } loaded_pixs[0] = loaded_pix; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + dpix_val1 = decode_ham_pixel_aga(pix1); + } + last_bpl_pix = pix1; + } + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8_64(); + } + loaded_pix = getbpl8_64(); + loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 2; matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; @@ -26093,11 +54827,8 @@ static void lts_aga_fm2_ham1_p8_ihires_dhires_spr(void) last_bpl_pix = pix2; } shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8e_64(); - } - if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8_64(); } loaded_pix = getbpl8_64(); uae_u32 sv2 = 0; @@ -26109,21 +54840,42 @@ static void lts_aga_fm2_ham1_p8_ihires_dhires_spr(void) } } loaded_pixs[2] = loaded_pix; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + dpix_val3 = decode_ham_pixel_aga(pix3); + } + last_bpl_pix = pix3; + } + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8_64(); + } + loaded_pix = getbpl8_64(); + loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { uae_u32 spix0 = denise_render_sprites2(pix0, sv0); if (spix0) { dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; } } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); dtbuf[h][0] = dpix_val0; if (sv2) { uae_u32 spix2 = denise_render_sprites2(pix2, sv2); if (spix2) { dpix_val2 = denise_colors.acolors[spix2]; + dpix_val3 = dpix_val2; } } + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); dtbuf[h][2] = dpix_val2; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -26164,27 +54916,7 @@ static void lts_aga_fm2_ham1_p8_ihires_dhires_spr(void) denise_cck++; } } -static void lts_aga_fm2_ham1_p8_ihires_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb0_p8_ihires_dhires_spr(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb0_p8_ihires_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb1_p8_ihires_dhires_spr(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb1_p8_ihires_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_n0_p2_ishres_dhires(void) +static void lts_aga_fm2_ham1_p8_ishres_dhires_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -26197,6 +54929,7 @@ static void lts_aga_fm2_n0_p2_ishres_dhires(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -26204,18 +54937,48 @@ static void lts_aga_fm2_n0_p2_ishres_dhires(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + dpix_val0 = decode_ham_pixel_aga(pix0); } last_bpl_pix = pix0; } - shiftbpl2_64(); + shiftbpl8_64(); if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl2_64(); + copybpl8e_64(); + } + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o_64(); + } + loaded_pix = getbpl8_64(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } } - loaded_pix = getbpl2_64(); loaded_pixs[0] = loaded_pix; - shiftbpl2_64(); + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + decode_ham_pixel_aga(pix1); + } + last_bpl_pix = pix1; + } + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8e_64(); + } + if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o_64(); + } + loaded_pix = getbpl8_64(); + loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { @@ -26223,20 +54986,61 @@ static void lts_aga_fm2_n0_p2_ishres_dhires(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + dpix_val2 = decode_ham_pixel_aga(pix2); + } + last_bpl_pix = pix2; + } + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8e_64(); + } + if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o_64(); + } + loaded_pix = getbpl8_64(); + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + decode_ham_pixel_aga(pix3); } - last_bpl_pix = pix2; + last_bpl_pix = pix3; } - shiftbpl2_64(); - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl2_64(); + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8e_64(); } - loaded_pix = getbpl2_64(); - loaded_pixs[2] = loaded_pix; - shiftbpl2_64(); + if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o_64(); + } + loaded_pix = getbpl8_64(); + loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } dtbuf[h][2] = dpix_val2; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -26277,7 +55081,7 @@ static void lts_aga_fm2_n0_p2_ishres_dhires(void) denise_cck++; } } -static void lts_aga_fm2_n0_p2_ishres_dhires_filtered(void) +static void lts_aga_fm2_ham1_p8_ishres_dhires_spr_filtered(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -26290,6 +55094,7 @@ static void lts_aga_fm2_n0_p2_ishres_dhires_filtered(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -26297,15 +55102,26 @@ static void lts_aga_fm2_n0_p2_ishres_dhires_filtered(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + dpix_val0 = decode_ham_pixel_aga(pix0); } last_bpl_pix = pix0; } - shiftbpl2_64(); + shiftbpl8_64(); if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl2_64(); + copybpl8e_64(); + } + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o_64(); + } + loaded_pix = getbpl8_64(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } } - loaded_pix = getbpl2_64(); loaded_pixs[0] = loaded_pix; uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; @@ -26314,17 +55130,21 @@ static void lts_aga_fm2_n0_p2_ishres_dhires_filtered(void) if (denise_hdiw && bpl1dat_trigger) { pix1 = loaded_pixs[1]; clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; + dpix_val1 = decode_ham_pixel_aga(pix1); } last_bpl_pix = pix1; } - shiftbpl2_64(); + shiftbpl8_64(); if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl2_64(); + copybpl8e_64(); } - loaded_pix = getbpl2_64(); + if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o_64(); + } + loaded_pix = getbpl8_64(); loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { @@ -26332,15 +55152,26 @@ static void lts_aga_fm2_n0_p2_ishres_dhires_filtered(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + dpix_val2 = decode_ham_pixel_aga(pix2); } last_bpl_pix = pix2; } - shiftbpl2_64(); + shiftbpl8_64(); if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl2_64(); + copybpl8e_64(); + } + if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o_64(); + } + loaded_pix = getbpl8_64(); + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } } - loaded_pix = getbpl2_64(); loaded_pixs[2] = loaded_pix; uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; @@ -26349,20 +55180,37 @@ static void lts_aga_fm2_n0_p2_ishres_dhires_filtered(void) if (denise_hdiw && bpl1dat_trigger) { pix3 = loaded_pixs[3]; clxdat |= bplcoltable[pix3]; - dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; + dpix_val3 = decode_ham_pixel_aga(pix3); } last_bpl_pix = pix3; } - shiftbpl2_64(); + shiftbpl8_64(); if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { - copybpl2_64(); + copybpl8e_64(); } - loaded_pix = getbpl2_64(); + if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o_64(); + } + loaded_pix = getbpl8_64(); loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + } + } dpix_val0 = filter_pixel(dpix_val0, dpix_val1); dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + dpix_val3 = dpix_val2; + } + } dpix_val2 = filter_pixel(dpix_val2, dpix_val3); dtbuf[h][2] = dpix_val2; uae_u32 t0 = dtbuf[h ^ lol][0]; @@ -26404,7 +55252,7 @@ static void lts_aga_fm2_n0_p2_ishres_dhires_filtered(void) denise_cck++; } } -static void lts_aga_fm2_n1_p2_ishres_dhires(void) +static void lts_aga_fm2_kehb0_p8_ishres_dhires_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -26415,54 +55263,51 @@ 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; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix0; - } - shiftbpl2_64(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl2e_64(); } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl2o_64(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } } - loaded_pix = getbpl2_64(); - loaded_pixs[0] = loaded_pix; - shiftbpl2_64(); internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix2; - } - shiftbpl2_64(); - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl2e_64(); } - if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { - copybpl2o_64(); + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } } - loaded_pix = getbpl2_64(); - loaded_pixs[2] = loaded_pix; - shiftbpl2_64(); internal_pixel_cnt += 2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } dtbuf[h][2] = dpix_val2; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -26503,7 +55348,7 @@ static void lts_aga_fm2_n1_p2_ishres_dhires(void) denise_cck++; } } -static void lts_aga_fm2_n1_p2_ishres_dhires_filtered(void) +static void lts_aga_fm2_kehb0_p8_ishres_dhires_spr_filtered(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -26514,93 +55359,64 @@ 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; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix0; - } - shiftbpl2_64(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl2e_64(); } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl2o_64(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } } - loaded_pix = getbpl2_64(); - loaded_pixs[0] = loaded_pix; uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix1; } - shiftbpl2_64(); - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl2e_64(); - } - if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { - copybpl2o_64(); - } - loaded_pix = getbpl2_64(); - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix2; } - shiftbpl2_64(); - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl2e_64(); - } - if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { - copybpl2o_64(); + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } } - loaded_pix = getbpl2_64(); - loaded_pixs[2] = loaded_pix; uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix3; - } - shiftbpl2_64(); - if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { - copybpl2e_64(); - } - if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) { - copybpl2o_64(); } - loaded_pix = getbpl2_64(); - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + } + } dpix_val0 = filter_pixel(dpix_val0, dpix_val1); dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + dpix_val3 = dpix_val2; + } + } dpix_val2 = filter_pixel(dpix_val2, dpix_val3); dtbuf[h][2] = dpix_val2; uae_u32 t0 = dtbuf[h ^ lol][0]; @@ -26642,7 +55458,7 @@ static void lts_aga_fm2_n1_p2_ishres_dhires_filtered(void) denise_cck++; } } -static void lts_aga_fm2_dpf0_p2_ishres_dhires(void) +static void lts_aga_fm2_kehb1_p8_ishres_dhires_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -26653,58 +55469,51 @@ 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; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; } - shiftbpl2_64(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl2_64(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } } - loaded_pix = getbpl2_64(); - loaded_pixs[0] = loaded_pix; - shiftbpl2_64(); internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; - } - last_bpl_pix = pix2; } - shiftbpl2_64(); - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl2_64(); + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } } - loaded_pix = getbpl2_64(); - loaded_pixs[2] = loaded_pix; - shiftbpl2_64(); internal_pixel_cnt += 2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } dtbuf[h][2] = dpix_val2; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -26745,7 +55554,7 @@ static void lts_aga_fm2_dpf0_p2_ishres_dhires(void) denise_cck++; } } -static void lts_aga_fm2_dpf0_p2_ishres_dhires_filtered(void) +static void lts_aga_fm2_kehb1_p8_ishres_dhires_spr_filtered(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -26756,101 +55565,64 @@ 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; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; } - shiftbpl2_64(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl2_64(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } } - loaded_pix = getbpl2_64(); - loaded_pixs[0] = loaded_pix; uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - if (dpf_lookup_no[pix1]) { - val1 += dblpfofs[bpldualpf2of]; - } - val1 ^= bplcon4_denise_xor_val; - dpix_val1 = denise_colors.acolors[val1]; - } - last_bpl_pix = pix1; - } - shiftbpl2_64(); - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl2_64(); } - loaded_pix = getbpl2_64(); - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; - } - last_bpl_pix = pix2; } - shiftbpl2_64(); - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl2_64(); + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } } - loaded_pix = getbpl2_64(); - loaded_pixs[2] = loaded_pix; uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - uae_u8 val3 = dpf_lookup[pix3]; - if (dpf_lookup_no[pix3]) { - val3 += dblpfofs[bpldualpf2of]; - } - val3 ^= bplcon4_denise_xor_val; - dpix_val3 = denise_colors.acolors[val3]; - } - last_bpl_pix = pix3; - } - shiftbpl2_64(); - if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { - copybpl2_64(); } - loaded_pix = getbpl2_64(); - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + } + } dpix_val0 = filter_pixel(dpix_val0, dpix_val1); dtbuf[h][0] = dpix_val0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + dpix_val3 = dpix_val2; + } + } dpix_val2 = filter_pixel(dpix_val2, dpix_val3); dtbuf[h][2] = dpix_val2; uae_u32 t0 = dtbuf[h ^ lol][0]; @@ -26892,7 +55664,7 @@ static void lts_aga_fm2_dpf0_p2_ishres_dhires_filtered(void) denise_cck++; } } -static void lts_aga_fm2_dpf1_p2_ishres_dhires(void) +static void lts_aga_fm2_n0_p2_ilores_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -26912,26 +55684,47 @@ static void lts_aga_fm2_dpf1_p2_ishres_dhires(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix0; } - shiftbpl2_64(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl2e_64(); + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl2_64(); + loaded_pix = getbpl2_64(); } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl2o_64(); + if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { + copybpl2_64(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl2_64(); } - loaded_pix = getbpl2_64(); loaded_pixs[0] = loaded_pix; - shiftbpl2_64(); - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix1; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl2_64(); + loaded_pix = getbpl2_64(); + } + if (bpldat_copy[0] && ((cmp | 1) & 255) == bplcon1_shift_full_masked[0]) { + copybpl2_64(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl2_64(); + } + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { @@ -26939,29 +55732,52 @@ static void lts_aga_fm2_dpf1_p2_ishres_dhires(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix2; } - shiftbpl2_64(); - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl2e_64(); + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl2_64(); + loaded_pix = getbpl2_64(); + } + if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { + copybpl2_64(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl2_64(); + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix3; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl2_64(); + loaded_pix = getbpl2_64(); } - if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { - copybpl2o_64(); + if (bpldat_copy[0] && ((cmp | 3) & 255) == bplcon1_shift_full_masked[0]) { + copybpl2_64(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl2_64(); } - loaded_pix = getbpl2_64(); - loaded_pixs[2] = loaded_pix; - shiftbpl2_64(); - internal_pixel_cnt += 2; + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -26970,6 +55786,14 @@ static void lts_aga_fm2_dpf1_p2_ishres_dhires(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -26978,6 +55802,14 @@ static void lts_aga_fm2_dpf1_p2_ishres_dhires(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -27001,7 +55833,11 @@ static void lts_aga_fm2_dpf1_p2_ishres_dhires(void) denise_cck++; } } -static void lts_aga_fm2_dpf1_p2_ishres_dhires_filtered(void) +static void lts_aga_fm2_n0_p2_ilores_dshres_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_n1_p2_ilores_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -27021,24 +55857,34 @@ static void lts_aga_fm2_dpf1_p2_ishres_dhires_filtered(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix0; } - shiftbpl2_64(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl2e_64(); + loaded_pix = getbpl2_64(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl2o_64(); + loaded_pix = getbpl2_64(); + } + 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] && ((cmp | 0) & 63) == 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(); } - loaded_pix = getbpl2_64(); loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 1; uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { @@ -27046,25 +55892,34 @@ static void lts_aga_fm2_dpf1_p2_ishres_dhires_filtered(void) if (denise_hdiw && bpl1dat_trigger) { pix1 = loaded_pixs[1]; clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - if (dpf_lookup_no[pix1]) { - val1 += dblpfofs[bpldualpf2of]; - } - val1 ^= bplcon4_denise_xor_val; - dpix_val1 = denise_colors.acolors[val1]; + dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix1; } - shiftbpl2_64(); - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl2e_64(); + loaded_pix = getbpl2_64(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl2o_64(); + loaded_pix = getbpl2_64(); + } + 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] && ((cmp | 1) & 63) == 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(); } - loaded_pix = getbpl2_64(); loaded_pixs[1] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { @@ -27072,24 +55927,34 @@ static void lts_aga_fm2_dpf1_p2_ishres_dhires_filtered(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix2; } - shiftbpl2_64(); - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl2e_64(); + loaded_pix = getbpl2_64(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl2o_64(); + loaded_pix = getbpl2_64(); + } + 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] && ((cmp | 2) & 63) == 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(); } - loaded_pix = getbpl2_64(); loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 1; uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { @@ -27097,30 +55962,39 @@ static void lts_aga_fm2_dpf1_p2_ishres_dhires_filtered(void) if (denise_hdiw && bpl1dat_trigger) { pix3 = loaded_pixs[3]; clxdat |= bplcoltable[pix3]; - uae_u8 val3 = dpf_lookup[pix3]; - if (dpf_lookup_no[pix3]) { - val3 += dblpfofs[bpldualpf2of]; - } - val3 ^= bplcon4_denise_xor_val; - dpix_val3 = denise_colors.acolors[val3]; + dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix3; } - shiftbpl2_64(); - if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl2e_64(); + loaded_pix = getbpl2_64(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl2o_64(); + loaded_pix = getbpl2_64(); + } + 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] && ((cmp | 3) & 63) == 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(); } - loaded_pix = getbpl2_64(); loaded_pixs[3] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - dpix_val0 = filter_pixel(dpix_val0, dpix_val1); dtbuf[h][0] = dpix_val0; - dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + dtbuf[h][1] = dpix_val1; dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -27129,6 +56003,14 @@ static void lts_aga_fm2_dpf1_p2_ishres_dhires_filtered(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -27137,6 +56019,14 @@ static void lts_aga_fm2_dpf1_p2_ishres_dhires_filtered(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -27160,55 +56050,11 @@ static void lts_aga_fm2_dpf1_p2_ishres_dhires_filtered(void) denise_cck++; } } -static void lts_aga_fm2_ehb0_p2_ishres_dhires(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb0_p2_ishres_dhires_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb1_p2_ishres_dhires(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb1_p2_ishres_dhires_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_ham0_p2_ishres_dhires(void) -{ - lts_null(); -} -static void lts_aga_fm2_ham0_p2_ishres_dhires_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_ham1_p2_ishres_dhires(void) -{ - lts_null(); -} -static void lts_aga_fm2_ham1_p2_ishres_dhires_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb0_p2_ishres_dhires(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb0_p2_ishres_dhires_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb1_p2_ishres_dhires(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb1_p2_ishres_dhires_filtered(void) +static void lts_aga_fm2_n1_p2_ilores_dshres_filtered(void) { lts_null(); } -static void lts_aga_fm2_n0_p4_ishres_dhires(void) +static void lts_aga_fm2_dpf0_p2_ilores_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -27228,18 +56074,57 @@ static void lts_aga_fm2_n0_p4_ishres_dhires(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; } last_bpl_pix = pix0; } - shiftbpl4_64(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4_64(); + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl2_64(); + loaded_pix = getbpl2_64(); + } + if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { + copybpl2_64(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl2_64(); } - loaded_pix = getbpl4_64(); loaded_pixs[0] = loaded_pix; - shiftbpl4_64(); - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + uae_u8 val1 = dpf_lookup[pix1]; + if (dpf_lookup_no[pix1]) { + val1 += dblpfofs[bpldualpf2of]; + } + val1 ^= bplcon4_denise_xor_val; + dpix_val1 = denise_colors.acolors[val1]; + } + last_bpl_pix = pix1; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl2_64(); + loaded_pix = getbpl2_64(); + } + if (bpldat_copy[0] && ((cmp | 1) & 255) == bplcon1_shift_full_masked[0]) { + copybpl2_64(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl2_64(); + } + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { @@ -27247,21 +56132,62 @@ static void lts_aga_fm2_n0_p4_ishres_dhires(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; } last_bpl_pix = pix2; } - shiftbpl4_64(); - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4_64(); + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl2_64(); + loaded_pix = getbpl2_64(); + } + if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { + copybpl2_64(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl2_64(); } - loaded_pix = getbpl4_64(); loaded_pixs[2] = loaded_pix; - shiftbpl4_64(); - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + uae_u8 val3 = dpf_lookup[pix3]; + if (dpf_lookup_no[pix3]) { + val3 += dblpfofs[bpldualpf2of]; + } + val3 ^= bplcon4_denise_xor_val; + dpix_val3 = denise_colors.acolors[val3]; + } + last_bpl_pix = pix3; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl2_64(); + loaded_pix = getbpl2_64(); + } + if (bpldat_copy[0] && ((cmp | 3) & 255) == bplcon1_shift_full_masked[0]) { + copybpl2_64(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl2_64(); + } + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -27270,6 +56196,14 @@ static void lts_aga_fm2_n0_p4_ishres_dhires(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -27278,6 +56212,14 @@ static void lts_aga_fm2_n0_p4_ishres_dhires(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -27301,7 +56243,11 @@ static void lts_aga_fm2_n0_p4_ishres_dhires(void) denise_cck++; } } -static void lts_aga_fm2_n0_p4_ishres_dhires_filtered(void) +static void lts_aga_fm2_dpf0_p2_ilores_dshres_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_dpf1_p2_ilores_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -27321,16 +56267,39 @@ static void lts_aga_fm2_n0_p4_ishres_dhires_filtered(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; } last_bpl_pix = pix0; } - shiftbpl4_64(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4_64(); + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl2e_64(); + loaded_pix = getbpl2_64(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl2o_64(); + loaded_pix = getbpl2_64(); + } + 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] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[1]) { + copybpl2o_64(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl2_64(); } - loaded_pix = getbpl4_64(); loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 1; uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { @@ -27338,17 +56307,39 @@ static void lts_aga_fm2_n0_p4_ishres_dhires_filtered(void) if (denise_hdiw && bpl1dat_trigger) { pix1 = loaded_pixs[1]; clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; + uae_u8 val1 = dpf_lookup[pix1]; + if (dpf_lookup_no[pix1]) { + val1 += dblpfofs[bpldualpf2of]; + } + val1 ^= bplcon4_denise_xor_val; + dpix_val1 = denise_colors.acolors[val1]; } last_bpl_pix = pix1; } - shiftbpl4_64(); - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4_64(); + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl2e_64(); + loaded_pix = getbpl2_64(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl2o_64(); + loaded_pix = getbpl2_64(); + } + 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] && ((cmp | 1) & 255) == bplcon1_shift_full_masked[1]) { + copybpl2o_64(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl2_64(); } - loaded_pix = getbpl4_64(); loaded_pixs[1] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { @@ -27356,16 +56347,39 @@ static void lts_aga_fm2_n0_p4_ishres_dhires_filtered(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; } last_bpl_pix = pix2; } - shiftbpl4_64(); - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4_64(); + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl2e_64(); + loaded_pix = getbpl2_64(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl2o_64(); + loaded_pix = getbpl2_64(); + } + 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] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[1]) { + copybpl2o_64(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl2_64(); } - loaded_pix = getbpl4_64(); loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 1; uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { @@ -27373,22 +56387,44 @@ static void lts_aga_fm2_n0_p4_ishres_dhires_filtered(void) if (denise_hdiw && bpl1dat_trigger) { pix3 = loaded_pixs[3]; clxdat |= bplcoltable[pix3]; - dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; + uae_u8 val3 = dpf_lookup[pix3]; + if (dpf_lookup_no[pix3]) { + val3 += dblpfofs[bpldualpf2of]; + } + val3 ^= bplcon4_denise_xor_val; + dpix_val3 = denise_colors.acolors[val3]; } last_bpl_pix = pix3; } - shiftbpl4_64(); - if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4_64(); + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl2e_64(); + loaded_pix = getbpl2_64(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl2o_64(); + loaded_pix = getbpl2_64(); + } + 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] && ((cmp | 3) & 255) == bplcon1_shift_full_masked[1]) { + copybpl2o_64(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl2_64(); } - loaded_pix = getbpl4_64(); loaded_pixs[3] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - dpix_val0 = filter_pixel(dpix_val0, dpix_val1); dtbuf[h][0] = dpix_val0; - dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + dtbuf[h][1] = dpix_val1; dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -27397,14 +56433,30 @@ static void lts_aga_fm2_n0_p4_ishres_dhires_filtered(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { - t2 = decode_denise_specials_debug(t2, cnt + 2); + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); } #endif - *buf1++ = t2; - *buf2++ = t2; + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -27428,7 +56480,11 @@ static void lts_aga_fm2_n0_p4_ishres_dhires_filtered(void) denise_cck++; } } -static void lts_aga_fm2_n1_p4_ishres_dhires(void) +static void lts_aga_fm2_dpf1_p2_ilores_dshres_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_ehb0_p2_ilores_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -27439,55 +56495,36 @@ 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; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix0; - } - shiftbpl4_64(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4e_64(); } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl4o_64(); + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; } - loaded_pix = getbpl4_64(); - loaded_pixs[0] = loaded_pix; - shiftbpl4_64(); - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix2; - } - shiftbpl4_64(); - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4e_64(); } - if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { - copybpl4o_64(); + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; } - loaded_pix = getbpl4_64(); - loaded_pixs[2] = loaded_pix; - shiftbpl4_64(); - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -27496,6 +56533,14 @@ static void lts_aga_fm2_n1_p4_ishres_dhires(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -27504,6 +56549,14 @@ static void lts_aga_fm2_n1_p4_ishres_dhires(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -27527,7 +56580,11 @@ static void lts_aga_fm2_n1_p4_ishres_dhires(void) denise_cck++; } } -static void lts_aga_fm2_n1_p4_ishres_dhires_filtered(void) +static void lts_aga_fm2_ehb0_p2_ilores_dshres_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_ehb1_p2_ilores_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -27538,95 +56595,36 @@ 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; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix0; } - shiftbpl4_64(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4e_64(); - } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl4o_64(); - } - loaded_pix = getbpl4_64(); - loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 1; uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix1; } - shiftbpl4_64(); - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4e_64(); - } - if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { - copybpl4o_64(); - } - loaded_pix = getbpl4_64(); - loaded_pixs[1] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix2; - } - shiftbpl4_64(); - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4e_64(); - } - if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { - copybpl4o_64(); } - loaded_pix = getbpl4_64(); - loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 1; uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix3; - } - shiftbpl4_64(); - if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4e_64(); - } - if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) { - copybpl4o_64(); } - loaded_pix = getbpl4_64(); - loaded_pixs[3] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - dpix_val0 = filter_pixel(dpix_val0, dpix_val1); dtbuf[h][0] = dpix_val0; - dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + dtbuf[h][1] = dpix_val1; dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -27635,6 +56633,14 @@ static void lts_aga_fm2_n1_p4_ishres_dhires_filtered(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -27643,6 +56649,14 @@ static void lts_aga_fm2_n1_p4_ishres_dhires_filtered(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -27666,7 +56680,11 @@ static void lts_aga_fm2_n1_p4_ishres_dhires_filtered(void) denise_cck++; } } -static void lts_aga_fm2_dpf0_p4_ishres_dhires(void) +static void lts_aga_fm2_ehb1_p2_ilores_dshres_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_ham0_p2_ilores_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -27677,59 +56695,36 @@ 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; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; } - shiftbpl4_64(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4_64(); + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; } - loaded_pix = getbpl4_64(); - loaded_pixs[0] = loaded_pix; - shiftbpl4_64(); - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; - } - last_bpl_pix = pix2; } - shiftbpl4_64(); - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4_64(); + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; } - loaded_pix = getbpl4_64(); - loaded_pixs[2] = loaded_pix; - shiftbpl4_64(); - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -27738,6 +56733,14 @@ static void lts_aga_fm2_dpf0_p4_ishres_dhires(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -27746,6 +56749,14 @@ static void lts_aga_fm2_dpf0_p4_ishres_dhires(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -27769,7 +56780,11 @@ static void lts_aga_fm2_dpf0_p4_ishres_dhires(void) denise_cck++; } } -static void lts_aga_fm2_dpf0_p4_ishres_dhires_filtered(void) +static void lts_aga_fm2_ham0_p2_ilores_dshres_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_ham1_p2_ilores_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -27780,103 +56795,36 @@ 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; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; - } - shiftbpl4_64(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4_64(); } - loaded_pix = getbpl4_64(); - loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 1; uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - if (dpf_lookup_no[pix1]) { - val1 += dblpfofs[bpldualpf2of]; - } - val1 ^= bplcon4_denise_xor_val; - dpix_val1 = denise_colors.acolors[val1]; - } - last_bpl_pix = pix1; - } - shiftbpl4_64(); - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4_64(); } - loaded_pix = getbpl4_64(); - loaded_pixs[1] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; - } - last_bpl_pix = pix2; } - shiftbpl4_64(); - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4_64(); - } - loaded_pix = getbpl4_64(); - loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 1; uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - uae_u8 val3 = dpf_lookup[pix3]; - if (dpf_lookup_no[pix3]) { - val3 += dblpfofs[bpldualpf2of]; - } - val3 ^= bplcon4_denise_xor_val; - dpix_val3 = denise_colors.acolors[val3]; - } - last_bpl_pix = pix3; - } - shiftbpl4_64(); - if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4_64(); } - loaded_pix = getbpl4_64(); - loaded_pixs[3] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - dpix_val0 = filter_pixel(dpix_val0, dpix_val1); dtbuf[h][0] = dpix_val0; - dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + dtbuf[h][1] = dpix_val1; dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -27885,6 +56833,14 @@ static void lts_aga_fm2_dpf0_p4_ishres_dhires_filtered(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -27893,6 +56849,14 @@ static void lts_aga_fm2_dpf0_p4_ishres_dhires_filtered(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -27916,7 +56880,11 @@ static void lts_aga_fm2_dpf0_p4_ishres_dhires_filtered(void) denise_cck++; } } -static void lts_aga_fm2_dpf1_p4_ishres_dhires(void) +static void lts_aga_fm2_ham1_p2_ilores_dshres_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_kehb0_p2_ilores_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -27927,65 +56895,36 @@ 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; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; } - shiftbpl4_64(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4e_64(); - } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl4o_64(); + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; } - loaded_pix = getbpl4_64(); - loaded_pixs[0] = loaded_pix; - shiftbpl4_64(); - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; - } - last_bpl_pix = pix2; - } - shiftbpl4_64(); - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4e_64(); } - if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { - copybpl4o_64(); + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; } - loaded_pix = getbpl4_64(); - loaded_pixs[2] = loaded_pix; - shiftbpl4_64(); - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -27994,6 +56933,14 @@ static void lts_aga_fm2_dpf1_p4_ishres_dhires(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -28002,6 +56949,14 @@ static void lts_aga_fm2_dpf1_p4_ishres_dhires(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -28025,7 +56980,11 @@ static void lts_aga_fm2_dpf1_p4_ishres_dhires(void) denise_cck++; } } -static void lts_aga_fm2_dpf1_p4_ishres_dhires_filtered(void) +static void lts_aga_fm2_kehb0_p2_ilores_dshres_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_kehb1_p2_ilores_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -28036,115 +56995,36 @@ 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; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; - } - shiftbpl4_64(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4e_64(); - } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl4o_64(); } - loaded_pix = getbpl4_64(); - loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 1; uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - if (dpf_lookup_no[pix1]) { - val1 += dblpfofs[bpldualpf2of]; - } - val1 ^= bplcon4_denise_xor_val; - dpix_val1 = denise_colors.acolors[val1]; - } - last_bpl_pix = pix1; - } - shiftbpl4_64(); - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4e_64(); } - if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { - copybpl4o_64(); - } - loaded_pix = getbpl4_64(); - loaded_pixs[1] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { - dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; - } - last_bpl_pix = pix2; - } - shiftbpl4_64(); - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4e_64(); - } - if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { - copybpl4o_64(); - } - loaded_pix = getbpl4_64(); - loaded_pixs[2] = loaded_pix; - uae_u8 pix3 = 0; - uae_u32 dpix_val3 = BLANK_COLOR; - if (!denise_blank_active) { - dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - uae_u8 val3 = dpf_lookup[pix3]; - if (dpf_lookup_no[pix3]) { - val3 += dblpfofs[bpldualpf2of]; - } - val3 ^= bplcon4_denise_xor_val; - dpix_val3 = denise_colors.acolors[val3]; - } - last_bpl_pix = pix3; - } - shiftbpl4_64(); - if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4e_64(); + dpix_val2 = bordercolor; } - if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) { - copybpl4o_64(); + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; } - loaded_pix = getbpl4_64(); - loaded_pixs[3] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - dpix_val0 = filter_pixel(dpix_val0, dpix_val1); dtbuf[h][0] = dpix_val0; - dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + dtbuf[h][1] = dpix_val1; dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -28153,6 +57033,14 @@ static void lts_aga_fm2_dpf1_p4_ishres_dhires_filtered(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -28161,6 +57049,14 @@ static void lts_aga_fm2_dpf1_p4_ishres_dhires_filtered(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -28184,55 +57080,11 @@ static void lts_aga_fm2_dpf1_p4_ishres_dhires_filtered(void) denise_cck++; } } -static void lts_aga_fm2_ehb0_p4_ishres_dhires(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb0_p4_ishres_dhires_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb1_p4_ishres_dhires(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb1_p4_ishres_dhires_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_ham0_p4_ishres_dhires(void) -{ - lts_null(); -} -static void lts_aga_fm2_ham0_p4_ishres_dhires_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_ham1_p4_ishres_dhires(void) -{ - lts_null(); -} -static void lts_aga_fm2_ham1_p4_ishres_dhires_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb0_p4_ishres_dhires(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb0_p4_ishres_dhires_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb1_p4_ishres_dhires(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb1_p4_ishres_dhires_filtered(void) +static void lts_aga_fm2_kehb1_p2_ilores_dshres_filtered(void) { lts_null(); } -static void lts_aga_fm2_n0_p6_ishres_dhires(void) +static void lts_aga_fm2_n0_p4_ilores_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -28256,14 +57108,43 @@ static void lts_aga_fm2_n0_p6_ishres_dhires(void) } last_bpl_pix = pix0; } - shiftbpl6_64(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6_64(); + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4_64(); + loaded_pix = getbpl4_64(); + } + if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { + copybpl4_64(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4_64(); } - loaded_pix = getbpl6_64(); loaded_pixs[0] = loaded_pix; - shiftbpl6_64(); - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix1; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4_64(); + loaded_pix = getbpl4_64(); + } + if (bpldat_copy[0] && ((cmp | 1) & 255) == bplcon1_shift_full_masked[0]) { + copybpl4_64(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4_64(); + } + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { @@ -28275,17 +57156,48 @@ static void lts_aga_fm2_n0_p6_ishres_dhires(void) } last_bpl_pix = pix2; } - shiftbpl6_64(); - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6_64(); + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4_64(); + loaded_pix = getbpl4_64(); + } + if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { + copybpl4_64(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4_64(); } - loaded_pix = getbpl6_64(); loaded_pixs[2] = loaded_pix; - shiftbpl6_64(); - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix3; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4_64(); + loaded_pix = getbpl4_64(); + } + if (bpldat_copy[0] && ((cmp | 3) & 255) == bplcon1_shift_full_masked[0]) { + copybpl4_64(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4_64(); + } + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -28294,6 +57206,14 @@ static void lts_aga_fm2_n0_p6_ishres_dhires(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -28302,6 +57222,14 @@ static void lts_aga_fm2_n0_p6_ishres_dhires(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -28325,7 +57253,11 @@ static void lts_aga_fm2_n0_p6_ishres_dhires(void) denise_cck++; } } -static void lts_aga_fm2_n0_p6_ishres_dhires_filtered(void) +static void lts_aga_fm2_n0_p4_ilores_dshres_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_n1_p4_ilores_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -28349,12 +57281,30 @@ static void lts_aga_fm2_n0_p6_ishres_dhires_filtered(void) } last_bpl_pix = pix0; } - shiftbpl6_64(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6_64(); + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4e_64(); + loaded_pix = getbpl4_64(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl4o_64(); + loaded_pix = getbpl4_64(); + } + 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] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[1]) { + copybpl4o_64(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl4_64(); } - loaded_pix = getbpl6_64(); loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 1; uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { @@ -28366,13 +57316,30 @@ static void lts_aga_fm2_n0_p6_ishres_dhires_filtered(void) } last_bpl_pix = pix1; } - shiftbpl6_64(); - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6_64(); + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4e_64(); + loaded_pix = getbpl4_64(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl4o_64(); + loaded_pix = getbpl4_64(); + } + 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] && ((cmp | 1) & 255) == bplcon1_shift_full_masked[1]) { + copybpl4o_64(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl4_64(); } - loaded_pix = getbpl6_64(); loaded_pixs[1] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { @@ -28384,12 +57351,30 @@ static void lts_aga_fm2_n0_p6_ishres_dhires_filtered(void) } last_bpl_pix = pix2; } - shiftbpl6_64(); - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6_64(); + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4e_64(); + loaded_pix = getbpl4_64(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl4o_64(); + loaded_pix = getbpl4_64(); + } + 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] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[1]) { + copybpl4o_64(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl4_64(); } - loaded_pix = getbpl6_64(); loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 1; uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { @@ -28401,18 +57386,35 @@ static void lts_aga_fm2_n0_p6_ishres_dhires_filtered(void) } last_bpl_pix = pix3; } - shiftbpl6_64(); - if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6_64(); + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4e_64(); + loaded_pix = getbpl4_64(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl4o_64(); + loaded_pix = getbpl4_64(); + } + 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] && ((cmp | 3) & 255) == bplcon1_shift_full_masked[1]) { + copybpl4o_64(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl4_64(); } - loaded_pix = getbpl6_64(); loaded_pixs[3] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - dpix_val0 = filter_pixel(dpix_val0, dpix_val1); dtbuf[h][0] = dpix_val0; - dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + dtbuf[h][1] = dpix_val1; dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -28421,6 +57423,14 @@ static void lts_aga_fm2_n0_p6_ishres_dhires_filtered(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -28429,6 +57439,14 @@ static void lts_aga_fm2_n0_p6_ishres_dhires_filtered(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -28452,7 +57470,11 @@ static void lts_aga_fm2_n0_p6_ishres_dhires_filtered(void) denise_cck++; } } -static void lts_aga_fm2_n1_p6_ishres_dhires(void) +static void lts_aga_fm2_n1_p4_ilores_dshres_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_dpf0_p4_ilores_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -28472,21 +57494,57 @@ static void lts_aga_fm2_n1_p6_ishres_dhires(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; } last_bpl_pix = pix0; } - shiftbpl6_64(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6e_64(); + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4_64(); + loaded_pix = getbpl4_64(); } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl6o_64(); + if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { + copybpl4_64(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4_64(); } - loaded_pix = getbpl6_64(); loaded_pixs[0] = loaded_pix; - shiftbpl6_64(); - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + uae_u8 val1 = dpf_lookup[pix1]; + if (dpf_lookup_no[pix1]) { + val1 += dblpfofs[bpldualpf2of]; + } + val1 ^= bplcon4_denise_xor_val; + dpix_val1 = denise_colors.acolors[val1]; + } + last_bpl_pix = pix1; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4_64(); + loaded_pix = getbpl4_64(); + } + if (bpldat_copy[0] && ((cmp | 1) & 255) == bplcon1_shift_full_masked[0]) { + copybpl4_64(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4_64(); + } + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { @@ -28494,24 +57552,62 @@ static void lts_aga_fm2_n1_p6_ishres_dhires(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; } last_bpl_pix = pix2; } - shiftbpl6_64(); - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6e_64(); + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4_64(); + loaded_pix = getbpl4_64(); } - if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { - copybpl6o_64(); + if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { + copybpl4_64(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4_64(); } - loaded_pix = getbpl6_64(); loaded_pixs[2] = loaded_pix; - shiftbpl6_64(); - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + uae_u8 val3 = dpf_lookup[pix3]; + if (dpf_lookup_no[pix3]) { + val3 += dblpfofs[bpldualpf2of]; + } + val3 ^= bplcon4_denise_xor_val; + dpix_val3 = denise_colors.acolors[val3]; + } + last_bpl_pix = pix3; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4_64(); + loaded_pix = getbpl4_64(); + } + if (bpldat_copy[0] && ((cmp | 3) & 255) == bplcon1_shift_full_masked[0]) { + copybpl4_64(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4_64(); + } + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -28520,6 +57616,14 @@ static void lts_aga_fm2_n1_p6_ishres_dhires(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -28528,6 +57632,14 @@ static void lts_aga_fm2_n1_p6_ishres_dhires(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -28551,7 +57663,11 @@ static void lts_aga_fm2_n1_p6_ishres_dhires(void) denise_cck++; } } -static void lts_aga_fm2_n1_p6_ishres_dhires_filtered(void) +static void lts_aga_fm2_dpf0_p4_ilores_dshres_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_dpf1_p4_ilores_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -28571,19 +57687,39 @@ static void lts_aga_fm2_n1_p6_ishres_dhires_filtered(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; } last_bpl_pix = pix0; } - shiftbpl6_64(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6e_64(); + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4e_64(); + loaded_pix = getbpl4_64(); } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl6o_64(); + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl4o_64(); + loaded_pix = getbpl4_64(); + } + 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] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[1]) { + copybpl4o_64(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl4_64(); } - loaded_pix = getbpl6_64(); loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 1; uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { @@ -28591,20 +57727,39 @@ static void lts_aga_fm2_n1_p6_ishres_dhires_filtered(void) if (denise_hdiw && bpl1dat_trigger) { pix1 = loaded_pixs[1]; clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; + uae_u8 val1 = dpf_lookup[pix1]; + if (dpf_lookup_no[pix1]) { + val1 += dblpfofs[bpldualpf2of]; + } + val1 ^= bplcon4_denise_xor_val; + dpix_val1 = denise_colors.acolors[val1]; } last_bpl_pix = pix1; } - shiftbpl6_64(); - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6e_64(); + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4e_64(); + loaded_pix = getbpl4_64(); } - if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { - copybpl6o_64(); + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl4o_64(); + loaded_pix = getbpl4_64(); + } + 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] && ((cmp | 1) & 255) == bplcon1_shift_full_masked[1]) { + copybpl4o_64(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl4_64(); } - loaded_pix = getbpl6_64(); loaded_pixs[1] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { @@ -28612,19 +57767,39 @@ static void lts_aga_fm2_n1_p6_ishres_dhires_filtered(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; } last_bpl_pix = pix2; } - shiftbpl6_64(); - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6e_64(); + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4e_64(); + loaded_pix = getbpl4_64(); } - if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { - copybpl6o_64(); + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl4o_64(); + loaded_pix = getbpl4_64(); + } + 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] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[1]) { + copybpl4o_64(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl4_64(); } - loaded_pix = getbpl6_64(); loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 1; uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { @@ -28632,25 +57807,44 @@ static void lts_aga_fm2_n1_p6_ishres_dhires_filtered(void) if (denise_hdiw && bpl1dat_trigger) { pix3 = loaded_pixs[3]; clxdat |= bplcoltable[pix3]; - dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; + uae_u8 val3 = dpf_lookup[pix3]; + if (dpf_lookup_no[pix3]) { + val3 += dblpfofs[bpldualpf2of]; + } + val3 ^= bplcon4_denise_xor_val; + dpix_val3 = denise_colors.acolors[val3]; } last_bpl_pix = pix3; } - shiftbpl6_64(); - if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6e_64(); + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4e_64(); + loaded_pix = getbpl4_64(); } - if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) { - copybpl6o_64(); + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl4o_64(); + loaded_pix = getbpl4_64(); + } + 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] && ((cmp | 3) & 255) == bplcon1_shift_full_masked[1]) { + copybpl4o_64(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl4_64(); } - loaded_pix = getbpl6_64(); loaded_pixs[3] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - dpix_val0 = filter_pixel(dpix_val0, dpix_val1); dtbuf[h][0] = dpix_val0; - dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + dtbuf[h][1] = dpix_val1; dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -28659,6 +57853,14 @@ static void lts_aga_fm2_n1_p6_ishres_dhires_filtered(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -28667,6 +57869,14 @@ static void lts_aga_fm2_n1_p6_ishres_dhires_filtered(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -28690,7 +57900,11 @@ static void lts_aga_fm2_n1_p6_ishres_dhires_filtered(void) denise_cck++; } } -static void lts_aga_fm2_dpf0_p6_ishres_dhires(void) +static void lts_aga_fm2_dpf1_p4_ilores_dshres_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_ehb0_p4_ilores_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -28701,59 +57915,36 @@ 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; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; } - shiftbpl6_64(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6_64(); + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; } - loaded_pix = getbpl6_64(); - loaded_pixs[0] = loaded_pix; - shiftbpl6_64(); - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; - } - last_bpl_pix = pix2; } - shiftbpl6_64(); - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6_64(); + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; } - loaded_pix = getbpl6_64(); - loaded_pixs[2] = loaded_pix; - shiftbpl6_64(); - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -28762,6 +57953,14 @@ static void lts_aga_fm2_dpf0_p6_ishres_dhires(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -28770,6 +57969,14 @@ static void lts_aga_fm2_dpf0_p6_ishres_dhires(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -28793,7 +58000,11 @@ static void lts_aga_fm2_dpf0_p6_ishres_dhires(void) denise_cck++; } } -static void lts_aga_fm2_dpf0_p6_ishres_dhires_filtered(void) +static void lts_aga_fm2_ehb0_p4_ilores_dshres_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_ehb1_p4_ilores_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -28804,103 +58015,36 @@ 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; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; - } - shiftbpl6_64(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6_64(); } - loaded_pix = getbpl6_64(); - loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 1; uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - if (dpf_lookup_no[pix1]) { - val1 += dblpfofs[bpldualpf2of]; - } - val1 ^= bplcon4_denise_xor_val; - dpix_val1 = denise_colors.acolors[val1]; - } - last_bpl_pix = pix1; - } - shiftbpl6_64(); - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6_64(); } - loaded_pix = getbpl6_64(); - loaded_pixs[1] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; - } - last_bpl_pix = pix2; } - shiftbpl6_64(); - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6_64(); - } - loaded_pix = getbpl6_64(); - loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 1; uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - uae_u8 val3 = dpf_lookup[pix3]; - if (dpf_lookup_no[pix3]) { - val3 += dblpfofs[bpldualpf2of]; - } - val3 ^= bplcon4_denise_xor_val; - dpix_val3 = denise_colors.acolors[val3]; - } - last_bpl_pix = pix3; - } - shiftbpl6_64(); - if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6_64(); } - loaded_pix = getbpl6_64(); - loaded_pixs[3] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - dpix_val0 = filter_pixel(dpix_val0, dpix_val1); dtbuf[h][0] = dpix_val0; - dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + dtbuf[h][1] = dpix_val1; dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -28909,6 +58053,14 @@ static void lts_aga_fm2_dpf0_p6_ishres_dhires_filtered(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -28917,6 +58069,14 @@ static void lts_aga_fm2_dpf0_p6_ishres_dhires_filtered(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -28940,7 +58100,11 @@ static void lts_aga_fm2_dpf0_p6_ishres_dhires_filtered(void) denise_cck++; } } -static void lts_aga_fm2_dpf1_p6_ishres_dhires(void) +static void lts_aga_fm2_ehb1_p4_ilores_dshres_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_ham0_p4_ilores_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -28951,65 +58115,36 @@ 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; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; } - shiftbpl6_64(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6e_64(); - } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl6o_64(); + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; } - loaded_pix = getbpl6_64(); - loaded_pixs[0] = loaded_pix; - shiftbpl6_64(); - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; - } - last_bpl_pix = pix2; - } - shiftbpl6_64(); - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6e_64(); } - if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { - copybpl6o_64(); + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; } - loaded_pix = getbpl6_64(); - loaded_pixs[2] = loaded_pix; - shiftbpl6_64(); - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -29018,6 +58153,14 @@ static void lts_aga_fm2_dpf1_p6_ishres_dhires(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -29026,6 +58169,14 @@ static void lts_aga_fm2_dpf1_p6_ishres_dhires(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -29049,7 +58200,11 @@ static void lts_aga_fm2_dpf1_p6_ishres_dhires(void) denise_cck++; } } -static void lts_aga_fm2_dpf1_p6_ishres_dhires_filtered(void) +static void lts_aga_fm2_ham0_p4_ilores_dshres_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_ham1_p4_ilores_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -29060,115 +58215,36 @@ 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; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; - } - shiftbpl6_64(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6e_64(); - } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl6o_64(); } - loaded_pix = getbpl6_64(); - loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 1; uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - if (dpf_lookup_no[pix1]) { - val1 += dblpfofs[bpldualpf2of]; - } - val1 ^= bplcon4_denise_xor_val; - dpix_val1 = denise_colors.acolors[val1]; - } - last_bpl_pix = pix1; - } - shiftbpl6_64(); - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6e_64(); } - if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { - copybpl6o_64(); - } - loaded_pix = getbpl6_64(); - loaded_pixs[1] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; - } - last_bpl_pix = pix2; - } - shiftbpl6_64(); - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6e_64(); - } - if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { - copybpl6o_64(); } - loaded_pix = getbpl6_64(); - loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 1; uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - uae_u8 val3 = dpf_lookup[pix3]; - if (dpf_lookup_no[pix3]) { - val3 += dblpfofs[bpldualpf2of]; - } - val3 ^= bplcon4_denise_xor_val; - dpix_val3 = denise_colors.acolors[val3]; - } - last_bpl_pix = pix3; - } - shiftbpl6_64(); - if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6e_64(); - } - if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) { - copybpl6o_64(); } - loaded_pix = getbpl6_64(); - loaded_pixs[3] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - dpix_val0 = filter_pixel(dpix_val0, dpix_val1); dtbuf[h][0] = dpix_val0; - dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + dtbuf[h][1] = dpix_val1; dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -29177,6 +58253,14 @@ static void lts_aga_fm2_dpf1_p6_ishres_dhires_filtered(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -29185,6 +58269,14 @@ static void lts_aga_fm2_dpf1_p6_ishres_dhires_filtered(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -29208,7 +58300,11 @@ static void lts_aga_fm2_dpf1_p6_ishres_dhires_filtered(void) denise_cck++; } } -static void lts_aga_fm2_ehb0_p6_ishres_dhires(void) +static void lts_aga_fm2_ham1_p4_ilores_dshres_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_kehb0_p4_ilores_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -29219,61 +58315,36 @@ 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; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - pix0 ^= bplcon4_denise_xor_val; - if (!(pix0 & 0x20)) { - dpix_val0 = denise_colors.acolors[pix0]; - } else { - uae_u32 v = (denise_colors.color_regs_aga[pix0 & 0x1f] >> 1) & 0x7f7f7f; - dpix_val0 = CONVERT_RGB(v); - } - } - last_bpl_pix = pix0; } - shiftbpl6_64(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6_64(); + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; } - loaded_pix = getbpl6_64(); - loaded_pixs[0] = loaded_pix; - shiftbpl6_64(); - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - pix2 ^= bplcon4_denise_xor_val; - if (!(pix2 & 0x20)) { - dpix_val2 = denise_colors.acolors[pix2]; - } else { - uae_u32 v = (denise_colors.color_regs_aga[pix2 & 0x1f] >> 1) & 0x7f7f7f; - dpix_val2 = CONVERT_RGB(v); - } - } - last_bpl_pix = pix2; } - shiftbpl6_64(); - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6_64(); + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; } - loaded_pix = getbpl6_64(); - loaded_pixs[2] = loaded_pix; - shiftbpl6_64(); - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -29282,6 +58353,14 @@ static void lts_aga_fm2_ehb0_p6_ishres_dhires(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -29290,6 +58369,14 @@ static void lts_aga_fm2_ehb0_p6_ishres_dhires(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -29313,7 +58400,11 @@ static void lts_aga_fm2_ehb0_p6_ishres_dhires(void) denise_cck++; } } -static void lts_aga_fm2_ehb0_p6_ishres_dhires_filtered(void) +static void lts_aga_fm2_kehb0_p4_ilores_dshres_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_kehb1_p4_ilores_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -29324,107 +58415,36 @@ 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; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - pix0 ^= bplcon4_denise_xor_val; - if (!(pix0 & 0x20)) { - dpix_val0 = denise_colors.acolors[pix0]; - } else { - uae_u32 v = (denise_colors.color_regs_aga[pix0 & 0x1f] >> 1) & 0x7f7f7f; - dpix_val0 = CONVERT_RGB(v); - } - } - last_bpl_pix = pix0; - } - shiftbpl6_64(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6_64(); } - loaded_pix = getbpl6_64(); - loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 1; uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - pix1 ^= bplcon4_denise_xor_val; - if (!(pix1 & 0x20)) { - dpix_val1 = denise_colors.acolors[pix1]; - } else { - uae_u32 v = (denise_colors.color_regs_aga[pix1 & 0x1f] >> 1) & 0x7f7f7f; - dpix_val1 = CONVERT_RGB(v); - } - } - last_bpl_pix = pix1; - } - shiftbpl6_64(); - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6_64(); } - loaded_pix = getbpl6_64(); - loaded_pixs[1] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - pix2 ^= bplcon4_denise_xor_val; - if (!(pix2 & 0x20)) { - dpix_val2 = denise_colors.acolors[pix2]; - } else { - uae_u32 v = (denise_colors.color_regs_aga[pix2 & 0x1f] >> 1) & 0x7f7f7f; - dpix_val2 = CONVERT_RGB(v); - } - } - last_bpl_pix = pix2; - } - shiftbpl6_64(); - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6_64(); } - loaded_pix = getbpl6_64(); - loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 1; uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - pix3 ^= bplcon4_denise_xor_val; - if (!(pix3 & 0x20)) { - dpix_val3 = denise_colors.acolors[pix3]; - } else { - uae_u32 v = (denise_colors.color_regs_aga[pix3 & 0x1f] >> 1) & 0x7f7f7f; - dpix_val3 = CONVERT_RGB(v); - } - } - last_bpl_pix = pix3; - } - shiftbpl6_64(); - if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6_64(); } - loaded_pix = getbpl6_64(); - loaded_pixs[3] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - dpix_val0 = filter_pixel(dpix_val0, dpix_val1); dtbuf[h][0] = dpix_val0; - dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + dtbuf[h][1] = dpix_val1; dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -29433,6 +58453,14 @@ static void lts_aga_fm2_ehb0_p6_ishres_dhires_filtered(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -29441,6 +58469,14 @@ static void lts_aga_fm2_ehb0_p6_ishres_dhires_filtered(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -29464,7 +58500,11 @@ static void lts_aga_fm2_ehb0_p6_ishres_dhires_filtered(void) denise_cck++; } } -static void lts_aga_fm2_ehb1_p6_ishres_dhires(void) +static void lts_aga_fm2_kehb1_p4_ilores_dshres_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_n0_p6_ilores_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -29484,27 +58524,47 @@ static void lts_aga_fm2_ehb1_p6_ishres_dhires(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - pix0 ^= bplcon4_denise_xor_val; - if (!(pix0 & 0x20)) { - dpix_val0 = denise_colors.acolors[pix0]; - } else { - uae_u32 v = (denise_colors.color_regs_aga[pix0 & 0x1f] >> 1) & 0x7f7f7f; - dpix_val0 = CONVERT_RGB(v); - } + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix0; } - shiftbpl6_64(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6e_64(); + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6_64(); + loaded_pix = getbpl6_64(); } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl6o_64(); + if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { + copybpl6_64(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6_64(); } - loaded_pix = getbpl6_64(); loaded_pixs[0] = loaded_pix; - shiftbpl6_64(); - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix1; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6_64(); + loaded_pix = getbpl6_64(); + } + if (bpldat_copy[0] && ((cmp | 1) & 255) == bplcon1_shift_full_masked[0]) { + copybpl6_64(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6_64(); + } + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { @@ -29512,30 +58572,52 @@ static void lts_aga_fm2_ehb1_p6_ishres_dhires(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - pix2 ^= bplcon4_denise_xor_val; - if (!(pix2 & 0x20)) { - dpix_val2 = denise_colors.acolors[pix2]; - } else { - uae_u32 v = (denise_colors.color_regs_aga[pix2 & 0x1f] >> 1) & 0x7f7f7f; - dpix_val2 = CONVERT_RGB(v); - } + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix2; } - shiftbpl6_64(); - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6e_64(); + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6_64(); + loaded_pix = getbpl6_64(); } - if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { - copybpl6o_64(); + if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { + copybpl6_64(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6_64(); } - loaded_pix = getbpl6_64(); loaded_pixs[2] = loaded_pix; - shiftbpl6_64(); - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix3; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6_64(); + loaded_pix = getbpl6_64(); + } + if (bpldat_copy[0] && ((cmp | 3) & 255) == bplcon1_shift_full_masked[0]) { + copybpl6_64(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6_64(); + } + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -29544,6 +58626,14 @@ static void lts_aga_fm2_ehb1_p6_ishres_dhires(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -29552,6 +58642,14 @@ static void lts_aga_fm2_ehb1_p6_ishres_dhires(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -29575,7 +58673,11 @@ static void lts_aga_fm2_ehb1_p6_ishres_dhires(void) denise_cck++; } } -static void lts_aga_fm2_ehb1_p6_ishres_dhires_filtered(void) +static void lts_aga_fm2_n0_p6_ilores_dshres_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_n1_p6_ilores_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -29595,25 +58697,34 @@ static void lts_aga_fm2_ehb1_p6_ishres_dhires_filtered(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - pix0 ^= bplcon4_denise_xor_val; - if (!(pix0 & 0x20)) { - dpix_val0 = denise_colors.acolors[pix0]; - } else { - uae_u32 v = (denise_colors.color_regs_aga[pix0 & 0x1f] >> 1) & 0x7f7f7f; - dpix_val0 = CONVERT_RGB(v); - } + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix0; } - shiftbpl6_64(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6e_64(); + loaded_pix = getbpl6_64(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl6o_64(); + loaded_pix = getbpl6_64(); + } + 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] && ((cmp | 0) & 63) == 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(); } - loaded_pix = getbpl6_64(); loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 1; uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { @@ -29621,26 +58732,34 @@ static void lts_aga_fm2_ehb1_p6_ishres_dhires_filtered(void) if (denise_hdiw && bpl1dat_trigger) { pix1 = loaded_pixs[1]; clxdat |= bplcoltable[pix1]; - pix1 ^= bplcon4_denise_xor_val; - if (!(pix1 & 0x20)) { - dpix_val1 = denise_colors.acolors[pix1]; - } else { - uae_u32 v = (denise_colors.color_regs_aga[pix1 & 0x1f] >> 1) & 0x7f7f7f; - dpix_val1 = CONVERT_RGB(v); - } + dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix1; } - shiftbpl6_64(); - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6e_64(); + loaded_pix = getbpl6_64(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl6o_64(); + loaded_pix = getbpl6_64(); + } + 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] && ((cmp | 1) & 63) == 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(); } - loaded_pix = getbpl6_64(); loaded_pixs[1] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { @@ -29648,25 +58767,34 @@ static void lts_aga_fm2_ehb1_p6_ishres_dhires_filtered(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - pix2 ^= bplcon4_denise_xor_val; - if (!(pix2 & 0x20)) { - dpix_val2 = denise_colors.acolors[pix2]; - } else { - uae_u32 v = (denise_colors.color_regs_aga[pix2 & 0x1f] >> 1) & 0x7f7f7f; - dpix_val2 = CONVERT_RGB(v); - } + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix2; } - shiftbpl6_64(); - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6e_64(); + loaded_pix = getbpl6_64(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl6o_64(); + loaded_pix = getbpl6_64(); + } + 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] && ((cmp | 2) & 63) == 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(); } - loaded_pix = getbpl6_64(); loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 1; uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { @@ -29674,31 +58802,39 @@ static void lts_aga_fm2_ehb1_p6_ishres_dhires_filtered(void) if (denise_hdiw && bpl1dat_trigger) { pix3 = loaded_pixs[3]; clxdat |= bplcoltable[pix3]; - pix3 ^= bplcon4_denise_xor_val; - if (!(pix3 & 0x20)) { - dpix_val3 = denise_colors.acolors[pix3]; - } else { - uae_u32 v = (denise_colors.color_regs_aga[pix3 & 0x1f] >> 1) & 0x7f7f7f; - dpix_val3 = CONVERT_RGB(v); - } + dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix3; } - shiftbpl6_64(); - if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6e_64(); + loaded_pix = getbpl6_64(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl6o_64(); + loaded_pix = getbpl6_64(); + } + 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] && ((cmp | 3) & 63) == 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(); } - loaded_pix = getbpl6_64(); loaded_pixs[3] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - dpix_val0 = filter_pixel(dpix_val0, dpix_val1); dtbuf[h][0] = dpix_val0; - dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + dtbuf[h][1] = dpix_val1; dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -29707,6 +58843,14 @@ static void lts_aga_fm2_ehb1_p6_ishres_dhires_filtered(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -29715,6 +58859,14 @@ static void lts_aga_fm2_ehb1_p6_ishres_dhires_filtered(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -29738,7 +58890,11 @@ static void lts_aga_fm2_ehb1_p6_ishres_dhires_filtered(void) denise_cck++; } } -static void lts_aga_fm2_ham0_p6_ishres_dhires(void) +static void lts_aga_fm2_n1_p6_ilores_dshres_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_dpf0_p6_ilores_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -29758,33 +58914,57 @@ static void lts_aga_fm2_ham0_p6_ishres_dhires(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - dpix_val0 = decode_ham_pixel_aga(pix0); + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; } last_bpl_pix = pix0; } - shiftbpl6_64(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6_64(); + loaded_pix = getbpl6_64(); + } + if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { copybpl6_64(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6_64(); } - loaded_pix = getbpl6_64(); loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 1; uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; if (denise_hdiw && bpl1dat_trigger) { pix1 = loaded_pixs[1]; - decode_ham_pixel_aga(pix1); + clxdat |= bplcoltable[pix1]; + uae_u8 val1 = dpf_lookup[pix1]; + if (dpf_lookup_no[pix1]) { + val1 += dblpfofs[bpldualpf2of]; + } + val1 ^= bplcon4_denise_xor_val; + dpix_val1 = denise_colors.acolors[val1]; } last_bpl_pix = pix1; } - shiftbpl6_64(); - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6_64(); + loaded_pix = getbpl6_64(); + } + if (bpldat_copy[0] && ((cmp | 1) & 255) == bplcon1_shift_full_masked[0]) { copybpl6_64(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6_64(); } - loaded_pix = getbpl6_64(); loaded_pixs[1] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { @@ -29792,36 +58972,62 @@ static void lts_aga_fm2_ham0_p6_ishres_dhires(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - dpix_val2 = decode_ham_pixel_aga(pix2); + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; } last_bpl_pix = pix2; } - shiftbpl6_64(); - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6_64(); + loaded_pix = getbpl6_64(); + } + if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { copybpl6_64(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6_64(); } - loaded_pix = getbpl6_64(); loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 1; uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { dpix_val3 = bordercolor; if (denise_hdiw && bpl1dat_trigger) { pix3 = loaded_pixs[3]; - decode_ham_pixel_aga(pix3); + clxdat |= bplcoltable[pix3]; + uae_u8 val3 = dpf_lookup[pix3]; + if (dpf_lookup_no[pix3]) { + val3 += dblpfofs[bpldualpf2of]; + } + val3 ^= bplcon4_denise_xor_val; + dpix_val3 = denise_colors.acolors[val3]; } last_bpl_pix = pix3; } - shiftbpl6_64(); - if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6_64(); + loaded_pix = getbpl6_64(); + } + if (bpldat_copy[0] && ((cmp | 3) & 255) == bplcon1_shift_full_masked[0]) { copybpl6_64(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6_64(); } - loaded_pix = getbpl6_64(); loaded_pixs[3] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -29830,6 +59036,14 @@ static void lts_aga_fm2_ham0_p6_ishres_dhires(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -29838,6 +59052,14 @@ static void lts_aga_fm2_ham0_p6_ishres_dhires(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -29861,7 +59083,11 @@ static void lts_aga_fm2_ham0_p6_ishres_dhires(void) denise_cck++; } } -static void lts_aga_fm2_ham0_p6_ishres_dhires_filtered(void) +static void lts_aga_fm2_dpf0_p6_ilores_dshres_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_dpf1_p6_ilores_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -29881,16 +59107,39 @@ static void lts_aga_fm2_ham0_p6_ishres_dhires_filtered(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - dpix_val0 = decode_ham_pixel_aga(pix0); + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; } last_bpl_pix = pix0; } - shiftbpl6_64(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6_64(); + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6e_64(); + loaded_pix = getbpl6_64(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl6o_64(); + loaded_pix = getbpl6_64(); + } + 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] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[1]) { + copybpl6o_64(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl6_64(); } - loaded_pix = getbpl6_64(); loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 1; uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { @@ -29898,17 +59147,39 @@ static void lts_aga_fm2_ham0_p6_ishres_dhires_filtered(void) if (denise_hdiw && bpl1dat_trigger) { pix1 = loaded_pixs[1]; clxdat |= bplcoltable[pix1]; - dpix_val1 = decode_ham_pixel_aga(pix1); + uae_u8 val1 = dpf_lookup[pix1]; + if (dpf_lookup_no[pix1]) { + val1 += dblpfofs[bpldualpf2of]; + } + val1 ^= bplcon4_denise_xor_val; + dpix_val1 = denise_colors.acolors[val1]; } last_bpl_pix = pix1; } - shiftbpl6_64(); - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6_64(); + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6e_64(); + loaded_pix = getbpl6_64(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl6o_64(); + loaded_pix = getbpl6_64(); + } + 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] && ((cmp | 1) & 255) == bplcon1_shift_full_masked[1]) { + copybpl6o_64(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl6_64(); } - loaded_pix = getbpl6_64(); loaded_pixs[1] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { @@ -29916,16 +59187,39 @@ static void lts_aga_fm2_ham0_p6_ishres_dhires_filtered(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - dpix_val2 = decode_ham_pixel_aga(pix2); + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; } last_bpl_pix = pix2; } - shiftbpl6_64(); - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6_64(); + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6e_64(); + loaded_pix = getbpl6_64(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl6o_64(); + loaded_pix = getbpl6_64(); + } + 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] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[1]) { + copybpl6o_64(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl6_64(); } - loaded_pix = getbpl6_64(); loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 1; uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { @@ -29933,22 +59227,44 @@ static void lts_aga_fm2_ham0_p6_ishres_dhires_filtered(void) if (denise_hdiw && bpl1dat_trigger) { pix3 = loaded_pixs[3]; clxdat |= bplcoltable[pix3]; - dpix_val3 = decode_ham_pixel_aga(pix3); + uae_u8 val3 = dpf_lookup[pix3]; + if (dpf_lookup_no[pix3]) { + val3 += dblpfofs[bpldualpf2of]; + } + val3 ^= bplcon4_denise_xor_val; + dpix_val3 = denise_colors.acolors[val3]; } last_bpl_pix = pix3; } - shiftbpl6_64(); - if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6_64(); + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6e_64(); + loaded_pix = getbpl6_64(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl6o_64(); + loaded_pix = getbpl6_64(); + } + 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] && ((cmp | 3) & 255) == bplcon1_shift_full_masked[1]) { + copybpl6o_64(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl6_64(); } - loaded_pix = getbpl6_64(); loaded_pixs[3] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - dpix_val0 = filter_pixel(dpix_val0, dpix_val1); dtbuf[h][0] = dpix_val0; - dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + dtbuf[h][1] = dpix_val1; dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -29957,6 +59273,14 @@ static void lts_aga_fm2_ham0_p6_ishres_dhires_filtered(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -29965,6 +59289,14 @@ static void lts_aga_fm2_ham0_p6_ishres_dhires_filtered(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -29988,7 +59320,11 @@ static void lts_aga_fm2_ham0_p6_ishres_dhires_filtered(void) denise_cck++; } } -static void lts_aga_fm2_ham1_p6_ishres_dhires(void) +static void lts_aga_fm2_dpf1_p6_ilores_dshres_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_ehb0_p6_ilores_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -30008,39 +59344,59 @@ static void lts_aga_fm2_ham1_p6_ishres_dhires(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - dpix_val0 = decode_ham_pixel_aga(pix0); + pix0 ^= bplcon4_denise_xor_val; + if (!(pix0 & 0x20)) { + dpix_val0 = denise_colors.acolors[pix0]; + } else { + uae_u32 v = (denise_colors.color_regs_aga[pix0 & 0x1f] >> 1) & 0x7f7f7f; + dpix_val0 = CONVERT_RGB(v); + } } last_bpl_pix = pix0; } - shiftbpl6_64(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6e_64(); + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6_64(); + loaded_pix = getbpl6_64(); } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl6o_64(); + if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { + copybpl6_64(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6_64(); } - loaded_pix = getbpl6_64(); loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 1; uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; if (denise_hdiw && bpl1dat_trigger) { pix1 = loaded_pixs[1]; - decode_ham_pixel_aga(pix1); + clxdat |= bplcoltable[pix1]; + pix1 ^= bplcon4_denise_xor_val; + if (!(pix1 & 0x20)) { + dpix_val1 = denise_colors.acolors[pix1]; + } else { + uae_u32 v = (denise_colors.color_regs_aga[pix1 & 0x1f] >> 1) & 0x7f7f7f; + dpix_val1 = CONVERT_RGB(v); + } } last_bpl_pix = pix1; } - shiftbpl6_64(); - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6e_64(); + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6_64(); + loaded_pix = getbpl6_64(); } - if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { - copybpl6o_64(); + if (bpldat_copy[0] && ((cmp | 1) & 255) == bplcon1_shift_full_masked[0]) { + copybpl6_64(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6_64(); } - loaded_pix = getbpl6_64(); loaded_pixs[1] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { @@ -30048,42 +59404,64 @@ static void lts_aga_fm2_ham1_p6_ishres_dhires(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - dpix_val2 = decode_ham_pixel_aga(pix2); + pix2 ^= bplcon4_denise_xor_val; + if (!(pix2 & 0x20)) { + dpix_val2 = denise_colors.acolors[pix2]; + } else { + uae_u32 v = (denise_colors.color_regs_aga[pix2 & 0x1f] >> 1) & 0x7f7f7f; + dpix_val2 = CONVERT_RGB(v); + } } last_bpl_pix = pix2; } - shiftbpl6_64(); - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6e_64(); + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6_64(); + loaded_pix = getbpl6_64(); } - if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { - copybpl6o_64(); + if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { + copybpl6_64(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6_64(); } - loaded_pix = getbpl6_64(); loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 1; uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { dpix_val3 = bordercolor; if (denise_hdiw && bpl1dat_trigger) { pix3 = loaded_pixs[3]; - decode_ham_pixel_aga(pix3); + clxdat |= bplcoltable[pix3]; + pix3 ^= bplcon4_denise_xor_val; + if (!(pix3 & 0x20)) { + dpix_val3 = denise_colors.acolors[pix3]; + } else { + uae_u32 v = (denise_colors.color_regs_aga[pix3 & 0x1f] >> 1) & 0x7f7f7f; + dpix_val3 = CONVERT_RGB(v); + } } last_bpl_pix = pix3; } - shiftbpl6_64(); - if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6e_64(); + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6_64(); + loaded_pix = getbpl6_64(); } - if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) { - copybpl6o_64(); + if (bpldat_copy[0] && ((cmp | 3) & 255) == bplcon1_shift_full_masked[0]) { + copybpl6_64(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6_64(); } - loaded_pix = getbpl6_64(); loaded_pixs[3] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -30092,6 +59470,14 @@ static void lts_aga_fm2_ham1_p6_ishres_dhires(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -30100,6 +59486,14 @@ static void lts_aga_fm2_ham1_p6_ishres_dhires(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -30123,7 +59517,11 @@ static void lts_aga_fm2_ham1_p6_ishres_dhires(void) denise_cck++; } } -static void lts_aga_fm2_ham1_p6_ishres_dhires_filtered(void) +static void lts_aga_fm2_ehb0_p6_ilores_dshres_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_ehb1_p6_ilores_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -30143,19 +59541,40 @@ static void lts_aga_fm2_ham1_p6_ishres_dhires_filtered(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - dpix_val0 = decode_ham_pixel_aga(pix0); + pix0 ^= bplcon4_denise_xor_val; + if (!(pix0 & 0x20)) { + dpix_val0 = denise_colors.acolors[pix0]; + } else { + uae_u32 v = (denise_colors.color_regs_aga[pix0 & 0x1f] >> 1) & 0x7f7f7f; + dpix_val0 = CONVERT_RGB(v); + } } last_bpl_pix = pix0; } - shiftbpl6_64(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6e_64(); + loaded_pix = getbpl6_64(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl6o_64(); + loaded_pix = getbpl6_64(); + } + 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] && ((cmp | 0) & 63) == 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(); } - loaded_pix = getbpl6_64(); loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 1; uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { @@ -30163,20 +59582,40 @@ static void lts_aga_fm2_ham1_p6_ishres_dhires_filtered(void) if (denise_hdiw && bpl1dat_trigger) { pix1 = loaded_pixs[1]; clxdat |= bplcoltable[pix1]; - dpix_val1 = decode_ham_pixel_aga(pix1); + pix1 ^= bplcon4_denise_xor_val; + if (!(pix1 & 0x20)) { + dpix_val1 = denise_colors.acolors[pix1]; + } else { + uae_u32 v = (denise_colors.color_regs_aga[pix1 & 0x1f] >> 1) & 0x7f7f7f; + dpix_val1 = CONVERT_RGB(v); + } } last_bpl_pix = pix1; } - shiftbpl6_64(); - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6e_64(); + loaded_pix = getbpl6_64(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl6o_64(); + loaded_pix = getbpl6_64(); + } + 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] && ((cmp | 1) & 63) == 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(); } - loaded_pix = getbpl6_64(); loaded_pixs[1] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { @@ -30184,19 +59623,40 @@ static void lts_aga_fm2_ham1_p6_ishres_dhires_filtered(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - dpix_val2 = decode_ham_pixel_aga(pix2); + pix2 ^= bplcon4_denise_xor_val; + if (!(pix2 & 0x20)) { + dpix_val2 = denise_colors.acolors[pix2]; + } else { + uae_u32 v = (denise_colors.color_regs_aga[pix2 & 0x1f] >> 1) & 0x7f7f7f; + dpix_val2 = CONVERT_RGB(v); + } } last_bpl_pix = pix2; } - shiftbpl6_64(); - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6e_64(); + loaded_pix = getbpl6_64(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl6o_64(); + loaded_pix = getbpl6_64(); + } + 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] && ((cmp | 2) & 63) == 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(); } - loaded_pix = getbpl6_64(); loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 1; uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { @@ -30204,25 +59664,45 @@ static void lts_aga_fm2_ham1_p6_ishres_dhires_filtered(void) if (denise_hdiw && bpl1dat_trigger) { pix3 = loaded_pixs[3]; clxdat |= bplcoltable[pix3]; - dpix_val3 = decode_ham_pixel_aga(pix3); + pix3 ^= bplcon4_denise_xor_val; + if (!(pix3 & 0x20)) { + dpix_val3 = denise_colors.acolors[pix3]; + } else { + uae_u32 v = (denise_colors.color_regs_aga[pix3 & 0x1f] >> 1) & 0x7f7f7f; + dpix_val3 = CONVERT_RGB(v); + } } last_bpl_pix = pix3; } - shiftbpl6_64(); - if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6e_64(); + loaded_pix = getbpl6_64(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl6o_64(); + loaded_pix = getbpl6_64(); + } + 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] && ((cmp | 3) & 63) == 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(); } - loaded_pix = getbpl6_64(); loaded_pixs[3] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - dpix_val0 = filter_pixel(dpix_val0, dpix_val1); dtbuf[h][0] = dpix_val0; - dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + dtbuf[h][1] = dpix_val1; dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -30231,6 +59711,14 @@ static void lts_aga_fm2_ham1_p6_ishres_dhires_filtered(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -30239,6 +59727,14 @@ static void lts_aga_fm2_ham1_p6_ishres_dhires_filtered(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -30262,7 +59758,11 @@ static void lts_aga_fm2_ham1_p6_ishres_dhires_filtered(void) denise_cck++; } } -static void lts_aga_fm2_kehb0_p6_ishres_dhires(void) +static void lts_aga_fm2_ehb1_p6_ilores_dshres_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_ham0_p6_ilores_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -30282,19 +59782,47 @@ static void lts_aga_fm2_kehb0_p6_ishres_dhires(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - pix0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[pix0 & 31]; + dpix_val0 = decode_ham_pixel_aga(pix0); } last_bpl_pix = pix0; } - shiftbpl6_64(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6_64(); + loaded_pix = getbpl6_64(); + } + if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { copybpl6_64(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6_64(); } - loaded_pix = getbpl6_64(); loaded_pixs[0] = loaded_pix; - shiftbpl6_64(); - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + dpix_val1 = decode_ham_pixel_aga(pix1); + } + last_bpl_pix = pix1; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6_64(); + loaded_pix = getbpl6_64(); + } + if (bpldat_copy[0] && ((cmp | 1) & 255) == bplcon1_shift_full_masked[0]) { + copybpl6_64(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6_64(); + } + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { @@ -30302,22 +59830,52 @@ static void lts_aga_fm2_kehb0_p6_ishres_dhires(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - pix2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[pix2 & 31]; + dpix_val2 = decode_ham_pixel_aga(pix2); + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6_64(); + loaded_pix = getbpl6_64(); + } + if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { + copybpl6_64(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6_64(); + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + dpix_val3 = decode_ham_pixel_aga(pix3); } - last_bpl_pix = pix2; + last_bpl_pix = pix3; } - shiftbpl6_64(); - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6_64(); + loaded_pix = getbpl6_64(); + } + if (bpldat_copy[0] && ((cmp | 3) & 255) == bplcon1_shift_full_masked[0]) { copybpl6_64(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6_64(); } - loaded_pix = getbpl6_64(); - loaded_pixs[2] = loaded_pix; - shiftbpl6_64(); - internal_pixel_cnt += 2; + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -30326,6 +59884,14 @@ static void lts_aga_fm2_kehb0_p6_ishres_dhires(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -30334,6 +59900,14 @@ static void lts_aga_fm2_kehb0_p6_ishres_dhires(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -30357,7 +59931,11 @@ static void lts_aga_fm2_kehb0_p6_ishres_dhires(void) denise_cck++; } } -static void lts_aga_fm2_kehb0_p6_ishres_dhires_filtered(void) +static void lts_aga_fm2_ham0_p6_ilores_dshres_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_ham1_p6_ilores_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -30377,17 +59955,34 @@ static void lts_aga_fm2_kehb0_p6_ishres_dhires_filtered(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - pix0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[pix0 & 31]; + dpix_val0 = decode_ham_pixel_aga(pix0); } last_bpl_pix = pix0; } - shiftbpl6_64(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6_64(); + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6e_64(); + loaded_pix = getbpl6_64(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl6o_64(); + loaded_pix = getbpl6_64(); + } + 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] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[1]) { + copybpl6o_64(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl6_64(); } - loaded_pix = getbpl6_64(); loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 1; uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { @@ -30395,18 +59990,34 @@ static void lts_aga_fm2_kehb0_p6_ishres_dhires_filtered(void) if (denise_hdiw && bpl1dat_trigger) { pix1 = loaded_pixs[1]; clxdat |= bplcoltable[pix1]; - pix1 ^= bplcon4_denise_xor_val; - dpix_val1 = denise_colors.acolors[pix1 & 31]; + dpix_val1 = decode_ham_pixel_aga(pix1); } last_bpl_pix = pix1; } - shiftbpl6_64(); - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6_64(); + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6e_64(); + loaded_pix = getbpl6_64(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl6o_64(); + loaded_pix = getbpl6_64(); + } + 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] && ((cmp | 1) & 255) == bplcon1_shift_full_masked[1]) { + copybpl6o_64(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl6_64(); } - loaded_pix = getbpl6_64(); loaded_pixs[1] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { @@ -30414,17 +60025,34 @@ static void lts_aga_fm2_kehb0_p6_ishres_dhires_filtered(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - pix2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[pix2 & 31]; + dpix_val2 = decode_ham_pixel_aga(pix2); } last_bpl_pix = pix2; } - shiftbpl6_64(); - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6_64(); + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6e_64(); + loaded_pix = getbpl6_64(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl6o_64(); + loaded_pix = getbpl6_64(); + } + 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] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[1]) { + copybpl6o_64(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl6_64(); } - loaded_pix = getbpl6_64(); loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 1; uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { @@ -30432,23 +60060,39 @@ static void lts_aga_fm2_kehb0_p6_ishres_dhires_filtered(void) if (denise_hdiw && bpl1dat_trigger) { pix3 = loaded_pixs[3]; clxdat |= bplcoltable[pix3]; - pix3 ^= bplcon4_denise_xor_val; - dpix_val3 = denise_colors.acolors[pix3 & 31]; + dpix_val3 = decode_ham_pixel_aga(pix3); } last_bpl_pix = pix3; } - shiftbpl6_64(); - if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6_64(); + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6e_64(); + loaded_pix = getbpl6_64(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl6o_64(); + loaded_pix = getbpl6_64(); + } + 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] && ((cmp | 3) & 255) == bplcon1_shift_full_masked[1]) { + copybpl6o_64(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl6_64(); } - loaded_pix = getbpl6_64(); loaded_pixs[3] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - dpix_val0 = filter_pixel(dpix_val0, dpix_val1); dtbuf[h][0] = dpix_val0; - dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + dtbuf[h][1] = dpix_val1; dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -30457,6 +60101,14 @@ static void lts_aga_fm2_kehb0_p6_ishres_dhires_filtered(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -30465,6 +60117,14 @@ static void lts_aga_fm2_kehb0_p6_ishres_dhires_filtered(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -30488,7 +60148,11 @@ static void lts_aga_fm2_kehb0_p6_ishres_dhires_filtered(void) denise_cck++; } } -static void lts_aga_fm2_kehb1_p6_ishres_dhires(void) +static void lts_aga_fm2_ham1_p6_ilores_dshres_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_kehb0_p6_ilores_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -30513,17 +60177,44 @@ static void lts_aga_fm2_kehb1_p6_ishres_dhires(void) } last_bpl_pix = pix0; } - shiftbpl6_64(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6e_64(); + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6_64(); + loaded_pix = getbpl6_64(); } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl6o_64(); + if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { + copybpl6_64(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6_64(); } - loaded_pix = getbpl6_64(); loaded_pixs[0] = loaded_pix; - shiftbpl6_64(); - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + pix1 ^= bplcon4_denise_xor_val; + dpix_val1 = denise_colors.acolors[pix1 & 31]; + } + last_bpl_pix = pix1; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6_64(); + loaded_pix = getbpl6_64(); + } + if (bpldat_copy[0] && ((cmp | 1) & 255) == bplcon1_shift_full_masked[0]) { + copybpl6_64(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6_64(); + } + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { @@ -30536,20 +60227,49 @@ static void lts_aga_fm2_kehb1_p6_ishres_dhires(void) } last_bpl_pix = pix2; } - shiftbpl6_64(); - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6e_64(); + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6_64(); + loaded_pix = getbpl6_64(); } - if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { - copybpl6o_64(); + if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { + copybpl6_64(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6_64(); } - loaded_pix = getbpl6_64(); loaded_pixs[2] = loaded_pix; - shiftbpl6_64(); - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + pix3 ^= bplcon4_denise_xor_val; + dpix_val3 = denise_colors.acolors[pix3 & 31]; + } + last_bpl_pix = pix3; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6_64(); + loaded_pix = getbpl6_64(); + } + if (bpldat_copy[0] && ((cmp | 3) & 255) == bplcon1_shift_full_masked[0]) { + copybpl6_64(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6_64(); + } + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -30558,6 +60278,14 @@ static void lts_aga_fm2_kehb1_p6_ishres_dhires(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -30566,6 +60294,14 @@ static void lts_aga_fm2_kehb1_p6_ishres_dhires(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -30589,7 +60325,11 @@ static void lts_aga_fm2_kehb1_p6_ishres_dhires(void) denise_cck++; } } -static void lts_aga_fm2_kehb1_p6_ishres_dhires_filtered(void) +static void lts_aga_fm2_kehb0_p6_ilores_dshres_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_kehb1_p6_ilores_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -30614,15 +60354,30 @@ static void lts_aga_fm2_kehb1_p6_ishres_dhires_filtered(void) } last_bpl_pix = pix0; } - shiftbpl6_64(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6e_64(); + loaded_pix = getbpl6_64(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl6o_64(); + loaded_pix = getbpl6_64(); + } + 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] && ((cmp | 0) & 63) == 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(); } - loaded_pix = getbpl6_64(); loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 1; uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { @@ -30635,16 +60390,30 @@ static void lts_aga_fm2_kehb1_p6_ishres_dhires_filtered(void) } last_bpl_pix = pix1; } - shiftbpl6_64(); - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6e_64(); + loaded_pix = getbpl6_64(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl6o_64(); + loaded_pix = getbpl6_64(); + } + 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] && ((cmp | 1) & 63) == 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(); } - loaded_pix = getbpl6_64(); loaded_pixs[1] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { @@ -30657,15 +60426,30 @@ static void lts_aga_fm2_kehb1_p6_ishres_dhires_filtered(void) } last_bpl_pix = pix2; } - shiftbpl6_64(); - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6e_64(); + loaded_pix = getbpl6_64(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl6o_64(); + loaded_pix = getbpl6_64(); + } + 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] && ((cmp | 2) & 63) == 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(); } - loaded_pix = getbpl6_64(); loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 1; uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { @@ -30678,21 +60462,35 @@ static void lts_aga_fm2_kehb1_p6_ishres_dhires_filtered(void) } last_bpl_pix = pix3; } - shiftbpl6_64(); - if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6e_64(); + loaded_pix = getbpl6_64(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl6o_64(); + loaded_pix = getbpl6_64(); + } + 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] && ((cmp | 3) & 63) == 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(); } - loaded_pix = getbpl6_64(); loaded_pixs[3] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - dpix_val0 = filter_pixel(dpix_val0, dpix_val1); dtbuf[h][0] = dpix_val0; - dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + dtbuf[h][1] = dpix_val1; dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -30701,6 +60499,14 @@ static void lts_aga_fm2_kehb1_p6_ishres_dhires_filtered(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -30709,6 +60515,14 @@ static void lts_aga_fm2_kehb1_p6_ishres_dhires_filtered(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -30732,7 +60546,11 @@ static void lts_aga_fm2_kehb1_p6_ishres_dhires_filtered(void) denise_cck++; } } -static void lts_aga_fm2_n0_p8_ishres_dhires(void) +static void lts_aga_fm2_kehb1_p6_ilores_dshres_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_n0_p8_ilores_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -30756,14 +60574,43 @@ static void lts_aga_fm2_n0_p8_ishres_dhires(void) } last_bpl_pix = pix0; } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8_64(); + loaded_pix = getbpl8_64(); + } + if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { copybpl8_64(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8_64(); } - loaded_pix = getbpl8_64(); loaded_pixs[0] = loaded_pix; - shiftbpl8_64(); - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix1; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8_64(); + loaded_pix = getbpl8_64(); + } + if (bpldat_copy[0] && ((cmp | 1) & 255) == bplcon1_shift_full_masked[0]) { + copybpl8_64(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8_64(); + } + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { @@ -30775,17 +60622,48 @@ static void lts_aga_fm2_n0_p8_ishres_dhires(void) } last_bpl_pix = pix2; } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8_64(); + loaded_pix = getbpl8_64(); + } + if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { copybpl8_64(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8_64(); } - loaded_pix = getbpl8_64(); loaded_pixs[2] = loaded_pix; - shiftbpl8_64(); - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix3; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8_64(); + loaded_pix = getbpl8_64(); + } + if (bpldat_copy[0] && ((cmp | 3) & 255) == bplcon1_shift_full_masked[0]) { + copybpl8_64(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8_64(); + } + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -30794,6 +60672,14 @@ static void lts_aga_fm2_n0_p8_ishres_dhires(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -30802,6 +60688,14 @@ static void lts_aga_fm2_n0_p8_ishres_dhires(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -30825,7 +60719,11 @@ static void lts_aga_fm2_n0_p8_ishres_dhires(void) denise_cck++; } } -static void lts_aga_fm2_n0_p8_ishres_dhires_filtered(void) +static void lts_aga_fm2_n0_p8_ilores_dshres_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_n1_p8_ilores_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -30849,12 +60747,30 @@ static void lts_aga_fm2_n0_p8_ishres_dhires_filtered(void) } last_bpl_pix = pix0; } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8e_64(); + loaded_pix = getbpl8_64(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl8o_64(); + loaded_pix = getbpl8_64(); + } + 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] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[1]) { + copybpl8o_64(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl8_64(); } - loaded_pix = getbpl8_64(); loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 1; uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { @@ -30866,13 +60782,30 @@ static void lts_aga_fm2_n0_p8_ishres_dhires_filtered(void) } last_bpl_pix = pix1; } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8e_64(); + loaded_pix = getbpl8_64(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl8o_64(); + loaded_pix = getbpl8_64(); + } + 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] && ((cmp | 1) & 255) == bplcon1_shift_full_masked[1]) { + copybpl8o_64(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl8_64(); } - loaded_pix = getbpl8_64(); loaded_pixs[1] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { @@ -30884,12 +60817,30 @@ static void lts_aga_fm2_n0_p8_ishres_dhires_filtered(void) } last_bpl_pix = pix2; } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8e_64(); + loaded_pix = getbpl8_64(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl8o_64(); + loaded_pix = getbpl8_64(); + } + 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] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[1]) { + copybpl8o_64(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl8_64(); } - loaded_pix = getbpl8_64(); loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 1; uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { @@ -30901,18 +60852,35 @@ static void lts_aga_fm2_n0_p8_ishres_dhires_filtered(void) } last_bpl_pix = pix3; } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8e_64(); + loaded_pix = getbpl8_64(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl8o_64(); + loaded_pix = getbpl8_64(); + } + 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] && ((cmp | 3) & 255) == bplcon1_shift_full_masked[1]) { + copybpl8o_64(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl8_64(); } - loaded_pix = getbpl8_64(); loaded_pixs[3] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - dpix_val0 = filter_pixel(dpix_val0, dpix_val1); dtbuf[h][0] = dpix_val0; - dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + dtbuf[h][1] = dpix_val1; dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -30921,6 +60889,14 @@ static void lts_aga_fm2_n0_p8_ishres_dhires_filtered(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -30929,6 +60905,14 @@ static void lts_aga_fm2_n0_p8_ishres_dhires_filtered(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -30952,7 +60936,11 @@ static void lts_aga_fm2_n0_p8_ishres_dhires_filtered(void) denise_cck++; } } -static void lts_aga_fm2_n1_p8_ishres_dhires(void) +static void lts_aga_fm2_n1_p8_ilores_dshres_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_dpf0_p8_ilores_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -30972,21 +60960,57 @@ static void lts_aga_fm2_n1_p8_ishres_dhires(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; } last_bpl_pix = pix0; } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e_64(); + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8_64(); + loaded_pix = getbpl8_64(); } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); + if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { + copybpl8_64(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8_64(); } - loaded_pix = getbpl8_64(); loaded_pixs[0] = loaded_pix; - shiftbpl8_64(); - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + uae_u8 val1 = dpf_lookup[pix1]; + if (dpf_lookup_no[pix1]) { + val1 += dblpfofs[bpldualpf2of]; + } + val1 ^= bplcon4_denise_xor_val; + dpix_val1 = denise_colors.acolors[val1]; + } + last_bpl_pix = pix1; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8_64(); + loaded_pix = getbpl8_64(); + } + if (bpldat_copy[0] && ((cmp | 1) & 255) == bplcon1_shift_full_masked[0]) { + copybpl8_64(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8_64(); + } + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { @@ -30994,24 +61018,62 @@ static void lts_aga_fm2_n1_p8_ishres_dhires(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; } last_bpl_pix = pix2; } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e_64(); + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8_64(); + loaded_pix = getbpl8_64(); } - if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); + if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { + copybpl8_64(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8_64(); } - loaded_pix = getbpl8_64(); loaded_pixs[2] = loaded_pix; - shiftbpl8_64(); - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + uae_u8 val3 = dpf_lookup[pix3]; + if (dpf_lookup_no[pix3]) { + val3 += dblpfofs[bpldualpf2of]; + } + val3 ^= bplcon4_denise_xor_val; + dpix_val3 = denise_colors.acolors[val3]; + } + last_bpl_pix = pix3; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8_64(); + loaded_pix = getbpl8_64(); + } + if (bpldat_copy[0] && ((cmp | 3) & 255) == bplcon1_shift_full_masked[0]) { + copybpl8_64(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8_64(); + } + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -31020,6 +61082,14 @@ static void lts_aga_fm2_n1_p8_ishres_dhires(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -31028,6 +61098,14 @@ static void lts_aga_fm2_n1_p8_ishres_dhires(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -31051,7 +61129,11 @@ static void lts_aga_fm2_n1_p8_ishres_dhires(void) denise_cck++; } } -static void lts_aga_fm2_n1_p8_ishres_dhires_filtered(void) +static void lts_aga_fm2_dpf0_p8_ilores_dshres_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_dpf1_p8_ilores_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -31071,19 +61153,39 @@ static void lts_aga_fm2_n1_p8_ishres_dhires_filtered(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; } last_bpl_pix = pix0; } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8e_64(); + loaded_pix = getbpl8_64(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl8o_64(); + loaded_pix = getbpl8_64(); + } + 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] && ((cmp | 0) & 63) == 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(); } - loaded_pix = getbpl8_64(); loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 1; uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { @@ -31091,20 +61193,39 @@ static void lts_aga_fm2_n1_p8_ishres_dhires_filtered(void) if (denise_hdiw && bpl1dat_trigger) { pix1 = loaded_pixs[1]; clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; + uae_u8 val1 = dpf_lookup[pix1]; + if (dpf_lookup_no[pix1]) { + val1 += dblpfofs[bpldualpf2of]; + } + val1 ^= bplcon4_denise_xor_val; + dpix_val1 = denise_colors.acolors[val1]; } last_bpl_pix = pix1; } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8e_64(); + loaded_pix = getbpl8_64(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl8o_64(); + loaded_pix = getbpl8_64(); + } + 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] && ((cmp | 1) & 63) == 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(); } - loaded_pix = getbpl8_64(); loaded_pixs[1] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { @@ -31112,19 +61233,39 @@ static void lts_aga_fm2_n1_p8_ishres_dhires_filtered(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; } last_bpl_pix = pix2; } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8e_64(); + loaded_pix = getbpl8_64(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl8o_64(); + loaded_pix = getbpl8_64(); + } + 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] && ((cmp | 2) & 63) == 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(); } - loaded_pix = getbpl8_64(); loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 1; uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { @@ -31132,25 +61273,44 @@ static void lts_aga_fm2_n1_p8_ishres_dhires_filtered(void) if (denise_hdiw && bpl1dat_trigger) { pix3 = loaded_pixs[3]; clxdat |= bplcoltable[pix3]; - dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; + uae_u8 val3 = dpf_lookup[pix3]; + if (dpf_lookup_no[pix3]) { + val3 += dblpfofs[bpldualpf2of]; + } + val3 ^= bplcon4_denise_xor_val; + dpix_val3 = denise_colors.acolors[val3]; } last_bpl_pix = pix3; } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8e_64(); + loaded_pix = getbpl8_64(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl8o_64(); + loaded_pix = getbpl8_64(); + } + 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] && ((cmp | 3) & 63) == 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(); } - loaded_pix = getbpl8_64(); loaded_pixs[3] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - dpix_val0 = filter_pixel(dpix_val0, dpix_val1); dtbuf[h][0] = dpix_val0; - dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + dtbuf[h][1] = dpix_val1; dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -31159,6 +61319,14 @@ static void lts_aga_fm2_n1_p8_ishres_dhires_filtered(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -31167,6 +61335,14 @@ static void lts_aga_fm2_n1_p8_ishres_dhires_filtered(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -31190,7 +61366,11 @@ static void lts_aga_fm2_n1_p8_ishres_dhires_filtered(void) denise_cck++; } } -static void lts_aga_fm2_dpf0_p8_ishres_dhires(void) +static void lts_aga_fm2_dpf1_p8_ilores_dshres_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_ehb0_p8_ilores_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -31201,59 +61381,36 @@ 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; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; } - loaded_pix = getbpl8_64(); - loaded_pixs[0] = loaded_pix; - shiftbpl8_64(); - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; - } - last_bpl_pix = pix2; } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; } - loaded_pix = getbpl8_64(); - loaded_pixs[2] = loaded_pix; - shiftbpl8_64(); - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -31262,6 +61419,14 @@ static void lts_aga_fm2_dpf0_p8_ishres_dhires(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -31270,6 +61435,14 @@ static void lts_aga_fm2_dpf0_p8_ishres_dhires(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -31293,7 +61466,11 @@ static void lts_aga_fm2_dpf0_p8_ishres_dhires(void) denise_cck++; } } -static void lts_aga_fm2_dpf0_p8_ishres_dhires_filtered(void) +static void lts_aga_fm2_ehb0_p8_ilores_dshres_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_ehb1_p8_ilores_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -31304,103 +61481,36 @@ 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; - if (!denise_blank_active) { - dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; - } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; } - loaded_pix = getbpl8_64(); - loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 1; uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - if (dpf_lookup_no[pix1]) { - val1 += dblpfofs[bpldualpf2of]; - } - val1 ^= bplcon4_denise_xor_val; - dpix_val1 = denise_colors.acolors[val1]; - } - last_bpl_pix = pix1; - } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); } - loaded_pix = getbpl8_64(); - loaded_pixs[1] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; - } - last_bpl_pix = pix2; - } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); } - loaded_pix = getbpl8_64(); - loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 1; uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - uae_u8 val3 = dpf_lookup[pix3]; - if (dpf_lookup_no[pix3]) { - val3 += dblpfofs[bpldualpf2of]; - } - val3 ^= bplcon4_denise_xor_val; - dpix_val3 = denise_colors.acolors[val3]; - } - last_bpl_pix = pix3; - } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); } - loaded_pix = getbpl8_64(); - loaded_pixs[3] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - dpix_val0 = filter_pixel(dpix_val0, dpix_val1); dtbuf[h][0] = dpix_val0; - dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + dtbuf[h][1] = dpix_val1; dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -31409,6 +61519,14 @@ static void lts_aga_fm2_dpf0_p8_ishres_dhires_filtered(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -31417,6 +61535,14 @@ static void lts_aga_fm2_dpf0_p8_ishres_dhires_filtered(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -31440,7 +61566,11 @@ static void lts_aga_fm2_dpf0_p8_ishres_dhires_filtered(void) denise_cck++; } } -static void lts_aga_fm2_dpf1_p8_ishres_dhires(void) +static void lts_aga_fm2_ehb1_p8_ilores_dshres_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_ham0_p8_ilores_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -31460,26 +61590,47 @@ static void lts_aga_fm2_dpf1_p8_ishres_dhires(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; + dpix_val0 = decode_ham_pixel_aga(pix0); } last_bpl_pix = pix0; } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e_64(); + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8_64(); + loaded_pix = getbpl8_64(); } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); + if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { + copybpl8_64(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8_64(); } - loaded_pix = getbpl8_64(); loaded_pixs[0] = loaded_pix; - shiftbpl8_64(); - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + dpix_val1 = decode_ham_pixel_aga(pix1); + } + last_bpl_pix = pix1; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8_64(); + loaded_pix = getbpl8_64(); + } + if (bpldat_copy[0] && ((cmp | 1) & 255) == bplcon1_shift_full_masked[0]) { + copybpl8_64(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8_64(); + } + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { @@ -31487,29 +61638,52 @@ static void lts_aga_fm2_dpf1_p8_ishres_dhires(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; + dpix_val2 = decode_ham_pixel_aga(pix2); } last_bpl_pix = pix2; } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e_64(); + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8_64(); + loaded_pix = getbpl8_64(); } - if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); + if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { + copybpl8_64(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8_64(); } - loaded_pix = getbpl8_64(); loaded_pixs[2] = loaded_pix; - shiftbpl8_64(); - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + dpix_val3 = decode_ham_pixel_aga(pix3); + } + last_bpl_pix = pix3; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8_64(); + loaded_pix = getbpl8_64(); + } + if (bpldat_copy[0] && ((cmp | 3) & 255) == bplcon1_shift_full_masked[0]) { + copybpl8_64(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8_64(); + } + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -31518,6 +61692,14 @@ static void lts_aga_fm2_dpf1_p8_ishres_dhires(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -31526,6 +61708,14 @@ static void lts_aga_fm2_dpf1_p8_ishres_dhires(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -31549,7 +61739,11 @@ static void lts_aga_fm2_dpf1_p8_ishres_dhires(void) denise_cck++; } } -static void lts_aga_fm2_dpf1_p8_ishres_dhires_filtered(void) +static void lts_aga_fm2_ham0_p8_ilores_dshres_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_ham1_p8_ilores_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -31569,24 +61763,34 @@ static void lts_aga_fm2_dpf1_p8_ishres_dhires_filtered(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; + dpix_val0 = decode_ham_pixel_aga(pix0); } last_bpl_pix = pix0; } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8e_64(); + loaded_pix = getbpl8_64(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl8o_64(); + loaded_pix = getbpl8_64(); + } + 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] && ((cmp | 0) & 63) == 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(); } - loaded_pix = getbpl8_64(); loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 1; uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { @@ -31594,25 +61798,34 @@ static void lts_aga_fm2_dpf1_p8_ishres_dhires_filtered(void) if (denise_hdiw && bpl1dat_trigger) { pix1 = loaded_pixs[1]; clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - if (dpf_lookup_no[pix1]) { - val1 += dblpfofs[bpldualpf2of]; - } - val1 ^= bplcon4_denise_xor_val; - dpix_val1 = denise_colors.acolors[val1]; + dpix_val1 = decode_ham_pixel_aga(pix1); } last_bpl_pix = pix1; } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8e_64(); + loaded_pix = getbpl8_64(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl8o_64(); + loaded_pix = getbpl8_64(); + } + 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] && ((cmp | 1) & 63) == 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(); } - loaded_pix = getbpl8_64(); loaded_pixs[1] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { @@ -31620,24 +61833,34 @@ static void lts_aga_fm2_dpf1_p8_ishres_dhires_filtered(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; + dpix_val2 = decode_ham_pixel_aga(pix2); } last_bpl_pix = pix2; } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8e_64(); + loaded_pix = getbpl8_64(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl8o_64(); + loaded_pix = getbpl8_64(); + } + 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] && ((cmp | 2) & 63) == 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(); } - loaded_pix = getbpl8_64(); loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 1; uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { @@ -31645,30 +61868,39 @@ static void lts_aga_fm2_dpf1_p8_ishres_dhires_filtered(void) if (denise_hdiw && bpl1dat_trigger) { pix3 = loaded_pixs[3]; clxdat |= bplcoltable[pix3]; - uae_u8 val3 = dpf_lookup[pix3]; - if (dpf_lookup_no[pix3]) { - val3 += dblpfofs[bpldualpf2of]; - } - val3 ^= bplcon4_denise_xor_val; - dpix_val3 = denise_colors.acolors[val3]; + dpix_val3 = decode_ham_pixel_aga(pix3); } last_bpl_pix = pix3; } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8e_64(); + loaded_pix = getbpl8_64(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl8o_64(); + loaded_pix = getbpl8_64(); + } + 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] && ((cmp | 3) & 63) == 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(); } - loaded_pix = getbpl8_64(); loaded_pixs[3] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - dpix_val0 = filter_pixel(dpix_val0, dpix_val1); dtbuf[h][0] = dpix_val0; - dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + dtbuf[h][1] = dpix_val1; dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -31677,6 +61909,14 @@ static void lts_aga_fm2_dpf1_p8_ishres_dhires_filtered(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -31685,6 +61925,14 @@ static void lts_aga_fm2_dpf1_p8_ishres_dhires_filtered(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -31708,23 +61956,11 @@ static void lts_aga_fm2_dpf1_p8_ishres_dhires_filtered(void) denise_cck++; } } -static void lts_aga_fm2_ehb0_p8_ishres_dhires(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb0_p8_ishres_dhires_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb1_p8_ishres_dhires(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb1_p8_ishres_dhires_filtered(void) +static void lts_aga_fm2_ham1_p8_ilores_dshres_filtered(void) { lts_null(); } -static void lts_aga_fm2_ham0_p8_ishres_dhires(void) +static void lts_aga_fm2_kehb0_p8_ilores_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -31735,79 +61971,36 @@ 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; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = decode_ham_pixel_aga(pix0); - } - last_bpl_pix = pix0; - } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); } - loaded_pix = getbpl8_64(); - loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 1; uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - decode_ham_pixel_aga(pix1); - } - last_bpl_pix = pix1; - } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); } - loaded_pix = getbpl8_64(); - loaded_pixs[1] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = decode_ham_pixel_aga(pix2); - } - last_bpl_pix = pix2; - } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); } - loaded_pix = getbpl8_64(); - loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 1; uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - decode_ham_pixel_aga(pix3); - } - last_bpl_pix = pix3; - } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); } - loaded_pix = getbpl8_64(); - loaded_pixs[3] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -31816,6 +62009,14 @@ static void lts_aga_fm2_ham0_p8_ishres_dhires(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -31824,6 +62025,14 @@ static void lts_aga_fm2_ham0_p8_ishres_dhires(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -31847,7 +62056,11 @@ static void lts_aga_fm2_ham0_p8_ishres_dhires(void) denise_cck++; } } -static void lts_aga_fm2_ham0_p8_ishres_dhires_filtered(void) +static void lts_aga_fm2_kehb0_p8_ilores_dshres_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_kehb1_p8_ilores_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -31858,91 +62071,52 @@ 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; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = decode_ham_pixel_aga(pix0); - } - last_bpl_pix = pix0; - } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); } - loaded_pix = getbpl8_64(); - loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 1; uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - dpix_val1 = decode_ham_pixel_aga(pix1); - } - last_bpl_pix = pix1; - } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); } - loaded_pix = getbpl8_64(); - loaded_pixs[1] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = decode_ham_pixel_aga(pix2); - } - last_bpl_pix = pix2; - } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); } - loaded_pix = getbpl8_64(); - loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 1; uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - dpix_val3 = decode_ham_pixel_aga(pix3); - } - last_bpl_pix = pix3; - } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); } - loaded_pix = getbpl8_64(); - loaded_pixs[3] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - dpix_val0 = filter_pixel(dpix_val0, dpix_val1); dtbuf[h][0] = dpix_val0; - dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + dtbuf[h][1] = dpix_val1; dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { t0 = decode_denise_specials_debug(t0, cnt + 0); } #endif - *buf1++ = t0; - *buf2++ = t0; + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -31951,6 +62125,14 @@ static void lts_aga_fm2_ham0_p8_ishres_dhires_filtered(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -31974,7 +62156,11 @@ static void lts_aga_fm2_ham0_p8_ishres_dhires_filtered(void) denise_cck++; } } -static void lts_aga_fm2_ham1_p8_ishres_dhires(void) +static void lts_aga_fm2_kehb1_p8_ilores_dshres_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_n0_p2_ilores_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -31987,6 +62173,7 @@ static void lts_aga_fm2_ham1_p8_ishres_dhires(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -31994,39 +62181,65 @@ static void lts_aga_fm2_ham1_p8_ishres_dhires(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - dpix_val0 = decode_ham_pixel_aga(pix0); + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix0; } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e_64(); + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl2_64(); + loaded_pix = getbpl2_64(); } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); + if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { + copybpl2_64(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl2_64(); + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } } - loaded_pix = getbpl8_64(); loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; if (denise_hdiw && bpl1dat_trigger) { pix1 = loaded_pixs[1]; - decode_ham_pixel_aga(pix1); + clxdat |= bplcoltable[pix1]; + dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix1; } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e_64(); + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl2_64(); + loaded_pix = getbpl2_64(); } - if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); + if (bpldat_copy[0] && ((cmp | 1) & 255) == bplcon1_shift_full_masked[0]) { + copybpl2_64(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl2_64(); + } + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } } - loaded_pix = getbpl8_64(); loaded_pixs[1] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { @@ -32034,42 +62247,93 @@ static void lts_aga_fm2_ham1_p8_ishres_dhires(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - dpix_val2 = decode_ham_pixel_aga(pix2); + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix2; } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e_64(); + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl2_64(); + loaded_pix = getbpl2_64(); } - if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); + if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { + copybpl2_64(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl2_64(); + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } } - loaded_pix = getbpl8_64(); loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { dpix_val3 = bordercolor; if (denise_hdiw && bpl1dat_trigger) { pix3 = loaded_pixs[3]; - decode_ham_pixel_aga(pix3); + clxdat |= bplcoltable[pix3]; + dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix3; } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e_64(); + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl2_64(); + loaded_pix = getbpl2_64(); } - if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); + if (bpldat_copy[0] && ((cmp | 3) & 255) == bplcon1_shift_full_masked[0]) { + copybpl2_64(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl2_64(); + } + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } } - loaded_pix = getbpl8_64(); loaded_pixs[3] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } dtbuf[h][0] = dpix_val0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } + dtbuf[h][1] = dpix_val1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } dtbuf[h][2] = dpix_val2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + } + } + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -32078,6 +62342,14 @@ static void lts_aga_fm2_ham1_p8_ishres_dhires(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -32086,6 +62358,14 @@ static void lts_aga_fm2_ham1_p8_ishres_dhires(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -32109,7 +62389,11 @@ static void lts_aga_fm2_ham1_p8_ishres_dhires(void) denise_cck++; } } -static void lts_aga_fm2_ham1_p8_ishres_dhires_filtered(void) +static void lts_aga_fm2_n0_p2_ilores_dshres_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_n1_p2_ilores_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -32122,6 +62406,7 @@ static void lts_aga_fm2_ham1_p8_ishres_dhires_filtered(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -32129,19 +62414,43 @@ static void lts_aga_fm2_ham1_p8_ishres_dhires_filtered(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - dpix_val0 = decode_ham_pixel_aga(pix0); + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix0; } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e_64(); + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl2e_64(); + loaded_pix = getbpl2_64(); } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl2o_64(); + loaded_pix = getbpl2_64(); + } + 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] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[1]) { + copybpl2o_64(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl2_64(); + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } } - loaded_pix = getbpl8_64(); loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { @@ -32149,20 +62458,43 @@ static void lts_aga_fm2_ham1_p8_ishres_dhires_filtered(void) if (denise_hdiw && bpl1dat_trigger) { pix1 = loaded_pixs[1]; clxdat |= bplcoltable[pix1]; - dpix_val1 = decode_ham_pixel_aga(pix1); + dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix1; } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e_64(); + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl2e_64(); + loaded_pix = getbpl2_64(); } - if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl2o_64(); + loaded_pix = getbpl2_64(); + } + 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] && ((cmp | 1) & 255) == bplcon1_shift_full_masked[1]) { + copybpl2o_64(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl2_64(); + } + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } } - loaded_pix = getbpl8_64(); loaded_pixs[1] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { @@ -32170,19 +62502,43 @@ static void lts_aga_fm2_ham1_p8_ishres_dhires_filtered(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - dpix_val2 = decode_ham_pixel_aga(pix2); + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix2; } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e_64(); + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl2e_64(); + loaded_pix = getbpl2_64(); } - if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl2o_64(); + loaded_pix = getbpl2_64(); + } + 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] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[1]) { + copybpl2o_64(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl2_64(); + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } } - loaded_pix = getbpl8_64(); loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { @@ -32190,25 +62546,71 @@ static void lts_aga_fm2_ham1_p8_ishres_dhires_filtered(void) if (denise_hdiw && bpl1dat_trigger) { pix3 = loaded_pixs[3]; clxdat |= bplcoltable[pix3]; - dpix_val3 = decode_ham_pixel_aga(pix3); + dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix3; } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e_64(); + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl2e_64(); + loaded_pix = getbpl2_64(); } - if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl2o_64(); + loaded_pix = getbpl2_64(); + } + 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] && ((cmp | 3) & 255) == bplcon1_shift_full_masked[1]) { + copybpl2o_64(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl2_64(); + } + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } } - loaded_pix = getbpl8_64(); loaded_pixs[3] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } dtbuf[h][0] = dpix_val0; - dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } + dtbuf[h][1] = dpix_val1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } dtbuf[h][2] = dpix_val2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + } + } + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -32217,6 +62619,14 @@ static void lts_aga_fm2_ham1_p8_ishres_dhires_filtered(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -32225,6 +62635,14 @@ static void lts_aga_fm2_ham1_p8_ishres_dhires_filtered(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -32248,23 +62666,11 @@ static void lts_aga_fm2_ham1_p8_ishres_dhires_filtered(void) denise_cck++; } } -static void lts_aga_fm2_kehb0_p8_ishres_dhires(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb0_p8_ishres_dhires_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb1_p8_ishres_dhires(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb1_p8_ishres_dhires_filtered(void) +static void lts_aga_fm2_n1_p2_ilores_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm2_n0_p2_ishres_dhires_spr(void) +static void lts_aga_fm2_dpf0_p2_ilores_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -32285,15 +62691,26 @@ static void lts_aga_fm2_n0_p2_ishres_dhires_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; } last_bpl_pix = pix0; } - shiftbpl2_64(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl2_64(); + loaded_pix = getbpl2_64(); + } + if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { copybpl2_64(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl2_64(); } - loaded_pix = getbpl2_64(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -32303,8 +62720,45 @@ static void lts_aga_fm2_n0_p2_ishres_dhires_spr(void) } } loaded_pixs[0] = loaded_pix; - shiftbpl2_64(); - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + uae_u8 val1 = dpf_lookup[pix1]; + if (dpf_lookup_no[pix1]) { + val1 += dblpfofs[bpldualpf2of]; + } + val1 ^= bplcon4_denise_xor_val; + dpix_val1 = denise_colors.acolors[val1]; + } + last_bpl_pix = pix1; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl2_64(); + loaded_pix = getbpl2_64(); + } + if (bpldat_copy[0] && ((cmp | 1) & 255) == bplcon1_shift_full_masked[0]) { + copybpl2_64(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl2_64(); + } + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } + } + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 1; matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; @@ -32313,15 +62767,26 @@ static void lts_aga_fm2_n0_p2_ishres_dhires_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; } last_bpl_pix = pix2; } - shiftbpl2_64(); - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl2_64(); + loaded_pix = getbpl2_64(); + } + if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { copybpl2_64(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl2_64(); } - loaded_pix = getbpl2_64(); uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -32331,8 +62796,45 @@ static void lts_aga_fm2_n0_p2_ishres_dhires_spr(void) } } loaded_pixs[2] = loaded_pix; - shiftbpl2_64(); - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + uae_u8 val3 = dpf_lookup[pix3]; + if (dpf_lookup_no[pix3]) { + val3 += dblpfofs[bpldualpf2of]; + } + val3 ^= bplcon4_denise_xor_val; + dpix_val3 = denise_colors.acolors[val3]; + } + last_bpl_pix = pix3; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl2_64(); + loaded_pix = getbpl2_64(); + } + if (bpldat_copy[0] && ((cmp | 3) & 255) == bplcon1_shift_full_masked[0]) { + copybpl2_64(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl2_64(); + } + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } + } + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { uae_u32 spix0 = denise_render_sprites2(pix0, sv0); @@ -32341,6 +62843,13 @@ static void lts_aga_fm2_n0_p2_ishres_dhires_spr(void) } } dtbuf[h][0] = dpix_val0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } + dtbuf[h][1] = dpix_val1; if (sv2) { uae_u32 spix2 = denise_render_sprites2(pix2, sv2); if (spix2) { @@ -32348,6 +62857,13 @@ static void lts_aga_fm2_n0_p2_ishres_dhires_spr(void) } } dtbuf[h][2] = dpix_val2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + } + } + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -32356,6 +62872,14 @@ static void lts_aga_fm2_n0_p2_ishres_dhires_spr(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -32364,6 +62888,14 @@ static void lts_aga_fm2_n0_p2_ishres_dhires_spr(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -32387,7 +62919,11 @@ static void lts_aga_fm2_n0_p2_ishres_dhires_spr(void) denise_cck++; } } -static void lts_aga_fm2_n0_p2_ishres_dhires_spr_filtered(void) +static void lts_aga_fm2_dpf0_p2_ilores_dshres_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_dpf1_p2_ilores_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -32408,15 +62944,37 @@ static void lts_aga_fm2_n0_p2_ishres_dhires_spr_filtered(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; } last_bpl_pix = pix0; } - shiftbpl2_64(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl2_64(); + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl2e_64(); + loaded_pix = getbpl2_64(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl2o_64(); + loaded_pix = getbpl2_64(); + } + 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] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[1]) { + copybpl2o_64(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl2_64(); } - loaded_pix = getbpl2_64(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -32426,6 +62984,8 @@ static void lts_aga_fm2_n0_p2_ishres_dhires_spr_filtered(void) } } loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { @@ -32433,17 +62993,47 @@ static void lts_aga_fm2_n0_p2_ishres_dhires_spr_filtered(void) if (denise_hdiw && bpl1dat_trigger) { pix1 = loaded_pixs[1]; clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; + uae_u8 val1 = dpf_lookup[pix1]; + if (dpf_lookup_no[pix1]) { + val1 += dblpfofs[bpldualpf2of]; + } + val1 ^= bplcon4_denise_xor_val; + dpix_val1 = denise_colors.acolors[val1]; } last_bpl_pix = pix1; } - shiftbpl2_64(); - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl2_64(); + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl2e_64(); + loaded_pix = getbpl2_64(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl2o_64(); + loaded_pix = getbpl2_64(); + } + 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] && ((cmp | 1) & 255) == bplcon1_shift_full_masked[1]) { + copybpl2o_64(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl2_64(); + } + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } } - loaded_pix = getbpl2_64(); loaded_pixs[1] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; @@ -32452,15 +63042,37 @@ static void lts_aga_fm2_n0_p2_ishres_dhires_spr_filtered(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; } last_bpl_pix = pix2; } - shiftbpl2_64(); - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl2_64(); + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl2e_64(); + loaded_pix = getbpl2_64(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl2o_64(); + loaded_pix = getbpl2_64(); + } + 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] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[1]) { + copybpl2o_64(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl2_64(); } - loaded_pix = getbpl2_64(); uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -32470,6 +63082,8 @@ static void lts_aga_fm2_n0_p2_ishres_dhires_spr_filtered(void) } } loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { @@ -32477,36 +63091,76 @@ static void lts_aga_fm2_n0_p2_ishres_dhires_spr_filtered(void) if (denise_hdiw && bpl1dat_trigger) { pix3 = loaded_pixs[3]; clxdat |= bplcoltable[pix3]; - dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; + uae_u8 val3 = dpf_lookup[pix3]; + if (dpf_lookup_no[pix3]) { + val3 += dblpfofs[bpldualpf2of]; + } + val3 ^= bplcon4_denise_xor_val; + dpix_val3 = denise_colors.acolors[val3]; } last_bpl_pix = pix3; } - shiftbpl2_64(); - if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { - copybpl2_64(); + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl2e_64(); + loaded_pix = getbpl2_64(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl2o_64(); + loaded_pix = getbpl2_64(); + } + 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] && ((cmp | 3) & 255) == bplcon1_shift_full_masked[1]) { + copybpl2o_64(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl2_64(); + } + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } } - loaded_pix = getbpl2_64(); loaded_pixs[3] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { uae_u32 spix0 = denise_render_sprites2(pix0, sv0); if (spix0) { dpix_val0 = denise_colors.acolors[spix0]; - dpix_val1 = dpix_val0; } } - dpix_val0 = filter_pixel(dpix_val0, dpix_val1); dtbuf[h][0] = dpix_val0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } + dtbuf[h][1] = dpix_val1; if (sv2) { uae_u32 spix2 = denise_render_sprites2(pix2, sv2); if (spix2) { dpix_val2 = denise_colors.acolors[spix2]; - dpix_val3 = dpix_val2; } } - dpix_val2 = filter_pixel(dpix_val2, dpix_val3); dtbuf[h][2] = dpix_val2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + } + } + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -32515,6 +63169,14 @@ static void lts_aga_fm2_n0_p2_ishres_dhires_spr_filtered(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -32523,6 +63185,14 @@ static void lts_aga_fm2_n0_p2_ishres_dhires_spr_filtered(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -32546,7 +63216,11 @@ static void lts_aga_fm2_n0_p2_ishres_dhires_spr_filtered(void) denise_cck++; } } -static void lts_aga_fm2_n1_p2_ishres_dhires_spr(void) +static void lts_aga_fm2_dpf1_p2_ilores_dshres_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_ehb0_p2_ilores_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -32557,28 +63231,13 @@ 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; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix0; - } - shiftbpl2_64(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl2e_64(); - } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl2o_64(); } - loaded_pix = getbpl2_64(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -32587,29 +63246,28 @@ static void lts_aga_fm2_n1_p2_ishres_dhires_spr(void) sv0 = svt; } } - loaded_pixs[0] = loaded_pix; - shiftbpl2_64(); - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } + } + internal_pixel_cnt += 1; matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix2; - } - shiftbpl2_64(); - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl2e_64(); } - if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { - copybpl2o_64(); - } - loaded_pix = getbpl2_64(); uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -32618,9 +63276,22 @@ static void lts_aga_fm2_n1_p2_ishres_dhires_spr(void) sv2 = svt; } } - loaded_pixs[2] = loaded_pix; - shiftbpl2_64(); - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } + } + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { uae_u32 spix0 = denise_render_sprites2(pix0, sv0); @@ -32629,6 +63300,13 @@ static void lts_aga_fm2_n1_p2_ishres_dhires_spr(void) } } dtbuf[h][0] = dpix_val0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } + dtbuf[h][1] = dpix_val1; if (sv2) { uae_u32 spix2 = denise_render_sprites2(pix2, sv2); if (spix2) { @@ -32636,6 +63314,13 @@ static void lts_aga_fm2_n1_p2_ishres_dhires_spr(void) } } dtbuf[h][2] = dpix_val2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + } + } + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -32644,6 +63329,14 @@ static void lts_aga_fm2_n1_p2_ishres_dhires_spr(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -32652,6 +63345,14 @@ static void lts_aga_fm2_n1_p2_ishres_dhires_spr(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -32675,7 +63376,11 @@ static void lts_aga_fm2_n1_p2_ishres_dhires_spr(void) denise_cck++; } } -static void lts_aga_fm2_n1_p2_ishres_dhires_spr_filtered(void) +static void lts_aga_fm2_ehb0_p2_ilores_dshres_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_ehb1_p2_ilores_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -32686,28 +63391,13 @@ 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; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix0; - } - shiftbpl2_64(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl2e_64(); - } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl2o_64(); } - loaded_pix = getbpl2_64(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -32716,48 +63406,28 @@ static void lts_aga_fm2_n1_p2_ishres_dhires_spr_filtered(void) sv0 = svt; } } - loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix1; - } - shiftbpl2_64(); - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl2e_64(); } - if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { - copybpl2o_64(); + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } } - loaded_pix = getbpl2_64(); - loaded_pixs[1] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix2; - } - shiftbpl2_64(); - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl2e_64(); - } - if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { - copybpl2o_64(); } - loaded_pix = getbpl2_64(); uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -32766,47 +63436,51 @@ static void lts_aga_fm2_n1_p2_ishres_dhires_spr_filtered(void) sv2 = svt; } } - loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix3; - } - shiftbpl2_64(); - if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { - copybpl2e_64(); } - if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) { - copybpl2o_64(); + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } } - loaded_pix = getbpl2_64(); - loaded_pixs[3] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { uae_u32 spix0 = denise_render_sprites2(pix0, sv0); if (spix0) { dpix_val0 = denise_colors.acolors[spix0]; - dpix_val1 = dpix_val0; } } - dpix_val0 = filter_pixel(dpix_val0, dpix_val1); dtbuf[h][0] = dpix_val0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } + dtbuf[h][1] = dpix_val1; if (sv2) { uae_u32 spix2 = denise_render_sprites2(pix2, sv2); if (spix2) { dpix_val2 = denise_colors.acolors[spix2]; - dpix_val3 = dpix_val2; } } - dpix_val2 = filter_pixel(dpix_val2, dpix_val3); dtbuf[h][2] = dpix_val2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + } + } + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -32815,6 +63489,14 @@ static void lts_aga_fm2_n1_p2_ishres_dhires_spr_filtered(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -32823,6 +63505,14 @@ static void lts_aga_fm2_n1_p2_ishres_dhires_spr_filtered(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -32846,7 +63536,11 @@ static void lts_aga_fm2_n1_p2_ishres_dhires_spr_filtered(void) denise_cck++; } } -static void lts_aga_fm2_dpf0_p2_ishres_dhires_spr(void) +static void lts_aga_fm2_ehb1_p2_ilores_dshres_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_ham0_p2_ilores_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -32857,30 +63551,13 @@ 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; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; } - shiftbpl2_64(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl2_64(); - } - loaded_pix = getbpl2_64(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -32889,42 +63566,52 @@ static void lts_aga_fm2_dpf0_p2_ishres_dhires_spr(void) sv0 = svt; } } - loaded_pixs[0] = loaded_pix; - shiftbpl2_64(); - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } + } + internal_pixel_cnt += 1; matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; } - last_bpl_pix = pix2; } - shiftbpl2_64(); - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl2_64(); + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; } - loaded_pix = getbpl2_64(); - uae_u32 sv2 = 0; + uae_u32 sv3 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; svt = denise_render_sprites_aga(denise_spr_add); if (!denise_sprite_blank_active && !sprites_hidden) { - sv2 = svt; + sv3 = svt; } } - loaded_pixs[2] = loaded_pix; - shiftbpl2_64(); - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { uae_u32 spix0 = denise_render_sprites2(pix0, sv0); @@ -32933,6 +63620,13 @@ static void lts_aga_fm2_dpf0_p2_ishres_dhires_spr(void) } } dtbuf[h][0] = dpix_val0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } + dtbuf[h][1] = dpix_val1; if (sv2) { uae_u32 spix2 = denise_render_sprites2(pix2, sv2); if (spix2) { @@ -32940,6 +63634,13 @@ static void lts_aga_fm2_dpf0_p2_ishres_dhires_spr(void) } } dtbuf[h][2] = dpix_val2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + } + } + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -32948,6 +63649,14 @@ static void lts_aga_fm2_dpf0_p2_ishres_dhires_spr(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -32956,6 +63665,14 @@ static void lts_aga_fm2_dpf0_p2_ishres_dhires_spr(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -32979,7 +63696,11 @@ static void lts_aga_fm2_dpf0_p2_ishres_dhires_spr(void) denise_cck++; } } -static void lts_aga_fm2_dpf0_p2_ishres_dhires_spr_filtered(void) +static void lts_aga_fm2_ham0_p2_ilores_dshres_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_ham1_p2_ilores_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -32990,30 +63711,13 @@ 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; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; - } - shiftbpl2_64(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl2_64(); } - loaded_pix = getbpl2_64(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -33022,52 +63726,28 @@ static void lts_aga_fm2_dpf0_p2_ishres_dhires_spr_filtered(void) sv0 = svt; } } - loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - if (dpf_lookup_no[pix1]) { - val1 += dblpfofs[bpldualpf2of]; - } - val1 ^= bplcon4_denise_xor_val; - dpix_val1 = denise_colors.acolors[val1]; - } - last_bpl_pix = pix1; } - shiftbpl2_64(); - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl2_64(); + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } } - loaded_pix = getbpl2_64(); - loaded_pixs[1] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; - } - last_bpl_pix = pix2; - } - shiftbpl2_64(); - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl2_64(); } - loaded_pix = getbpl2_64(); uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -33076,49 +63756,51 @@ static void lts_aga_fm2_dpf0_p2_ishres_dhires_spr_filtered(void) sv2 = svt; } } - loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - uae_u8 val3 = dpf_lookup[pix3]; - if (dpf_lookup_no[pix3]) { - val3 += dblpfofs[bpldualpf2of]; - } - val3 ^= bplcon4_denise_xor_val; - dpix_val3 = denise_colors.acolors[val3]; - } - last_bpl_pix = pix3; } - shiftbpl2_64(); - if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { - copybpl2_64(); + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } } - loaded_pix = getbpl2_64(); - loaded_pixs[3] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { uae_u32 spix0 = denise_render_sprites2(pix0, sv0); if (spix0) { dpix_val0 = denise_colors.acolors[spix0]; - dpix_val1 = dpix_val0; } } - dpix_val0 = filter_pixel(dpix_val0, dpix_val1); dtbuf[h][0] = dpix_val0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } + dtbuf[h][1] = dpix_val1; if (sv2) { uae_u32 spix2 = denise_render_sprites2(pix2, sv2); if (spix2) { dpix_val2 = denise_colors.acolors[spix2]; - dpix_val3 = dpix_val2; } } - dpix_val2 = filter_pixel(dpix_val2, dpix_val3); dtbuf[h][2] = dpix_val2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + } + } + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -33127,6 +63809,14 @@ static void lts_aga_fm2_dpf0_p2_ishres_dhires_spr_filtered(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -33135,6 +63825,14 @@ static void lts_aga_fm2_dpf0_p2_ishres_dhires_spr_filtered(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -33158,7 +63856,11 @@ static void lts_aga_fm2_dpf0_p2_ishres_dhires_spr_filtered(void) denise_cck++; } } -static void lts_aga_fm2_dpf1_p2_ishres_dhires_spr(void) +static void lts_aga_fm2_ham1_p2_ilores_dshres_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_kehb0_p2_ilores_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -33169,33 +63871,13 @@ 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; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; - } - shiftbpl2_64(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl2e_64(); } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl2o_64(); - } - loaded_pix = getbpl2_64(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -33204,34 +63886,28 @@ static void lts_aga_fm2_dpf1_p2_ishres_dhires_spr(void) sv0 = svt; } } - loaded_pixs[0] = loaded_pix; - shiftbpl2_64(); - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } + } + internal_pixel_cnt += 1; matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; - } - last_bpl_pix = pix2; - } - shiftbpl2_64(); - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl2e_64(); - } - if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { - copybpl2o_64(); } - loaded_pix = getbpl2_64(); uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -33240,9 +63916,22 @@ static void lts_aga_fm2_dpf1_p2_ishres_dhires_spr(void) sv2 = svt; } } - loaded_pixs[2] = loaded_pix; - shiftbpl2_64(); - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } + } + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { uae_u32 spix0 = denise_render_sprites2(pix0, sv0); @@ -33251,6 +63940,13 @@ static void lts_aga_fm2_dpf1_p2_ishres_dhires_spr(void) } } dtbuf[h][0] = dpix_val0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } + dtbuf[h][1] = dpix_val1; if (sv2) { uae_u32 spix2 = denise_render_sprites2(pix2, sv2); if (spix2) { @@ -33258,6 +63954,13 @@ static void lts_aga_fm2_dpf1_p2_ishres_dhires_spr(void) } } dtbuf[h][2] = dpix_val2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + } + } + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -33266,6 +63969,14 @@ static void lts_aga_fm2_dpf1_p2_ishres_dhires_spr(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -33274,6 +63985,14 @@ static void lts_aga_fm2_dpf1_p2_ishres_dhires_spr(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -33297,7 +64016,11 @@ static void lts_aga_fm2_dpf1_p2_ishres_dhires_spr(void) denise_cck++; } } -static void lts_aga_fm2_dpf1_p2_ishres_dhires_spr_filtered(void) +static void lts_aga_fm2_kehb0_p2_ilores_dshres_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_kehb1_p2_ilores_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -33308,33 +64031,13 @@ 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; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; - } - shiftbpl2_64(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl2e_64(); - } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl2o_64(); } - loaded_pix = getbpl2_64(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -33343,58 +64046,28 @@ static void lts_aga_fm2_dpf1_p2_ishres_dhires_spr_filtered(void) sv0 = svt; } } - loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - if (dpf_lookup_no[pix1]) { - val1 += dblpfofs[bpldualpf2of]; - } - val1 ^= bplcon4_denise_xor_val; - dpix_val1 = denise_colors.acolors[val1]; - } - last_bpl_pix = pix1; - } - shiftbpl2_64(); - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl2e_64(); } - if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { - copybpl2o_64(); + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } } - loaded_pix = getbpl2_64(); - loaded_pixs[1] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; - } - last_bpl_pix = pix2; - } - shiftbpl2_64(); - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl2e_64(); - } - if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { - copybpl2o_64(); } - loaded_pix = getbpl2_64(); uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -33403,52 +64076,51 @@ static void lts_aga_fm2_dpf1_p2_ishres_dhires_spr_filtered(void) sv2 = svt; } } - loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - uae_u8 val3 = dpf_lookup[pix3]; - if (dpf_lookup_no[pix3]) { - val3 += dblpfofs[bpldualpf2of]; - } - val3 ^= bplcon4_denise_xor_val; - dpix_val3 = denise_colors.acolors[val3]; - } - last_bpl_pix = pix3; - } - shiftbpl2_64(); - if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { - copybpl2e_64(); } - if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) { - copybpl2o_64(); + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } } - loaded_pix = getbpl2_64(); - loaded_pixs[3] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { uae_u32 spix0 = denise_render_sprites2(pix0, sv0); if (spix0) { dpix_val0 = denise_colors.acolors[spix0]; - dpix_val1 = dpix_val0; } } - dpix_val0 = filter_pixel(dpix_val0, dpix_val1); dtbuf[h][0] = dpix_val0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } + dtbuf[h][1] = dpix_val1; if (sv2) { uae_u32 spix2 = denise_render_sprites2(pix2, sv2); if (spix2) { dpix_val2 = denise_colors.acolors[spix2]; - dpix_val3 = dpix_val2; } } - dpix_val2 = filter_pixel(dpix_val2, dpix_val3); dtbuf[h][2] = dpix_val2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + } + } + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -33457,6 +64129,14 @@ static void lts_aga_fm2_dpf1_p2_ishres_dhires_spr_filtered(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -33465,6 +64145,14 @@ static void lts_aga_fm2_dpf1_p2_ishres_dhires_spr_filtered(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -33488,55 +64176,11 @@ static void lts_aga_fm2_dpf1_p2_ishres_dhires_spr_filtered(void) denise_cck++; } } -static void lts_aga_fm2_ehb0_p2_ishres_dhires_spr(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb0_p2_ishres_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb1_p2_ishres_dhires_spr(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb1_p2_ishres_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_ham0_p2_ishres_dhires_spr(void) -{ - lts_null(); -} -static void lts_aga_fm2_ham0_p2_ishres_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_ham1_p2_ishres_dhires_spr(void) -{ - lts_null(); -} -static void lts_aga_fm2_ham1_p2_ishres_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb0_p2_ishres_dhires_spr(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb0_p2_ishres_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb1_p2_ishres_dhires_spr(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb1_p2_ishres_dhires_spr_filtered(void) +static void lts_aga_fm2_kehb1_p2_ilores_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm2_n0_p4_ishres_dhires_spr(void) +static void lts_aga_fm2_n0_p4_ilores_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -33561,22 +64205,60 @@ static void lts_aga_fm2_n0_p4_ishres_dhires_spr(void) } last_bpl_pix = pix0; } - shiftbpl4_64(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4_64(); + loaded_pix = getbpl4_64(); + } + if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { + copybpl4_64(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4_64(); + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix1; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4_64(); + loaded_pix = getbpl4_64(); + } + if (bpldat_copy[0] && ((cmp | 1) & 255) == bplcon1_shift_full_masked[0]) { copybpl4_64(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4_64(); } - loaded_pix = getbpl4_64(); - uae_u32 sv0 = 0; + uae_u32 sv1 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; svt = denise_render_sprites_aga(denise_spr_add); if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; + sv1 = svt; } } - loaded_pixs[0] = loaded_pix; - shiftbpl4_64(); - internal_pixel_cnt += 2; + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 1; matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; @@ -33589,11 +64271,17 @@ static void lts_aga_fm2_n0_p4_ishres_dhires_spr(void) } last_bpl_pix = pix2; } - shiftbpl4_64(); - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4_64(); + loaded_pix = getbpl4_64(); + } + if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { copybpl4_64(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4_64(); } - loaded_pix = getbpl4_64(); uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -33603,8 +64291,40 @@ static void lts_aga_fm2_n0_p4_ishres_dhires_spr(void) } } loaded_pixs[2] = loaded_pix; - shiftbpl4_64(); - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix3; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4_64(); + loaded_pix = getbpl4_64(); + } + if (bpldat_copy[0] && ((cmp | 3) & 255) == bplcon1_shift_full_masked[0]) { + copybpl4_64(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4_64(); + } + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } + } + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { uae_u32 spix0 = denise_render_sprites2(pix0, sv0); @@ -33613,6 +64333,13 @@ static void lts_aga_fm2_n0_p4_ishres_dhires_spr(void) } } dtbuf[h][0] = dpix_val0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } + dtbuf[h][1] = dpix_val1; if (sv2) { uae_u32 spix2 = denise_render_sprites2(pix2, sv2); if (spix2) { @@ -33620,6 +64347,13 @@ static void lts_aga_fm2_n0_p4_ishres_dhires_spr(void) } } dtbuf[h][2] = dpix_val2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + } + } + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -33628,6 +64362,14 @@ static void lts_aga_fm2_n0_p4_ishres_dhires_spr(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -33636,6 +64378,14 @@ static void lts_aga_fm2_n0_p4_ishres_dhires_spr(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -33659,7 +64409,11 @@ static void lts_aga_fm2_n0_p4_ishres_dhires_spr(void) denise_cck++; } } -static void lts_aga_fm2_n0_p4_ishres_dhires_spr_filtered(void) +static void lts_aga_fm2_n0_p4_ilores_dshres_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_n1_p4_ilores_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -33684,11 +64438,28 @@ static void lts_aga_fm2_n0_p4_ishres_dhires_spr_filtered(void) } last_bpl_pix = pix0; } - shiftbpl4_64(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4_64(); + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4e_64(); + loaded_pix = getbpl4_64(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl4o_64(); + loaded_pix = getbpl4_64(); + } + 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] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[1]) { + copybpl4o_64(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl4_64(); } - loaded_pix = getbpl4_64(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -33698,6 +64469,8 @@ static void lts_aga_fm2_n0_p4_ishres_dhires_spr_filtered(void) } } loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { @@ -33709,13 +64482,38 @@ static void lts_aga_fm2_n0_p4_ishres_dhires_spr_filtered(void) } last_bpl_pix = pix1; } - shiftbpl4_64(); - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4_64(); + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4e_64(); + loaded_pix = getbpl4_64(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl4o_64(); + loaded_pix = getbpl4_64(); + } + 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] && ((cmp | 1) & 255) == bplcon1_shift_full_masked[1]) { + copybpl4o_64(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl4_64(); + } + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } } - loaded_pix = getbpl4_64(); loaded_pixs[1] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; @@ -33728,11 +64526,28 @@ static void lts_aga_fm2_n0_p4_ishres_dhires_spr_filtered(void) } last_bpl_pix = pix2; } - shiftbpl4_64(); - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4_64(); + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4e_64(); + loaded_pix = getbpl4_64(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl4o_64(); + loaded_pix = getbpl4_64(); + } + 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] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[1]) { + copybpl4o_64(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl4_64(); } - loaded_pix = getbpl4_64(); uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -33742,6 +64557,8 @@ static void lts_aga_fm2_n0_p4_ishres_dhires_spr_filtered(void) } } loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { @@ -33753,32 +64570,67 @@ static void lts_aga_fm2_n0_p4_ishres_dhires_spr_filtered(void) } last_bpl_pix = pix3; } - shiftbpl4_64(); - if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4_64(); + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4e_64(); + loaded_pix = getbpl4_64(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl4o_64(); + loaded_pix = getbpl4_64(); + } + 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] && ((cmp | 3) & 255) == bplcon1_shift_full_masked[1]) { + copybpl4o_64(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl4_64(); + } + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } } - loaded_pix = getbpl4_64(); loaded_pixs[3] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { uae_u32 spix0 = denise_render_sprites2(pix0, sv0); if (spix0) { dpix_val0 = denise_colors.acolors[spix0]; - dpix_val1 = dpix_val0; } } - dpix_val0 = filter_pixel(dpix_val0, dpix_val1); dtbuf[h][0] = dpix_val0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } + dtbuf[h][1] = dpix_val1; if (sv2) { uae_u32 spix2 = denise_render_sprites2(pix2, sv2); if (spix2) { dpix_val2 = denise_colors.acolors[spix2]; - dpix_val3 = dpix_val2; } } - dpix_val2 = filter_pixel(dpix_val2, dpix_val3); dtbuf[h][2] = dpix_val2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + } + } + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -33787,6 +64639,14 @@ static void lts_aga_fm2_n0_p4_ishres_dhires_spr_filtered(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -33795,6 +64655,14 @@ static void lts_aga_fm2_n0_p4_ishres_dhires_spr_filtered(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -33818,7 +64686,11 @@ static void lts_aga_fm2_n0_p4_ishres_dhires_spr_filtered(void) denise_cck++; } } -static void lts_aga_fm2_n1_p4_ishres_dhires_spr(void) +static void lts_aga_fm2_n1_p4_ilores_dshres_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_dpf0_p4_ilores_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -33839,18 +64711,26 @@ static void lts_aga_fm2_n1_p4_ishres_dhires_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; } last_bpl_pix = pix0; } - shiftbpl4_64(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4e_64(); + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4_64(); + loaded_pix = getbpl4_64(); } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl4o_64(); + if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { + copybpl4_64(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4_64(); } - loaded_pix = getbpl4_64(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -33860,8 +64740,45 @@ static void lts_aga_fm2_n1_p4_ishres_dhires_spr(void) } } loaded_pixs[0] = loaded_pix; - shiftbpl4_64(); - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + uae_u8 val1 = dpf_lookup[pix1]; + if (dpf_lookup_no[pix1]) { + val1 += dblpfofs[bpldualpf2of]; + } + val1 ^= bplcon4_denise_xor_val; + dpix_val1 = denise_colors.acolors[val1]; + } + last_bpl_pix = pix1; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4_64(); + loaded_pix = getbpl4_64(); + } + if (bpldat_copy[0] && ((cmp | 1) & 255) == bplcon1_shift_full_masked[0]) { + copybpl4_64(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4_64(); + } + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } + } + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 1; matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; @@ -33870,18 +64787,26 @@ static void lts_aga_fm2_n1_p4_ishres_dhires_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; } last_bpl_pix = pix2; } - shiftbpl4_64(); - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4e_64(); + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4_64(); + loaded_pix = getbpl4_64(); } - if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { - copybpl4o_64(); + if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { + copybpl4_64(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4_64(); } - loaded_pix = getbpl4_64(); uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -33891,8 +64816,45 @@ static void lts_aga_fm2_n1_p4_ishres_dhires_spr(void) } } loaded_pixs[2] = loaded_pix; - shiftbpl4_64(); - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + uae_u8 val3 = dpf_lookup[pix3]; + if (dpf_lookup_no[pix3]) { + val3 += dblpfofs[bpldualpf2of]; + } + val3 ^= bplcon4_denise_xor_val; + dpix_val3 = denise_colors.acolors[val3]; + } + last_bpl_pix = pix3; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4_64(); + loaded_pix = getbpl4_64(); + } + if (bpldat_copy[0] && ((cmp | 3) & 255) == bplcon1_shift_full_masked[0]) { + copybpl4_64(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4_64(); + } + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } + } + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { uae_u32 spix0 = denise_render_sprites2(pix0, sv0); @@ -33901,6 +64863,13 @@ static void lts_aga_fm2_n1_p4_ishres_dhires_spr(void) } } dtbuf[h][0] = dpix_val0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } + dtbuf[h][1] = dpix_val1; if (sv2) { uae_u32 spix2 = denise_render_sprites2(pix2, sv2); if (spix2) { @@ -33908,6 +64877,13 @@ static void lts_aga_fm2_n1_p4_ishres_dhires_spr(void) } } dtbuf[h][2] = dpix_val2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + } + } + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -33916,6 +64892,14 @@ static void lts_aga_fm2_n1_p4_ishres_dhires_spr(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -33924,6 +64908,14 @@ static void lts_aga_fm2_n1_p4_ishres_dhires_spr(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -33947,7 +64939,11 @@ static void lts_aga_fm2_n1_p4_ishres_dhires_spr(void) denise_cck++; } } -static void lts_aga_fm2_n1_p4_ishres_dhires_spr_filtered(void) +static void lts_aga_fm2_dpf0_p4_ilores_dshres_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_dpf1_p4_ilores_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -33968,18 +64964,37 @@ static void lts_aga_fm2_n1_p4_ishres_dhires_spr_filtered(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; } last_bpl_pix = pix0; } - shiftbpl4_64(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4e_64(); + loaded_pix = getbpl4_64(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl4o_64(); + loaded_pix = getbpl4_64(); + } + 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] && ((cmp | 0) & 63) == 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(); } - loaded_pix = getbpl4_64(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -33989,6 +65004,8 @@ static void lts_aga_fm2_n1_p4_ishres_dhires_spr_filtered(void) } } loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { @@ -33996,20 +65013,47 @@ static void lts_aga_fm2_n1_p4_ishres_dhires_spr_filtered(void) if (denise_hdiw && bpl1dat_trigger) { pix1 = loaded_pixs[1]; clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; + uae_u8 val1 = dpf_lookup[pix1]; + if (dpf_lookup_no[pix1]) { + val1 += dblpfofs[bpldualpf2of]; + } + val1 ^= bplcon4_denise_xor_val; + dpix_val1 = denise_colors.acolors[val1]; } last_bpl_pix = pix1; } - shiftbpl4_64(); - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4e_64(); + loaded_pix = getbpl4_64(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl4o_64(); + loaded_pix = getbpl4_64(); + } + 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] && ((cmp | 1) & 63) == 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(); + } + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } } - loaded_pix = getbpl4_64(); loaded_pixs[1] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; @@ -34018,18 +65062,37 @@ static void lts_aga_fm2_n1_p4_ishres_dhires_spr_filtered(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; } last_bpl_pix = pix2; } - shiftbpl4_64(); - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4e_64(); + loaded_pix = getbpl4_64(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl4o_64(); + loaded_pix = getbpl4_64(); + } + 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] && ((cmp | 2) & 63) == 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(); } - loaded_pix = getbpl4_64(); uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -34039,6 +65102,8 @@ static void lts_aga_fm2_n1_p4_ishres_dhires_spr_filtered(void) } } loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { @@ -34046,39 +65111,76 @@ static void lts_aga_fm2_n1_p4_ishres_dhires_spr_filtered(void) if (denise_hdiw && bpl1dat_trigger) { pix3 = loaded_pixs[3]; clxdat |= bplcoltable[pix3]; - dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; + uae_u8 val3 = dpf_lookup[pix3]; + if (dpf_lookup_no[pix3]) { + val3 += dblpfofs[bpldualpf2of]; + } + val3 ^= bplcon4_denise_xor_val; + dpix_val3 = denise_colors.acolors[val3]; } last_bpl_pix = pix3; } - shiftbpl4_64(); - if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4e_64(); + loaded_pix = getbpl4_64(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl4o_64(); + loaded_pix = getbpl4_64(); + } + 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] && ((cmp | 3) & 63) == 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(); + } + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } } - loaded_pix = getbpl4_64(); loaded_pixs[3] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { uae_u32 spix0 = denise_render_sprites2(pix0, sv0); if (spix0) { dpix_val0 = denise_colors.acolors[spix0]; - dpix_val1 = dpix_val0; } } - dpix_val0 = filter_pixel(dpix_val0, dpix_val1); dtbuf[h][0] = dpix_val0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } + dtbuf[h][1] = dpix_val1; if (sv2) { uae_u32 spix2 = denise_render_sprites2(pix2, sv2); if (spix2) { dpix_val2 = denise_colors.acolors[spix2]; - dpix_val3 = dpix_val2; } } - dpix_val2 = filter_pixel(dpix_val2, dpix_val3); dtbuf[h][2] = dpix_val2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + } + } + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -34087,6 +65189,14 @@ static void lts_aga_fm2_n1_p4_ishres_dhires_spr_filtered(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -34095,6 +65205,14 @@ static void lts_aga_fm2_n1_p4_ishres_dhires_spr_filtered(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -34118,7 +65236,11 @@ static void lts_aga_fm2_n1_p4_ishres_dhires_spr_filtered(void) denise_cck++; } } -static void lts_aga_fm2_dpf0_p4_ishres_dhires_spr(void) +static void lts_aga_fm2_dpf1_p4_ilores_dshres_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_ehb0_p4_ilores_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -34129,30 +65251,13 @@ 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; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; } - shiftbpl4_64(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4_64(); - } - loaded_pix = getbpl4_64(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -34161,31 +65266,28 @@ static void lts_aga_fm2_dpf0_p4_ishres_dhires_spr(void) sv0 = svt; } } - loaded_pixs[0] = loaded_pix; - shiftbpl4_64(); - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } + } + internal_pixel_cnt += 1; matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; - } - last_bpl_pix = pix2; - } - shiftbpl4_64(); - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4_64(); } - loaded_pix = getbpl4_64(); uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -34194,9 +65296,22 @@ static void lts_aga_fm2_dpf0_p4_ishres_dhires_spr(void) sv2 = svt; } } - loaded_pixs[2] = loaded_pix; - shiftbpl4_64(); - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } + } + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { uae_u32 spix0 = denise_render_sprites2(pix0, sv0); @@ -34205,6 +65320,13 @@ static void lts_aga_fm2_dpf0_p4_ishres_dhires_spr(void) } } dtbuf[h][0] = dpix_val0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } + dtbuf[h][1] = dpix_val1; if (sv2) { uae_u32 spix2 = denise_render_sprites2(pix2, sv2); if (spix2) { @@ -34212,6 +65334,13 @@ static void lts_aga_fm2_dpf0_p4_ishres_dhires_spr(void) } } dtbuf[h][2] = dpix_val2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + } + } + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -34220,6 +65349,14 @@ static void lts_aga_fm2_dpf0_p4_ishres_dhires_spr(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -34228,6 +65365,14 @@ static void lts_aga_fm2_dpf0_p4_ishres_dhires_spr(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -34251,7 +65396,11 @@ static void lts_aga_fm2_dpf0_p4_ishres_dhires_spr(void) denise_cck++; } } -static void lts_aga_fm2_dpf0_p4_ishres_dhires_spr_filtered(void) +static void lts_aga_fm2_ehb0_p4_ilores_dshres_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_ehb1_p4_ilores_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -34262,30 +65411,13 @@ 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; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; - } - shiftbpl4_64(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4_64(); } - loaded_pix = getbpl4_64(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -34294,52 +65426,28 @@ static void lts_aga_fm2_dpf0_p4_ishres_dhires_spr_filtered(void) sv0 = svt; } } - loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - if (dpf_lookup_no[pix1]) { - val1 += dblpfofs[bpldualpf2of]; - } - val1 ^= bplcon4_denise_xor_val; - dpix_val1 = denise_colors.acolors[val1]; - } - last_bpl_pix = pix1; } - shiftbpl4_64(); - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4_64(); + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } } - loaded_pix = getbpl4_64(); - loaded_pixs[1] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; - } - last_bpl_pix = pix2; - } - shiftbpl4_64(); - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4_64(); } - loaded_pix = getbpl4_64(); uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -34348,49 +65456,51 @@ static void lts_aga_fm2_dpf0_p4_ishres_dhires_spr_filtered(void) sv2 = svt; } } - loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - uae_u8 val3 = dpf_lookup[pix3]; - if (dpf_lookup_no[pix3]) { - val3 += dblpfofs[bpldualpf2of]; - } - val3 ^= bplcon4_denise_xor_val; - dpix_val3 = denise_colors.acolors[val3]; - } - last_bpl_pix = pix3; } - shiftbpl4_64(); - if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4_64(); + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } } - loaded_pix = getbpl4_64(); - loaded_pixs[3] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { uae_u32 spix0 = denise_render_sprites2(pix0, sv0); if (spix0) { dpix_val0 = denise_colors.acolors[spix0]; - dpix_val1 = dpix_val0; } } - dpix_val0 = filter_pixel(dpix_val0, dpix_val1); dtbuf[h][0] = dpix_val0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } + dtbuf[h][1] = dpix_val1; if (sv2) { uae_u32 spix2 = denise_render_sprites2(pix2, sv2); if (spix2) { dpix_val2 = denise_colors.acolors[spix2]; - dpix_val3 = dpix_val2; } } - dpix_val2 = filter_pixel(dpix_val2, dpix_val3); dtbuf[h][2] = dpix_val2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + } + } + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -34399,6 +65509,14 @@ static void lts_aga_fm2_dpf0_p4_ishres_dhires_spr_filtered(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -34407,6 +65525,14 @@ static void lts_aga_fm2_dpf0_p4_ishres_dhires_spr_filtered(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -34430,7 +65556,11 @@ static void lts_aga_fm2_dpf0_p4_ishres_dhires_spr_filtered(void) denise_cck++; } } -static void lts_aga_fm2_dpf1_p4_ishres_dhires_spr(void) +static void lts_aga_fm2_ehb1_p4_ilores_dshres_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_ham0_p4_ilores_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -34441,33 +65571,13 @@ 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; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; - } - shiftbpl4_64(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4e_64(); } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl4o_64(); - } - loaded_pix = getbpl4_64(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -34476,34 +65586,28 @@ static void lts_aga_fm2_dpf1_p4_ishres_dhires_spr(void) sv0 = svt; } } - loaded_pixs[0] = loaded_pix; - shiftbpl4_64(); - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } + } + internal_pixel_cnt += 1; matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; - } - last_bpl_pix = pix2; - } - shiftbpl4_64(); - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4e_64(); - } - if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { - copybpl4o_64(); } - loaded_pix = getbpl4_64(); uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -34512,9 +65616,22 @@ static void lts_aga_fm2_dpf1_p4_ishres_dhires_spr(void) sv2 = svt; } } - loaded_pixs[2] = loaded_pix; - shiftbpl4_64(); - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } + } + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { uae_u32 spix0 = denise_render_sprites2(pix0, sv0); @@ -34523,6 +65640,13 @@ static void lts_aga_fm2_dpf1_p4_ishres_dhires_spr(void) } } dtbuf[h][0] = dpix_val0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } + dtbuf[h][1] = dpix_val1; if (sv2) { uae_u32 spix2 = denise_render_sprites2(pix2, sv2); if (spix2) { @@ -34530,6 +65654,13 @@ static void lts_aga_fm2_dpf1_p4_ishres_dhires_spr(void) } } dtbuf[h][2] = dpix_val2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + } + } + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -34538,6 +65669,14 @@ static void lts_aga_fm2_dpf1_p4_ishres_dhires_spr(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -34546,6 +65685,14 @@ static void lts_aga_fm2_dpf1_p4_ishres_dhires_spr(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -34569,7 +65716,11 @@ static void lts_aga_fm2_dpf1_p4_ishres_dhires_spr(void) denise_cck++; } } -static void lts_aga_fm2_dpf1_p4_ishres_dhires_spr_filtered(void) +static void lts_aga_fm2_ham0_p4_ilores_dshres_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_ham1_p4_ilores_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -34580,33 +65731,13 @@ 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; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; - } - shiftbpl4_64(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4e_64(); - } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl4o_64(); } - loaded_pix = getbpl4_64(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -34615,58 +65746,28 @@ static void lts_aga_fm2_dpf1_p4_ishres_dhires_spr_filtered(void) sv0 = svt; } } - loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - if (dpf_lookup_no[pix1]) { - val1 += dblpfofs[bpldualpf2of]; - } - val1 ^= bplcon4_denise_xor_val; - dpix_val1 = denise_colors.acolors[val1]; - } - last_bpl_pix = pix1; - } - shiftbpl4_64(); - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4e_64(); - } - if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { - copybpl4o_64(); } - loaded_pix = getbpl4_64(); - loaded_pixs[1] = loaded_pix; - internal_pixel_cnt += 2; - matchsprites_aga(cnt + 2); - uae_u8 pix2 = 0; - uae_u32 dpix_val2 = BLANK_COLOR; - if (!denise_blank_active) { - dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; } - last_bpl_pix = pix2; - } - shiftbpl4_64(); - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4e_64(); } - if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { - copybpl4o_64(); + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; } - loaded_pix = getbpl4_64(); uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -34675,52 +65776,51 @@ static void lts_aga_fm2_dpf1_p4_ishres_dhires_spr_filtered(void) sv2 = svt; } } - loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - uae_u8 val3 = dpf_lookup[pix3]; - if (dpf_lookup_no[pix3]) { - val3 += dblpfofs[bpldualpf2of]; - } - val3 ^= bplcon4_denise_xor_val; - dpix_val3 = denise_colors.acolors[val3]; - } - last_bpl_pix = pix3; - } - shiftbpl4_64(); - if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4e_64(); } - if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) { - copybpl4o_64(); + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } } - loaded_pix = getbpl4_64(); - loaded_pixs[3] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { uae_u32 spix0 = denise_render_sprites2(pix0, sv0); if (spix0) { dpix_val0 = denise_colors.acolors[spix0]; - dpix_val1 = dpix_val0; } } - dpix_val0 = filter_pixel(dpix_val0, dpix_val1); dtbuf[h][0] = dpix_val0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } + dtbuf[h][1] = dpix_val1; if (sv2) { uae_u32 spix2 = denise_render_sprites2(pix2, sv2); if (spix2) { dpix_val2 = denise_colors.acolors[spix2]; - dpix_val3 = dpix_val2; } } - dpix_val2 = filter_pixel(dpix_val2, dpix_val3); dtbuf[h][2] = dpix_val2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + } + } + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -34729,6 +65829,14 @@ static void lts_aga_fm2_dpf1_p4_ishres_dhires_spr_filtered(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -34737,6 +65845,14 @@ static void lts_aga_fm2_dpf1_p4_ishres_dhires_spr_filtered(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -34760,55 +65876,11 @@ static void lts_aga_fm2_dpf1_p4_ishres_dhires_spr_filtered(void) denise_cck++; } } -static void lts_aga_fm2_ehb0_p4_ishres_dhires_spr(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb0_p4_ishres_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb1_p4_ishres_dhires_spr(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb1_p4_ishres_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_ham0_p4_ishres_dhires_spr(void) -{ - lts_null(); -} -static void lts_aga_fm2_ham0_p4_ishres_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_ham1_p4_ishres_dhires_spr(void) -{ - lts_null(); -} -static void lts_aga_fm2_ham1_p4_ishres_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb0_p4_ishres_dhires_spr(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb0_p4_ishres_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb1_p4_ishres_dhires_spr(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb1_p4_ishres_dhires_spr_filtered(void) +static void lts_aga_fm2_ham1_p4_ilores_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm2_n0_p6_ishres_dhires_spr(void) +static void lts_aga_fm2_kehb0_p4_ilores_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -34819,25 +65891,13 @@ 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; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix0; - } - shiftbpl6_64(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6_64(); } - loaded_pix = getbpl6_64(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -34846,26 +65906,28 @@ static void lts_aga_fm2_n0_p6_ishres_dhires_spr(void) sv0 = svt; } } - loaded_pixs[0] = loaded_pix; - shiftbpl6_64(); - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } + } + internal_pixel_cnt += 1; matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix2; - } - shiftbpl6_64(); - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6_64(); } - loaded_pix = getbpl6_64(); uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -34874,9 +65936,22 @@ static void lts_aga_fm2_n0_p6_ishres_dhires_spr(void) sv2 = svt; } } - loaded_pixs[2] = loaded_pix; - shiftbpl6_64(); - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } + } + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { uae_u32 spix0 = denise_render_sprites2(pix0, sv0); @@ -34885,6 +65960,13 @@ static void lts_aga_fm2_n0_p6_ishres_dhires_spr(void) } } dtbuf[h][0] = dpix_val0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } + dtbuf[h][1] = dpix_val1; if (sv2) { uae_u32 spix2 = denise_render_sprites2(pix2, sv2); if (spix2) { @@ -34892,6 +65974,13 @@ static void lts_aga_fm2_n0_p6_ishres_dhires_spr(void) } } dtbuf[h][2] = dpix_val2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + } + } + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -34900,6 +65989,14 @@ static void lts_aga_fm2_n0_p6_ishres_dhires_spr(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -34908,6 +66005,14 @@ static void lts_aga_fm2_n0_p6_ishres_dhires_spr(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -34931,7 +66036,11 @@ static void lts_aga_fm2_n0_p6_ishres_dhires_spr(void) denise_cck++; } } -static void lts_aga_fm2_n0_p6_ishres_dhires_spr_filtered(void) +static void lts_aga_fm2_kehb0_p4_ilores_dshres_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_kehb1_p4_ilores_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -34942,25 +66051,13 @@ 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; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix0; } - shiftbpl6_64(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6_64(); - } - loaded_pix = getbpl6_64(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -34969,42 +66066,28 @@ static void lts_aga_fm2_n0_p6_ishres_dhires_spr_filtered(void) sv0 = svt; } } - loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix1; } - shiftbpl6_64(); - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6_64(); + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } } - loaded_pix = getbpl6_64(); - loaded_pixs[1] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix2; - } - shiftbpl6_64(); - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6_64(); } - loaded_pix = getbpl6_64(); uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -35013,44 +66096,51 @@ static void lts_aga_fm2_n0_p6_ishres_dhires_spr_filtered(void) sv2 = svt; } } - loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix3; } - shiftbpl6_64(); - if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6_64(); + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } } - loaded_pix = getbpl6_64(); - loaded_pixs[3] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { uae_u32 spix0 = denise_render_sprites2(pix0, sv0); if (spix0) { dpix_val0 = denise_colors.acolors[spix0]; - dpix_val1 = dpix_val0; } } - dpix_val0 = filter_pixel(dpix_val0, dpix_val1); dtbuf[h][0] = dpix_val0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } + dtbuf[h][1] = dpix_val1; if (sv2) { uae_u32 spix2 = denise_render_sprites2(pix2, sv2); if (spix2) { dpix_val2 = denise_colors.acolors[spix2]; - dpix_val3 = dpix_val2; } } - dpix_val2 = filter_pixel(dpix_val2, dpix_val3); dtbuf[h][2] = dpix_val2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + } + } + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -35059,6 +66149,14 @@ static void lts_aga_fm2_n0_p6_ishres_dhires_spr_filtered(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -35067,6 +66165,14 @@ static void lts_aga_fm2_n0_p6_ishres_dhires_spr_filtered(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -35090,7 +66196,11 @@ static void lts_aga_fm2_n0_p6_ishres_dhires_spr_filtered(void) denise_cck++; } } -static void lts_aga_fm2_n1_p6_ishres_dhires_spr(void) +static void lts_aga_fm2_kehb1_p4_ilores_dshres_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_n0_p6_ilores_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -35115,14 +66225,17 @@ static void lts_aga_fm2_n1_p6_ishres_dhires_spr(void) } last_bpl_pix = pix0; } - shiftbpl6_64(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6e_64(); + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6_64(); + loaded_pix = getbpl6_64(); } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl6o_64(); + if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { + copybpl6_64(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6_64(); } - loaded_pix = getbpl6_64(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -35132,8 +66245,40 @@ static void lts_aga_fm2_n1_p6_ishres_dhires_spr(void) } } loaded_pixs[0] = loaded_pix; - shiftbpl6_64(); - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix1; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6_64(); + loaded_pix = getbpl6_64(); + } + if (bpldat_copy[0] && ((cmp | 1) & 255) == bplcon1_shift_full_masked[0]) { + copybpl6_64(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6_64(); + } + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } + } + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 1; matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; @@ -35146,14 +66291,17 @@ static void lts_aga_fm2_n1_p6_ishres_dhires_spr(void) } last_bpl_pix = pix2; } - shiftbpl6_64(); - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6e_64(); + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6_64(); + loaded_pix = getbpl6_64(); } - if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { - copybpl6o_64(); + if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { + copybpl6_64(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6_64(); } - loaded_pix = getbpl6_64(); uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -35163,8 +66311,40 @@ static void lts_aga_fm2_n1_p6_ishres_dhires_spr(void) } } loaded_pixs[2] = loaded_pix; - shiftbpl6_64(); - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix3; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6_64(); + loaded_pix = getbpl6_64(); + } + if (bpldat_copy[0] && ((cmp | 3) & 255) == bplcon1_shift_full_masked[0]) { + copybpl6_64(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6_64(); + } + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } + } + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { uae_u32 spix0 = denise_render_sprites2(pix0, sv0); @@ -35173,6 +66353,13 @@ static void lts_aga_fm2_n1_p6_ishres_dhires_spr(void) } } dtbuf[h][0] = dpix_val0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } + dtbuf[h][1] = dpix_val1; if (sv2) { uae_u32 spix2 = denise_render_sprites2(pix2, sv2); if (spix2) { @@ -35180,6 +66367,13 @@ static void lts_aga_fm2_n1_p6_ishres_dhires_spr(void) } } dtbuf[h][2] = dpix_val2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + } + } + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -35188,6 +66382,14 @@ static void lts_aga_fm2_n1_p6_ishres_dhires_spr(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -35196,6 +66398,14 @@ static void lts_aga_fm2_n1_p6_ishres_dhires_spr(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -35219,7 +66429,11 @@ static void lts_aga_fm2_n1_p6_ishres_dhires_spr(void) denise_cck++; } } -static void lts_aga_fm2_n1_p6_ishres_dhires_spr_filtered(void) +static void lts_aga_fm2_n0_p6_ilores_dshres_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_n1_p6_ilores_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -35244,14 +66458,28 @@ static void lts_aga_fm2_n1_p6_ishres_dhires_spr_filtered(void) } last_bpl_pix = pix0; } - shiftbpl6_64(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6e_64(); + loaded_pix = getbpl6_64(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl6o_64(); + loaded_pix = getbpl6_64(); + } + 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] && ((cmp | 0) & 63) == 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(); } - loaded_pix = getbpl6_64(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -35261,6 +66489,8 @@ static void lts_aga_fm2_n1_p6_ishres_dhires_spr_filtered(void) } } loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { @@ -35272,16 +66502,38 @@ static void lts_aga_fm2_n1_p6_ishres_dhires_spr_filtered(void) } last_bpl_pix = pix1; } - shiftbpl6_64(); - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6e_64(); + loaded_pix = getbpl6_64(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl6o_64(); + loaded_pix = getbpl6_64(); + } + 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] && ((cmp | 1) & 63) == 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(); + } + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } } - loaded_pix = getbpl6_64(); loaded_pixs[1] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; @@ -35294,14 +66546,28 @@ static void lts_aga_fm2_n1_p6_ishres_dhires_spr_filtered(void) } last_bpl_pix = pix2; } - shiftbpl6_64(); - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6e_64(); + loaded_pix = getbpl6_64(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl6o_64(); + loaded_pix = getbpl6_64(); + } + 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] && ((cmp | 2) & 63) == 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(); } - loaded_pix = getbpl6_64(); uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -35311,6 +66577,8 @@ static void lts_aga_fm2_n1_p6_ishres_dhires_spr_filtered(void) } } loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { @@ -35322,35 +66590,67 @@ static void lts_aga_fm2_n1_p6_ishres_dhires_spr_filtered(void) } last_bpl_pix = pix3; } - shiftbpl6_64(); - if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6e_64(); + loaded_pix = getbpl6_64(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl6o_64(); + loaded_pix = getbpl6_64(); + } + 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] && ((cmp | 3) & 63) == 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(); + } + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } } - loaded_pix = getbpl6_64(); loaded_pixs[3] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { uae_u32 spix0 = denise_render_sprites2(pix0, sv0); if (spix0) { dpix_val0 = denise_colors.acolors[spix0]; - dpix_val1 = dpix_val0; } } - dpix_val0 = filter_pixel(dpix_val0, dpix_val1); dtbuf[h][0] = dpix_val0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } + dtbuf[h][1] = dpix_val1; if (sv2) { uae_u32 spix2 = denise_render_sprites2(pix2, sv2); if (spix2) { dpix_val2 = denise_colors.acolors[spix2]; - dpix_val3 = dpix_val2; } } - dpix_val2 = filter_pixel(dpix_val2, dpix_val3); dtbuf[h][2] = dpix_val2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + } + } + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -35359,6 +66659,14 @@ static void lts_aga_fm2_n1_p6_ishres_dhires_spr_filtered(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -35367,6 +66675,14 @@ static void lts_aga_fm2_n1_p6_ishres_dhires_spr_filtered(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -35390,7 +66706,11 @@ static void lts_aga_fm2_n1_p6_ishres_dhires_spr_filtered(void) denise_cck++; } } -static void lts_aga_fm2_dpf0_p6_ishres_dhires_spr(void) +static void lts_aga_fm2_n1_p6_ilores_dshres_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_dpf0_p6_ilores_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -35420,11 +66740,17 @@ static void lts_aga_fm2_dpf0_p6_ishres_dhires_spr(void) } last_bpl_pix = pix0; } - shiftbpl6_64(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6_64(); + loaded_pix = getbpl6_64(); + } + if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { copybpl6_64(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6_64(); } - loaded_pix = getbpl6_64(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -35434,8 +66760,45 @@ static void lts_aga_fm2_dpf0_p6_ishres_dhires_spr(void) } } loaded_pixs[0] = loaded_pix; - shiftbpl6_64(); - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + uae_u8 val1 = dpf_lookup[pix1]; + if (dpf_lookup_no[pix1]) { + val1 += dblpfofs[bpldualpf2of]; + } + val1 ^= bplcon4_denise_xor_val; + dpix_val1 = denise_colors.acolors[val1]; + } + last_bpl_pix = pix1; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6_64(); + loaded_pix = getbpl6_64(); + } + if (bpldat_copy[0] && ((cmp | 1) & 255) == bplcon1_shift_full_masked[0]) { + copybpl6_64(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6_64(); + } + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } + } + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 1; matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; @@ -35453,11 +66816,17 @@ static void lts_aga_fm2_dpf0_p6_ishres_dhires_spr(void) } last_bpl_pix = pix2; } - shiftbpl6_64(); - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6_64(); + loaded_pix = getbpl6_64(); + } + if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { copybpl6_64(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6_64(); } - loaded_pix = getbpl6_64(); uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -35467,8 +66836,45 @@ static void lts_aga_fm2_dpf0_p6_ishres_dhires_spr(void) } } loaded_pixs[2] = loaded_pix; - shiftbpl6_64(); - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + uae_u8 val3 = dpf_lookup[pix3]; + if (dpf_lookup_no[pix3]) { + val3 += dblpfofs[bpldualpf2of]; + } + val3 ^= bplcon4_denise_xor_val; + dpix_val3 = denise_colors.acolors[val3]; + } + last_bpl_pix = pix3; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6_64(); + loaded_pix = getbpl6_64(); + } + if (bpldat_copy[0] && ((cmp | 3) & 255) == bplcon1_shift_full_masked[0]) { + copybpl6_64(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6_64(); + } + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } + } + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { uae_u32 spix0 = denise_render_sprites2(pix0, sv0); @@ -35477,6 +66883,13 @@ static void lts_aga_fm2_dpf0_p6_ishres_dhires_spr(void) } } dtbuf[h][0] = dpix_val0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } + dtbuf[h][1] = dpix_val1; if (sv2) { uae_u32 spix2 = denise_render_sprites2(pix2, sv2); if (spix2) { @@ -35484,6 +66897,13 @@ static void lts_aga_fm2_dpf0_p6_ishres_dhires_spr(void) } } dtbuf[h][2] = dpix_val2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + } + } + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -35492,6 +66912,14 @@ static void lts_aga_fm2_dpf0_p6_ishres_dhires_spr(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -35500,6 +66928,14 @@ static void lts_aga_fm2_dpf0_p6_ishres_dhires_spr(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -35523,7 +66959,11 @@ static void lts_aga_fm2_dpf0_p6_ishres_dhires_spr(void) denise_cck++; } } -static void lts_aga_fm2_dpf0_p6_ishres_dhires_spr_filtered(void) +static void lts_aga_fm2_dpf0_p6_ilores_dshres_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_dpf1_p6_ilores_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -35553,11 +66993,28 @@ static void lts_aga_fm2_dpf0_p6_ishres_dhires_spr_filtered(void) } last_bpl_pix = pix0; } - shiftbpl6_64(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6_64(); + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6e_64(); + loaded_pix = getbpl6_64(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl6o_64(); + loaded_pix = getbpl6_64(); + } + 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] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[1]) { + copybpl6o_64(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl6_64(); } - loaded_pix = getbpl6_64(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -35567,6 +67024,8 @@ static void lts_aga_fm2_dpf0_p6_ishres_dhires_spr_filtered(void) } } loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { @@ -35583,13 +67042,38 @@ static void lts_aga_fm2_dpf0_p6_ishres_dhires_spr_filtered(void) } last_bpl_pix = pix1; } - shiftbpl6_64(); - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6_64(); + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6e_64(); + loaded_pix = getbpl6_64(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl6o_64(); + loaded_pix = getbpl6_64(); + } + 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] && ((cmp | 1) & 255) == bplcon1_shift_full_masked[1]) { + copybpl6o_64(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl6_64(); + } + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } } - loaded_pix = getbpl6_64(); loaded_pixs[1] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; @@ -35607,11 +67091,28 @@ static void lts_aga_fm2_dpf0_p6_ishres_dhires_spr_filtered(void) } last_bpl_pix = pix2; } - shiftbpl6_64(); - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6_64(); + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6e_64(); + loaded_pix = getbpl6_64(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl6o_64(); + loaded_pix = getbpl6_64(); + } + 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] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[1]) { + copybpl6o_64(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl6_64(); } - loaded_pix = getbpl6_64(); uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -35621,6 +67122,8 @@ static void lts_aga_fm2_dpf0_p6_ishres_dhires_spr_filtered(void) } } loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { @@ -35637,32 +67140,67 @@ static void lts_aga_fm2_dpf0_p6_ishres_dhires_spr_filtered(void) } last_bpl_pix = pix3; } - shiftbpl6_64(); - if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6_64(); + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6e_64(); + loaded_pix = getbpl6_64(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl6o_64(); + loaded_pix = getbpl6_64(); + } + 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] && ((cmp | 3) & 255) == bplcon1_shift_full_masked[1]) { + copybpl6o_64(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl6_64(); + } + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } } - loaded_pix = getbpl6_64(); loaded_pixs[3] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { uae_u32 spix0 = denise_render_sprites2(pix0, sv0); if (spix0) { dpix_val0 = denise_colors.acolors[spix0]; - dpix_val1 = dpix_val0; } } - dpix_val0 = filter_pixel(dpix_val0, dpix_val1); dtbuf[h][0] = dpix_val0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } + dtbuf[h][1] = dpix_val1; if (sv2) { uae_u32 spix2 = denise_render_sprites2(pix2, sv2); if (spix2) { dpix_val2 = denise_colors.acolors[spix2]; - dpix_val3 = dpix_val2; } } - dpix_val2 = filter_pixel(dpix_val2, dpix_val3); dtbuf[h][2] = dpix_val2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + } + } + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -35671,6 +67209,14 @@ static void lts_aga_fm2_dpf0_p6_ishres_dhires_spr_filtered(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -35679,6 +67225,14 @@ static void lts_aga_fm2_dpf0_p6_ishres_dhires_spr_filtered(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -35702,7 +67256,11 @@ static void lts_aga_fm2_dpf0_p6_ishres_dhires_spr_filtered(void) denise_cck++; } } -static void lts_aga_fm2_dpf1_p6_ishres_dhires_spr(void) +static void lts_aga_fm2_dpf1_p6_ilores_dshres_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_ehb0_p6_ilores_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -35723,70 +67281,154 @@ static void lts_aga_fm2_dpf1_p6_ishres_dhires_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; + pix0 ^= bplcon4_denise_xor_val; + if (!(pix0 & 0x20)) { + dpix_val0 = denise_colors.acolors[pix0]; + } else { + uae_u32 v = (denise_colors.color_regs_aga[pix0 & 0x1f] >> 1) & 0x7f7f7f; + dpix_val0 = CONVERT_RGB(v); } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; } last_bpl_pix = pix0; } - shiftbpl6_64(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6e_64(); + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6_64(); + loaded_pix = getbpl6_64(); } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl6o_64(); + if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { + copybpl6_64(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6_64(); } - loaded_pix = getbpl6_64(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; svt = denise_render_sprites_aga(denise_spr_add); if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + pix1 ^= bplcon4_denise_xor_val; + if (!(pix1 & 0x20)) { + dpix_val1 = denise_colors.acolors[pix1]; + } else { + uae_u32 v = (denise_colors.color_regs_aga[pix1 & 0x1f] >> 1) & 0x7f7f7f; + dpix_val1 = CONVERT_RGB(v); + } + } + last_bpl_pix = pix1; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6_64(); + loaded_pix = getbpl6_64(); + } + if (bpldat_copy[0] && ((cmp | 1) & 255) == bplcon1_shift_full_masked[0]) { + copybpl6_64(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6_64(); + } + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } + } + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + pix2 ^= bplcon4_denise_xor_val; + if (!(pix2 & 0x20)) { + dpix_val2 = denise_colors.acolors[pix2]; + } else { + uae_u32 v = (denise_colors.color_regs_aga[pix2 & 0x1f] >> 1) & 0x7f7f7f; + dpix_val2 = CONVERT_RGB(v); + } + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6_64(); + loaded_pix = getbpl6_64(); + } + if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { + copybpl6_64(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6_64(); + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; } } - loaded_pixs[0] = loaded_pix; - shiftbpl6_64(); - internal_pixel_cnt += 2; - matchsprites_aga(cnt + 2); - uae_u8 pix2 = 0; - uae_u32 dpix_val2 = BLANK_COLOR; + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { - dpix_val2 = bordercolor; + dpix_val3 = bordercolor; if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + pix3 ^= bplcon4_denise_xor_val; + if (!(pix3 & 0x20)) { + dpix_val3 = denise_colors.acolors[pix3]; + } else { + uae_u32 v = (denise_colors.color_regs_aga[pix3 & 0x1f] >> 1) & 0x7f7f7f; + dpix_val3 = CONVERT_RGB(v); } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; } - last_bpl_pix = pix2; + last_bpl_pix = pix3; } - shiftbpl6_64(); - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6e_64(); + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6_64(); + loaded_pix = getbpl6_64(); } - if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { - copybpl6o_64(); + if (bpldat_copy[0] && ((cmp | 3) & 255) == bplcon1_shift_full_masked[0]) { + copybpl6_64(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6_64(); } - loaded_pix = getbpl6_64(); - uae_u32 sv2 = 0; + uae_u32 sv3 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; svt = denise_render_sprites_aga(denise_spr_add); if (!denise_sprite_blank_active && !sprites_hidden) { - sv2 = svt; + sv3 = svt; } } - loaded_pixs[2] = loaded_pix; - shiftbpl6_64(); - internal_pixel_cnt += 2; + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { uae_u32 spix0 = denise_render_sprites2(pix0, sv0); @@ -35795,6 +67437,13 @@ static void lts_aga_fm2_dpf1_p6_ishres_dhires_spr(void) } } dtbuf[h][0] = dpix_val0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } + dtbuf[h][1] = dpix_val1; if (sv2) { uae_u32 spix2 = denise_render_sprites2(pix2, sv2); if (spix2) { @@ -35802,6 +67451,13 @@ static void lts_aga_fm2_dpf1_p6_ishres_dhires_spr(void) } } dtbuf[h][2] = dpix_val2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + } + } + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -35810,6 +67466,14 @@ static void lts_aga_fm2_dpf1_p6_ishres_dhires_spr(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -35818,6 +67482,14 @@ static void lts_aga_fm2_dpf1_p6_ishres_dhires_spr(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -35841,7 +67513,11 @@ static void lts_aga_fm2_dpf1_p6_ishres_dhires_spr(void) denise_cck++; } } -static void lts_aga_fm2_dpf1_p6_ishres_dhires_spr_filtered(void) +static void lts_aga_fm2_ehb0_p6_ilores_dshres_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_ehb1_p6_ilores_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -35862,23 +67538,38 @@ static void lts_aga_fm2_dpf1_p6_ishres_dhires_spr_filtered(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; + pix0 ^= bplcon4_denise_xor_val; + if (!(pix0 & 0x20)) { + dpix_val0 = denise_colors.acolors[pix0]; + } else { + uae_u32 v = (denise_colors.color_regs_aga[pix0 & 0x1f] >> 1) & 0x7f7f7f; + dpix_val0 = CONVERT_RGB(v); } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; } last_bpl_pix = pix0; } - shiftbpl6_64(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6e_64(); + loaded_pix = getbpl6_64(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl6o_64(); + loaded_pix = getbpl6_64(); + } + 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] && ((cmp | 0) & 63) == 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(); } - loaded_pix = getbpl6_64(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -35888,6 +67579,8 @@ static void lts_aga_fm2_dpf1_p6_ishres_dhires_spr_filtered(void) } } loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { @@ -35895,25 +67588,48 @@ static void lts_aga_fm2_dpf1_p6_ishres_dhires_spr_filtered(void) if (denise_hdiw && bpl1dat_trigger) { pix1 = loaded_pixs[1]; clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - if (dpf_lookup_no[pix1]) { - val1 += dblpfofs[bpldualpf2of]; + pix1 ^= bplcon4_denise_xor_val; + if (!(pix1 & 0x20)) { + dpix_val1 = denise_colors.acolors[pix1]; + } else { + uae_u32 v = (denise_colors.color_regs_aga[pix1 & 0x1f] >> 1) & 0x7f7f7f; + dpix_val1 = CONVERT_RGB(v); } - val1 ^= bplcon4_denise_xor_val; - dpix_val1 = denise_colors.acolors[val1]; } last_bpl_pix = pix1; } - shiftbpl6_64(); - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6e_64(); + loaded_pix = getbpl6_64(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl6o_64(); + loaded_pix = getbpl6_64(); + } + 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] && ((cmp | 1) & 63) == 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(); + } + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } } - loaded_pix = getbpl6_64(); loaded_pixs[1] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; @@ -35922,23 +67638,38 @@ static void lts_aga_fm2_dpf1_p6_ishres_dhires_spr_filtered(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; + pix2 ^= bplcon4_denise_xor_val; + if (!(pix2 & 0x20)) { + dpix_val2 = denise_colors.acolors[pix2]; + } else { + uae_u32 v = (denise_colors.color_regs_aga[pix2 & 0x1f] >> 1) & 0x7f7f7f; + dpix_val2 = CONVERT_RGB(v); } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; } last_bpl_pix = pix2; } - shiftbpl6_64(); - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6e_64(); + loaded_pix = getbpl6_64(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl6o_64(); + loaded_pix = getbpl6_64(); + } + 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] && ((cmp | 2) & 63) == 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(); } - loaded_pix = getbpl6_64(); uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -35948,6 +67679,8 @@ static void lts_aga_fm2_dpf1_p6_ishres_dhires_spr_filtered(void) } } loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { @@ -35955,44 +67688,77 @@ static void lts_aga_fm2_dpf1_p6_ishres_dhires_spr_filtered(void) if (denise_hdiw && bpl1dat_trigger) { pix3 = loaded_pixs[3]; clxdat |= bplcoltable[pix3]; - uae_u8 val3 = dpf_lookup[pix3]; - if (dpf_lookup_no[pix3]) { - val3 += dblpfofs[bpldualpf2of]; + pix3 ^= bplcon4_denise_xor_val; + if (!(pix3 & 0x20)) { + dpix_val3 = denise_colors.acolors[pix3]; + } else { + uae_u32 v = (denise_colors.color_regs_aga[pix3 & 0x1f] >> 1) & 0x7f7f7f; + dpix_val3 = CONVERT_RGB(v); } - val3 ^= bplcon4_denise_xor_val; - dpix_val3 = denise_colors.acolors[val3]; } last_bpl_pix = pix3; } - shiftbpl6_64(); - if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6e_64(); + loaded_pix = getbpl6_64(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl6o_64(); + loaded_pix = getbpl6_64(); + } + 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] && ((cmp | 3) & 63) == 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(); + } + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } } - loaded_pix = getbpl6_64(); loaded_pixs[3] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { uae_u32 spix0 = denise_render_sprites2(pix0, sv0); if (spix0) { dpix_val0 = denise_colors.acolors[spix0]; - dpix_val1 = dpix_val0; } } - dpix_val0 = filter_pixel(dpix_val0, dpix_val1); dtbuf[h][0] = dpix_val0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } + dtbuf[h][1] = dpix_val1; if (sv2) { uae_u32 spix2 = denise_render_sprites2(pix2, sv2); if (spix2) { dpix_val2 = denise_colors.acolors[spix2]; - dpix_val3 = dpix_val2; } } - dpix_val2 = filter_pixel(dpix_val2, dpix_val3); dtbuf[h][2] = dpix_val2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + } + } + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -36001,6 +67767,14 @@ static void lts_aga_fm2_dpf1_p6_ishres_dhires_spr_filtered(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -36009,6 +67783,14 @@ static void lts_aga_fm2_dpf1_p6_ishres_dhires_spr_filtered(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -36032,7 +67814,11 @@ static void lts_aga_fm2_dpf1_p6_ishres_dhires_spr_filtered(void) denise_cck++; } } -static void lts_aga_fm2_ehb0_p6_ishres_dhires_spr(void) +static void lts_aga_fm2_ehb1_p6_ilores_dshres_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_ham0_p6_ilores_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -36053,21 +67839,21 @@ static void lts_aga_fm2_ehb0_p6_ishres_dhires_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - pix0 ^= bplcon4_denise_xor_val; - if (!(pix0 & 0x20)) { - dpix_val0 = denise_colors.acolors[pix0]; - } else { - uae_u32 v = (denise_colors.color_regs_aga[pix0 & 0x1f] >> 1) & 0x7f7f7f; - dpix_val0 = CONVERT_RGB(v); - } + dpix_val0 = decode_ham_pixel_aga(pix0); } last_bpl_pix = pix0; } - shiftbpl6_64(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6_64(); + loaded_pix = getbpl6_64(); + } + if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { copybpl6_64(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6_64(); } - loaded_pix = getbpl6_64(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -36077,8 +67863,40 @@ static void lts_aga_fm2_ehb0_p6_ishres_dhires_spr(void) } } loaded_pixs[0] = loaded_pix; - shiftbpl6_64(); - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + dpix_val1 = decode_ham_pixel_aga(pix1); + } + last_bpl_pix = pix1; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6_64(); + loaded_pix = getbpl6_64(); + } + if (bpldat_copy[0] && ((cmp | 1) & 255) == bplcon1_shift_full_masked[0]) { + copybpl6_64(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6_64(); + } + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } + } + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 1; matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; @@ -36087,21 +67905,21 @@ static void lts_aga_fm2_ehb0_p6_ishres_dhires_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - pix2 ^= bplcon4_denise_xor_val; - if (!(pix2 & 0x20)) { - dpix_val2 = denise_colors.acolors[pix2]; - } else { - uae_u32 v = (denise_colors.color_regs_aga[pix2 & 0x1f] >> 1) & 0x7f7f7f; - dpix_val2 = CONVERT_RGB(v); - } + dpix_val2 = decode_ham_pixel_aga(pix2); } last_bpl_pix = pix2; } - shiftbpl6_64(); - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6_64(); + loaded_pix = getbpl6_64(); + } + if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { copybpl6_64(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6_64(); } - loaded_pix = getbpl6_64(); uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -36111,8 +67929,40 @@ static void lts_aga_fm2_ehb0_p6_ishres_dhires_spr(void) } } loaded_pixs[2] = loaded_pix; - shiftbpl6_64(); - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + dpix_val3 = decode_ham_pixel_aga(pix3); + } + last_bpl_pix = pix3; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6_64(); + loaded_pix = getbpl6_64(); + } + if (bpldat_copy[0] && ((cmp | 3) & 255) == bplcon1_shift_full_masked[0]) { + copybpl6_64(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6_64(); + } + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } + } + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { uae_u32 spix0 = denise_render_sprites2(pix0, sv0); @@ -36121,6 +67971,13 @@ static void lts_aga_fm2_ehb0_p6_ishres_dhires_spr(void) } } dtbuf[h][0] = dpix_val0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } + dtbuf[h][1] = dpix_val1; if (sv2) { uae_u32 spix2 = denise_render_sprites2(pix2, sv2); if (spix2) { @@ -36128,6 +67985,13 @@ static void lts_aga_fm2_ehb0_p6_ishres_dhires_spr(void) } } dtbuf[h][2] = dpix_val2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + } + } + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -36136,6 +68000,14 @@ static void lts_aga_fm2_ehb0_p6_ishres_dhires_spr(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -36144,6 +68016,14 @@ static void lts_aga_fm2_ehb0_p6_ishres_dhires_spr(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -36167,7 +68047,11 @@ static void lts_aga_fm2_ehb0_p6_ishres_dhires_spr(void) denise_cck++; } } -static void lts_aga_fm2_ehb0_p6_ishres_dhires_spr_filtered(void) +static void lts_aga_fm2_ham0_p6_ilores_dshres_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_ham1_p6_ilores_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -36188,54 +68072,86 @@ static void lts_aga_fm2_ehb0_p6_ishres_dhires_spr_filtered(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - pix0 ^= bplcon4_denise_xor_val; - if (!(pix0 & 0x20)) { - dpix_val0 = denise_colors.acolors[pix0]; - } else { - uae_u32 v = (denise_colors.color_regs_aga[pix0 & 0x1f] >> 1) & 0x7f7f7f; - dpix_val0 = CONVERT_RGB(v); - } + dpix_val0 = decode_ham_pixel_aga(pix0); } last_bpl_pix = pix0; } - shiftbpl6_64(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6_64(); + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6e_64(); + loaded_pix = getbpl6_64(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl6o_64(); + loaded_pix = getbpl6_64(); + } + 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] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[1]) { + copybpl6o_64(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl6_64(); + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + dpix_val1 = decode_ham_pixel_aga(pix1); + } + last_bpl_pix = pix1; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6e_64(); + loaded_pix = getbpl6_64(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl6o_64(); + loaded_pix = getbpl6_64(); + } + 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] && ((cmp | 1) & 255) == bplcon1_shift_full_masked[1]) { + copybpl6o_64(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl6_64(); } - loaded_pix = getbpl6_64(); - uae_u32 sv0 = 0; + uae_u32 sv1 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; svt = denise_render_sprites_aga(denise_spr_add); if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } - } - loaded_pixs[0] = loaded_pix; - uae_u8 pix1 = 0; - uae_u32 dpix_val1 = BLANK_COLOR; - if (!denise_blank_active) { - dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - pix1 ^= bplcon4_denise_xor_val; - if (!(pix1 & 0x20)) { - dpix_val1 = denise_colors.acolors[pix1]; - } else { - uae_u32 v = (denise_colors.color_regs_aga[pix1 & 0x1f] >> 1) & 0x7f7f7f; - dpix_val1 = CONVERT_RGB(v); - } + sv1 = svt; } - last_bpl_pix = pix1; - } - shiftbpl6_64(); - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6_64(); } - loaded_pix = getbpl6_64(); loaded_pixs[1] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; @@ -36244,21 +68160,32 @@ static void lts_aga_fm2_ehb0_p6_ishres_dhires_spr_filtered(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - pix2 ^= bplcon4_denise_xor_val; - if (!(pix2 & 0x20)) { - dpix_val2 = denise_colors.acolors[pix2]; - } else { - uae_u32 v = (denise_colors.color_regs_aga[pix2 & 0x1f] >> 1) & 0x7f7f7f; - dpix_val2 = CONVERT_RGB(v); - } + dpix_val2 = decode_ham_pixel_aga(pix2); } last_bpl_pix = pix2; } - shiftbpl6_64(); - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6_64(); + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6e_64(); + loaded_pix = getbpl6_64(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl6o_64(); + loaded_pix = getbpl6_64(); + } + 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] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[1]) { + copybpl6o_64(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl6_64(); } - loaded_pix = getbpl6_64(); uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -36268,6 +68195,8 @@ static void lts_aga_fm2_ehb0_p6_ishres_dhires_spr_filtered(void) } } loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { @@ -36275,42 +68204,71 @@ static void lts_aga_fm2_ehb0_p6_ishres_dhires_spr_filtered(void) if (denise_hdiw && bpl1dat_trigger) { pix3 = loaded_pixs[3]; clxdat |= bplcoltable[pix3]; - pix3 ^= bplcon4_denise_xor_val; - if (!(pix3 & 0x20)) { - dpix_val3 = denise_colors.acolors[pix3]; - } else { - uae_u32 v = (denise_colors.color_regs_aga[pix3 & 0x1f] >> 1) & 0x7f7f7f; - dpix_val3 = CONVERT_RGB(v); - } + dpix_val3 = decode_ham_pixel_aga(pix3); } last_bpl_pix = pix3; } - shiftbpl6_64(); - if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6_64(); + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6e_64(); + loaded_pix = getbpl6_64(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl6o_64(); + loaded_pix = getbpl6_64(); + } + 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] && ((cmp | 3) & 255) == bplcon1_shift_full_masked[1]) { + copybpl6o_64(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl6_64(); + } + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } } - loaded_pix = getbpl6_64(); loaded_pixs[3] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { uae_u32 spix0 = denise_render_sprites2(pix0, sv0); if (spix0) { dpix_val0 = denise_colors.acolors[spix0]; - dpix_val1 = dpix_val0; } } - dpix_val0 = filter_pixel(dpix_val0, dpix_val1); dtbuf[h][0] = dpix_val0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } + dtbuf[h][1] = dpix_val1; if (sv2) { uae_u32 spix2 = denise_render_sprites2(pix2, sv2); if (spix2) { dpix_val2 = denise_colors.acolors[spix2]; - dpix_val3 = dpix_val2; } } - dpix_val2 = filter_pixel(dpix_val2, dpix_val3); dtbuf[h][2] = dpix_val2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + } + } + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -36319,6 +68277,14 @@ static void lts_aga_fm2_ehb0_p6_ishres_dhires_spr_filtered(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -36327,6 +68293,14 @@ static void lts_aga_fm2_ehb0_p6_ishres_dhires_spr_filtered(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -36350,7 +68324,11 @@ static void lts_aga_fm2_ehb0_p6_ishres_dhires_spr_filtered(void) denise_cck++; } } -static void lts_aga_fm2_ehb1_p6_ishres_dhires_spr(void) +static void lts_aga_fm2_ham1_p6_ilores_dshres_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_kehb0_p6_ilores_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -36372,23 +68350,21 @@ static void lts_aga_fm2_ehb1_p6_ishres_dhires_spr(void) pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; pix0 ^= bplcon4_denise_xor_val; - if (!(pix0 & 0x20)) { - dpix_val0 = denise_colors.acolors[pix0]; - } else { - uae_u32 v = (denise_colors.color_regs_aga[pix0 & 0x1f] >> 1) & 0x7f7f7f; - dpix_val0 = CONVERT_RGB(v); - } + dpix_val0 = denise_colors.acolors[pix0 & 31]; } last_bpl_pix = pix0; } - shiftbpl6_64(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6e_64(); + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6_64(); + loaded_pix = getbpl6_64(); } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl6o_64(); + if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { + copybpl6_64(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6_64(); } - loaded_pix = getbpl6_64(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -36398,8 +68374,41 @@ static void lts_aga_fm2_ehb1_p6_ishres_dhires_spr(void) } } loaded_pixs[0] = loaded_pix; - shiftbpl6_64(); - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + pix1 ^= bplcon4_denise_xor_val; + dpix_val1 = denise_colors.acolors[pix1 & 31]; + } + last_bpl_pix = pix1; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6_64(); + loaded_pix = getbpl6_64(); + } + if (bpldat_copy[0] && ((cmp | 1) & 255) == bplcon1_shift_full_masked[0]) { + copybpl6_64(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6_64(); + } + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } + } + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 1; matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; @@ -36409,23 +68418,21 @@ static void lts_aga_fm2_ehb1_p6_ishres_dhires_spr(void) pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; pix2 ^= bplcon4_denise_xor_val; - if (!(pix2 & 0x20)) { - dpix_val2 = denise_colors.acolors[pix2]; - } else { - uae_u32 v = (denise_colors.color_regs_aga[pix2 & 0x1f] >> 1) & 0x7f7f7f; - dpix_val2 = CONVERT_RGB(v); - } + dpix_val2 = denise_colors.acolors[pix2 & 31]; } last_bpl_pix = pix2; } - shiftbpl6_64(); - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6e_64(); + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6_64(); + loaded_pix = getbpl6_64(); } - if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { - copybpl6o_64(); + if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { + copybpl6_64(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6_64(); } - loaded_pix = getbpl6_64(); uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -36435,8 +68442,41 @@ static void lts_aga_fm2_ehb1_p6_ishres_dhires_spr(void) } } loaded_pixs[2] = loaded_pix; - shiftbpl6_64(); - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + pix3 ^= bplcon4_denise_xor_val; + dpix_val3 = denise_colors.acolors[pix3 & 31]; + } + last_bpl_pix = pix3; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6_64(); + loaded_pix = getbpl6_64(); + } + if (bpldat_copy[0] && ((cmp | 3) & 255) == bplcon1_shift_full_masked[0]) { + copybpl6_64(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl6_64(); + } + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } + } + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { uae_u32 spix0 = denise_render_sprites2(pix0, sv0); @@ -36445,6 +68485,13 @@ static void lts_aga_fm2_ehb1_p6_ishres_dhires_spr(void) } } dtbuf[h][0] = dpix_val0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } + dtbuf[h][1] = dpix_val1; if (sv2) { uae_u32 spix2 = denise_render_sprites2(pix2, sv2); if (spix2) { @@ -36452,6 +68499,13 @@ static void lts_aga_fm2_ehb1_p6_ishres_dhires_spr(void) } } dtbuf[h][2] = dpix_val2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + } + } + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -36460,6 +68514,14 @@ static void lts_aga_fm2_ehb1_p6_ishres_dhires_spr(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -36468,6 +68530,14 @@ static void lts_aga_fm2_ehb1_p6_ishres_dhires_spr(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -36491,7 +68561,11 @@ static void lts_aga_fm2_ehb1_p6_ishres_dhires_spr(void) denise_cck++; } } -static void lts_aga_fm2_ehb1_p6_ishres_dhires_spr_filtered(void) +static void lts_aga_fm2_kehb0_p6_ilores_dshres_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_kehb1_p6_ilores_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -36513,23 +68587,32 @@ static void lts_aga_fm2_ehb1_p6_ishres_dhires_spr_filtered(void) pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; pix0 ^= bplcon4_denise_xor_val; - if (!(pix0 & 0x20)) { - dpix_val0 = denise_colors.acolors[pix0]; - } else { - uae_u32 v = (denise_colors.color_regs_aga[pix0 & 0x1f] >> 1) & 0x7f7f7f; - dpix_val0 = CONVERT_RGB(v); - } + dpix_val0 = denise_colors.acolors[pix0 & 31]; } last_bpl_pix = pix0; } - shiftbpl6_64(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6e_64(); + loaded_pix = getbpl6_64(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl6o_64(); + loaded_pix = getbpl6_64(); + } + 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] && ((cmp | 0) & 63) == 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(); } - loaded_pix = getbpl6_64(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -36539,6 +68622,8 @@ static void lts_aga_fm2_ehb1_p6_ishres_dhires_spr_filtered(void) } } loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { @@ -36547,25 +68632,42 @@ static void lts_aga_fm2_ehb1_p6_ishres_dhires_spr_filtered(void) pix1 = loaded_pixs[1]; clxdat |= bplcoltable[pix1]; pix1 ^= bplcon4_denise_xor_val; - if (!(pix1 & 0x20)) { - dpix_val1 = denise_colors.acolors[pix1]; - } else { - uae_u32 v = (denise_colors.color_regs_aga[pix1 & 0x1f] >> 1) & 0x7f7f7f; - dpix_val1 = CONVERT_RGB(v); - } + dpix_val1 = denise_colors.acolors[pix1 & 31]; } last_bpl_pix = pix1; } - shiftbpl6_64(); - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6e_64(); + loaded_pix = getbpl6_64(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl6o_64(); + loaded_pix = getbpl6_64(); + } + 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] && ((cmp | 1) & 63) == 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(); + } + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } } - loaded_pix = getbpl6_64(); loaded_pixs[1] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; @@ -36575,23 +68677,32 @@ static void lts_aga_fm2_ehb1_p6_ishres_dhires_spr_filtered(void) pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; pix2 ^= bplcon4_denise_xor_val; - if (!(pix2 & 0x20)) { - dpix_val2 = denise_colors.acolors[pix2]; - } else { - uae_u32 v = (denise_colors.color_regs_aga[pix2 & 0x1f] >> 1) & 0x7f7f7f; - dpix_val2 = CONVERT_RGB(v); - } + dpix_val2 = denise_colors.acolors[pix2 & 31]; } last_bpl_pix = pix2; } - shiftbpl6_64(); - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6e_64(); + loaded_pix = getbpl6_64(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl6o_64(); + loaded_pix = getbpl6_64(); + } + 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] && ((cmp | 2) & 63) == 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(); } - loaded_pix = getbpl6_64(); uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -36601,6 +68712,8 @@ static void lts_aga_fm2_ehb1_p6_ishres_dhires_spr_filtered(void) } } loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { @@ -36609,44 +68722,71 @@ static void lts_aga_fm2_ehb1_p6_ishres_dhires_spr_filtered(void) pix3 = loaded_pixs[3]; clxdat |= bplcoltable[pix3]; pix3 ^= bplcon4_denise_xor_val; - if (!(pix3 & 0x20)) { - dpix_val3 = denise_colors.acolors[pix3]; - } else { - uae_u32 v = (denise_colors.color_regs_aga[pix3 & 0x1f] >> 1) & 0x7f7f7f; - dpix_val3 = CONVERT_RGB(v); - } + dpix_val3 = denise_colors.acolors[pix3 & 31]; } last_bpl_pix = pix3; } - shiftbpl6_64(); - if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl6e_64(); + loaded_pix = getbpl6_64(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl6o_64(); + loaded_pix = getbpl6_64(); + } + 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] && ((cmp | 3) & 63) == 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(); + } + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } } - loaded_pix = getbpl6_64(); loaded_pixs[3] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { uae_u32 spix0 = denise_render_sprites2(pix0, sv0); if (spix0) { dpix_val0 = denise_colors.acolors[spix0]; - dpix_val1 = dpix_val0; } } - dpix_val0 = filter_pixel(dpix_val0, dpix_val1); dtbuf[h][0] = dpix_val0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } + dtbuf[h][1] = dpix_val1; if (sv2) { uae_u32 spix2 = denise_render_sprites2(pix2, sv2); if (spix2) { dpix_val2 = denise_colors.acolors[spix2]; - dpix_val3 = dpix_val2; } } - dpix_val2 = filter_pixel(dpix_val2, dpix_val3); dtbuf[h][2] = dpix_val2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + } + } + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -36655,6 +68795,14 @@ static void lts_aga_fm2_ehb1_p6_ishres_dhires_spr_filtered(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -36663,6 +68811,14 @@ static void lts_aga_fm2_ehb1_p6_ishres_dhires_spr_filtered(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -36686,7 +68842,11 @@ static void lts_aga_fm2_ehb1_p6_ishres_dhires_spr_filtered(void) denise_cck++; } } -static void lts_aga_fm2_ham0_p6_ishres_dhires_spr(void) +static void lts_aga_fm2_kehb1_p6_ilores_dshres_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_n0_p8_ilores_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -36707,15 +68867,21 @@ static void lts_aga_fm2_ham0_p6_ishres_dhires_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - dpix_val0 = decode_ham_pixel_aga(pix0); + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix0; } - shiftbpl6_64(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6_64(); + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8_64(); + loaded_pix = getbpl8_64(); + } + if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { + copybpl8_64(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8_64(); } - loaded_pix = getbpl6_64(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -36725,23 +68891,40 @@ static void lts_aga_fm2_ham0_p6_ishres_dhires_spr(void) } } loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; if (denise_hdiw && bpl1dat_trigger) { pix1 = loaded_pixs[1]; - decode_ham_pixel_aga(pix1); + clxdat |= bplcoltable[pix1]; + dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix1; } - shiftbpl6_64(); - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6_64(); + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8_64(); + loaded_pix = getbpl8_64(); + } + if (bpldat_copy[0] && ((cmp | 1) & 255) == bplcon1_shift_full_masked[0]) { + copybpl8_64(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8_64(); + } + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } } - loaded_pix = getbpl6_64(); loaded_pixs[1] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; @@ -36750,15 +68933,21 @@ static void lts_aga_fm2_ham0_p6_ishres_dhires_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - dpix_val2 = decode_ham_pixel_aga(pix2); + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix2; } - shiftbpl6_64(); - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6_64(); + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8_64(); + loaded_pix = getbpl8_64(); + } + if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { + copybpl8_64(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8_64(); } - loaded_pix = getbpl6_64(); uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -36768,23 +68957,40 @@ static void lts_aga_fm2_ham0_p6_ishres_dhires_spr(void) } } loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { dpix_val3 = bordercolor; if (denise_hdiw && bpl1dat_trigger) { pix3 = loaded_pixs[3]; - decode_ham_pixel_aga(pix3); + clxdat |= bplcoltable[pix3]; + dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix3; } - shiftbpl6_64(); - if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6_64(); + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8_64(); + loaded_pix = getbpl8_64(); + } + if (bpldat_copy[0] && ((cmp | 3) & 255) == bplcon1_shift_full_masked[0]) { + copybpl8_64(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8_64(); + } + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } } - loaded_pix = getbpl6_64(); loaded_pixs[3] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { uae_u32 spix0 = denise_render_sprites2(pix0, sv0); @@ -36793,6 +68999,13 @@ static void lts_aga_fm2_ham0_p6_ishres_dhires_spr(void) } } dtbuf[h][0] = dpix_val0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } + dtbuf[h][1] = dpix_val1; if (sv2) { uae_u32 spix2 = denise_render_sprites2(pix2, sv2); if (spix2) { @@ -36800,6 +69013,13 @@ static void lts_aga_fm2_ham0_p6_ishres_dhires_spr(void) } } dtbuf[h][2] = dpix_val2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + } + } + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -36808,6 +69028,14 @@ static void lts_aga_fm2_ham0_p6_ishres_dhires_spr(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -36816,6 +69044,14 @@ static void lts_aga_fm2_ham0_p6_ishres_dhires_spr(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -36839,7 +69075,11 @@ static void lts_aga_fm2_ham0_p6_ishres_dhires_spr(void) denise_cck++; } } -static void lts_aga_fm2_ham0_p6_ishres_dhires_spr_filtered(void) +static void lts_aga_fm2_n0_p8_ilores_dshres_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_n1_p8_ilores_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -36860,15 +69100,32 @@ static void lts_aga_fm2_ham0_p6_ishres_dhires_spr_filtered(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - dpix_val0 = decode_ham_pixel_aga(pix0); + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix0; } - shiftbpl6_64(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6_64(); + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8e_64(); + loaded_pix = getbpl8_64(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl8o_64(); + loaded_pix = getbpl8_64(); + } + 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] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[1]) { + copybpl8o_64(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl8_64(); } - loaded_pix = getbpl6_64(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -36878,6 +69135,8 @@ static void lts_aga_fm2_ham0_p6_ishres_dhires_spr_filtered(void) } } loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { @@ -36885,17 +69144,42 @@ static void lts_aga_fm2_ham0_p6_ishres_dhires_spr_filtered(void) if (denise_hdiw && bpl1dat_trigger) { pix1 = loaded_pixs[1]; clxdat |= bplcoltable[pix1]; - dpix_val1 = decode_ham_pixel_aga(pix1); + dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix1; } - shiftbpl6_64(); - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6_64(); + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8e_64(); + loaded_pix = getbpl8_64(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl8o_64(); + loaded_pix = getbpl8_64(); + } + 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] && ((cmp | 1) & 255) == bplcon1_shift_full_masked[1]) { + copybpl8o_64(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl8_64(); + } + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } } - loaded_pix = getbpl6_64(); loaded_pixs[1] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; @@ -36904,15 +69188,32 @@ static void lts_aga_fm2_ham0_p6_ishres_dhires_spr_filtered(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - dpix_val2 = decode_ham_pixel_aga(pix2); + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix2; } - shiftbpl6_64(); - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6_64(); + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8e_64(); + loaded_pix = getbpl8_64(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl8o_64(); + loaded_pix = getbpl8_64(); + } + 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] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[1]) { + copybpl8o_64(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl8_64(); } - loaded_pix = getbpl6_64(); uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -36922,6 +69223,8 @@ static void lts_aga_fm2_ham0_p6_ishres_dhires_spr_filtered(void) } } loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { @@ -36929,36 +69232,71 @@ static void lts_aga_fm2_ham0_p6_ishres_dhires_spr_filtered(void) if (denise_hdiw && bpl1dat_trigger) { pix3 = loaded_pixs[3]; clxdat |= bplcoltable[pix3]; - dpix_val3 = decode_ham_pixel_aga(pix3); + dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix3; } - shiftbpl6_64(); - if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6_64(); + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8e_64(); + loaded_pix = getbpl8_64(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl8o_64(); + loaded_pix = getbpl8_64(); + } + 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] && ((cmp | 3) & 255) == bplcon1_shift_full_masked[1]) { + copybpl8o_64(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl8_64(); + } + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } } - loaded_pix = getbpl6_64(); loaded_pixs[3] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { uae_u32 spix0 = denise_render_sprites2(pix0, sv0); if (spix0) { dpix_val0 = denise_colors.acolors[spix0]; - dpix_val1 = dpix_val0; } } - dpix_val0 = filter_pixel(dpix_val0, dpix_val1); dtbuf[h][0] = dpix_val0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } + dtbuf[h][1] = dpix_val1; if (sv2) { uae_u32 spix2 = denise_render_sprites2(pix2, sv2); if (spix2) { dpix_val2 = denise_colors.acolors[spix2]; - dpix_val3 = dpix_val2; } } - dpix_val2 = filter_pixel(dpix_val2, dpix_val3); dtbuf[h][2] = dpix_val2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + } + } + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -36967,6 +69305,14 @@ static void lts_aga_fm2_ham0_p6_ishres_dhires_spr_filtered(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -36975,6 +69321,14 @@ static void lts_aga_fm2_ham0_p6_ishres_dhires_spr_filtered(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -36998,7 +69352,11 @@ static void lts_aga_fm2_ham0_p6_ishres_dhires_spr_filtered(void) denise_cck++; } } -static void lts_aga_fm2_ham1_p6_ishres_dhires_spr(void) +static void lts_aga_fm2_n1_p8_ilores_dshres_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_dpf0_p8_ilores_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -37019,18 +69377,26 @@ static void lts_aga_fm2_ham1_p6_ishres_dhires_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - dpix_val0 = decode_ham_pixel_aga(pix0); + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; } last_bpl_pix = pix0; } - shiftbpl6_64(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6e_64(); + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8_64(); + loaded_pix = getbpl8_64(); } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl6o_64(); + if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { + copybpl8_64(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8_64(); } - loaded_pix = getbpl6_64(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -37040,26 +69406,45 @@ static void lts_aga_fm2_ham1_p6_ishres_dhires_spr(void) } } loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; if (denise_hdiw && bpl1dat_trigger) { pix1 = loaded_pixs[1]; - decode_ham_pixel_aga(pix1); + clxdat |= bplcoltable[pix1]; + uae_u8 val1 = dpf_lookup[pix1]; + if (dpf_lookup_no[pix1]) { + val1 += dblpfofs[bpldualpf2of]; + } + val1 ^= bplcon4_denise_xor_val; + dpix_val1 = denise_colors.acolors[val1]; } last_bpl_pix = pix1; } - shiftbpl6_64(); - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6e_64(); + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8_64(); + loaded_pix = getbpl8_64(); } - if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { - copybpl6o_64(); + if (bpldat_copy[0] && ((cmp | 1) & 255) == bplcon1_shift_full_masked[0]) { + copybpl8_64(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8_64(); + } + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } } - loaded_pix = getbpl6_64(); loaded_pixs[1] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; @@ -37068,18 +69453,26 @@ static void lts_aga_fm2_ham1_p6_ishres_dhires_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - dpix_val2 = decode_ham_pixel_aga(pix2); + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; } last_bpl_pix = pix2; } - shiftbpl6_64(); - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6e_64(); + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8_64(); + loaded_pix = getbpl8_64(); } - if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { - copybpl6o_64(); + if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { + copybpl8_64(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8_64(); } - loaded_pix = getbpl6_64(); uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -37089,26 +69482,45 @@ static void lts_aga_fm2_ham1_p6_ishres_dhires_spr(void) } } loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { dpix_val3 = bordercolor; if (denise_hdiw && bpl1dat_trigger) { pix3 = loaded_pixs[3]; - decode_ham_pixel_aga(pix3); + clxdat |= bplcoltable[pix3]; + uae_u8 val3 = dpf_lookup[pix3]; + if (dpf_lookup_no[pix3]) { + val3 += dblpfofs[bpldualpf2of]; + } + val3 ^= bplcon4_denise_xor_val; + dpix_val3 = denise_colors.acolors[val3]; } last_bpl_pix = pix3; } - shiftbpl6_64(); - if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6e_64(); + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8_64(); + loaded_pix = getbpl8_64(); } - if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) { - copybpl6o_64(); + if (bpldat_copy[0] && ((cmp | 3) & 255) == bplcon1_shift_full_masked[0]) { + copybpl8_64(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8_64(); + } + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } } - loaded_pix = getbpl6_64(); loaded_pixs[3] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { uae_u32 spix0 = denise_render_sprites2(pix0, sv0); @@ -37117,6 +69529,13 @@ static void lts_aga_fm2_ham1_p6_ishres_dhires_spr(void) } } dtbuf[h][0] = dpix_val0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } + dtbuf[h][1] = dpix_val1; if (sv2) { uae_u32 spix2 = denise_render_sprites2(pix2, sv2); if (spix2) { @@ -37124,6 +69543,13 @@ static void lts_aga_fm2_ham1_p6_ishres_dhires_spr(void) } } dtbuf[h][2] = dpix_val2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + } + } + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -37132,6 +69558,14 @@ static void lts_aga_fm2_ham1_p6_ishres_dhires_spr(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -37140,6 +69574,14 @@ static void lts_aga_fm2_ham1_p6_ishres_dhires_spr(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -37163,7 +69605,11 @@ static void lts_aga_fm2_ham1_p6_ishres_dhires_spr(void) denise_cck++; } } -static void lts_aga_fm2_ham1_p6_ishres_dhires_spr_filtered(void) +static void lts_aga_fm2_dpf0_p8_ilores_dshres_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_dpf1_p8_ilores_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -37184,18 +69630,37 @@ static void lts_aga_fm2_ham1_p6_ishres_dhires_spr_filtered(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - dpix_val0 = decode_ham_pixel_aga(pix0); + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; } last_bpl_pix = pix0; } - shiftbpl6_64(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6e_64(); + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8e_64(); + loaded_pix = getbpl8_64(); } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl6o_64(); + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl8o_64(); + loaded_pix = getbpl8_64(); + } + 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] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[1]) { + copybpl8o_64(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl8_64(); } - loaded_pix = getbpl6_64(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -37205,6 +69670,8 @@ static void lts_aga_fm2_ham1_p6_ishres_dhires_spr_filtered(void) } } loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { @@ -37212,20 +69679,47 @@ static void lts_aga_fm2_ham1_p6_ishres_dhires_spr_filtered(void) if (denise_hdiw && bpl1dat_trigger) { pix1 = loaded_pixs[1]; clxdat |= bplcoltable[pix1]; - dpix_val1 = decode_ham_pixel_aga(pix1); + uae_u8 val1 = dpf_lookup[pix1]; + if (dpf_lookup_no[pix1]) { + val1 += dblpfofs[bpldualpf2of]; + } + val1 ^= bplcon4_denise_xor_val; + dpix_val1 = denise_colors.acolors[val1]; } last_bpl_pix = pix1; } - shiftbpl6_64(); - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6e_64(); + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8e_64(); + loaded_pix = getbpl8_64(); } - if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { - copybpl6o_64(); + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl8o_64(); + loaded_pix = getbpl8_64(); + } + 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] && ((cmp | 1) & 255) == bplcon1_shift_full_masked[1]) { + copybpl8o_64(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl8_64(); + } + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } } - loaded_pix = getbpl6_64(); loaded_pixs[1] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; @@ -37234,18 +69728,37 @@ static void lts_aga_fm2_ham1_p6_ishres_dhires_spr_filtered(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - dpix_val2 = decode_ham_pixel_aga(pix2); + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; } last_bpl_pix = pix2; } - shiftbpl6_64(); - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6e_64(); + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8e_64(); + loaded_pix = getbpl8_64(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl8o_64(); + loaded_pix = getbpl8_64(); + } + 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] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { - copybpl6o_64(); + if (bpldat_copy[1] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[1]) { + copybpl8o_64(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl8_64(); } - loaded_pix = getbpl6_64(); uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -37255,6 +69768,8 @@ static void lts_aga_fm2_ham1_p6_ishres_dhires_spr_filtered(void) } } loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { @@ -37262,39 +69777,76 @@ static void lts_aga_fm2_ham1_p6_ishres_dhires_spr_filtered(void) if (denise_hdiw && bpl1dat_trigger) { pix3 = loaded_pixs[3]; clxdat |= bplcoltable[pix3]; - dpix_val3 = decode_ham_pixel_aga(pix3); + uae_u8 val3 = dpf_lookup[pix3]; + if (dpf_lookup_no[pix3]) { + val3 += dblpfofs[bpldualpf2of]; + } + val3 ^= bplcon4_denise_xor_val; + dpix_val3 = denise_colors.acolors[val3]; } last_bpl_pix = pix3; } - shiftbpl6_64(); - if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6e_64(); + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8e_64(); + loaded_pix = getbpl8_64(); } - if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) { - copybpl6o_64(); + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl8o_64(); + loaded_pix = getbpl8_64(); + } + 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] && ((cmp | 3) & 255) == bplcon1_shift_full_masked[1]) { + copybpl8o_64(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl8_64(); + } + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } } - loaded_pix = getbpl6_64(); loaded_pixs[3] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { uae_u32 spix0 = denise_render_sprites2(pix0, sv0); if (spix0) { dpix_val0 = denise_colors.acolors[spix0]; - dpix_val1 = dpix_val0; } } - dpix_val0 = filter_pixel(dpix_val0, dpix_val1); dtbuf[h][0] = dpix_val0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } + dtbuf[h][1] = dpix_val1; if (sv2) { uae_u32 spix2 = denise_render_sprites2(pix2, sv2); if (spix2) { dpix_val2 = denise_colors.acolors[spix2]; - dpix_val3 = dpix_val2; } } - dpix_val2 = filter_pixel(dpix_val2, dpix_val3); dtbuf[h][2] = dpix_val2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + } + } + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -37303,6 +69855,14 @@ static void lts_aga_fm2_ham1_p6_ishres_dhires_spr_filtered(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -37311,6 +69871,14 @@ static void lts_aga_fm2_ham1_p6_ishres_dhires_spr_filtered(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -37334,7 +69902,11 @@ static void lts_aga_fm2_ham1_p6_ishres_dhires_spr_filtered(void) denise_cck++; } } -static void lts_aga_fm2_kehb0_p6_ishres_dhires_spr(void) +static void lts_aga_fm2_dpf1_p8_ilores_dshres_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_ehb0_p8_ilores_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -37345,26 +69917,13 @@ 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; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - pix0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[pix0 & 31]; - } - last_bpl_pix = pix0; } - shiftbpl6_64(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6_64(); - } - loaded_pix = getbpl6_64(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -37373,27 +69932,28 @@ static void lts_aga_fm2_kehb0_p6_ishres_dhires_spr(void) sv0 = svt; } } - loaded_pixs[0] = loaded_pix; - shiftbpl6_64(); - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } + } + internal_pixel_cnt += 1; matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - pix2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[pix2 & 31]; - } - last_bpl_pix = pix2; - } - shiftbpl6_64(); - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6_64(); } - loaded_pix = getbpl6_64(); uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -37402,9 +69962,22 @@ static void lts_aga_fm2_kehb0_p6_ishres_dhires_spr(void) sv2 = svt; } } - loaded_pixs[2] = loaded_pix; - shiftbpl6_64(); - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } + } + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { uae_u32 spix0 = denise_render_sprites2(pix0, sv0); @@ -37413,6 +69986,13 @@ static void lts_aga_fm2_kehb0_p6_ishres_dhires_spr(void) } } dtbuf[h][0] = dpix_val0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } + dtbuf[h][1] = dpix_val1; if (sv2) { uae_u32 spix2 = denise_render_sprites2(pix2, sv2); if (spix2) { @@ -37420,6 +70000,13 @@ static void lts_aga_fm2_kehb0_p6_ishres_dhires_spr(void) } } dtbuf[h][2] = dpix_val2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + } + } + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -37428,6 +70015,14 @@ static void lts_aga_fm2_kehb0_p6_ishres_dhires_spr(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -37436,6 +70031,14 @@ static void lts_aga_fm2_kehb0_p6_ishres_dhires_spr(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -37459,7 +70062,11 @@ static void lts_aga_fm2_kehb0_p6_ishres_dhires_spr(void) denise_cck++; } } -static void lts_aga_fm2_kehb0_p6_ishres_dhires_spr_filtered(void) +static void lts_aga_fm2_ehb0_p8_ilores_dshres_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_ehb1_p8_ilores_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -37470,26 +70077,13 @@ 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; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - pix0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[pix0 & 31]; - } - last_bpl_pix = pix0; - } - shiftbpl6_64(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6_64(); } - loaded_pix = getbpl6_64(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -37498,44 +70092,28 @@ static void lts_aga_fm2_kehb0_p6_ishres_dhires_spr_filtered(void) sv0 = svt; } } - loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - pix1 ^= bplcon4_denise_xor_val; - dpix_val1 = denise_colors.acolors[pix1 & 31]; - } - last_bpl_pix = pix1; } - shiftbpl6_64(); - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6_64(); + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } } - loaded_pix = getbpl6_64(); - loaded_pixs[1] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - pix2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[pix2 & 31]; - } - last_bpl_pix = pix2; - } - shiftbpl6_64(); - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6_64(); } - loaded_pix = getbpl6_64(); uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -37544,45 +70122,51 @@ static void lts_aga_fm2_kehb0_p6_ishres_dhires_spr_filtered(void) sv2 = svt; } } - loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - pix3 ^= bplcon4_denise_xor_val; - dpix_val3 = denise_colors.acolors[pix3 & 31]; - } - last_bpl_pix = pix3; } - shiftbpl6_64(); - if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6_64(); + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } } - loaded_pix = getbpl6_64(); - loaded_pixs[3] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { uae_u32 spix0 = denise_render_sprites2(pix0, sv0); if (spix0) { dpix_val0 = denise_colors.acolors[spix0]; - dpix_val1 = dpix_val0; } } - dpix_val0 = filter_pixel(dpix_val0, dpix_val1); dtbuf[h][0] = dpix_val0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } + dtbuf[h][1] = dpix_val1; if (sv2) { uae_u32 spix2 = denise_render_sprites2(pix2, sv2); if (spix2) { dpix_val2 = denise_colors.acolors[spix2]; - dpix_val3 = dpix_val2; } } - dpix_val2 = filter_pixel(dpix_val2, dpix_val3); dtbuf[h][2] = dpix_val2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + } + } + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -37591,6 +70175,14 @@ static void lts_aga_fm2_kehb0_p6_ishres_dhires_spr_filtered(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -37599,6 +70191,14 @@ static void lts_aga_fm2_kehb0_p6_ishres_dhires_spr_filtered(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -37622,7 +70222,11 @@ static void lts_aga_fm2_kehb0_p6_ishres_dhires_spr_filtered(void) denise_cck++; } } -static void lts_aga_fm2_kehb1_p6_ishres_dhires_spr(void) +static void lts_aga_fm2_ehb1_p8_ilores_dshres_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_ham0_p8_ilores_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -37643,19 +70247,21 @@ static void lts_aga_fm2_kehb1_p6_ishres_dhires_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - pix0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[pix0 & 31]; + dpix_val0 = decode_ham_pixel_aga(pix0); } last_bpl_pix = pix0; } - shiftbpl6_64(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6e_64(); + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8_64(); + loaded_pix = getbpl8_64(); } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl6o_64(); + if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { + copybpl8_64(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8_64(); } - loaded_pix = getbpl6_64(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -37665,8 +70271,40 @@ static void lts_aga_fm2_kehb1_p6_ishres_dhires_spr(void) } } loaded_pixs[0] = loaded_pix; - shiftbpl6_64(); - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + dpix_val1 = decode_ham_pixel_aga(pix1); + } + last_bpl_pix = pix1; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8_64(); + loaded_pix = getbpl8_64(); + } + if (bpldat_copy[0] && ((cmp | 1) & 255) == bplcon1_shift_full_masked[0]) { + copybpl8_64(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8_64(); + } + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } + } + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 1; matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; @@ -37675,19 +70313,21 @@ static void lts_aga_fm2_kehb1_p6_ishres_dhires_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - pix2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[pix2 & 31]; + dpix_val2 = decode_ham_pixel_aga(pix2); } last_bpl_pix = pix2; } - shiftbpl6_64(); - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6e_64(); + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8_64(); + loaded_pix = getbpl8_64(); } - if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { - copybpl6o_64(); + if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { + copybpl8_64(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8_64(); } - loaded_pix = getbpl6_64(); uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -37697,8 +70337,40 @@ static void lts_aga_fm2_kehb1_p6_ishres_dhires_spr(void) } } loaded_pixs[2] = loaded_pix; - shiftbpl6_64(); - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + dpix_val3 = decode_ham_pixel_aga(pix3); + } + last_bpl_pix = pix3; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8_64(); + loaded_pix = getbpl8_64(); + } + if (bpldat_copy[0] && ((cmp | 3) & 255) == bplcon1_shift_full_masked[0]) { + copybpl8_64(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8_64(); + } + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } + } + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { uae_u32 spix0 = denise_render_sprites2(pix0, sv0); @@ -37707,6 +70379,13 @@ static void lts_aga_fm2_kehb1_p6_ishres_dhires_spr(void) } } dtbuf[h][0] = dpix_val0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } + dtbuf[h][1] = dpix_val1; if (sv2) { uae_u32 spix2 = denise_render_sprites2(pix2, sv2); if (spix2) { @@ -37714,6 +70393,13 @@ static void lts_aga_fm2_kehb1_p6_ishres_dhires_spr(void) } } dtbuf[h][2] = dpix_val2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + } + } + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -37722,6 +70408,14 @@ static void lts_aga_fm2_kehb1_p6_ishres_dhires_spr(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -37730,6 +70424,14 @@ static void lts_aga_fm2_kehb1_p6_ishres_dhires_spr(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -37753,7 +70455,11 @@ static void lts_aga_fm2_kehb1_p6_ishres_dhires_spr(void) denise_cck++; } } -static void lts_aga_fm2_kehb1_p6_ishres_dhires_spr_filtered(void) +static void lts_aga_fm2_ham0_p8_ilores_dshres_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_ham1_p8_ilores_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -37774,19 +70480,32 @@ static void lts_aga_fm2_kehb1_p6_ishres_dhires_spr_filtered(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - pix0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[pix0 & 31]; + dpix_val0 = decode_ham_pixel_aga(pix0); } last_bpl_pix = pix0; } - shiftbpl6_64(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6e_64(); + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8e_64(); + loaded_pix = getbpl8_64(); } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl6o_64(); + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl8o_64(); + loaded_pix = getbpl8_64(); + } + 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] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[1]) { + copybpl8o_64(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl8_64(); } - loaded_pix = getbpl6_64(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -37796,6 +70515,8 @@ static void lts_aga_fm2_kehb1_p6_ishres_dhires_spr_filtered(void) } } loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { @@ -37803,21 +70524,42 @@ static void lts_aga_fm2_kehb1_p6_ishres_dhires_spr_filtered(void) if (denise_hdiw && bpl1dat_trigger) { pix1 = loaded_pixs[1]; clxdat |= bplcoltable[pix1]; - pix1 ^= bplcon4_denise_xor_val; - dpix_val1 = denise_colors.acolors[pix1 & 31]; + dpix_val1 = decode_ham_pixel_aga(pix1); } last_bpl_pix = pix1; } - shiftbpl6_64(); - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6e_64(); + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8e_64(); + loaded_pix = getbpl8_64(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl8o_64(); + loaded_pix = getbpl8_64(); + } + 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] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { - copybpl6o_64(); + if (bpldat_copy[1] && ((cmp | 1) & 255) == bplcon1_shift_full_masked[1]) { + copybpl8o_64(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl8_64(); + } + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } } - loaded_pix = getbpl6_64(); loaded_pixs[1] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; @@ -37826,19 +70568,32 @@ static void lts_aga_fm2_kehb1_p6_ishres_dhires_spr_filtered(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - pix2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[pix2 & 31]; + dpix_val2 = decode_ham_pixel_aga(pix2); } last_bpl_pix = pix2; } - shiftbpl6_64(); - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6e_64(); + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8e_64(); + loaded_pix = getbpl8_64(); } - if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { - copybpl6o_64(); + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl8o_64(); + loaded_pix = getbpl8_64(); + } + 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] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[1]) { + copybpl8o_64(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl8_64(); } - loaded_pix = getbpl6_64(); uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -37848,6 +70603,8 @@ static void lts_aga_fm2_kehb1_p6_ishres_dhires_spr_filtered(void) } } loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { @@ -37855,40 +70612,71 @@ static void lts_aga_fm2_kehb1_p6_ishres_dhires_spr_filtered(void) if (denise_hdiw && bpl1dat_trigger) { pix3 = loaded_pixs[3]; clxdat |= bplcoltable[pix3]; - pix3 ^= bplcon4_denise_xor_val; - dpix_val3 = denise_colors.acolors[pix3 & 31]; + dpix_val3 = decode_ham_pixel_aga(pix3); } last_bpl_pix = pix3; } - shiftbpl6_64(); - if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6e_64(); + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8e_64(); + loaded_pix = getbpl8_64(); } - if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) { - copybpl6o_64(); + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl8o_64(); + loaded_pix = getbpl8_64(); + } + 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] && ((cmp | 3) & 255) == bplcon1_shift_full_masked[1]) { + copybpl8o_64(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl8_64(); + } + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } } - loaded_pix = getbpl6_64(); loaded_pixs[3] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { uae_u32 spix0 = denise_render_sprites2(pix0, sv0); if (spix0) { dpix_val0 = denise_colors.acolors[spix0]; - dpix_val1 = dpix_val0; } } - dpix_val0 = filter_pixel(dpix_val0, dpix_val1); dtbuf[h][0] = dpix_val0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } + dtbuf[h][1] = dpix_val1; if (sv2) { uae_u32 spix2 = denise_render_sprites2(pix2, sv2); if (spix2) { dpix_val2 = denise_colors.acolors[spix2]; - dpix_val3 = dpix_val2; } } - dpix_val2 = filter_pixel(dpix_val2, dpix_val3); dtbuf[h][2] = dpix_val2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + } + } + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -37897,6 +70685,14 @@ static void lts_aga_fm2_kehb1_p6_ishres_dhires_spr_filtered(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -37905,6 +70701,14 @@ static void lts_aga_fm2_kehb1_p6_ishres_dhires_spr_filtered(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -37928,7 +70732,11 @@ static void lts_aga_fm2_kehb1_p6_ishres_dhires_spr_filtered(void) denise_cck++; } } -static void lts_aga_fm2_n0_p8_ishres_dhires_spr(void) +static void lts_aga_fm2_ham1_p8_ilores_dshres_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_kehb0_p8_ilores_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -37939,25 +70747,13 @@ 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; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix0; - } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); } - loaded_pix = getbpl8_64(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -37966,26 +70762,28 @@ static void lts_aga_fm2_n0_p8_ishres_dhires_spr(void) sv0 = svt; } } - loaded_pixs[0] = loaded_pix; - shiftbpl8_64(); - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } + } + internal_pixel_cnt += 1; matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix2; - } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); } - loaded_pix = getbpl8_64(); uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -37994,9 +70792,22 @@ static void lts_aga_fm2_n0_p8_ishres_dhires_spr(void) sv2 = svt; } } - loaded_pixs[2] = loaded_pix; - shiftbpl8_64(); - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } + } + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { uae_u32 spix0 = denise_render_sprites2(pix0, sv0); @@ -38005,6 +70816,13 @@ static void lts_aga_fm2_n0_p8_ishres_dhires_spr(void) } } dtbuf[h][0] = dpix_val0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } + dtbuf[h][1] = dpix_val1; if (sv2) { uae_u32 spix2 = denise_render_sprites2(pix2, sv2); if (spix2) { @@ -38012,6 +70830,13 @@ static void lts_aga_fm2_n0_p8_ishres_dhires_spr(void) } } dtbuf[h][2] = dpix_val2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + } + } + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -38020,6 +70845,14 @@ static void lts_aga_fm2_n0_p8_ishres_dhires_spr(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -38028,6 +70861,14 @@ static void lts_aga_fm2_n0_p8_ishres_dhires_spr(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -38051,7 +70892,11 @@ static void lts_aga_fm2_n0_p8_ishres_dhires_spr(void) denise_cck++; } } -static void lts_aga_fm2_n0_p8_ishres_dhires_spr_filtered(void) +static void lts_aga_fm2_kehb0_p8_ilores_dshres_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_kehb1_p8_ilores_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -38062,25 +70907,13 @@ 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; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix0; } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); - } - loaded_pix = getbpl8_64(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -38089,42 +70922,28 @@ static void lts_aga_fm2_n0_p8_ishres_dhires_spr_filtered(void) sv0 = svt; } } - loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix1; } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } } - loaded_pix = getbpl8_64(); - loaded_pixs[1] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix2; - } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); } - loaded_pix = getbpl8_64(); uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -38133,44 +70952,51 @@ static void lts_aga_fm2_n0_p8_ishres_dhires_spr_filtered(void) sv2 = svt; } } - loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix3; } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } } - loaded_pix = getbpl8_64(); - loaded_pixs[3] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { uae_u32 spix0 = denise_render_sprites2(pix0, sv0); if (spix0) { dpix_val0 = denise_colors.acolors[spix0]; - dpix_val1 = dpix_val0; } } - dpix_val0 = filter_pixel(dpix_val0, dpix_val1); dtbuf[h][0] = dpix_val0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } + dtbuf[h][1] = dpix_val1; if (sv2) { uae_u32 spix2 = denise_render_sprites2(pix2, sv2); if (spix2) { dpix_val2 = denise_colors.acolors[spix2]; - dpix_val3 = dpix_val2; } } - dpix_val2 = filter_pixel(dpix_val2, dpix_val3); dtbuf[h][2] = dpix_val2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + } + } + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -38179,6 +71005,14 @@ static void lts_aga_fm2_n0_p8_ishres_dhires_spr_filtered(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -38187,6 +71021,14 @@ static void lts_aga_fm2_n0_p8_ishres_dhires_spr_filtered(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -38210,7 +71052,11 @@ static void lts_aga_fm2_n0_p8_ishres_dhires_spr_filtered(void) denise_cck++; } } -static void lts_aga_fm2_n1_p8_ishres_dhires_spr(void) +static void lts_aga_fm2_kehb1_p8_ilores_dshres_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_n0_p2_ihires_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -38223,7 +71069,6 @@ static void lts_aga_fm2_n1_p8_ishres_dhires_spr(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -38235,26 +71080,43 @@ static void lts_aga_fm2_n1_p8_ishres_dhires_spr(void) } last_bpl_pix = pix0; } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e_64(); + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl2_64(); + loaded_pix = getbpl2_64(); } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl2_64(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl2_64(); } - loaded_pix = getbpl8_64(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; } + last_bpl_pix = pix1; } - loaded_pixs[0] = loaded_pix; - shiftbpl8_64(); - internal_pixel_cnt += 2; - matchsprites_aga(cnt + 2); + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl2_64(); + loaded_pix = getbpl2_64(); + } + if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { + copybpl2_64(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl2_64(); + } + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { @@ -38266,40 +71128,48 @@ static void lts_aga_fm2_n1_p8_ishres_dhires_spr(void) } last_bpl_pix = pix2; } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e_64(); + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl2_64(); + loaded_pix = getbpl2_64(); } - if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); + if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { + copybpl2_64(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl2_64(); } - loaded_pix = getbpl8_64(); - uae_u32 sv2 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv2 = svt; + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; } + last_bpl_pix = pix3; } - loaded_pixs[2] = loaded_pix; - shiftbpl8_64(); - internal_pixel_cnt += 2; + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl2_64(); + loaded_pix = getbpl2_64(); + } + if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { + copybpl2_64(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl2_64(); + } + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - } - } dtbuf[h][0] = dpix_val0; - if (sv2) { - uae_u32 spix2 = denise_render_sprites2(pix2, sv2); - if (spix2) { - dpix_val2 = denise_colors.acolors[spix2]; - } - } + dtbuf[h][1] = dpix_val1; dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -38308,6 +71178,14 @@ static void lts_aga_fm2_n1_p8_ishres_dhires_spr(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -38316,6 +71194,14 @@ static void lts_aga_fm2_n1_p8_ishres_dhires_spr(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -38339,7 +71225,11 @@ static void lts_aga_fm2_n1_p8_ishres_dhires_spr(void) denise_cck++; } } -static void lts_aga_fm2_n1_p8_ishres_dhires_spr_filtered(void) +static void lts_aga_fm2_n0_p2_ihires_dshres_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_n1_p2_ihires_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -38352,7 +71242,6 @@ static void lts_aga_fm2_n1_p8_ishres_dhires_spr_filtered(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -38364,23 +71253,30 @@ static void lts_aga_fm2_n1_p8_ishres_dhires_spr_filtered(void) } last_bpl_pix = pix0; } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e_64(); + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl2e_64(); + loaded_pix = getbpl2_64(); } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl2o_64(); + loaded_pix = getbpl2_64(); } - loaded_pix = getbpl8_64(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } + 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] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { + copybpl2o_64(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl2_64(); } loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 1; uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { @@ -38392,17 +71288,30 @@ static void lts_aga_fm2_n1_p8_ishres_dhires_spr_filtered(void) } last_bpl_pix = pix1; } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e_64(); + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl2e_64(); + loaded_pix = getbpl2_64(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl2o_64(); + loaded_pix = getbpl2_64(); + } + 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] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); + if (bpldat_copy[1] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) { + copybpl2o_64(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl2_64(); } - loaded_pix = getbpl8_64(); loaded_pixs[1] = loaded_pix; - internal_pixel_cnt += 2; - matchsprites_aga(cnt + 2); + internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { @@ -38414,23 +71323,30 @@ static void lts_aga_fm2_n1_p8_ishres_dhires_spr_filtered(void) } last_bpl_pix = pix2; } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e_64(); + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl2e_64(); + loaded_pix = getbpl2_64(); } - if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl2o_64(); + loaded_pix = getbpl2_64(); } - loaded_pix = getbpl8_64(); - uae_u32 sv2 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv2 = svt; - } + 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] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) { + copybpl2o_64(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl2_64(); } loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 1; uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { @@ -38442,35 +71358,35 @@ static void lts_aga_fm2_n1_p8_ishres_dhires_spr_filtered(void) } last_bpl_pix = pix3; } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e_64(); + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl2e_64(); + loaded_pix = getbpl2_64(); } - if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl2o_64(); + loaded_pix = getbpl2_64(); + } + 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] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[1]) { + copybpl2o_64(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl2_64(); } - loaded_pix = getbpl8_64(); loaded_pixs[3] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - dpix_val1 = dpix_val0; - } - } - dpix_val0 = filter_pixel(dpix_val0, dpix_val1); dtbuf[h][0] = dpix_val0; - if (sv2) { - uae_u32 spix2 = denise_render_sprites2(pix2, sv2); - if (spix2) { - dpix_val2 = denise_colors.acolors[spix2]; - dpix_val3 = dpix_val2; - } - } - dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + dtbuf[h][1] = dpix_val1; dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -38479,6 +71395,14 @@ static void lts_aga_fm2_n1_p8_ishres_dhires_spr_filtered(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -38487,6 +71411,14 @@ static void lts_aga_fm2_n1_p8_ishres_dhires_spr_filtered(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -38510,7 +71442,11 @@ static void lts_aga_fm2_n1_p8_ishres_dhires_spr_filtered(void) denise_cck++; } } -static void lts_aga_fm2_dpf0_p8_ishres_dhires_spr(void) +static void lts_aga_fm2_n1_p2_ihires_dshres_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_dpf0_p2_ihires_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -38523,7 +71459,6 @@ static void lts_aga_fm2_dpf0_p8_ishres_dhires_spr(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -38540,23 +71475,48 @@ static void lts_aga_fm2_dpf0_p8_ishres_dhires_spr(void) } last_bpl_pix = pix0; } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl2_64(); + loaded_pix = getbpl2_64(); } - loaded_pix = getbpl8_64(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl2_64(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl2_64(); } loaded_pixs[0] = loaded_pix; - shiftbpl8_64(); - internal_pixel_cnt += 2; - matchsprites_aga(cnt + 2); + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + uae_u8 val1 = dpf_lookup[pix1]; + if (dpf_lookup_no[pix1]) { + val1 += dblpfofs[bpldualpf2of]; + } + val1 ^= bplcon4_denise_xor_val; + dpix_val1 = denise_colors.acolors[val1]; + } + last_bpl_pix = pix1; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl2_64(); + loaded_pix = getbpl2_64(); + } + if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { + copybpl2_64(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl2_64(); + } + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { @@ -38573,37 +71533,53 @@ static void lts_aga_fm2_dpf0_p8_ishres_dhires_spr(void) } last_bpl_pix = pix2; } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl2_64(); + loaded_pix = getbpl2_64(); } - loaded_pix = getbpl8_64(); - uae_u32 sv2 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv2 = svt; - } + if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { + copybpl2_64(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl2_64(); } loaded_pixs[2] = loaded_pix; - shiftbpl8_64(); - internal_pixel_cnt += 2; - if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + uae_u8 val3 = dpf_lookup[pix3]; + if (dpf_lookup_no[pix3]) { + val3 += dblpfofs[bpldualpf2of]; } + val3 ^= bplcon4_denise_xor_val; + dpix_val3 = denise_colors.acolors[val3]; } + last_bpl_pix = pix3; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl2_64(); + loaded_pix = getbpl2_64(); + } + if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { + copybpl2_64(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl2_64(); + } + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 1; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; - if (sv2) { - uae_u32 spix2 = denise_render_sprites2(pix2, sv2); - if (spix2) { - dpix_val2 = denise_colors.acolors[spix2]; - } - } + dtbuf[h][1] = dpix_val1; dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -38612,6 +71588,14 @@ static void lts_aga_fm2_dpf0_p8_ishres_dhires_spr(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -38620,6 +71604,14 @@ static void lts_aga_fm2_dpf0_p8_ishres_dhires_spr(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -38643,7 +71635,11 @@ static void lts_aga_fm2_dpf0_p8_ishres_dhires_spr(void) denise_cck++; } } -static void lts_aga_fm2_dpf0_p8_ishres_dhires_spr_filtered(void) +static void lts_aga_fm2_dpf0_p2_ihires_dshres_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_dpf1_p2_ihires_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -38656,7 +71652,6 @@ static void lts_aga_fm2_dpf0_p8_ishres_dhires_spr_filtered(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -38673,20 +71668,30 @@ static void lts_aga_fm2_dpf0_p8_ishres_dhires_spr_filtered(void) } last_bpl_pix = pix0; } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl2e_64(); + loaded_pix = getbpl2_64(); } - loaded_pix = getbpl8_64(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl2o_64(); + loaded_pix = getbpl2_64(); + } + 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] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { + copybpl2o_64(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl2_64(); } loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 1; uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { @@ -38703,14 +71708,30 @@ static void lts_aga_fm2_dpf0_p8_ishres_dhires_spr_filtered(void) } last_bpl_pix = pix1; } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl2e_64(); + loaded_pix = getbpl2_64(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl2o_64(); + loaded_pix = getbpl2_64(); + } + 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] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) { + copybpl2o_64(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl2_64(); } - loaded_pix = getbpl8_64(); loaded_pixs[1] = loaded_pix; - internal_pixel_cnt += 2; - matchsprites_aga(cnt + 2); + internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { @@ -38727,20 +71748,30 @@ static void lts_aga_fm2_dpf0_p8_ishres_dhires_spr_filtered(void) } last_bpl_pix = pix2; } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl2e_64(); + loaded_pix = getbpl2_64(); } - loaded_pix = getbpl8_64(); - uae_u32 sv2 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv2 = svt; - } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl2o_64(); + loaded_pix = getbpl2_64(); + } + 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] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) { + copybpl2o_64(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl2_64(); } loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 1; uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { @@ -38757,32 +71788,35 @@ static void lts_aga_fm2_dpf0_p8_ishres_dhires_spr_filtered(void) } last_bpl_pix = pix3; } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl2e_64(); + loaded_pix = getbpl2_64(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl2o_64(); + loaded_pix = getbpl2_64(); + } + 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] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[1]) { + copybpl2o_64(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl2_64(); } - loaded_pix = getbpl8_64(); loaded_pixs[3] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - dpix_val1 = dpix_val0; - } - } - dpix_val0 = filter_pixel(dpix_val0, dpix_val1); dtbuf[h][0] = dpix_val0; - if (sv2) { - uae_u32 spix2 = denise_render_sprites2(pix2, sv2); - if (spix2) { - dpix_val2 = denise_colors.acolors[spix2]; - dpix_val3 = dpix_val2; - } - } - dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + dtbuf[h][1] = dpix_val1; dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -38791,6 +71825,14 @@ static void lts_aga_fm2_dpf0_p8_ishres_dhires_spr_filtered(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -38799,6 +71841,14 @@ static void lts_aga_fm2_dpf0_p8_ishres_dhires_spr_filtered(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -38822,7 +71872,11 @@ static void lts_aga_fm2_dpf0_p8_ishres_dhires_spr_filtered(void) denise_cck++; } } -static void lts_aga_fm2_dpf1_p8_ishres_dhires_spr(void) +static void lts_aga_fm2_dpf1_p2_ihires_dshres_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_ehb0_p2_ihires_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -38833,95 +71887,36 @@ 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; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; - } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e_64(); - } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); } - loaded_pix = getbpl8_64(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; } - loaded_pixs[0] = loaded_pix; - shiftbpl8_64(); - internal_pixel_cnt += 2; - matchsprites_aga(cnt + 2); + internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; - } - last_bpl_pix = pix2; - } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e_64(); - } - if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); } - loaded_pix = getbpl8_64(); - uae_u32 sv2 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv2 = svt; - } + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; } - loaded_pixs[2] = loaded_pix; - shiftbpl8_64(); - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - } - } dtbuf[h][0] = dpix_val0; - if (sv2) { - uae_u32 spix2 = denise_render_sprites2(pix2, sv2); - if (spix2) { - dpix_val2 = denise_colors.acolors[spix2]; - } - } + dtbuf[h][1] = dpix_val1; dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -38930,6 +71925,14 @@ static void lts_aga_fm2_dpf1_p8_ishres_dhires_spr(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -38938,6 +71941,14 @@ static void lts_aga_fm2_dpf1_p8_ishres_dhires_spr(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -38961,7 +71972,11 @@ static void lts_aga_fm2_dpf1_p8_ishres_dhires_spr(void) denise_cck++; } } -static void lts_aga_fm2_dpf1_p8_ishres_dhires_spr_filtered(void) +static void lts_aga_fm2_ehb0_p2_ihires_dshres_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_ehb1_p2_ihires_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -38972,147 +71987,36 @@ 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; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; - } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e_64(); - } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); - } - loaded_pix = getbpl8_64(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } } - loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 1; uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - if (dpf_lookup_no[pix1]) { - val1 += dblpfofs[bpldualpf2of]; - } - val1 ^= bplcon4_denise_xor_val; - dpix_val1 = denise_colors.acolors[val1]; - } - last_bpl_pix = pix1; - } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e_64(); - } - if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); } - loaded_pix = getbpl8_64(); - loaded_pixs[1] = loaded_pix; - internal_pixel_cnt += 2; - matchsprites_aga(cnt + 2); + internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; - } - last_bpl_pix = pix2; - } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e_64(); - } - if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); - } - loaded_pix = getbpl8_64(); - uae_u32 sv2 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv2 = svt; - } } - loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 1; uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - uae_u8 val3 = dpf_lookup[pix3]; - if (dpf_lookup_no[pix3]) { - val3 += dblpfofs[bpldualpf2of]; - } - val3 ^= bplcon4_denise_xor_val; - dpix_val3 = denise_colors.acolors[val3]; - } - last_bpl_pix = pix3; - } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e_64(); - } - if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); } - loaded_pix = getbpl8_64(); - loaded_pixs[3] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - dpix_val1 = dpix_val0; - } - } - dpix_val0 = filter_pixel(dpix_val0, dpix_val1); dtbuf[h][0] = dpix_val0; - if (sv2) { - uae_u32 spix2 = denise_render_sprites2(pix2, sv2); - if (spix2) { - dpix_val2 = denise_colors.acolors[spix2]; - dpix_val3 = dpix_val2; - } - } - dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + dtbuf[h][1] = dpix_val1; dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -39121,6 +72025,14 @@ static void lts_aga_fm2_dpf1_p8_ishres_dhires_spr_filtered(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -39129,6 +72041,14 @@ static void lts_aga_fm2_dpf1_p8_ishres_dhires_spr_filtered(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -39152,23 +72072,11 @@ static void lts_aga_fm2_dpf1_p8_ishres_dhires_spr_filtered(void) denise_cck++; } } -static void lts_aga_fm2_ehb0_p8_ishres_dhires_spr(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb0_p8_ishres_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb1_p8_ishres_dhires_spr(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb1_p8_ishres_dhires_spr_filtered(void) +static void lts_aga_fm2_ehb1_p2_ihires_dshres_filtered(void) { lts_null(); } -static void lts_aga_fm2_ham0_p8_ishres_dhires_spr(void) +static void lts_aga_fm2_ham0_p2_ihires_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -39179,109 +72087,36 @@ 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; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = decode_ham_pixel_aga(pix0); - } - last_bpl_pix = pix0; - } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); - } - loaded_pix = getbpl8_64(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } } - loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 1; uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - decode_ham_pixel_aga(pix1); - } - last_bpl_pix = pix1; } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); - } - loaded_pix = getbpl8_64(); - loaded_pixs[1] = loaded_pix; - internal_pixel_cnt += 2; - matchsprites_aga(cnt + 2); + internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = decode_ham_pixel_aga(pix2); - } - last_bpl_pix = pix2; - } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); - } - loaded_pix = getbpl8_64(); - uae_u32 sv2 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv2 = svt; - } } - loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 1; uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - decode_ham_pixel_aga(pix3); - } - last_bpl_pix = pix3; - } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); } - loaded_pix = getbpl8_64(); - loaded_pixs[3] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - } - } dtbuf[h][0] = dpix_val0; - if (sv2) { - uae_u32 spix2 = denise_render_sprites2(pix2, sv2); - if (spix2) { - dpix_val2 = denise_colors.acolors[spix2]; - } - } + dtbuf[h][1] = dpix_val1; dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -39290,6 +72125,14 @@ static void lts_aga_fm2_ham0_p8_ishres_dhires_spr(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -39298,6 +72141,14 @@ static void lts_aga_fm2_ham0_p8_ishres_dhires_spr(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -39321,7 +72172,11 @@ static void lts_aga_fm2_ham0_p8_ishres_dhires_spr(void) denise_cck++; } } -static void lts_aga_fm2_ham0_p8_ishres_dhires_spr_filtered(void) +static void lts_aga_fm2_ham0_p2_ihires_dshres_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_ham1_p2_ihires_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -39332,115 +72187,36 @@ 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; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = decode_ham_pixel_aga(pix0); - } - last_bpl_pix = pix0; - } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); - } - loaded_pix = getbpl8_64(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } } - loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 1; uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - dpix_val1 = decode_ham_pixel_aga(pix1); - } - last_bpl_pix = pix1; - } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); } - loaded_pix = getbpl8_64(); - loaded_pixs[1] = loaded_pix; - internal_pixel_cnt += 2; - matchsprites_aga(cnt + 2); + internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = decode_ham_pixel_aga(pix2); - } - last_bpl_pix = pix2; - } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); - } - loaded_pix = getbpl8_64(); - uae_u32 sv2 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv2 = svt; - } } - loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 1; uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - dpix_val3 = decode_ham_pixel_aga(pix3); - } - last_bpl_pix = pix3; } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); - } - loaded_pix = getbpl8_64(); - loaded_pixs[3] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - dpix_val1 = dpix_val0; - } - } - dpix_val0 = filter_pixel(dpix_val0, dpix_val1); dtbuf[h][0] = dpix_val0; - if (sv2) { - uae_u32 spix2 = denise_render_sprites2(pix2, sv2); - if (spix2) { - dpix_val2 = denise_colors.acolors[spix2]; - dpix_val3 = dpix_val2; - } - } - dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + dtbuf[h][1] = dpix_val1; dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -39449,6 +72225,14 @@ static void lts_aga_fm2_ham0_p8_ishres_dhires_spr_filtered(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -39457,6 +72241,14 @@ static void lts_aga_fm2_ham0_p8_ishres_dhires_spr_filtered(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -39480,7 +72272,11 @@ static void lts_aga_fm2_ham0_p8_ishres_dhires_spr_filtered(void) denise_cck++; } } -static void lts_aga_fm2_ham1_p8_ishres_dhires_spr(void) +static void lts_aga_fm2_ham1_p2_ihires_dshres_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_kehb0_p2_ihires_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -39491,121 +72287,36 @@ 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; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = decode_ham_pixel_aga(pix0); - } - last_bpl_pix = pix0; - } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e_64(); - } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); - } - loaded_pix = getbpl8_64(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } } - loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 1; uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - decode_ham_pixel_aga(pix1); - } - last_bpl_pix = pix1; - } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e_64(); - } - if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); } - loaded_pix = getbpl8_64(); - loaded_pixs[1] = loaded_pix; - internal_pixel_cnt += 2; - matchsprites_aga(cnt + 2); + internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = decode_ham_pixel_aga(pix2); - } - last_bpl_pix = pix2; - } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e_64(); - } - if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); } - loaded_pix = getbpl8_64(); - uae_u32 sv2 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv2 = svt; - } - } - loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 1; uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - decode_ham_pixel_aga(pix3); - } - last_bpl_pix = pix3; } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e_64(); - } - if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); - } - loaded_pix = getbpl8_64(); - loaded_pixs[3] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - } - } dtbuf[h][0] = dpix_val0; - if (sv2) { - uae_u32 spix2 = denise_render_sprites2(pix2, sv2); - if (spix2) { - dpix_val2 = denise_colors.acolors[spix2]; - } - } + dtbuf[h][1] = dpix_val1; dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -39614,6 +72325,14 @@ static void lts_aga_fm2_ham1_p8_ishres_dhires_spr(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -39622,6 +72341,14 @@ static void lts_aga_fm2_ham1_p8_ishres_dhires_spr(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -39645,7 +72372,11 @@ static void lts_aga_fm2_ham1_p8_ishres_dhires_spr(void) denise_cck++; } } -static void lts_aga_fm2_ham1_p8_ishres_dhires_spr_filtered(void) +static void lts_aga_fm2_kehb0_p2_ihires_dshres_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_kehb1_p2_ihires_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -39656,127 +72387,36 @@ 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; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = decode_ham_pixel_aga(pix0); - } - last_bpl_pix = pix0; - } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e_64(); - } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); - } - loaded_pix = getbpl8_64(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } } - loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 1; uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - dpix_val1 = decode_ham_pixel_aga(pix1); - } - last_bpl_pix = pix1; - } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e_64(); - } - if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); } - loaded_pix = getbpl8_64(); - loaded_pixs[1] = loaded_pix; - internal_pixel_cnt += 2; - matchsprites_aga(cnt + 2); + internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = decode_ham_pixel_aga(pix2); - } - last_bpl_pix = pix2; - } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e_64(); - } - if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); - } - loaded_pix = getbpl8_64(); - uae_u32 sv2 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv2 = svt; - } } - loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 1; uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - dpix_val3 = decode_ham_pixel_aga(pix3); - } - last_bpl_pix = pix3; - } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e_64(); - } - if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); } - loaded_pix = getbpl8_64(); - loaded_pixs[3] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - dpix_val1 = dpix_val0; - } - } - dpix_val0 = filter_pixel(dpix_val0, dpix_val1); dtbuf[h][0] = dpix_val0; - if (sv2) { - uae_u32 spix2 = denise_render_sprites2(pix2, sv2); - if (spix2) { - dpix_val2 = denise_colors.acolors[spix2]; - dpix_val3 = dpix_val2; - } - } - dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + dtbuf[h][1] = dpix_val1; dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -39785,6 +72425,14 @@ static void lts_aga_fm2_ham1_p8_ishres_dhires_spr_filtered(void) #endif *buf1++ = t0; *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -39793,6 +72441,14 @@ static void lts_aga_fm2_ham1_p8_ishres_dhires_spr_filtered(void) #endif *buf1++ = t2; *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -39816,23 +72472,11 @@ static void lts_aga_fm2_ham1_p8_ishres_dhires_spr_filtered(void) denise_cck++; } } -static void lts_aga_fm2_kehb0_p8_ishres_dhires_spr(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb0_p8_ishres_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb1_p8_ishres_dhires_spr(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb1_p8_ishres_dhires_spr_filtered(void) +static void lts_aga_fm2_kehb1_p2_ihires_dshres_filtered(void) { lts_null(); } -static void lts_aga_fm2_n0_p2_ilores_dshres(void) +static void lts_aga_fm2_n0_p4_ihires_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -39856,16 +72500,16 @@ static void lts_aga_fm2_n0_p2_ilores_dshres(void) } last_bpl_pix = pix0; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl2_64(); - loaded_pix = getbpl2_64(); + shiftbpl4_64(); + loaded_pix = getbpl4_64(); } - if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { - copybpl2_64(); + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl4_64(); bplshiftcnt[0] = 0; - loaded_pix = getbpl2_64(); + loaded_pix = getbpl4_64(); } loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; @@ -39880,16 +72524,16 @@ static void lts_aga_fm2_n0_p2_ilores_dshres(void) } last_bpl_pix = pix1; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl2_64(); - loaded_pix = getbpl2_64(); + shiftbpl4_64(); + loaded_pix = getbpl4_64(); } - if (bpldat_copy[0] && ((cmp | 1) & 255) == bplcon1_shift_full_masked[0]) { - copybpl2_64(); + if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { + copybpl4_64(); bplshiftcnt[0] = 0; - loaded_pix = getbpl2_64(); + loaded_pix = getbpl4_64(); } loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; @@ -39904,16 +72548,16 @@ static void lts_aga_fm2_n0_p2_ilores_dshres(void) } last_bpl_pix = pix2; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl2_64(); - loaded_pix = getbpl2_64(); + shiftbpl4_64(); + loaded_pix = getbpl4_64(); } - if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { - copybpl2_64(); + if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { + copybpl4_64(); bplshiftcnt[0] = 0; - loaded_pix = getbpl2_64(); + loaded_pix = getbpl4_64(); } loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; @@ -39928,16 +72572,16 @@ static void lts_aga_fm2_n0_p2_ilores_dshres(void) } last_bpl_pix = pix3; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl2_64(); - loaded_pix = getbpl2_64(); + shiftbpl4_64(); + loaded_pix = getbpl4_64(); } - if (bpldat_copy[0] && ((cmp | 3) & 255) == bplcon1_shift_full_masked[0]) { - copybpl2_64(); + if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { + copybpl4_64(); bplshiftcnt[0] = 0; - loaded_pix = getbpl2_64(); + loaded_pix = getbpl4_64(); } loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; @@ -40001,11 +72645,11 @@ static void lts_aga_fm2_n0_p2_ilores_dshres(void) denise_cck++; } } -static void lts_aga_fm2_n0_p2_ilores_dshres_filtered(void) +static void lts_aga_fm2_n0_p4_ihires_dshres_filtered(void) { lts_null(); } -static void lts_aga_fm2_n1_p2_ilores_dshres(void) +static void lts_aga_fm2_n1_p4_ihires_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -40029,27 +72673,27 @@ static void lts_aga_fm2_n1_p2_ilores_dshres(void) } last_bpl_pix = pix0; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl2e_64(); - loaded_pix = getbpl2_64(); + shiftbpl4e_64(); + loaded_pix = getbpl4_64(); } - bplshiftcnt[1] += 1; + bplshiftcnt[1] += 2; if (bplshiftcnt[1] >= 4) { bplshiftcnt[1] = 0; - shiftbpl2o_64(); - loaded_pix = getbpl2_64(); + shiftbpl4o_64(); + loaded_pix = getbpl4_64(); } - if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { - copybpl2e_64(); + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl4e_64(); bplshiftcnt[0] = 0; - loaded_pix = getbpl2_64(); + loaded_pix = getbpl4_64(); } - if (bpldat_copy[1] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[1]) { - copybpl2o_64(); + if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { + copybpl4o_64(); bplshiftcnt[1] = 0; - loaded_pix = getbpl2_64(); + loaded_pix = getbpl4_64(); } loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; @@ -40064,27 +72708,27 @@ static void lts_aga_fm2_n1_p2_ilores_dshres(void) } last_bpl_pix = pix1; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl2e_64(); - loaded_pix = getbpl2_64(); + shiftbpl4e_64(); + loaded_pix = getbpl4_64(); } - bplshiftcnt[1] += 1; + bplshiftcnt[1] += 2; if (bplshiftcnt[1] >= 4) { bplshiftcnt[1] = 0; - shiftbpl2o_64(); - loaded_pix = getbpl2_64(); + shiftbpl4o_64(); + loaded_pix = getbpl4_64(); } - if (bpldat_copy[0] && ((cmp | 1) & 255) == bplcon1_shift_full_masked[0]) { - copybpl2e_64(); + if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { + copybpl4e_64(); bplshiftcnt[0] = 0; - loaded_pix = getbpl2_64(); + loaded_pix = getbpl4_64(); } - if (bpldat_copy[1] && ((cmp | 1) & 255) == bplcon1_shift_full_masked[1]) { - copybpl2o_64(); + if (bpldat_copy[1] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) { + copybpl4o_64(); bplshiftcnt[1] = 0; - loaded_pix = getbpl2_64(); + loaded_pix = getbpl4_64(); } loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; @@ -40099,27 +72743,27 @@ static void lts_aga_fm2_n1_p2_ilores_dshres(void) } last_bpl_pix = pix2; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl2e_64(); - loaded_pix = getbpl2_64(); + shiftbpl4e_64(); + loaded_pix = getbpl4_64(); } - bplshiftcnt[1] += 1; + bplshiftcnt[1] += 2; if (bplshiftcnt[1] >= 4) { bplshiftcnt[1] = 0; - shiftbpl2o_64(); - loaded_pix = getbpl2_64(); + shiftbpl4o_64(); + loaded_pix = getbpl4_64(); } - if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { - copybpl2e_64(); + if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { + copybpl4e_64(); bplshiftcnt[0] = 0; - loaded_pix = getbpl2_64(); + loaded_pix = getbpl4_64(); } - if (bpldat_copy[1] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[1]) { - copybpl2o_64(); + if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) { + copybpl4o_64(); bplshiftcnt[1] = 0; - loaded_pix = getbpl2_64(); + loaded_pix = getbpl4_64(); } loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; @@ -40134,27 +72778,27 @@ static void lts_aga_fm2_n1_p2_ilores_dshres(void) } last_bpl_pix = pix3; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl2e_64(); - loaded_pix = getbpl2_64(); + shiftbpl4e_64(); + loaded_pix = getbpl4_64(); } - bplshiftcnt[1] += 1; + bplshiftcnt[1] += 2; if (bplshiftcnt[1] >= 4) { bplshiftcnt[1] = 0; - shiftbpl2o_64(); - loaded_pix = getbpl2_64(); + shiftbpl4o_64(); + loaded_pix = getbpl4_64(); } - if (bpldat_copy[0] && ((cmp | 3) & 255) == bplcon1_shift_full_masked[0]) { - copybpl2e_64(); + if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { + copybpl4e_64(); bplshiftcnt[0] = 0; - loaded_pix = getbpl2_64(); + loaded_pix = getbpl4_64(); } - if (bpldat_copy[1] && ((cmp | 3) & 255) == bplcon1_shift_full_masked[1]) { - copybpl2o_64(); + if (bpldat_copy[1] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[1]) { + copybpl4o_64(); bplshiftcnt[1] = 0; - loaded_pix = getbpl2_64(); + loaded_pix = getbpl4_64(); } loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; @@ -40218,11 +72862,11 @@ static void lts_aga_fm2_n1_p2_ilores_dshres(void) denise_cck++; } } -static void lts_aga_fm2_n1_p2_ilores_dshres_filtered(void) +static void lts_aga_fm2_n1_p4_ihires_dshres_filtered(void) { lts_null(); } -static void lts_aga_fm2_dpf0_p2_ilores_dshres(void) +static void lts_aga_fm2_dpf0_p4_ihires_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -40251,16 +72895,16 @@ static void lts_aga_fm2_dpf0_p2_ilores_dshres(void) } last_bpl_pix = pix0; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl2_64(); - loaded_pix = getbpl2_64(); + shiftbpl4_64(); + loaded_pix = getbpl4_64(); } - if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { - copybpl2_64(); + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl4_64(); bplshiftcnt[0] = 0; - loaded_pix = getbpl2_64(); + loaded_pix = getbpl4_64(); } loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; @@ -40280,16 +72924,16 @@ static void lts_aga_fm2_dpf0_p2_ilores_dshres(void) } last_bpl_pix = pix1; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl2_64(); - loaded_pix = getbpl2_64(); + shiftbpl4_64(); + loaded_pix = getbpl4_64(); } - if (bpldat_copy[0] && ((cmp | 1) & 255) == bplcon1_shift_full_masked[0]) { - copybpl2_64(); + if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { + copybpl4_64(); bplshiftcnt[0] = 0; - loaded_pix = getbpl2_64(); + loaded_pix = getbpl4_64(); } loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; @@ -40309,16 +72953,16 @@ static void lts_aga_fm2_dpf0_p2_ilores_dshres(void) } last_bpl_pix = pix2; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl2_64(); - loaded_pix = getbpl2_64(); + shiftbpl4_64(); + loaded_pix = getbpl4_64(); } - if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { - copybpl2_64(); + if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { + copybpl4_64(); bplshiftcnt[0] = 0; - loaded_pix = getbpl2_64(); + loaded_pix = getbpl4_64(); } loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; @@ -40338,16 +72982,16 @@ static void lts_aga_fm2_dpf0_p2_ilores_dshres(void) } last_bpl_pix = pix3; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl2_64(); - loaded_pix = getbpl2_64(); + shiftbpl4_64(); + loaded_pix = getbpl4_64(); } - if (bpldat_copy[0] && ((cmp | 3) & 255) == bplcon1_shift_full_masked[0]) { - copybpl2_64(); + if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { + copybpl4_64(); bplshiftcnt[0] = 0; - loaded_pix = getbpl2_64(); + loaded_pix = getbpl4_64(); } loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; @@ -40411,11 +73055,11 @@ static void lts_aga_fm2_dpf0_p2_ilores_dshres(void) denise_cck++; } } -static void lts_aga_fm2_dpf0_p2_ilores_dshres_filtered(void) +static void lts_aga_fm2_dpf0_p4_ihires_dshres_filtered(void) { lts_null(); } -static void lts_aga_fm2_dpf1_p2_ilores_dshres(void) +static void lts_aga_fm2_dpf1_p4_ihires_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -40444,27 +73088,27 @@ static void lts_aga_fm2_dpf1_p2_ilores_dshres(void) } last_bpl_pix = pix0; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl2e_64(); - loaded_pix = getbpl2_64(); + shiftbpl4e_64(); + loaded_pix = getbpl4_64(); } - bplshiftcnt[1] += 1; + bplshiftcnt[1] += 2; if (bplshiftcnt[1] >= 4) { bplshiftcnt[1] = 0; - shiftbpl2o_64(); - loaded_pix = getbpl2_64(); + shiftbpl4o_64(); + loaded_pix = getbpl4_64(); } - if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { - copybpl2e_64(); + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl4e_64(); bplshiftcnt[0] = 0; - loaded_pix = getbpl2_64(); + loaded_pix = getbpl4_64(); } - if (bpldat_copy[1] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[1]) { - copybpl2o_64(); + if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { + copybpl4o_64(); bplshiftcnt[1] = 0; - loaded_pix = getbpl2_64(); + loaded_pix = getbpl4_64(); } loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; @@ -40484,27 +73128,27 @@ static void lts_aga_fm2_dpf1_p2_ilores_dshres(void) } last_bpl_pix = pix1; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl2e_64(); - loaded_pix = getbpl2_64(); + shiftbpl4e_64(); + loaded_pix = getbpl4_64(); } - bplshiftcnt[1] += 1; + bplshiftcnt[1] += 2; if (bplshiftcnt[1] >= 4) { bplshiftcnt[1] = 0; - shiftbpl2o_64(); - loaded_pix = getbpl2_64(); + shiftbpl4o_64(); + loaded_pix = getbpl4_64(); } - if (bpldat_copy[0] && ((cmp | 1) & 255) == bplcon1_shift_full_masked[0]) { - copybpl2e_64(); + if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { + copybpl4e_64(); bplshiftcnt[0] = 0; - loaded_pix = getbpl2_64(); + loaded_pix = getbpl4_64(); } - if (bpldat_copy[1] && ((cmp | 1) & 255) == bplcon1_shift_full_masked[1]) { - copybpl2o_64(); + if (bpldat_copy[1] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) { + copybpl4o_64(); bplshiftcnt[1] = 0; - loaded_pix = getbpl2_64(); + loaded_pix = getbpl4_64(); } loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; @@ -40524,27 +73168,27 @@ static void lts_aga_fm2_dpf1_p2_ilores_dshres(void) } last_bpl_pix = pix2; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl2e_64(); - loaded_pix = getbpl2_64(); + shiftbpl4e_64(); + loaded_pix = getbpl4_64(); } - bplshiftcnt[1] += 1; + bplshiftcnt[1] += 2; if (bplshiftcnt[1] >= 4) { bplshiftcnt[1] = 0; - shiftbpl2o_64(); - loaded_pix = getbpl2_64(); + shiftbpl4o_64(); + loaded_pix = getbpl4_64(); } - if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { - copybpl2e_64(); + if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { + copybpl4e_64(); bplshiftcnt[0] = 0; - loaded_pix = getbpl2_64(); + loaded_pix = getbpl4_64(); } - if (bpldat_copy[1] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[1]) { - copybpl2o_64(); + if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) { + copybpl4o_64(); bplshiftcnt[1] = 0; - loaded_pix = getbpl2_64(); + loaded_pix = getbpl4_64(); } loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; @@ -40564,29 +73208,129 @@ static void lts_aga_fm2_dpf1_p2_ilores_dshres(void) } last_bpl_pix = pix3; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl2e_64(); - loaded_pix = getbpl2_64(); + shiftbpl4e_64(); + loaded_pix = getbpl4_64(); } - bplshiftcnt[1] += 1; + bplshiftcnt[1] += 2; if (bplshiftcnt[1] >= 4) { bplshiftcnt[1] = 0; - shiftbpl2o_64(); - loaded_pix = getbpl2_64(); + shiftbpl4o_64(); + loaded_pix = getbpl4_64(); + } + 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] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[1]) { + copybpl4o_64(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl4_64(); + } + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 1; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; + dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_dpf1_p4_ihires_dshres_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_ehb0_p4_ihires_dshres(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; } - if (bpldat_copy[0] && ((cmp | 3) & 255) == bplcon1_shift_full_masked[0]) { - copybpl2e_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl2_64(); + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; } - if (bpldat_copy[1] && ((cmp | 3) & 255) == bplcon1_shift_full_masked[1]) { - copybpl2o_64(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl2_64(); + internal_pixel_cnt += 1; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; } - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; @@ -40648,59 +73392,11 @@ static void lts_aga_fm2_dpf1_p2_ilores_dshres(void) denise_cck++; } } -static void lts_aga_fm2_dpf1_p2_ilores_dshres_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb0_p2_ilores_dshres(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb0_p2_ilores_dshres_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb1_p2_ilores_dshres(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb1_p2_ilores_dshres_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_ham0_p2_ilores_dshres(void) -{ - lts_null(); -} -static void lts_aga_fm2_ham0_p2_ilores_dshres_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_ham1_p2_ilores_dshres(void) -{ - lts_null(); -} -static void lts_aga_fm2_ham1_p2_ilores_dshres_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb0_p2_ilores_dshres(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb0_p2_ilores_dshres_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb1_p2_ilores_dshres(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb1_p2_ilores_dshres_filtered(void) +static void lts_aga_fm2_ehb0_p4_ihires_dshres_filtered(void) { lts_null(); } -static void lts_aga_fm2_n0_p4_ilores_dshres(void) +static void lts_aga_fm2_ehb1_p4_ihires_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -40711,103 +73407,30 @@ 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; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4_64(); - loaded_pix = getbpl4_64(); - } - if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { - copybpl4_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4_64(); } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix1; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4_64(); - loaded_pix = getbpl4_64(); - } - if (bpldat_copy[0] && ((cmp | 1) & 255) == bplcon1_shift_full_masked[0]) { - copybpl4_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4_64(); } - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4_64(); - loaded_pix = getbpl4_64(); - } - if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { - copybpl4_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4_64(); } - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix3; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4_64(); - loaded_pix = getbpl4_64(); - } - if (bpldat_copy[0] && ((cmp | 3) & 255) == bplcon1_shift_full_masked[0]) { - copybpl4_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4_64(); } - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; @@ -40869,11 +73492,11 @@ static void lts_aga_fm2_n0_p4_ilores_dshres(void) denise_cck++; } } -static void lts_aga_fm2_n0_p4_ilores_dshres_filtered(void) +static void lts_aga_fm2_ehb1_p4_ihires_dshres_filtered(void) { lts_null(); } -static void lts_aga_fm2_n1_p4_ilores_dshres(void) +static void lts_aga_fm2_ham0_p4_ihires_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -40884,147 +73507,30 @@ 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; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4e_64(); - loaded_pix = getbpl4_64(); - } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl4o_64(); - loaded_pix = getbpl4_64(); } - 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] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[1]) { - copybpl4o_64(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl4_64(); - } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix1; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4e_64(); - loaded_pix = getbpl4_64(); - } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl4o_64(); - loaded_pix = getbpl4_64(); - } - 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] && ((cmp | 1) & 255) == bplcon1_shift_full_masked[1]) { - copybpl4o_64(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl4_64(); } - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4e_64(); - loaded_pix = getbpl4_64(); - } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl4o_64(); - loaded_pix = getbpl4_64(); - } - 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] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[1]) { - copybpl4o_64(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl4_64(); } - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix3; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4e_64(); - loaded_pix = getbpl4_64(); - } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl4o_64(); - loaded_pix = getbpl4_64(); - } - 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] && ((cmp | 3) & 255) == bplcon1_shift_full_masked[1]) { - copybpl4o_64(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl4_64(); } - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; @@ -41086,11 +73592,11 @@ static void lts_aga_fm2_n1_p4_ilores_dshres(void) denise_cck++; } } -static void lts_aga_fm2_n1_p4_ilores_dshres_filtered(void) +static void lts_aga_fm2_ham0_p4_ihires_dshres_filtered(void) { lts_null(); } -static void lts_aga_fm2_dpf0_p4_ilores_dshres(void) +static void lts_aga_fm2_ham1_p4_ihires_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -41101,123 +73607,30 @@ 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; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4_64(); - loaded_pix = getbpl4_64(); } - if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { - copybpl4_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4_64(); - } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - if (dpf_lookup_no[pix1]) { - val1 += dblpfofs[bpldualpf2of]; - } - val1 ^= bplcon4_denise_xor_val; - dpix_val1 = denise_colors.acolors[val1]; - } - last_bpl_pix = pix1; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4_64(); - loaded_pix = getbpl4_64(); - } - if (bpldat_copy[0] && ((cmp | 1) & 255) == bplcon1_shift_full_masked[0]) { - copybpl4_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4_64(); } - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; - } - last_bpl_pix = pix2; } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4_64(); - loaded_pix = getbpl4_64(); - } - if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { - copybpl4_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4_64(); - } - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - uae_u8 val3 = dpf_lookup[pix3]; - if (dpf_lookup_no[pix3]) { - val3 += dblpfofs[bpldualpf2of]; - } - val3 ^= bplcon4_denise_xor_val; - dpix_val3 = denise_colors.acolors[val3]; - } - last_bpl_pix = pix3; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4_64(); - loaded_pix = getbpl4_64(); - } - if (bpldat_copy[0] && ((cmp | 3) & 255) == bplcon1_shift_full_masked[0]) { - copybpl4_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4_64(); } - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; @@ -41279,11 +73692,11 @@ static void lts_aga_fm2_dpf0_p4_ilores_dshres(void) denise_cck++; } } -static void lts_aga_fm2_dpf0_p4_ilores_dshres_filtered(void) +static void lts_aga_fm2_ham1_p4_ihires_dshres_filtered(void) { lts_null(); } -static void lts_aga_fm2_dpf1_p4_ilores_dshres(void) +static void lts_aga_fm2_kehb0_p4_ihires_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -41294,167 +73707,30 @@ 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; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4e_64(); - loaded_pix = getbpl4_64(); - } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl4o_64(); - loaded_pix = getbpl4_64(); - } - 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] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[1]) { - copybpl4o_64(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl4_64(); } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - if (dpf_lookup_no[pix1]) { - val1 += dblpfofs[bpldualpf2of]; - } - val1 ^= bplcon4_denise_xor_val; - dpix_val1 = denise_colors.acolors[val1]; - } - last_bpl_pix = pix1; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4e_64(); - loaded_pix = getbpl4_64(); - } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl4o_64(); - loaded_pix = getbpl4_64(); - } - 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] && ((cmp | 1) & 255) == bplcon1_shift_full_masked[1]) { - copybpl4o_64(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl4_64(); } - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4e_64(); - loaded_pix = getbpl4_64(); - } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl4o_64(); - loaded_pix = getbpl4_64(); - } - 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] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[1]) { - copybpl4o_64(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl4_64(); - } - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - uae_u8 val3 = dpf_lookup[pix3]; - if (dpf_lookup_no[pix3]) { - val3 += dblpfofs[bpldualpf2of]; - } - val3 ^= bplcon4_denise_xor_val; - dpix_val3 = denise_colors.acolors[val3]; - } - last_bpl_pix = pix3; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4e_64(); - loaded_pix = getbpl4_64(); - } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl4o_64(); - loaded_pix = getbpl4_64(); - } - 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] && ((cmp | 3) & 255) == bplcon1_shift_full_masked[1]) { - copybpl4o_64(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl4_64(); } - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; @@ -41516,59 +73792,111 @@ static void lts_aga_fm2_dpf1_p4_ilores_dshres(void) denise_cck++; } } -static void lts_aga_fm2_dpf1_p4_ilores_dshres_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb0_p4_ilores_dshres(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb0_p4_ilores_dshres_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb1_p4_ilores_dshres(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb1_p4_ilores_dshres_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_ham0_p4_ilores_dshres(void) -{ - lts_null(); -} -static void lts_aga_fm2_ham0_p4_ilores_dshres_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_ham1_p4_ilores_dshres(void) -{ - lts_null(); -} -static void lts_aga_fm2_ham1_p4_ilores_dshres_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb0_p4_ilores_dshres(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb0_p4_ilores_dshres_filtered(void) +static void lts_aga_fm2_kehb0_p4_ihires_dshres_filtered(void) { lts_null(); } -static void lts_aga_fm2_kehb1_p4_ilores_dshres(void) +static void lts_aga_fm2_kehb1_p4_ihires_dshres(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 1; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 1; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; + dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm2_kehb1_p4_ilores_dshres_filtered(void) +static void lts_aga_fm2_kehb1_p4_ihires_dshres_filtered(void) { lts_null(); } -static void lts_aga_fm2_n0_p6_ilores_dshres(void) +static void lts_aga_fm2_n0_p6_ihires_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -41592,13 +73920,13 @@ static void lts_aga_fm2_n0_p6_ilores_dshres(void) } last_bpl_pix = pix0; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; shiftbpl6_64(); loaded_pix = getbpl6_64(); } - if (bpldat_copy[0] && ((cmp | 0) & 255) == 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(); @@ -41616,13 +73944,13 @@ static void lts_aga_fm2_n0_p6_ilores_dshres(void) } last_bpl_pix = pix1; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; shiftbpl6_64(); loaded_pix = getbpl6_64(); } - if (bpldat_copy[0] && ((cmp | 1) & 255) == 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(); @@ -41640,13 +73968,13 @@ static void lts_aga_fm2_n0_p6_ilores_dshres(void) } last_bpl_pix = pix2; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; shiftbpl6_64(); loaded_pix = getbpl6_64(); } - if (bpldat_copy[0] && ((cmp | 2) & 255) == 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(); @@ -41664,13 +73992,13 @@ static void lts_aga_fm2_n0_p6_ilores_dshres(void) } last_bpl_pix = pix3; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; shiftbpl6_64(); loaded_pix = getbpl6_64(); } - if (bpldat_copy[0] && ((cmp | 3) & 255) == 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(); @@ -41737,11 +74065,11 @@ static void lts_aga_fm2_n0_p6_ilores_dshres(void) denise_cck++; } } -static void lts_aga_fm2_n0_p6_ilores_dshres_filtered(void) +static void lts_aga_fm2_n0_p6_ihires_dshres_filtered(void) { lts_null(); } -static void lts_aga_fm2_n1_p6_ilores_dshres(void) +static void lts_aga_fm2_n1_p6_ihires_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -41765,24 +74093,24 @@ static void lts_aga_fm2_n1_p6_ilores_dshres(void) } last_bpl_pix = pix0; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; shiftbpl6e_64(); loaded_pix = getbpl6_64(); } - bplshiftcnt[1] += 1; + bplshiftcnt[1] += 2; if (bplshiftcnt[1] >= 4) { bplshiftcnt[1] = 0; shiftbpl6o_64(); loaded_pix = getbpl6_64(); } - if (bpldat_copy[0] && ((cmp | 0) & 255) == 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] && ((cmp | 0) & 255) == 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(); @@ -41800,24 +74128,24 @@ static void lts_aga_fm2_n1_p6_ilores_dshres(void) } last_bpl_pix = pix1; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; shiftbpl6e_64(); loaded_pix = getbpl6_64(); } - bplshiftcnt[1] += 1; + bplshiftcnt[1] += 2; if (bplshiftcnt[1] >= 4) { bplshiftcnt[1] = 0; shiftbpl6o_64(); loaded_pix = getbpl6_64(); } - if (bpldat_copy[0] && ((cmp | 1) & 255) == 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] && ((cmp | 1) & 255) == 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(); @@ -41835,24 +74163,24 @@ static void lts_aga_fm2_n1_p6_ilores_dshres(void) } last_bpl_pix = pix2; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; shiftbpl6e_64(); loaded_pix = getbpl6_64(); } - bplshiftcnt[1] += 1; + bplshiftcnt[1] += 2; if (bplshiftcnt[1] >= 4) { bplshiftcnt[1] = 0; shiftbpl6o_64(); loaded_pix = getbpl6_64(); } - if (bpldat_copy[0] && ((cmp | 2) & 255) == 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] && ((cmp | 2) & 255) == 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(); @@ -41870,24 +74198,24 @@ static void lts_aga_fm2_n1_p6_ilores_dshres(void) } last_bpl_pix = pix3; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; shiftbpl6e_64(); loaded_pix = getbpl6_64(); } - bplshiftcnt[1] += 1; + bplshiftcnt[1] += 2; if (bplshiftcnt[1] >= 4) { bplshiftcnt[1] = 0; shiftbpl6o_64(); loaded_pix = getbpl6_64(); } - if (bpldat_copy[0] && ((cmp | 3) & 255) == 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] && ((cmp | 3) & 255) == 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(); @@ -41954,11 +74282,11 @@ static void lts_aga_fm2_n1_p6_ilores_dshres(void) denise_cck++; } } -static void lts_aga_fm2_n1_p6_ilores_dshres_filtered(void) +static void lts_aga_fm2_n1_p6_ihires_dshres_filtered(void) { lts_null(); } -static void lts_aga_fm2_dpf0_p6_ilores_dshres(void) +static void lts_aga_fm2_dpf0_p6_ihires_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -41987,13 +74315,13 @@ static void lts_aga_fm2_dpf0_p6_ilores_dshres(void) } last_bpl_pix = pix0; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; shiftbpl6_64(); loaded_pix = getbpl6_64(); } - if (bpldat_copy[0] && ((cmp | 0) & 255) == 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(); @@ -42016,13 +74344,13 @@ static void lts_aga_fm2_dpf0_p6_ilores_dshres(void) } last_bpl_pix = pix1; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; shiftbpl6_64(); loaded_pix = getbpl6_64(); } - if (bpldat_copy[0] && ((cmp | 1) & 255) == 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(); @@ -42045,13 +74373,13 @@ static void lts_aga_fm2_dpf0_p6_ilores_dshres(void) } last_bpl_pix = pix2; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; shiftbpl6_64(); loaded_pix = getbpl6_64(); } - if (bpldat_copy[0] && ((cmp | 2) & 255) == 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(); @@ -42074,13 +74402,13 @@ static void lts_aga_fm2_dpf0_p6_ilores_dshres(void) } last_bpl_pix = pix3; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; shiftbpl6_64(); loaded_pix = getbpl6_64(); } - if (bpldat_copy[0] && ((cmp | 3) & 255) == 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(); @@ -42147,11 +74475,11 @@ static void lts_aga_fm2_dpf0_p6_ilores_dshres(void) denise_cck++; } } -static void lts_aga_fm2_dpf0_p6_ilores_dshres_filtered(void) +static void lts_aga_fm2_dpf0_p6_ihires_dshres_filtered(void) { lts_null(); } -static void lts_aga_fm2_dpf1_p6_ilores_dshres(void) +static void lts_aga_fm2_dpf1_p6_ihires_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -42180,24 +74508,24 @@ static void lts_aga_fm2_dpf1_p6_ilores_dshres(void) } last_bpl_pix = pix0; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; shiftbpl6e_64(); loaded_pix = getbpl6_64(); } - bplshiftcnt[1] += 1; + bplshiftcnt[1] += 2; if (bplshiftcnt[1] >= 4) { bplshiftcnt[1] = 0; shiftbpl6o_64(); loaded_pix = getbpl6_64(); } - if (bpldat_copy[0] && ((cmp | 0) & 255) == 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] && ((cmp | 0) & 255) == 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(); @@ -42220,24 +74548,24 @@ static void lts_aga_fm2_dpf1_p6_ilores_dshres(void) } last_bpl_pix = pix1; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; shiftbpl6e_64(); loaded_pix = getbpl6_64(); } - bplshiftcnt[1] += 1; + bplshiftcnt[1] += 2; if (bplshiftcnt[1] >= 4) { bplshiftcnt[1] = 0; shiftbpl6o_64(); loaded_pix = getbpl6_64(); } - if (bpldat_copy[0] && ((cmp | 1) & 255) == 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] && ((cmp | 1) & 255) == 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(); @@ -42260,24 +74588,24 @@ static void lts_aga_fm2_dpf1_p6_ilores_dshres(void) } last_bpl_pix = pix2; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; shiftbpl6e_64(); loaded_pix = getbpl6_64(); } - bplshiftcnt[1] += 1; + bplshiftcnt[1] += 2; if (bplshiftcnt[1] >= 4) { bplshiftcnt[1] = 0; shiftbpl6o_64(); loaded_pix = getbpl6_64(); } - if (bpldat_copy[0] && ((cmp | 2) & 255) == 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] && ((cmp | 2) & 255) == 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(); @@ -42300,24 +74628,24 @@ static void lts_aga_fm2_dpf1_p6_ilores_dshres(void) } last_bpl_pix = pix3; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; shiftbpl6e_64(); loaded_pix = getbpl6_64(); } - bplshiftcnt[1] += 1; + bplshiftcnt[1] += 2; if (bplshiftcnt[1] >= 4) { bplshiftcnt[1] = 0; shiftbpl6o_64(); loaded_pix = getbpl6_64(); } - if (bpldat_copy[0] && ((cmp | 3) & 255) == 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] && ((cmp | 3) & 255) == 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(); @@ -42384,11 +74712,11 @@ static void lts_aga_fm2_dpf1_p6_ilores_dshres(void) denise_cck++; } } -static void lts_aga_fm2_dpf1_p6_ilores_dshres_filtered(void) +static void lts_aga_fm2_dpf1_p6_ihires_dshres_filtered(void) { lts_null(); } -static void lts_aga_fm2_ehb0_p6_ilores_dshres(void) +static void lts_aga_fm2_ehb0_p6_ihires_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -42418,13 +74746,13 @@ static void lts_aga_fm2_ehb0_p6_ilores_dshres(void) } last_bpl_pix = pix0; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; shiftbpl6_64(); loaded_pix = getbpl6_64(); } - if (bpldat_copy[0] && ((cmp | 0) & 255) == 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(); @@ -42448,13 +74776,13 @@ static void lts_aga_fm2_ehb0_p6_ilores_dshres(void) } last_bpl_pix = pix1; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; shiftbpl6_64(); loaded_pix = getbpl6_64(); } - if (bpldat_copy[0] && ((cmp | 1) & 255) == 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(); @@ -42478,13 +74806,13 @@ static void lts_aga_fm2_ehb0_p6_ilores_dshres(void) } last_bpl_pix = pix2; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; shiftbpl6_64(); loaded_pix = getbpl6_64(); } - if (bpldat_copy[0] && ((cmp | 2) & 255) == 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(); @@ -42508,13 +74836,13 @@ static void lts_aga_fm2_ehb0_p6_ilores_dshres(void) } last_bpl_pix = pix3; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; shiftbpl6_64(); loaded_pix = getbpl6_64(); } - if (bpldat_copy[0] && ((cmp | 3) & 255) == 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(); @@ -42581,11 +74909,11 @@ static void lts_aga_fm2_ehb0_p6_ilores_dshres(void) denise_cck++; } } -static void lts_aga_fm2_ehb0_p6_ilores_dshres_filtered(void) +static void lts_aga_fm2_ehb0_p6_ihires_dshres_filtered(void) { lts_null(); } -static void lts_aga_fm2_ehb1_p6_ilores_dshres(void) +static void lts_aga_fm2_ehb1_p6_ihires_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -42615,24 +74943,24 @@ static void lts_aga_fm2_ehb1_p6_ilores_dshres(void) } last_bpl_pix = pix0; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; shiftbpl6e_64(); loaded_pix = getbpl6_64(); } - bplshiftcnt[1] += 1; + bplshiftcnt[1] += 2; if (bplshiftcnt[1] >= 4) { bplshiftcnt[1] = 0; shiftbpl6o_64(); loaded_pix = getbpl6_64(); } - if (bpldat_copy[0] && ((cmp | 0) & 255) == 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] && ((cmp | 0) & 255) == 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(); @@ -42656,24 +74984,24 @@ static void lts_aga_fm2_ehb1_p6_ilores_dshres(void) } last_bpl_pix = pix1; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; shiftbpl6e_64(); loaded_pix = getbpl6_64(); } - bplshiftcnt[1] += 1; + bplshiftcnt[1] += 2; if (bplshiftcnt[1] >= 4) { bplshiftcnt[1] = 0; shiftbpl6o_64(); loaded_pix = getbpl6_64(); } - if (bpldat_copy[0] && ((cmp | 1) & 255) == 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] && ((cmp | 1) & 255) == 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(); @@ -42697,24 +75025,24 @@ static void lts_aga_fm2_ehb1_p6_ilores_dshres(void) } last_bpl_pix = pix2; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; shiftbpl6e_64(); loaded_pix = getbpl6_64(); } - bplshiftcnt[1] += 1; + bplshiftcnt[1] += 2; if (bplshiftcnt[1] >= 4) { bplshiftcnt[1] = 0; shiftbpl6o_64(); loaded_pix = getbpl6_64(); } - if (bpldat_copy[0] && ((cmp | 2) & 255) == 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] && ((cmp | 2) & 255) == 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(); @@ -42738,24 +75066,24 @@ static void lts_aga_fm2_ehb1_p6_ilores_dshres(void) } last_bpl_pix = pix3; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; shiftbpl6e_64(); loaded_pix = getbpl6_64(); } - bplshiftcnt[1] += 1; + bplshiftcnt[1] += 2; if (bplshiftcnt[1] >= 4) { bplshiftcnt[1] = 0; shiftbpl6o_64(); loaded_pix = getbpl6_64(); } - if (bpldat_copy[0] && ((cmp | 3) & 255) == 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] && ((cmp | 3) & 255) == 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(); @@ -42822,11 +75150,11 @@ static void lts_aga_fm2_ehb1_p6_ilores_dshres(void) denise_cck++; } } -static void lts_aga_fm2_ehb1_p6_ilores_dshres_filtered(void) +static void lts_aga_fm2_ehb1_p6_ihires_dshres_filtered(void) { lts_null(); } -static void lts_aga_fm2_ham0_p6_ilores_dshres(void) +static void lts_aga_fm2_ham0_p6_ihires_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -42850,13 +75178,13 @@ static void lts_aga_fm2_ham0_p6_ilores_dshres(void) } last_bpl_pix = pix0; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; shiftbpl6_64(); loaded_pix = getbpl6_64(); } - if (bpldat_copy[0] && ((cmp | 0) & 255) == 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(); @@ -42874,13 +75202,13 @@ static void lts_aga_fm2_ham0_p6_ilores_dshres(void) } last_bpl_pix = pix1; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; shiftbpl6_64(); loaded_pix = getbpl6_64(); } - if (bpldat_copy[0] && ((cmp | 1) & 255) == 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(); @@ -42898,13 +75226,13 @@ static void lts_aga_fm2_ham0_p6_ilores_dshres(void) } last_bpl_pix = pix2; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; shiftbpl6_64(); loaded_pix = getbpl6_64(); } - if (bpldat_copy[0] && ((cmp | 2) & 255) == 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(); @@ -42922,13 +75250,13 @@ static void lts_aga_fm2_ham0_p6_ilores_dshres(void) } last_bpl_pix = pix3; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; shiftbpl6_64(); loaded_pix = getbpl6_64(); } - if (bpldat_copy[0] && ((cmp | 3) & 255) == 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(); @@ -42995,11 +75323,11 @@ static void lts_aga_fm2_ham0_p6_ilores_dshres(void) denise_cck++; } } -static void lts_aga_fm2_ham0_p6_ilores_dshres_filtered(void) +static void lts_aga_fm2_ham0_p6_ihires_dshres_filtered(void) { lts_null(); } -static void lts_aga_fm2_ham1_p6_ilores_dshres(void) +static void lts_aga_fm2_ham1_p6_ihires_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -43023,24 +75351,24 @@ static void lts_aga_fm2_ham1_p6_ilores_dshres(void) } last_bpl_pix = pix0; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; shiftbpl6e_64(); loaded_pix = getbpl6_64(); } - bplshiftcnt[1] += 1; + bplshiftcnt[1] += 2; if (bplshiftcnt[1] >= 4) { bplshiftcnt[1] = 0; shiftbpl6o_64(); loaded_pix = getbpl6_64(); } - if (bpldat_copy[0] && ((cmp | 0) & 255) == 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] && ((cmp | 0) & 255) == 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(); @@ -43058,24 +75386,24 @@ static void lts_aga_fm2_ham1_p6_ilores_dshres(void) } last_bpl_pix = pix1; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; shiftbpl6e_64(); loaded_pix = getbpl6_64(); } - bplshiftcnt[1] += 1; + bplshiftcnt[1] += 2; if (bplshiftcnt[1] >= 4) { bplshiftcnt[1] = 0; shiftbpl6o_64(); loaded_pix = getbpl6_64(); } - if (bpldat_copy[0] && ((cmp | 1) & 255) == 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] && ((cmp | 1) & 255) == 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(); @@ -43093,24 +75421,24 @@ static void lts_aga_fm2_ham1_p6_ilores_dshres(void) } last_bpl_pix = pix2; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; shiftbpl6e_64(); loaded_pix = getbpl6_64(); } - bplshiftcnt[1] += 1; + bplshiftcnt[1] += 2; if (bplshiftcnt[1] >= 4) { bplshiftcnt[1] = 0; shiftbpl6o_64(); loaded_pix = getbpl6_64(); } - if (bpldat_copy[0] && ((cmp | 2) & 255) == 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] && ((cmp | 2) & 255) == 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(); @@ -43128,24 +75456,24 @@ static void lts_aga_fm2_ham1_p6_ilores_dshres(void) } last_bpl_pix = pix3; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; shiftbpl6e_64(); loaded_pix = getbpl6_64(); } - bplshiftcnt[1] += 1; + bplshiftcnt[1] += 2; if (bplshiftcnt[1] >= 4) { bplshiftcnt[1] = 0; shiftbpl6o_64(); loaded_pix = getbpl6_64(); } - if (bpldat_copy[0] && ((cmp | 3) & 255) == 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] && ((cmp | 3) & 255) == 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(); @@ -43212,11 +75540,11 @@ static void lts_aga_fm2_ham1_p6_ilores_dshres(void) denise_cck++; } } -static void lts_aga_fm2_ham1_p6_ilores_dshres_filtered(void) +static void lts_aga_fm2_ham1_p6_ihires_dshres_filtered(void) { lts_null(); } -static void lts_aga_fm2_kehb0_p6_ilores_dshres(void) +static void lts_aga_fm2_kehb0_p6_ihires_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -43241,13 +75569,13 @@ static void lts_aga_fm2_kehb0_p6_ilores_dshres(void) } last_bpl_pix = pix0; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; shiftbpl6_64(); loaded_pix = getbpl6_64(); } - if (bpldat_copy[0] && ((cmp | 0) & 255) == 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(); @@ -43266,13 +75594,13 @@ static void lts_aga_fm2_kehb0_p6_ilores_dshres(void) } last_bpl_pix = pix1; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; shiftbpl6_64(); loaded_pix = getbpl6_64(); } - if (bpldat_copy[0] && ((cmp | 1) & 255) == 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(); @@ -43291,13 +75619,13 @@ static void lts_aga_fm2_kehb0_p6_ilores_dshres(void) } last_bpl_pix = pix2; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; shiftbpl6_64(); loaded_pix = getbpl6_64(); } - if (bpldat_copy[0] && ((cmp | 2) & 255) == 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(); @@ -43316,13 +75644,13 @@ static void lts_aga_fm2_kehb0_p6_ilores_dshres(void) } last_bpl_pix = pix3; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; shiftbpl6_64(); loaded_pix = getbpl6_64(); } - if (bpldat_copy[0] && ((cmp | 3) & 255) == 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(); @@ -43389,11 +75717,11 @@ static void lts_aga_fm2_kehb0_p6_ilores_dshres(void) denise_cck++; } } -static void lts_aga_fm2_kehb0_p6_ilores_dshres_filtered(void) +static void lts_aga_fm2_kehb0_p6_ihires_dshres_filtered(void) { lts_null(); } -static void lts_aga_fm2_kehb1_p6_ilores_dshres(void) +static void lts_aga_fm2_kehb1_p6_ihires_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -43418,24 +75746,24 @@ static void lts_aga_fm2_kehb1_p6_ilores_dshres(void) } last_bpl_pix = pix0; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; shiftbpl6e_64(); loaded_pix = getbpl6_64(); } - bplshiftcnt[1] += 1; + bplshiftcnt[1] += 2; if (bplshiftcnt[1] >= 4) { bplshiftcnt[1] = 0; shiftbpl6o_64(); loaded_pix = getbpl6_64(); } - if (bpldat_copy[0] && ((cmp | 0) & 255) == 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] && ((cmp | 0) & 255) == 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(); @@ -43454,24 +75782,24 @@ static void lts_aga_fm2_kehb1_p6_ilores_dshres(void) } last_bpl_pix = pix1; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; shiftbpl6e_64(); loaded_pix = getbpl6_64(); } - bplshiftcnt[1] += 1; + bplshiftcnt[1] += 2; if (bplshiftcnt[1] >= 4) { bplshiftcnt[1] = 0; shiftbpl6o_64(); loaded_pix = getbpl6_64(); } - if (bpldat_copy[0] && ((cmp | 1) & 255) == 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] && ((cmp | 1) & 255) == 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(); @@ -43490,24 +75818,24 @@ static void lts_aga_fm2_kehb1_p6_ilores_dshres(void) } last_bpl_pix = pix2; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; shiftbpl6e_64(); loaded_pix = getbpl6_64(); } - bplshiftcnt[1] += 1; + bplshiftcnt[1] += 2; if (bplshiftcnt[1] >= 4) { bplshiftcnt[1] = 0; shiftbpl6o_64(); loaded_pix = getbpl6_64(); } - if (bpldat_copy[0] && ((cmp | 2) & 255) == 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] && ((cmp | 2) & 255) == 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(); @@ -43526,24 +75854,24 @@ static void lts_aga_fm2_kehb1_p6_ilores_dshres(void) } last_bpl_pix = pix3; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; shiftbpl6e_64(); loaded_pix = getbpl6_64(); } - bplshiftcnt[1] += 1; + bplshiftcnt[1] += 2; if (bplshiftcnt[1] >= 4) { bplshiftcnt[1] = 0; shiftbpl6o_64(); loaded_pix = getbpl6_64(); } - if (bpldat_copy[0] && ((cmp | 3) & 255) == 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] && ((cmp | 3) & 255) == 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(); @@ -43610,11 +75938,11 @@ static void lts_aga_fm2_kehb1_p6_ilores_dshres(void) denise_cck++; } } -static void lts_aga_fm2_kehb1_p6_ilores_dshres_filtered(void) +static void lts_aga_fm2_kehb1_p6_ihires_dshres_filtered(void) { lts_null(); } -static void lts_aga_fm2_n0_p8_ilores_dshres(void) +static void lts_aga_fm2_n0_p8_ihires_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -43638,13 +75966,13 @@ static void lts_aga_fm2_n0_p8_ilores_dshres(void) } last_bpl_pix = pix0; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; shiftbpl8_64(); loaded_pix = getbpl8_64(); } - if (bpldat_copy[0] && ((cmp | 0) & 255) == 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(); @@ -43662,13 +75990,13 @@ static void lts_aga_fm2_n0_p8_ilores_dshres(void) } last_bpl_pix = pix1; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; shiftbpl8_64(); loaded_pix = getbpl8_64(); } - if (bpldat_copy[0] && ((cmp | 1) & 255) == 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(); @@ -43686,13 +76014,13 @@ static void lts_aga_fm2_n0_p8_ilores_dshres(void) } last_bpl_pix = pix2; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; shiftbpl8_64(); loaded_pix = getbpl8_64(); } - if (bpldat_copy[0] && ((cmp | 2) & 255) == 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(); @@ -43710,13 +76038,13 @@ static void lts_aga_fm2_n0_p8_ilores_dshres(void) } last_bpl_pix = pix3; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; shiftbpl8_64(); loaded_pix = getbpl8_64(); } - if (bpldat_copy[0] && ((cmp | 3) & 255) == 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(); @@ -43783,11 +76111,11 @@ static void lts_aga_fm2_n0_p8_ilores_dshres(void) denise_cck++; } } -static void lts_aga_fm2_n0_p8_ilores_dshres_filtered(void) +static void lts_aga_fm2_n0_p8_ihires_dshres_filtered(void) { lts_null(); } -static void lts_aga_fm2_n1_p8_ilores_dshres(void) +static void lts_aga_fm2_n1_p8_ihires_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -43811,24 +76139,24 @@ static void lts_aga_fm2_n1_p8_ilores_dshres(void) } last_bpl_pix = pix0; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; shiftbpl8e_64(); loaded_pix = getbpl8_64(); } - bplshiftcnt[1] += 1; + bplshiftcnt[1] += 2; if (bplshiftcnt[1] >= 4) { bplshiftcnt[1] = 0; shiftbpl8o_64(); loaded_pix = getbpl8_64(); } - if (bpldat_copy[0] && ((cmp | 0) & 255) == 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] && ((cmp | 0) & 255) == 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(); @@ -43846,24 +76174,24 @@ static void lts_aga_fm2_n1_p8_ilores_dshres(void) } last_bpl_pix = pix1; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; shiftbpl8e_64(); loaded_pix = getbpl8_64(); } - bplshiftcnt[1] += 1; + bplshiftcnt[1] += 2; if (bplshiftcnt[1] >= 4) { bplshiftcnt[1] = 0; shiftbpl8o_64(); loaded_pix = getbpl8_64(); } - if (bpldat_copy[0] && ((cmp | 1) & 255) == 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] && ((cmp | 1) & 255) == 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(); @@ -43881,24 +76209,24 @@ static void lts_aga_fm2_n1_p8_ilores_dshres(void) } last_bpl_pix = pix2; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; shiftbpl8e_64(); loaded_pix = getbpl8_64(); } - bplshiftcnt[1] += 1; + bplshiftcnt[1] += 2; if (bplshiftcnt[1] >= 4) { bplshiftcnt[1] = 0; shiftbpl8o_64(); loaded_pix = getbpl8_64(); } - if (bpldat_copy[0] && ((cmp | 2) & 255) == 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] && ((cmp | 2) & 255) == 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(); @@ -43916,24 +76244,24 @@ static void lts_aga_fm2_n1_p8_ilores_dshres(void) } last_bpl_pix = pix3; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; shiftbpl8e_64(); loaded_pix = getbpl8_64(); } - bplshiftcnt[1] += 1; + bplshiftcnt[1] += 2; if (bplshiftcnt[1] >= 4) { bplshiftcnt[1] = 0; shiftbpl8o_64(); loaded_pix = getbpl8_64(); } - if (bpldat_copy[0] && ((cmp | 3) & 255) == 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] && ((cmp | 3) & 255) == 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(); @@ -44000,11 +76328,11 @@ static void lts_aga_fm2_n1_p8_ilores_dshres(void) denise_cck++; } } -static void lts_aga_fm2_n1_p8_ilores_dshres_filtered(void) +static void lts_aga_fm2_n1_p8_ihires_dshres_filtered(void) { lts_null(); } -static void lts_aga_fm2_dpf0_p8_ilores_dshres(void) +static void lts_aga_fm2_dpf0_p8_ihires_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -44033,13 +76361,13 @@ static void lts_aga_fm2_dpf0_p8_ilores_dshres(void) } last_bpl_pix = pix0; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; shiftbpl8_64(); loaded_pix = getbpl8_64(); } - if (bpldat_copy[0] && ((cmp | 0) & 255) == 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(); @@ -44062,13 +76390,13 @@ static void lts_aga_fm2_dpf0_p8_ilores_dshres(void) } last_bpl_pix = pix1; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; shiftbpl8_64(); loaded_pix = getbpl8_64(); } - if (bpldat_copy[0] && ((cmp | 1) & 255) == 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(); @@ -44091,13 +76419,13 @@ static void lts_aga_fm2_dpf0_p8_ilores_dshres(void) } last_bpl_pix = pix2; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; shiftbpl8_64(); loaded_pix = getbpl8_64(); } - if (bpldat_copy[0] && ((cmp | 2) & 255) == 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(); @@ -44120,13 +76448,13 @@ static void lts_aga_fm2_dpf0_p8_ilores_dshres(void) } last_bpl_pix = pix3; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; shiftbpl8_64(); loaded_pix = getbpl8_64(); } - if (bpldat_copy[0] && ((cmp | 3) & 255) == 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(); @@ -44193,11 +76521,11 @@ static void lts_aga_fm2_dpf0_p8_ilores_dshres(void) denise_cck++; } } -static void lts_aga_fm2_dpf0_p8_ilores_dshres_filtered(void) +static void lts_aga_fm2_dpf0_p8_ihires_dshres_filtered(void) { lts_null(); } -static void lts_aga_fm2_dpf1_p8_ilores_dshres(void) +static void lts_aga_fm2_dpf1_p8_ihires_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -44226,24 +76554,24 @@ static void lts_aga_fm2_dpf1_p8_ilores_dshres(void) } last_bpl_pix = pix0; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; shiftbpl8e_64(); loaded_pix = getbpl8_64(); } - bplshiftcnt[1] += 1; + bplshiftcnt[1] += 2; if (bplshiftcnt[1] >= 4) { bplshiftcnt[1] = 0; shiftbpl8o_64(); loaded_pix = getbpl8_64(); } - if (bpldat_copy[0] && ((cmp | 0) & 255) == 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] && ((cmp | 0) & 255) == 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(); @@ -44266,24 +76594,24 @@ static void lts_aga_fm2_dpf1_p8_ilores_dshres(void) } last_bpl_pix = pix1; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; shiftbpl8e_64(); loaded_pix = getbpl8_64(); } - bplshiftcnt[1] += 1; + bplshiftcnt[1] += 2; if (bplshiftcnt[1] >= 4) { bplshiftcnt[1] = 0; shiftbpl8o_64(); loaded_pix = getbpl8_64(); } - if (bpldat_copy[0] && ((cmp | 1) & 255) == 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] && ((cmp | 1) & 255) == 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(); @@ -44306,24 +76634,24 @@ static void lts_aga_fm2_dpf1_p8_ilores_dshres(void) } last_bpl_pix = pix2; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; shiftbpl8e_64(); loaded_pix = getbpl8_64(); } - bplshiftcnt[1] += 1; + bplshiftcnt[1] += 2; if (bplshiftcnt[1] >= 4) { bplshiftcnt[1] = 0; shiftbpl8o_64(); loaded_pix = getbpl8_64(); } - if (bpldat_copy[0] && ((cmp | 2) & 255) == 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] && ((cmp | 2) & 255) == 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(); @@ -44346,24 +76674,24 @@ static void lts_aga_fm2_dpf1_p8_ilores_dshres(void) } last_bpl_pix = pix3; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; shiftbpl8e_64(); loaded_pix = getbpl8_64(); } - bplshiftcnt[1] += 1; + bplshiftcnt[1] += 2; if (bplshiftcnt[1] >= 4) { bplshiftcnt[1] = 0; shiftbpl8o_64(); loaded_pix = getbpl8_64(); } - if (bpldat_copy[0] && ((cmp | 3) & 255) == 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] && ((cmp | 3) & 255) == 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(); @@ -44430,27 +76758,11 @@ static void lts_aga_fm2_dpf1_p8_ilores_dshres(void) denise_cck++; } } -static void lts_aga_fm2_dpf1_p8_ilores_dshres_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb0_p8_ilores_dshres(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb0_p8_ilores_dshres_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb1_p8_ilores_dshres(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb1_p8_ilores_dshres_filtered(void) +static void lts_aga_fm2_dpf1_p8_ihires_dshres_filtered(void) { lts_null(); } -static void lts_aga_fm2_ham0_p8_ilores_dshres(void) +static void lts_aga_fm2_ehb0_p8_ihires_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -44461,103 +76773,30 @@ 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; - if (!denise_blank_active) { - dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = decode_ham_pixel_aga(pix0); - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8_64(); - loaded_pix = getbpl8_64(); - } - if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_64(); - } - loaded_pixs[0] = loaded_pix; - internal_pixel_cnt += 1; - uae_u8 pix1 = 0; - uae_u32 dpix_val1 = BLANK_COLOR; - if (!denise_blank_active) { - dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - dpix_val1 = decode_ham_pixel_aga(pix1); - } - last_bpl_pix = pix1; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8_64(); - loaded_pix = getbpl8_64(); + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; } - if (bpldat_copy[0] && ((cmp | 1) & 255) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_64(); + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; } - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = decode_ham_pixel_aga(pix2); - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8_64(); - loaded_pix = getbpl8_64(); - } - if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_64(); } - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - dpix_val3 = decode_ham_pixel_aga(pix3); - } - last_bpl_pix = pix3; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8_64(); - loaded_pix = getbpl8_64(); - } - if (bpldat_copy[0] && ((cmp | 3) & 255) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_64(); } - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; @@ -44619,11 +76858,11 @@ static void lts_aga_fm2_ham0_p8_ilores_dshres(void) denise_cck++; } } -static void lts_aga_fm2_ham0_p8_ilores_dshres_filtered(void) +static void lts_aga_fm2_ehb0_p8_ihires_dshres_filtered(void) { lts_null(); } -static void lts_aga_fm2_ham1_p8_ilores_dshres(void) +static void lts_aga_fm2_ehb1_p8_ihires_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -44634,147 +76873,30 @@ 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; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = decode_ham_pixel_aga(pix0); - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8e_64(); - loaded_pix = getbpl8_64(); - } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl8o_64(); - loaded_pix = getbpl8_64(); - } - 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] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl8_64(); } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - dpix_val1 = decode_ham_pixel_aga(pix1); - } - last_bpl_pix = pix1; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8e_64(); - loaded_pix = getbpl8_64(); - } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl8o_64(); - loaded_pix = getbpl8_64(); - } - 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] && ((cmp | 1) & 255) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl8_64(); } - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = decode_ham_pixel_aga(pix2); - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8e_64(); - loaded_pix = getbpl8_64(); - } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl8o_64(); - loaded_pix = getbpl8_64(); - } - 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] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl8_64(); } - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - dpix_val3 = decode_ham_pixel_aga(pix3); - } - last_bpl_pix = pix3; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8e_64(); - loaded_pix = getbpl8_64(); - } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl8o_64(); - loaded_pix = getbpl8_64(); - } - 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] && ((cmp | 3) & 255) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl8_64(); } - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; @@ -44836,27 +76958,11 @@ static void lts_aga_fm2_ham1_p8_ilores_dshres(void) denise_cck++; } } -static void lts_aga_fm2_ham1_p8_ilores_dshres_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb0_p8_ilores_dshres(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb0_p8_ilores_dshres_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb1_p8_ilores_dshres(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb1_p8_ilores_dshres_filtered(void) +static void lts_aga_fm2_ehb1_p8_ihires_dshres_filtered(void) { lts_null(); } -static void lts_aga_fm2_n0_p2_ilores_dshres_spr(void) +static void lts_aga_fm2_ham0_p8_ihires_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -44869,7 +76975,6 @@ static void lts_aga_fm2_n0_p2_ilores_dshres_spr(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -44877,32 +76982,23 @@ static void lts_aga_fm2_n0_p2_ilores_dshres_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + dpix_val0 = decode_ham_pixel_aga(pix0); } last_bpl_pix = pix0; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl2_64(); - loaded_pix = getbpl2_64(); + shiftbpl8_64(); + loaded_pix = getbpl8_64(); } - if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { - copybpl2_64(); + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8_64(); bplshiftcnt[0] = 0; - loaded_pix = getbpl2_64(); - } - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } + loaded_pix = getbpl8_64(); } loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; - matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { @@ -44910,32 +77006,23 @@ static void lts_aga_fm2_n0_p2_ilores_dshres_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix1 = loaded_pixs[1]; clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; + dpix_val1 = decode_ham_pixel_aga(pix1); } last_bpl_pix = pix1; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl2_64(); - loaded_pix = getbpl2_64(); + shiftbpl8_64(); + loaded_pix = getbpl8_64(); } - if (bpldat_copy[0] && ((cmp | 1) & 255) == bplcon1_shift_full_masked[0]) { - copybpl2_64(); + if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8_64(); bplshiftcnt[0] = 0; - loaded_pix = getbpl2_64(); - } - uae_u32 sv1 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv1 = svt; - } + loaded_pix = getbpl8_64(); } loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; - matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { @@ -44943,32 +77030,23 @@ static void lts_aga_fm2_n0_p2_ilores_dshres_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + dpix_val2 = decode_ham_pixel_aga(pix2); } last_bpl_pix = pix2; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl2_64(); - loaded_pix = getbpl2_64(); + shiftbpl8_64(); + loaded_pix = getbpl8_64(); } - if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { - copybpl2_64(); + if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8_64(); bplshiftcnt[0] = 0; - loaded_pix = getbpl2_64(); - } - uae_u32 sv2 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv2 = svt; - } + loaded_pix = getbpl8_64(); } loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; - matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { @@ -44976,59 +77054,27 @@ static void lts_aga_fm2_n0_p2_ilores_dshres_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix3 = loaded_pixs[3]; clxdat |= bplcoltable[pix3]; - dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; + dpix_val3 = decode_ham_pixel_aga(pix3); } last_bpl_pix = pix3; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl2_64(); - loaded_pix = getbpl2_64(); + shiftbpl8_64(); + loaded_pix = getbpl8_64(); } - if (bpldat_copy[0] && ((cmp | 3) & 255) == bplcon1_shift_full_masked[0]) { - copybpl2_64(); + if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8_64(); bplshiftcnt[0] = 0; - loaded_pix = getbpl2_64(); - } - uae_u32 sv3 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv3 = svt; - } + loaded_pix = getbpl8_64(); } loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - } - } dtbuf[h][0] = dpix_val0; - if (sv1) { - uae_u32 spix1 = denise_render_sprites2(pix1, sv1); - if (spix1) { - dpix_val1 = denise_colors.acolors[spix1]; - } - } dtbuf[h][1] = dpix_val1; - if (sv2) { - uae_u32 spix2 = denise_render_sprites2(pix2, sv2); - if (spix2) { - dpix_val2 = denise_colors.acolors[spix2]; - } - } dtbuf[h][2] = dpix_val2; - if (sv3) { - uae_u32 spix3 = denise_render_sprites2(pix3, sv3); - if (spix3) { - dpix_val3 = denise_colors.acolors[spix3]; - } - } dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -45085,11 +77131,11 @@ static void lts_aga_fm2_n0_p2_ilores_dshres_spr(void) denise_cck++; } } -static void lts_aga_fm2_n0_p2_ilores_dshres_spr_filtered(void) +static void lts_aga_fm2_ham0_p8_ihires_dshres_filtered(void) { lts_null(); } -static void lts_aga_fm2_n1_p2_ilores_dshres_spr(void) +static void lts_aga_fm2_ham1_p8_ihires_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -45102,7 +77148,6 @@ static void lts_aga_fm2_n1_p2_ilores_dshres_spr(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -45110,43 +77155,34 @@ static void lts_aga_fm2_n1_p2_ilores_dshres_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + dpix_val0 = decode_ham_pixel_aga(pix0); } last_bpl_pix = pix0; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl2e_64(); - loaded_pix = getbpl2_64(); + shiftbpl8e_64(); + loaded_pix = getbpl8_64(); } - bplshiftcnt[1] += 1; + bplshiftcnt[1] += 2; if (bplshiftcnt[1] >= 4) { bplshiftcnt[1] = 0; - shiftbpl2o_64(); - loaded_pix = getbpl2_64(); + shiftbpl8o_64(); + loaded_pix = getbpl8_64(); } - if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { - copybpl2e_64(); + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8e_64(); bplshiftcnt[0] = 0; - loaded_pix = getbpl2_64(); + loaded_pix = getbpl8_64(); } - if (bpldat_copy[1] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[1]) { - copybpl2o_64(); + if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { + copybpl8o_64(); bplshiftcnt[1] = 0; - loaded_pix = getbpl2_64(); - } - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } + loaded_pix = getbpl8_64(); } loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; - matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { @@ -45154,43 +77190,34 @@ static void lts_aga_fm2_n1_p2_ilores_dshres_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix1 = loaded_pixs[1]; clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; + dpix_val1 = decode_ham_pixel_aga(pix1); } last_bpl_pix = pix1; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl2e_64(); - loaded_pix = getbpl2_64(); + shiftbpl8e_64(); + loaded_pix = getbpl8_64(); } - bplshiftcnt[1] += 1; + bplshiftcnt[1] += 2; if (bplshiftcnt[1] >= 4) { bplshiftcnt[1] = 0; - shiftbpl2o_64(); - loaded_pix = getbpl2_64(); + shiftbpl8o_64(); + loaded_pix = getbpl8_64(); } - if (bpldat_copy[0] && ((cmp | 1) & 255) == bplcon1_shift_full_masked[0]) { - copybpl2e_64(); + if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8e_64(); bplshiftcnt[0] = 0; - loaded_pix = getbpl2_64(); + loaded_pix = getbpl8_64(); } - if (bpldat_copy[1] && ((cmp | 1) & 255) == bplcon1_shift_full_masked[1]) { - copybpl2o_64(); + if (bpldat_copy[1] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) { + copybpl8o_64(); bplshiftcnt[1] = 0; - loaded_pix = getbpl2_64(); - } - uae_u32 sv1 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv1 = svt; - } + loaded_pix = getbpl8_64(); } loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; - matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { @@ -45198,43 +77225,34 @@ static void lts_aga_fm2_n1_p2_ilores_dshres_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + dpix_val2 = decode_ham_pixel_aga(pix2); } last_bpl_pix = pix2; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl2e_64(); - loaded_pix = getbpl2_64(); + shiftbpl8e_64(); + loaded_pix = getbpl8_64(); } - bplshiftcnt[1] += 1; + bplshiftcnt[1] += 2; if (bplshiftcnt[1] >= 4) { bplshiftcnt[1] = 0; - shiftbpl2o_64(); - loaded_pix = getbpl2_64(); + shiftbpl8o_64(); + loaded_pix = getbpl8_64(); } - if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { - copybpl2e_64(); + if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8e_64(); bplshiftcnt[0] = 0; - loaded_pix = getbpl2_64(); + loaded_pix = getbpl8_64(); } - if (bpldat_copy[1] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[1]) { - copybpl2o_64(); + if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) { + copybpl8o_64(); bplshiftcnt[1] = 0; - loaded_pix = getbpl2_64(); - } - uae_u32 sv2 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv2 = svt; - } + loaded_pix = getbpl8_64(); } loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; - matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { @@ -45242,70 +77260,38 @@ static void lts_aga_fm2_n1_p2_ilores_dshres_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix3 = loaded_pixs[3]; clxdat |= bplcoltable[pix3]; - dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; + dpix_val3 = decode_ham_pixel_aga(pix3); } last_bpl_pix = pix3; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl2e_64(); - loaded_pix = getbpl2_64(); + shiftbpl8e_64(); + loaded_pix = getbpl8_64(); } - bplshiftcnt[1] += 1; + bplshiftcnt[1] += 2; if (bplshiftcnt[1] >= 4) { bplshiftcnt[1] = 0; - shiftbpl2o_64(); - loaded_pix = getbpl2_64(); + shiftbpl8o_64(); + loaded_pix = getbpl8_64(); } - if (bpldat_copy[0] && ((cmp | 3) & 255) == bplcon1_shift_full_masked[0]) { - copybpl2e_64(); + if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8e_64(); bplshiftcnt[0] = 0; - loaded_pix = getbpl2_64(); + loaded_pix = getbpl8_64(); } - if (bpldat_copy[1] && ((cmp | 3) & 255) == bplcon1_shift_full_masked[1]) { - copybpl2o_64(); + if (bpldat_copy[1] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[1]) { + copybpl8o_64(); bplshiftcnt[1] = 0; - loaded_pix = getbpl2_64(); - } - uae_u32 sv3 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv3 = svt; - } + loaded_pix = getbpl8_64(); } loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - } - } dtbuf[h][0] = dpix_val0; - if (sv1) { - uae_u32 spix1 = denise_render_sprites2(pix1, sv1); - if (spix1) { - dpix_val1 = denise_colors.acolors[spix1]; - } - } dtbuf[h][1] = dpix_val1; - if (sv2) { - uae_u32 spix2 = denise_render_sprites2(pix2, sv2); - if (spix2) { - dpix_val2 = denise_colors.acolors[spix2]; - } - } dtbuf[h][2] = dpix_val2; - if (sv3) { - uae_u32 spix3 = denise_render_sprites2(pix3, sv3); - if (spix3) { - dpix_val3 = denise_colors.acolors[spix3]; - } - } dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -45362,11 +77348,11 @@ static void lts_aga_fm2_n1_p2_ilores_dshres_spr(void) denise_cck++; } } -static void lts_aga_fm2_n1_p2_ilores_dshres_spr_filtered(void) +static void lts_aga_fm2_ham1_p8_ihires_dshres_filtered(void) { lts_null(); } -static void lts_aga_fm2_dpf0_p2_ilores_dshres_spr(void) +static void lts_aga_fm2_kehb0_p8_ihires_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -45375,190 +77361,37 @@ static void lts_aga_fm2_dpf0_p2_ilores_dshres_spr(void) if (h) { denise_hcounter_next = denise_hcounter_new; } - int cnt = denise_hcounter << 2; - int cnt_next = denise_hcounter_next << 2; - int cmp = denise_hcounter_cmp << 2; - if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites_aga(cnt + 0); - uae_u8 pix0 = 0; - uae_u32 dpix_val0 = BLANK_COLOR; - if (!denise_blank_active) { - dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl2_64(); - loaded_pix = getbpl2_64(); - } - if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { - copybpl2_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl2_64(); - } - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; - matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - if (dpf_lookup_no[pix1]) { - val1 += dblpfofs[bpldualpf2of]; - } - val1 ^= bplcon4_denise_xor_val; - dpix_val1 = denise_colors.acolors[val1]; - } - last_bpl_pix = pix1; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl2_64(); - loaded_pix = getbpl2_64(); - } - if (bpldat_copy[0] && ((cmp | 1) & 255) == bplcon1_shift_full_masked[0]) { - copybpl2_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl2_64(); - } - uae_u32 sv1 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv1 = svt; - } } - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; - matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl2_64(); - loaded_pix = getbpl2_64(); - } - if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { - copybpl2_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl2_64(); - } - uae_u32 sv2 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv2 = svt; - } } - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; - matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - uae_u8 val3 = dpf_lookup[pix3]; - if (dpf_lookup_no[pix3]) { - val3 += dblpfofs[bpldualpf2of]; - } - val3 ^= bplcon4_denise_xor_val; - dpix_val3 = denise_colors.acolors[val3]; - } - last_bpl_pix = pix3; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl2_64(); - loaded_pix = getbpl2_64(); - } - if (bpldat_copy[0] && ((cmp | 3) & 255) == bplcon1_shift_full_masked[0]) { - copybpl2_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl2_64(); - } - uae_u32 sv3 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv3 = svt; - } } - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - } - } dtbuf[h][0] = dpix_val0; - if (sv1) { - uae_u32 spix1 = denise_render_sprites2(pix1, sv1); - if (spix1) { - dpix_val1 = denise_colors.acolors[spix1]; - } - } dtbuf[h][1] = dpix_val1; - if (sv2) { - uae_u32 spix2 = denise_render_sprites2(pix2, sv2); - if (spix2) { - dpix_val2 = denise_colors.acolors[spix2]; - } - } dtbuf[h][2] = dpix_val2; - if (sv3) { - uae_u32 spix3 = denise_render_sprites2(pix3, sv3); - if (spix3) { - dpix_val3 = denise_colors.acolors[spix3]; - } - } dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -45615,11 +77448,11 @@ static void lts_aga_fm2_dpf0_p2_ilores_dshres_spr(void) denise_cck++; } } -static void lts_aga_fm2_dpf0_p2_ilores_dshres_spr_filtered(void) +static void lts_aga_fm2_kehb0_p8_ihires_dshres_filtered(void) { lts_null(); } -static void lts_aga_fm2_dpf1_p2_ilores_dshres_spr(void) +static void lts_aga_fm2_kehb1_p8_ihires_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -45630,232 +77463,35 @@ 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; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl2e_64(); - loaded_pix = getbpl2_64(); - } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl2o_64(); - loaded_pix = getbpl2_64(); - } - 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] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[1]) { - copybpl2o_64(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl2_64(); - } - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; - matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - if (dpf_lookup_no[pix1]) { - val1 += dblpfofs[bpldualpf2of]; - } - val1 ^= bplcon4_denise_xor_val; - dpix_val1 = denise_colors.acolors[val1]; - } - last_bpl_pix = pix1; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl2e_64(); - loaded_pix = getbpl2_64(); - } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl2o_64(); - loaded_pix = getbpl2_64(); - } - 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] && ((cmp | 1) & 255) == bplcon1_shift_full_masked[1]) { - copybpl2o_64(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl2_64(); - } - uae_u32 sv1 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv1 = svt; - } } - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; - matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl2e_64(); - loaded_pix = getbpl2_64(); - } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl2o_64(); - loaded_pix = getbpl2_64(); - } - 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] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[1]) { - copybpl2o_64(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl2_64(); - } - uae_u32 sv2 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv2 = svt; - } } - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; - matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - uae_u8 val3 = dpf_lookup[pix3]; - if (dpf_lookup_no[pix3]) { - val3 += dblpfofs[bpldualpf2of]; - } - val3 ^= bplcon4_denise_xor_val; - dpix_val3 = denise_colors.acolors[val3]; - } - last_bpl_pix = pix3; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl2e_64(); - loaded_pix = getbpl2_64(); - } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl2o_64(); - loaded_pix = getbpl2_64(); - } - 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] && ((cmp | 3) & 255) == bplcon1_shift_full_masked[1]) { - copybpl2o_64(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl2_64(); - } - uae_u32 sv3 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv3 = svt; - } } - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - } - } dtbuf[h][0] = dpix_val0; - if (sv1) { - uae_u32 spix1 = denise_render_sprites2(pix1, sv1); - if (spix1) { - dpix_val1 = denise_colors.acolors[spix1]; - } - } dtbuf[h][1] = dpix_val1; - if (sv2) { - uae_u32 spix2 = denise_render_sprites2(pix2, sv2); - if (spix2) { - dpix_val2 = denise_colors.acolors[spix2]; - } - } dtbuf[h][2] = dpix_val2; - if (sv3) { - uae_u32 spix3 = denise_render_sprites2(pix3, sv3); - if (spix3) { - dpix_val3 = denise_colors.acolors[spix3]; - } - } dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -45912,59 +77548,11 @@ static void lts_aga_fm2_dpf1_p2_ilores_dshres_spr(void) denise_cck++; } } -static void lts_aga_fm2_dpf1_p2_ilores_dshres_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb0_p2_ilores_dshres_spr(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb0_p2_ilores_dshres_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb1_p2_ilores_dshres_spr(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb1_p2_ilores_dshres_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_ham0_p2_ilores_dshres_spr(void) -{ - lts_null(); -} -static void lts_aga_fm2_ham0_p2_ilores_dshres_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_ham1_p2_ilores_dshres_spr(void) -{ - lts_null(); -} -static void lts_aga_fm2_ham1_p2_ilores_dshres_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb0_p2_ilores_dshres_spr(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb0_p2_ilores_dshres_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb1_p2_ilores_dshres_spr(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb1_p2_ilores_dshres_spr_filtered(void) +static void lts_aga_fm2_kehb1_p8_ihires_dshres_filtered(void) { lts_null(); } -static void lts_aga_fm2_n0_p4_ilores_dshres_spr(void) +static void lts_aga_fm2_n0_p2_ihires_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -45989,16 +77577,16 @@ static void lts_aga_fm2_n0_p4_ilores_dshres_spr(void) } last_bpl_pix = pix0; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl4_64(); - loaded_pix = getbpl4_64(); + shiftbpl2_64(); + loaded_pix = getbpl2_64(); } - if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { - copybpl4_64(); + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl2_64(); bplshiftcnt[0] = 0; - loaded_pix = getbpl4_64(); + loaded_pix = getbpl2_64(); } uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { @@ -46022,16 +77610,16 @@ static void lts_aga_fm2_n0_p4_ilores_dshres_spr(void) } last_bpl_pix = pix1; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl4_64(); - loaded_pix = getbpl4_64(); + shiftbpl2_64(); + loaded_pix = getbpl2_64(); } - if (bpldat_copy[0] && ((cmp | 1) & 255) == bplcon1_shift_full_masked[0]) { - copybpl4_64(); + if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { + copybpl2_64(); bplshiftcnt[0] = 0; - loaded_pix = getbpl4_64(); + loaded_pix = getbpl2_64(); } uae_u32 sv1 = 0; if (denise_spr_nr_armeds) { @@ -46055,16 +77643,16 @@ static void lts_aga_fm2_n0_p4_ilores_dshres_spr(void) } last_bpl_pix = pix2; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl4_64(); - loaded_pix = getbpl4_64(); + shiftbpl2_64(); + loaded_pix = getbpl2_64(); } - if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { - copybpl4_64(); + if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { + copybpl2_64(); bplshiftcnt[0] = 0; - loaded_pix = getbpl4_64(); + loaded_pix = getbpl2_64(); } uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { @@ -46088,16 +77676,16 @@ static void lts_aga_fm2_n0_p4_ilores_dshres_spr(void) } last_bpl_pix = pix3; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl4_64(); - loaded_pix = getbpl4_64(); + shiftbpl2_64(); + loaded_pix = getbpl2_64(); } - if (bpldat_copy[0] && ((cmp | 3) & 255) == bplcon1_shift_full_masked[0]) { - copybpl4_64(); + if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { + copybpl2_64(); bplshiftcnt[0] = 0; - loaded_pix = getbpl4_64(); + loaded_pix = getbpl2_64(); } uae_u32 sv3 = 0; if (denise_spr_nr_armeds) { @@ -46193,11 +77781,11 @@ static void lts_aga_fm2_n0_p4_ilores_dshres_spr(void) denise_cck++; } } -static void lts_aga_fm2_n0_p4_ilores_dshres_spr_filtered(void) +static void lts_aga_fm2_n0_p2_ihires_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm2_n1_p4_ilores_dshres_spr(void) +static void lts_aga_fm2_n1_p2_ihires_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -46222,27 +77810,27 @@ static void lts_aga_fm2_n1_p4_ilores_dshres_spr(void) } last_bpl_pix = pix0; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl4e_64(); - loaded_pix = getbpl4_64(); + shiftbpl2e_64(); + loaded_pix = getbpl2_64(); } - bplshiftcnt[1] += 1; + bplshiftcnt[1] += 2; if (bplshiftcnt[1] >= 4) { bplshiftcnt[1] = 0; - shiftbpl4o_64(); - loaded_pix = getbpl4_64(); + shiftbpl2o_64(); + loaded_pix = getbpl2_64(); } - if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { - copybpl4e_64(); + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl2e_64(); bplshiftcnt[0] = 0; - loaded_pix = getbpl4_64(); + loaded_pix = getbpl2_64(); } - if (bpldat_copy[1] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[1]) { - copybpl4o_64(); + if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { + copybpl2o_64(); bplshiftcnt[1] = 0; - loaded_pix = getbpl4_64(); + loaded_pix = getbpl2_64(); } uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { @@ -46266,27 +77854,27 @@ static void lts_aga_fm2_n1_p4_ilores_dshres_spr(void) } last_bpl_pix = pix1; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl4e_64(); - loaded_pix = getbpl4_64(); + shiftbpl2e_64(); + loaded_pix = getbpl2_64(); } - bplshiftcnt[1] += 1; + bplshiftcnt[1] += 2; if (bplshiftcnt[1] >= 4) { bplshiftcnt[1] = 0; - shiftbpl4o_64(); - loaded_pix = getbpl4_64(); + shiftbpl2o_64(); + loaded_pix = getbpl2_64(); } - if (bpldat_copy[0] && ((cmp | 1) & 255) == bplcon1_shift_full_masked[0]) { - copybpl4e_64(); + if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { + copybpl2e_64(); bplshiftcnt[0] = 0; - loaded_pix = getbpl4_64(); + loaded_pix = getbpl2_64(); } - if (bpldat_copy[1] && ((cmp | 1) & 255) == bplcon1_shift_full_masked[1]) { - copybpl4o_64(); + if (bpldat_copy[1] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) { + copybpl2o_64(); bplshiftcnt[1] = 0; - loaded_pix = getbpl4_64(); + loaded_pix = getbpl2_64(); } uae_u32 sv1 = 0; if (denise_spr_nr_armeds) { @@ -46310,27 +77898,27 @@ static void lts_aga_fm2_n1_p4_ilores_dshres_spr(void) } last_bpl_pix = pix2; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl4e_64(); - loaded_pix = getbpl4_64(); + shiftbpl2e_64(); + loaded_pix = getbpl2_64(); } - bplshiftcnt[1] += 1; + bplshiftcnt[1] += 2; if (bplshiftcnt[1] >= 4) { bplshiftcnt[1] = 0; - shiftbpl4o_64(); - loaded_pix = getbpl4_64(); + shiftbpl2o_64(); + loaded_pix = getbpl2_64(); } - if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { - copybpl4e_64(); + if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { + copybpl2e_64(); bplshiftcnt[0] = 0; - loaded_pix = getbpl4_64(); + loaded_pix = getbpl2_64(); } - if (bpldat_copy[1] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[1]) { - copybpl4o_64(); + if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) { + copybpl2o_64(); bplshiftcnt[1] = 0; - loaded_pix = getbpl4_64(); + loaded_pix = getbpl2_64(); } uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { @@ -46354,27 +77942,27 @@ static void lts_aga_fm2_n1_p4_ilores_dshres_spr(void) } last_bpl_pix = pix3; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl4e_64(); - loaded_pix = getbpl4_64(); + shiftbpl2e_64(); + loaded_pix = getbpl2_64(); } - bplshiftcnt[1] += 1; + bplshiftcnt[1] += 2; if (bplshiftcnt[1] >= 4) { bplshiftcnt[1] = 0; - shiftbpl4o_64(); - loaded_pix = getbpl4_64(); + shiftbpl2o_64(); + loaded_pix = getbpl2_64(); } - if (bpldat_copy[0] && ((cmp | 3) & 255) == bplcon1_shift_full_masked[0]) { - copybpl4e_64(); + if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { + copybpl2e_64(); bplshiftcnt[0] = 0; - loaded_pix = getbpl4_64(); + loaded_pix = getbpl2_64(); } - if (bpldat_copy[1] && ((cmp | 3) & 255) == bplcon1_shift_full_masked[1]) { - copybpl4o_64(); + if (bpldat_copy[1] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[1]) { + copybpl2o_64(); bplshiftcnt[1] = 0; - loaded_pix = getbpl4_64(); + loaded_pix = getbpl2_64(); } uae_u32 sv3 = 0; if (denise_spr_nr_armeds) { @@ -46470,11 +78058,11 @@ static void lts_aga_fm2_n1_p4_ilores_dshres_spr(void) denise_cck++; } } -static void lts_aga_fm2_n1_p4_ilores_dshres_spr_filtered(void) +static void lts_aga_fm2_n1_p2_ihires_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm2_dpf0_p4_ilores_dshres_spr(void) +static void lts_aga_fm2_dpf0_p2_ihires_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -46504,16 +78092,16 @@ static void lts_aga_fm2_dpf0_p4_ilores_dshres_spr(void) } last_bpl_pix = pix0; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl4_64(); - loaded_pix = getbpl4_64(); + shiftbpl2_64(); + loaded_pix = getbpl2_64(); } - if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { - copybpl4_64(); + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl2_64(); bplshiftcnt[0] = 0; - loaded_pix = getbpl4_64(); + loaded_pix = getbpl2_64(); } uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { @@ -46542,16 +78130,16 @@ static void lts_aga_fm2_dpf0_p4_ilores_dshres_spr(void) } last_bpl_pix = pix1; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl4_64(); - loaded_pix = getbpl4_64(); + shiftbpl2_64(); + loaded_pix = getbpl2_64(); } - if (bpldat_copy[0] && ((cmp | 1) & 255) == bplcon1_shift_full_masked[0]) { - copybpl4_64(); + if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { + copybpl2_64(); bplshiftcnt[0] = 0; - loaded_pix = getbpl4_64(); + loaded_pix = getbpl2_64(); } uae_u32 sv1 = 0; if (denise_spr_nr_armeds) { @@ -46580,16 +78168,16 @@ static void lts_aga_fm2_dpf0_p4_ilores_dshres_spr(void) } last_bpl_pix = pix2; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl4_64(); - loaded_pix = getbpl4_64(); + shiftbpl2_64(); + loaded_pix = getbpl2_64(); } - if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { - copybpl4_64(); + if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { + copybpl2_64(); bplshiftcnt[0] = 0; - loaded_pix = getbpl4_64(); + loaded_pix = getbpl2_64(); } uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { @@ -46618,16 +78206,16 @@ static void lts_aga_fm2_dpf0_p4_ilores_dshres_spr(void) } last_bpl_pix = pix3; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl4_64(); - loaded_pix = getbpl4_64(); + shiftbpl2_64(); + loaded_pix = getbpl2_64(); } - if (bpldat_copy[0] && ((cmp | 3) & 255) == bplcon1_shift_full_masked[0]) { - copybpl4_64(); + if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { + copybpl2_64(); bplshiftcnt[0] = 0; - loaded_pix = getbpl4_64(); + loaded_pix = getbpl2_64(); } uae_u32 sv3 = 0; if (denise_spr_nr_armeds) { @@ -46723,11 +78311,11 @@ static void lts_aga_fm2_dpf0_p4_ilores_dshres_spr(void) denise_cck++; } } -static void lts_aga_fm2_dpf0_p4_ilores_dshres_spr_filtered(void) +static void lts_aga_fm2_dpf0_p2_ihires_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm2_dpf1_p4_ilores_dshres_spr(void) +static void lts_aga_fm2_dpf1_p2_ihires_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -46757,27 +78345,27 @@ static void lts_aga_fm2_dpf1_p4_ilores_dshres_spr(void) } last_bpl_pix = pix0; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl4e_64(); - loaded_pix = getbpl4_64(); + shiftbpl2e_64(); + loaded_pix = getbpl2_64(); } - bplshiftcnt[1] += 1; + bplshiftcnt[1] += 2; if (bplshiftcnt[1] >= 4) { bplshiftcnt[1] = 0; - shiftbpl4o_64(); - loaded_pix = getbpl4_64(); + shiftbpl2o_64(); + loaded_pix = getbpl2_64(); } - if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { - copybpl4e_64(); + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl2e_64(); bplshiftcnt[0] = 0; - loaded_pix = getbpl4_64(); + loaded_pix = getbpl2_64(); } - if (bpldat_copy[1] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[1]) { - copybpl4o_64(); + if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { + copybpl2o_64(); bplshiftcnt[1] = 0; - loaded_pix = getbpl4_64(); + loaded_pix = getbpl2_64(); } uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { @@ -46806,27 +78394,27 @@ static void lts_aga_fm2_dpf1_p4_ilores_dshres_spr(void) } last_bpl_pix = pix1; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl4e_64(); - loaded_pix = getbpl4_64(); + shiftbpl2e_64(); + loaded_pix = getbpl2_64(); } - bplshiftcnt[1] += 1; + bplshiftcnt[1] += 2; if (bplshiftcnt[1] >= 4) { bplshiftcnt[1] = 0; - shiftbpl4o_64(); - loaded_pix = getbpl4_64(); + shiftbpl2o_64(); + loaded_pix = getbpl2_64(); } - if (bpldat_copy[0] && ((cmp | 1) & 255) == bplcon1_shift_full_masked[0]) { - copybpl4e_64(); + if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { + copybpl2e_64(); bplshiftcnt[0] = 0; - loaded_pix = getbpl4_64(); + loaded_pix = getbpl2_64(); } - if (bpldat_copy[1] && ((cmp | 1) & 255) == bplcon1_shift_full_masked[1]) { - copybpl4o_64(); + if (bpldat_copy[1] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) { + copybpl2o_64(); bplshiftcnt[1] = 0; - loaded_pix = getbpl4_64(); + loaded_pix = getbpl2_64(); } uae_u32 sv1 = 0; if (denise_spr_nr_armeds) { @@ -46855,27 +78443,27 @@ static void lts_aga_fm2_dpf1_p4_ilores_dshres_spr(void) } last_bpl_pix = pix2; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl4e_64(); - loaded_pix = getbpl4_64(); + shiftbpl2e_64(); + loaded_pix = getbpl2_64(); } - bplshiftcnt[1] += 1; + bplshiftcnt[1] += 2; if (bplshiftcnt[1] >= 4) { bplshiftcnt[1] = 0; - shiftbpl4o_64(); - loaded_pix = getbpl4_64(); + shiftbpl2o_64(); + loaded_pix = getbpl2_64(); } - if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { - copybpl4e_64(); + if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { + copybpl2e_64(); bplshiftcnt[0] = 0; - loaded_pix = getbpl4_64(); + loaded_pix = getbpl2_64(); } - if (bpldat_copy[1] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[1]) { - copybpl4o_64(); + if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) { + copybpl2o_64(); bplshiftcnt[1] = 0; - loaded_pix = getbpl4_64(); + loaded_pix = getbpl2_64(); } uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { @@ -46904,27 +78492,27 @@ static void lts_aga_fm2_dpf1_p4_ilores_dshres_spr(void) } last_bpl_pix = pix3; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl4e_64(); - loaded_pix = getbpl4_64(); + shiftbpl2e_64(); + loaded_pix = getbpl2_64(); } - bplshiftcnt[1] += 1; + bplshiftcnt[1] += 2; if (bplshiftcnt[1] >= 4) { bplshiftcnt[1] = 0; - shiftbpl4o_64(); - loaded_pix = getbpl4_64(); + shiftbpl2o_64(); + loaded_pix = getbpl2_64(); } - if (bpldat_copy[0] && ((cmp | 3) & 255) == bplcon1_shift_full_masked[0]) { - copybpl4e_64(); + if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { + copybpl2e_64(); bplshiftcnt[0] = 0; - loaded_pix = getbpl4_64(); + loaded_pix = getbpl2_64(); } - if (bpldat_copy[1] && ((cmp | 3) & 255) == bplcon1_shift_full_masked[1]) { - copybpl4o_64(); + if (bpldat_copy[1] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[1]) { + copybpl2o_64(); bplshiftcnt[1] = 0; - loaded_pix = getbpl4_64(); + loaded_pix = getbpl2_64(); } uae_u32 sv3 = 0; if (denise_spr_nr_armeds) { @@ -47020,59 +78608,11 @@ static void lts_aga_fm2_dpf1_p4_ilores_dshres_spr(void) denise_cck++; } } -static void lts_aga_fm2_dpf1_p4_ilores_dshres_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb0_p4_ilores_dshres_spr(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb0_p4_ilores_dshres_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb1_p4_ilores_dshres_spr(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb1_p4_ilores_dshres_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_ham0_p4_ilores_dshres_spr(void) -{ - lts_null(); -} -static void lts_aga_fm2_ham0_p4_ilores_dshres_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_ham1_p4_ilores_dshres_spr(void) -{ - lts_null(); -} -static void lts_aga_fm2_ham1_p4_ilores_dshres_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb0_p4_ilores_dshres_spr(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb0_p4_ilores_dshres_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb1_p4_ilores_dshres_spr(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb1_p4_ilores_dshres_spr_filtered(void) +static void lts_aga_fm2_dpf1_p2_ihires_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm2_n0_p6_ilores_dshres_spr(void) +static void lts_aga_fm2_ehb0_p2_ihires_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -47083,63 +78623,27 @@ 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; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6_64(); - loaded_pix = getbpl6_64(); - } - if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { - copybpl6_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6_64(); } uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } - } - loaded_pixs[0] = loaded_pix; - internal_pixel_cnt += 1; - matchsprites_aga(cnt + 1); - uae_u8 pix1 = 0; - uae_u32 dpix_val1 = BLANK_COLOR; - if (!denise_blank_active) { - dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix1; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6_64(); - loaded_pix = getbpl6_64(); + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } } - if (bpldat_copy[0] && ((cmp | 1) & 255) == bplcon1_shift_full_masked[0]) { - copybpl6_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6_64(); + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; } uae_u32 sv1 = 0; if (denise_spr_nr_armeds) { @@ -47149,30 +78653,12 @@ static void lts_aga_fm2_n0_p6_ilores_dshres_spr(void) sv1 = svt; } } - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6_64(); - loaded_pix = getbpl6_64(); - } - if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { - copybpl6_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6_64(); } uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { @@ -47182,30 +78668,12 @@ static void lts_aga_fm2_n0_p6_ilores_dshres_spr(void) sv2 = svt; } } - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix3; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6_64(); - loaded_pix = getbpl6_64(); - } - if (bpldat_copy[0] && ((cmp | 3) & 255) == bplcon1_shift_full_masked[0]) { - copybpl6_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6_64(); } uae_u32 sv3 = 0; if (denise_spr_nr_armeds) { @@ -47215,7 +78683,6 @@ static void lts_aga_fm2_n0_p6_ilores_dshres_spr(void) sv3 = svt; } } - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { @@ -47301,11 +78768,11 @@ static void lts_aga_fm2_n0_p6_ilores_dshres_spr(void) denise_cck++; } } -static void lts_aga_fm2_n0_p6_ilores_dshres_spr_filtered(void) +static void lts_aga_fm2_ehb0_p2_ihires_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm2_n1_p6_ilores_dshres_spr(void) +static void lts_aga_fm2_ehb1_p2_ihires_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -47316,41 +78783,12 @@ 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; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6e_64(); - loaded_pix = getbpl6_64(); - } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl6o_64(); - loaded_pix = getbpl6_64(); - } - 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] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[1]) { - copybpl6o_64(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl6_64(); } uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { @@ -47360,41 +78798,12 @@ static void lts_aga_fm2_n1_p6_ilores_dshres_spr(void) sv0 = svt; } } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix1; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6e_64(); - loaded_pix = getbpl6_64(); - } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl6o_64(); - loaded_pix = getbpl6_64(); - } - 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] && ((cmp | 1) & 255) == bplcon1_shift_full_masked[1]) { - copybpl6o_64(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl6_64(); } uae_u32 sv1 = 0; if (denise_spr_nr_armeds) { @@ -47404,41 +78813,12 @@ static void lts_aga_fm2_n1_p6_ilores_dshres_spr(void) sv1 = svt; } } - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6e_64(); - loaded_pix = getbpl6_64(); - } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl6o_64(); - loaded_pix = getbpl6_64(); - } - 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] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[1]) { - copybpl6o_64(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl6_64(); } uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { @@ -47448,41 +78828,12 @@ static void lts_aga_fm2_n1_p6_ilores_dshres_spr(void) sv2 = svt; } } - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix3; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6e_64(); - loaded_pix = getbpl6_64(); - } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl6o_64(); - loaded_pix = getbpl6_64(); - } - 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] && ((cmp | 3) & 255) == bplcon1_shift_full_masked[1]) { - copybpl6o_64(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl6_64(); } uae_u32 sv3 = 0; if (denise_spr_nr_armeds) { @@ -47492,7 +78843,6 @@ static void lts_aga_fm2_n1_p6_ilores_dshres_spr(void) sv3 = svt; } } - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { @@ -47578,11 +78928,11 @@ static void lts_aga_fm2_n1_p6_ilores_dshres_spr(void) denise_cck++; } } -static void lts_aga_fm2_n1_p6_ilores_dshres_spr_filtered(void) +static void lts_aga_fm2_ehb1_p2_ihires_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm2_dpf0_p6_ilores_dshres_spr(void) +static void lts_aga_fm2_ham0_p2_ihires_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -47593,35 +78943,12 @@ 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; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6_64(); - loaded_pix = getbpl6_64(); - } - if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { - copybpl6_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6_64(); } uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { @@ -47631,35 +78958,12 @@ static void lts_aga_fm2_dpf0_p6_ilores_dshres_spr(void) sv0 = svt; } } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - if (dpf_lookup_no[pix1]) { - val1 += dblpfofs[bpldualpf2of]; - } - val1 ^= bplcon4_denise_xor_val; - dpix_val1 = denise_colors.acolors[val1]; - } - last_bpl_pix = pix1; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6_64(); - loaded_pix = getbpl6_64(); - } - if (bpldat_copy[0] && ((cmp | 1) & 255) == bplcon1_shift_full_masked[0]) { - copybpl6_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6_64(); } uae_u32 sv1 = 0; if (denise_spr_nr_armeds) { @@ -47669,35 +78973,12 @@ static void lts_aga_fm2_dpf0_p6_ilores_dshres_spr(void) sv1 = svt; } } - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6_64(); - loaded_pix = getbpl6_64(); - } - if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { - copybpl6_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6_64(); } uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { @@ -47707,35 +78988,12 @@ static void lts_aga_fm2_dpf0_p6_ilores_dshres_spr(void) sv2 = svt; } } - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - uae_u8 val3 = dpf_lookup[pix3]; - if (dpf_lookup_no[pix3]) { - val3 += dblpfofs[bpldualpf2of]; - } - val3 ^= bplcon4_denise_xor_val; - dpix_val3 = denise_colors.acolors[val3]; - } - last_bpl_pix = pix3; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6_64(); - loaded_pix = getbpl6_64(); - } - if (bpldat_copy[0] && ((cmp | 3) & 255) == bplcon1_shift_full_masked[0]) { - copybpl6_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6_64(); } uae_u32 sv3 = 0; if (denise_spr_nr_armeds) { @@ -47745,7 +79003,6 @@ static void lts_aga_fm2_dpf0_p6_ilores_dshres_spr(void) sv3 = svt; } } - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { @@ -47831,11 +79088,11 @@ static void lts_aga_fm2_dpf0_p6_ilores_dshres_spr(void) denise_cck++; } } -static void lts_aga_fm2_dpf0_p6_ilores_dshres_spr_filtered(void) +static void lts_aga_fm2_ham0_p2_ihires_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm2_dpf1_p6_ilores_dshres_spr(void) +static void lts_aga_fm2_ham1_p2_ihires_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -47846,46 +79103,12 @@ 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; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6e_64(); - loaded_pix = getbpl6_64(); - } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl6o_64(); - loaded_pix = getbpl6_64(); - } - 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] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[1]) { - copybpl6o_64(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl6_64(); } uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { @@ -47895,46 +79118,12 @@ static void lts_aga_fm2_dpf1_p6_ilores_dshres_spr(void) sv0 = svt; } } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - if (dpf_lookup_no[pix1]) { - val1 += dblpfofs[bpldualpf2of]; - } - val1 ^= bplcon4_denise_xor_val; - dpix_val1 = denise_colors.acolors[val1]; - } - last_bpl_pix = pix1; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6e_64(); - loaded_pix = getbpl6_64(); - } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl6o_64(); - loaded_pix = getbpl6_64(); - } - 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] && ((cmp | 1) & 255) == bplcon1_shift_full_masked[1]) { - copybpl6o_64(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl6_64(); } uae_u32 sv1 = 0; if (denise_spr_nr_armeds) { @@ -47944,46 +79133,12 @@ static void lts_aga_fm2_dpf1_p6_ilores_dshres_spr(void) sv1 = svt; } } - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6e_64(); - loaded_pix = getbpl6_64(); - } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl6o_64(); - loaded_pix = getbpl6_64(); - } - 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] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[1]) { - copybpl6o_64(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl6_64(); } uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { @@ -47993,46 +79148,12 @@ static void lts_aga_fm2_dpf1_p6_ilores_dshres_spr(void) sv2 = svt; } } - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - uae_u8 val3 = dpf_lookup[pix3]; - if (dpf_lookup_no[pix3]) { - val3 += dblpfofs[bpldualpf2of]; - } - val3 ^= bplcon4_denise_xor_val; - dpix_val3 = denise_colors.acolors[val3]; - } - last_bpl_pix = pix3; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6e_64(); - loaded_pix = getbpl6_64(); - } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl6o_64(); - loaded_pix = getbpl6_64(); - } - 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] && ((cmp | 3) & 255) == bplcon1_shift_full_masked[1]) { - copybpl6o_64(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl6_64(); } uae_u32 sv3 = 0; if (denise_spr_nr_armeds) { @@ -48042,7 +79163,6 @@ static void lts_aga_fm2_dpf1_p6_ilores_dshres_spr(void) sv3 = svt; } } - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { @@ -48128,11 +79248,11 @@ static void lts_aga_fm2_dpf1_p6_ilores_dshres_spr(void) denise_cck++; } } -static void lts_aga_fm2_dpf1_p6_ilores_dshres_spr_filtered(void) +static void lts_aga_fm2_ham1_p2_ihires_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm2_ehb0_p6_ilores_dshres_spr(void) +static void lts_aga_fm2_kehb0_p2_ihires_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -48143,36 +79263,12 @@ 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; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - pix0 ^= bplcon4_denise_xor_val; - if (!(pix0 & 0x20)) { - dpix_val0 = denise_colors.acolors[pix0]; - } else { - uae_u32 v = (denise_colors.color_regs_aga[pix0 & 0x1f] >> 1) & 0x7f7f7f; - dpix_val0 = CONVERT_RGB(v); - } - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6_64(); - loaded_pix = getbpl6_64(); - } - if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { - copybpl6_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6_64(); } uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { @@ -48182,36 +79278,12 @@ static void lts_aga_fm2_ehb0_p6_ilores_dshres_spr(void) sv0 = svt; } } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - pix1 ^= bplcon4_denise_xor_val; - if (!(pix1 & 0x20)) { - dpix_val1 = denise_colors.acolors[pix1]; - } else { - uae_u32 v = (denise_colors.color_regs_aga[pix1 & 0x1f] >> 1) & 0x7f7f7f; - dpix_val1 = CONVERT_RGB(v); - } - } - last_bpl_pix = pix1; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6_64(); - loaded_pix = getbpl6_64(); - } - if (bpldat_copy[0] && ((cmp | 1) & 255) == bplcon1_shift_full_masked[0]) { - copybpl6_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6_64(); } uae_u32 sv1 = 0; if (denise_spr_nr_armeds) { @@ -48221,36 +79293,12 @@ static void lts_aga_fm2_ehb0_p6_ilores_dshres_spr(void) sv1 = svt; } } - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - pix2 ^= bplcon4_denise_xor_val; - if (!(pix2 & 0x20)) { - dpix_val2 = denise_colors.acolors[pix2]; - } else { - uae_u32 v = (denise_colors.color_regs_aga[pix2 & 0x1f] >> 1) & 0x7f7f7f; - dpix_val2 = CONVERT_RGB(v); - } - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6_64(); - loaded_pix = getbpl6_64(); - } - if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { - copybpl6_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6_64(); } uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { @@ -48260,36 +79308,12 @@ static void lts_aga_fm2_ehb0_p6_ilores_dshres_spr(void) sv2 = svt; } } - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - pix3 ^= bplcon4_denise_xor_val; - if (!(pix3 & 0x20)) { - dpix_val3 = denise_colors.acolors[pix3]; - } else { - uae_u32 v = (denise_colors.color_regs_aga[pix3 & 0x1f] >> 1) & 0x7f7f7f; - dpix_val3 = CONVERT_RGB(v); - } - } - last_bpl_pix = pix3; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6_64(); - loaded_pix = getbpl6_64(); - } - if (bpldat_copy[0] && ((cmp | 3) & 255) == bplcon1_shift_full_masked[0]) { - copybpl6_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6_64(); } uae_u32 sv3 = 0; if (denise_spr_nr_armeds) { @@ -48299,7 +79323,6 @@ static void lts_aga_fm2_ehb0_p6_ilores_dshres_spr(void) sv3 = svt; } } - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { @@ -48385,11 +79408,11 @@ static void lts_aga_fm2_ehb0_p6_ilores_dshres_spr(void) denise_cck++; } } -static void lts_aga_fm2_ehb0_p6_ilores_dshres_spr_filtered(void) +static void lts_aga_fm2_kehb0_p2_ihires_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm2_ehb1_p6_ilores_dshres_spr(void) +static void lts_aga_fm2_kehb1_p2_ihires_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -48400,47 +79423,12 @@ 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; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - pix0 ^= bplcon4_denise_xor_val; - if (!(pix0 & 0x20)) { - dpix_val0 = denise_colors.acolors[pix0]; - } else { - uae_u32 v = (denise_colors.color_regs_aga[pix0 & 0x1f] >> 1) & 0x7f7f7f; - dpix_val0 = CONVERT_RGB(v); - } - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6e_64(); - loaded_pix = getbpl6_64(); - } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl6o_64(); - loaded_pix = getbpl6_64(); - } - 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] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[1]) { - copybpl6o_64(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl6_64(); } uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { @@ -48450,47 +79438,12 @@ static void lts_aga_fm2_ehb1_p6_ilores_dshres_spr(void) sv0 = svt; } } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - pix1 ^= bplcon4_denise_xor_val; - if (!(pix1 & 0x20)) { - dpix_val1 = denise_colors.acolors[pix1]; - } else { - uae_u32 v = (denise_colors.color_regs_aga[pix1 & 0x1f] >> 1) & 0x7f7f7f; - dpix_val1 = CONVERT_RGB(v); - } - } - last_bpl_pix = pix1; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6e_64(); - loaded_pix = getbpl6_64(); - } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl6o_64(); - loaded_pix = getbpl6_64(); - } - 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] && ((cmp | 1) & 255) == bplcon1_shift_full_masked[1]) { - copybpl6o_64(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl6_64(); } uae_u32 sv1 = 0; if (denise_spr_nr_armeds) { @@ -48500,47 +79453,12 @@ static void lts_aga_fm2_ehb1_p6_ilores_dshres_spr(void) sv1 = svt; } } - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - pix2 ^= bplcon4_denise_xor_val; - if (!(pix2 & 0x20)) { - dpix_val2 = denise_colors.acolors[pix2]; - } else { - uae_u32 v = (denise_colors.color_regs_aga[pix2 & 0x1f] >> 1) & 0x7f7f7f; - dpix_val2 = CONVERT_RGB(v); - } - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6e_64(); - loaded_pix = getbpl6_64(); - } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl6o_64(); - loaded_pix = getbpl6_64(); - } - 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] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[1]) { - copybpl6o_64(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl6_64(); } uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { @@ -48550,47 +79468,12 @@ static void lts_aga_fm2_ehb1_p6_ilores_dshres_spr(void) sv2 = svt; } } - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - pix3 ^= bplcon4_denise_xor_val; - if (!(pix3 & 0x20)) { - dpix_val3 = denise_colors.acolors[pix3]; - } else { - uae_u32 v = (denise_colors.color_regs_aga[pix3 & 0x1f] >> 1) & 0x7f7f7f; - dpix_val3 = CONVERT_RGB(v); - } - } - last_bpl_pix = pix3; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6e_64(); - loaded_pix = getbpl6_64(); - } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl6o_64(); - loaded_pix = getbpl6_64(); - } - 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] && ((cmp | 3) & 255) == bplcon1_shift_full_masked[1]) { - copybpl6o_64(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl6_64(); } uae_u32 sv3 = 0; if (denise_spr_nr_armeds) { @@ -48600,7 +79483,6 @@ static void lts_aga_fm2_ehb1_p6_ilores_dshres_spr(void) sv3 = svt; } } - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { @@ -48686,11 +79568,11 @@ static void lts_aga_fm2_ehb1_p6_ilores_dshres_spr(void) denise_cck++; } } -static void lts_aga_fm2_ehb1_p6_ilores_dshres_spr_filtered(void) +static void lts_aga_fm2_kehb1_p2_ihires_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm2_ham0_p6_ilores_dshres_spr(void) +static void lts_aga_fm2_n0_p4_ihires_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -48711,20 +79593,20 @@ static void lts_aga_fm2_ham0_p6_ilores_dshres_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - dpix_val0 = decode_ham_pixel_aga(pix0); + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix0; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl6_64(); - loaded_pix = getbpl6_64(); + shiftbpl4_64(); + loaded_pix = getbpl4_64(); } - if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { - copybpl6_64(); + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl4_64(); bplshiftcnt[0] = 0; - loaded_pix = getbpl6_64(); + loaded_pix = getbpl4_64(); } uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { @@ -48744,20 +79626,20 @@ static void lts_aga_fm2_ham0_p6_ilores_dshres_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix1 = loaded_pixs[1]; clxdat |= bplcoltable[pix1]; - dpix_val1 = decode_ham_pixel_aga(pix1); + dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix1; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl6_64(); - loaded_pix = getbpl6_64(); + shiftbpl4_64(); + loaded_pix = getbpl4_64(); } - if (bpldat_copy[0] && ((cmp | 1) & 255) == bplcon1_shift_full_masked[0]) { - copybpl6_64(); + if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { + copybpl4_64(); bplshiftcnt[0] = 0; - loaded_pix = getbpl6_64(); + loaded_pix = getbpl4_64(); } uae_u32 sv1 = 0; if (denise_spr_nr_armeds) { @@ -48777,20 +79659,20 @@ static void lts_aga_fm2_ham0_p6_ilores_dshres_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - dpix_val2 = decode_ham_pixel_aga(pix2); + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix2; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl6_64(); - loaded_pix = getbpl6_64(); + shiftbpl4_64(); + loaded_pix = getbpl4_64(); } - if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { - copybpl6_64(); + if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { + copybpl4_64(); bplshiftcnt[0] = 0; - loaded_pix = getbpl6_64(); + loaded_pix = getbpl4_64(); } uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { @@ -48810,20 +79692,20 @@ static void lts_aga_fm2_ham0_p6_ilores_dshres_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix3 = loaded_pixs[3]; clxdat |= bplcoltable[pix3]; - dpix_val3 = decode_ham_pixel_aga(pix3); + dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix3; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl6_64(); - loaded_pix = getbpl6_64(); + shiftbpl4_64(); + loaded_pix = getbpl4_64(); } - if (bpldat_copy[0] && ((cmp | 3) & 255) == bplcon1_shift_full_masked[0]) { - copybpl6_64(); + if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { + copybpl4_64(); bplshiftcnt[0] = 0; - loaded_pix = getbpl6_64(); + loaded_pix = getbpl4_64(); } uae_u32 sv3 = 0; if (denise_spr_nr_armeds) { @@ -48919,11 +79801,11 @@ static void lts_aga_fm2_ham0_p6_ilores_dshres_spr(void) denise_cck++; } } -static void lts_aga_fm2_ham0_p6_ilores_dshres_spr_filtered(void) +static void lts_aga_fm2_n0_p4_ihires_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm2_ham1_p6_ilores_dshres_spr(void) +static void lts_aga_fm2_n1_p4_ihires_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -48944,31 +79826,31 @@ static void lts_aga_fm2_ham1_p6_ilores_dshres_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - dpix_val0 = decode_ham_pixel_aga(pix0); + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix0; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl6e_64(); - loaded_pix = getbpl6_64(); + shiftbpl4e_64(); + loaded_pix = getbpl4_64(); } - bplshiftcnt[1] += 1; + bplshiftcnt[1] += 2; if (bplshiftcnt[1] >= 4) { bplshiftcnt[1] = 0; - shiftbpl6o_64(); - loaded_pix = getbpl6_64(); + shiftbpl4o_64(); + loaded_pix = getbpl4_64(); } - if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { - copybpl6e_64(); + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl4e_64(); bplshiftcnt[0] = 0; - loaded_pix = getbpl6_64(); + loaded_pix = getbpl4_64(); } - if (bpldat_copy[1] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[1]) { - copybpl6o_64(); + if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { + copybpl4o_64(); bplshiftcnt[1] = 0; - loaded_pix = getbpl6_64(); + loaded_pix = getbpl4_64(); } uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { @@ -48988,31 +79870,31 @@ static void lts_aga_fm2_ham1_p6_ilores_dshres_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix1 = loaded_pixs[1]; clxdat |= bplcoltable[pix1]; - dpix_val1 = decode_ham_pixel_aga(pix1); + dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix1; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl6e_64(); - loaded_pix = getbpl6_64(); + shiftbpl4e_64(); + loaded_pix = getbpl4_64(); } - bplshiftcnt[1] += 1; + bplshiftcnt[1] += 2; if (bplshiftcnt[1] >= 4) { bplshiftcnt[1] = 0; - shiftbpl6o_64(); - loaded_pix = getbpl6_64(); + shiftbpl4o_64(); + loaded_pix = getbpl4_64(); } - if (bpldat_copy[0] && ((cmp | 1) & 255) == bplcon1_shift_full_masked[0]) { - copybpl6e_64(); + if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { + copybpl4e_64(); bplshiftcnt[0] = 0; - loaded_pix = getbpl6_64(); + loaded_pix = getbpl4_64(); } - if (bpldat_copy[1] && ((cmp | 1) & 255) == bplcon1_shift_full_masked[1]) { - copybpl6o_64(); + if (bpldat_copy[1] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) { + copybpl4o_64(); bplshiftcnt[1] = 0; - loaded_pix = getbpl6_64(); + loaded_pix = getbpl4_64(); } uae_u32 sv1 = 0; if (denise_spr_nr_armeds) { @@ -49032,31 +79914,31 @@ static void lts_aga_fm2_ham1_p6_ilores_dshres_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - dpix_val2 = decode_ham_pixel_aga(pix2); + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix2; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl6e_64(); - loaded_pix = getbpl6_64(); + shiftbpl4e_64(); + loaded_pix = getbpl4_64(); } - bplshiftcnt[1] += 1; + bplshiftcnt[1] += 2; if (bplshiftcnt[1] >= 4) { bplshiftcnt[1] = 0; - shiftbpl6o_64(); - loaded_pix = getbpl6_64(); + shiftbpl4o_64(); + loaded_pix = getbpl4_64(); } - if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { - copybpl6e_64(); + if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { + copybpl4e_64(); bplshiftcnt[0] = 0; - loaded_pix = getbpl6_64(); + loaded_pix = getbpl4_64(); } - if (bpldat_copy[1] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[1]) { - copybpl6o_64(); + if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) { + copybpl4o_64(); bplshiftcnt[1] = 0; - loaded_pix = getbpl6_64(); + loaded_pix = getbpl4_64(); } uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { @@ -49076,31 +79958,31 @@ static void lts_aga_fm2_ham1_p6_ilores_dshres_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix3 = loaded_pixs[3]; clxdat |= bplcoltable[pix3]; - dpix_val3 = decode_ham_pixel_aga(pix3); + dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix3; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl6e_64(); - loaded_pix = getbpl6_64(); + shiftbpl4e_64(); + loaded_pix = getbpl4_64(); } - bplshiftcnt[1] += 1; + bplshiftcnt[1] += 2; if (bplshiftcnt[1] >= 4) { bplshiftcnt[1] = 0; - shiftbpl6o_64(); - loaded_pix = getbpl6_64(); + shiftbpl4o_64(); + loaded_pix = getbpl4_64(); } - if (bpldat_copy[0] && ((cmp | 3) & 255) == bplcon1_shift_full_masked[0]) { - copybpl6e_64(); + if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { + copybpl4e_64(); bplshiftcnt[0] = 0; - loaded_pix = getbpl6_64(); + loaded_pix = getbpl4_64(); } - if (bpldat_copy[1] && ((cmp | 3) & 255) == bplcon1_shift_full_masked[1]) { - copybpl6o_64(); + if (bpldat_copy[1] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[1]) { + copybpl4o_64(); bplshiftcnt[1] = 0; - loaded_pix = getbpl6_64(); + loaded_pix = getbpl4_64(); } uae_u32 sv3 = 0; if (denise_spr_nr_armeds) { @@ -49196,11 +80078,11 @@ static void lts_aga_fm2_ham1_p6_ilores_dshres_spr(void) denise_cck++; } } -static void lts_aga_fm2_ham1_p6_ilores_dshres_spr_filtered(void) +static void lts_aga_fm2_n1_p4_ihires_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm2_kehb0_p6_ilores_dshres_spr(void) +static void lts_aga_fm2_dpf0_p4_ihires_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -49221,21 +80103,25 @@ static void lts_aga_fm2_kehb0_p6_ilores_dshres_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - pix0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[pix0 & 31]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; } last_bpl_pix = pix0; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl6_64(); - loaded_pix = getbpl6_64(); + shiftbpl4_64(); + loaded_pix = getbpl4_64(); } - if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { - copybpl6_64(); + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl4_64(); bplshiftcnt[0] = 0; - loaded_pix = getbpl6_64(); + loaded_pix = getbpl4_64(); } uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { @@ -49255,21 +80141,25 @@ static void lts_aga_fm2_kehb0_p6_ilores_dshres_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix1 = loaded_pixs[1]; clxdat |= bplcoltable[pix1]; - pix1 ^= bplcon4_denise_xor_val; - dpix_val1 = denise_colors.acolors[pix1 & 31]; + uae_u8 val1 = dpf_lookup[pix1]; + if (dpf_lookup_no[pix1]) { + val1 += dblpfofs[bpldualpf2of]; + } + val1 ^= bplcon4_denise_xor_val; + dpix_val1 = denise_colors.acolors[val1]; } last_bpl_pix = pix1; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl6_64(); - loaded_pix = getbpl6_64(); + shiftbpl4_64(); + loaded_pix = getbpl4_64(); } - if (bpldat_copy[0] && ((cmp | 1) & 255) == bplcon1_shift_full_masked[0]) { - copybpl6_64(); + if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { + copybpl4_64(); bplshiftcnt[0] = 0; - loaded_pix = getbpl6_64(); + loaded_pix = getbpl4_64(); } uae_u32 sv1 = 0; if (denise_spr_nr_armeds) { @@ -49289,21 +80179,25 @@ static void lts_aga_fm2_kehb0_p6_ilores_dshres_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - pix2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[pix2 & 31]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; } last_bpl_pix = pix2; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl6_64(); - loaded_pix = getbpl6_64(); + shiftbpl4_64(); + loaded_pix = getbpl4_64(); } - if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { - copybpl6_64(); + if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { + copybpl4_64(); bplshiftcnt[0] = 0; - loaded_pix = getbpl6_64(); + loaded_pix = getbpl4_64(); } uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { @@ -49323,21 +80217,25 @@ static void lts_aga_fm2_kehb0_p6_ilores_dshres_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix3 = loaded_pixs[3]; clxdat |= bplcoltable[pix3]; - pix3 ^= bplcon4_denise_xor_val; - dpix_val3 = denise_colors.acolors[pix3 & 31]; + uae_u8 val3 = dpf_lookup[pix3]; + if (dpf_lookup_no[pix3]) { + val3 += dblpfofs[bpldualpf2of]; + } + val3 ^= bplcon4_denise_xor_val; + dpix_val3 = denise_colors.acolors[val3]; } last_bpl_pix = pix3; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl6_64(); - loaded_pix = getbpl6_64(); + shiftbpl4_64(); + loaded_pix = getbpl4_64(); } - if (bpldat_copy[0] && ((cmp | 3) & 255) == bplcon1_shift_full_masked[0]) { - copybpl6_64(); + if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { + copybpl4_64(); bplshiftcnt[0] = 0; - loaded_pix = getbpl6_64(); + loaded_pix = getbpl4_64(); } uae_u32 sv3 = 0; if (denise_spr_nr_armeds) { @@ -49433,11 +80331,11 @@ static void lts_aga_fm2_kehb0_p6_ilores_dshres_spr(void) denise_cck++; } } -static void lts_aga_fm2_kehb0_p6_ilores_dshres_spr_filtered(void) +static void lts_aga_fm2_dpf0_p4_ihires_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm2_kehb1_p6_ilores_dshres_spr(void) +static void lts_aga_fm2_dpf1_p4_ihires_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -49458,32 +80356,36 @@ static void lts_aga_fm2_kehb1_p6_ilores_dshres_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - pix0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[pix0 & 31]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; } last_bpl_pix = pix0; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl6e_64(); - loaded_pix = getbpl6_64(); + shiftbpl4e_64(); + loaded_pix = getbpl4_64(); } - bplshiftcnt[1] += 1; + bplshiftcnt[1] += 2; if (bplshiftcnt[1] >= 4) { bplshiftcnt[1] = 0; - shiftbpl6o_64(); - loaded_pix = getbpl6_64(); + shiftbpl4o_64(); + loaded_pix = getbpl4_64(); } - if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { - copybpl6e_64(); + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl4e_64(); bplshiftcnt[0] = 0; - loaded_pix = getbpl6_64(); + loaded_pix = getbpl4_64(); } - if (bpldat_copy[1] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[1]) { - copybpl6o_64(); + if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { + copybpl4o_64(); bplshiftcnt[1] = 0; - loaded_pix = getbpl6_64(); + loaded_pix = getbpl4_64(); } uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { @@ -49503,32 +80405,36 @@ static void lts_aga_fm2_kehb1_p6_ilores_dshres_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix1 = loaded_pixs[1]; clxdat |= bplcoltable[pix1]; - pix1 ^= bplcon4_denise_xor_val; - dpix_val1 = denise_colors.acolors[pix1 & 31]; + uae_u8 val1 = dpf_lookup[pix1]; + if (dpf_lookup_no[pix1]) { + val1 += dblpfofs[bpldualpf2of]; + } + val1 ^= bplcon4_denise_xor_val; + dpix_val1 = denise_colors.acolors[val1]; } last_bpl_pix = pix1; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl6e_64(); - loaded_pix = getbpl6_64(); + shiftbpl4e_64(); + loaded_pix = getbpl4_64(); } - bplshiftcnt[1] += 1; + bplshiftcnt[1] += 2; if (bplshiftcnt[1] >= 4) { bplshiftcnt[1] = 0; - shiftbpl6o_64(); - loaded_pix = getbpl6_64(); + shiftbpl4o_64(); + loaded_pix = getbpl4_64(); } - if (bpldat_copy[0] && ((cmp | 1) & 255) == bplcon1_shift_full_masked[0]) { - copybpl6e_64(); + if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { + copybpl4e_64(); bplshiftcnt[0] = 0; - loaded_pix = getbpl6_64(); + loaded_pix = getbpl4_64(); } - if (bpldat_copy[1] && ((cmp | 1) & 255) == bplcon1_shift_full_masked[1]) { - copybpl6o_64(); + if (bpldat_copy[1] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) { + copybpl4o_64(); bplshiftcnt[1] = 0; - loaded_pix = getbpl6_64(); + loaded_pix = getbpl4_64(); } uae_u32 sv1 = 0; if (denise_spr_nr_armeds) { @@ -49548,32 +80454,36 @@ static void lts_aga_fm2_kehb1_p6_ilores_dshres_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - pix2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[pix2 & 31]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; } last_bpl_pix = pix2; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl6e_64(); - loaded_pix = getbpl6_64(); + shiftbpl4e_64(); + loaded_pix = getbpl4_64(); } - bplshiftcnt[1] += 1; + bplshiftcnt[1] += 2; if (bplshiftcnt[1] >= 4) { bplshiftcnt[1] = 0; - shiftbpl6o_64(); - loaded_pix = getbpl6_64(); + shiftbpl4o_64(); + loaded_pix = getbpl4_64(); } - if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { - copybpl6e_64(); + if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { + copybpl4e_64(); bplshiftcnt[0] = 0; - loaded_pix = getbpl6_64(); + loaded_pix = getbpl4_64(); } - if (bpldat_copy[1] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[1]) { - copybpl6o_64(); + if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) { + copybpl4o_64(); bplshiftcnt[1] = 0; - loaded_pix = getbpl6_64(); + loaded_pix = getbpl4_64(); } uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { @@ -49593,32 +80503,36 @@ static void lts_aga_fm2_kehb1_p6_ilores_dshres_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix3 = loaded_pixs[3]; clxdat |= bplcoltable[pix3]; - pix3 ^= bplcon4_denise_xor_val; - dpix_val3 = denise_colors.acolors[pix3 & 31]; + uae_u8 val3 = dpf_lookup[pix3]; + if (dpf_lookup_no[pix3]) { + val3 += dblpfofs[bpldualpf2of]; + } + val3 ^= bplcon4_denise_xor_val; + dpix_val3 = denise_colors.acolors[val3]; } last_bpl_pix = pix3; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl6e_64(); - loaded_pix = getbpl6_64(); + shiftbpl4e_64(); + loaded_pix = getbpl4_64(); } - bplshiftcnt[1] += 1; + bplshiftcnt[1] += 2; if (bplshiftcnt[1] >= 4) { bplshiftcnt[1] = 0; - shiftbpl6o_64(); - loaded_pix = getbpl6_64(); + shiftbpl4o_64(); + loaded_pix = getbpl4_64(); } - if (bpldat_copy[0] && ((cmp | 3) & 255) == bplcon1_shift_full_masked[0]) { - copybpl6e_64(); + if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { + copybpl4e_64(); bplshiftcnt[0] = 0; - loaded_pix = getbpl6_64(); + loaded_pix = getbpl4_64(); } - if (bpldat_copy[1] && ((cmp | 3) & 255) == bplcon1_shift_full_masked[1]) { - copybpl6o_64(); + if (bpldat_copy[1] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[1]) { + copybpl4o_64(); bplshiftcnt[1] = 0; - loaded_pix = getbpl6_64(); + loaded_pix = getbpl4_64(); } uae_u32 sv3 = 0; if (denise_spr_nr_armeds) { @@ -49714,11 +80628,11 @@ static void lts_aga_fm2_kehb1_p6_ilores_dshres_spr(void) denise_cck++; } } -static void lts_aga_fm2_kehb1_p6_ilores_dshres_spr_filtered(void) +static void lts_aga_fm2_dpf1_p4_ihires_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm2_n0_p8_ilores_dshres_spr(void) +static void lts_aga_fm2_ehb0_p4_ihires_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -49729,30 +80643,12 @@ 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; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8_64(); - loaded_pix = getbpl8_64(); - } - if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_64(); } uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { @@ -49762,30 +80658,12 @@ static void lts_aga_fm2_n0_p8_ilores_dshres_spr(void) sv0 = svt; } } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix1; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8_64(); - loaded_pix = getbpl8_64(); - } - if (bpldat_copy[0] && ((cmp | 1) & 255) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_64(); } uae_u32 sv1 = 0; if (denise_spr_nr_armeds) { @@ -49795,30 +80673,12 @@ static void lts_aga_fm2_n0_p8_ilores_dshres_spr(void) sv1 = svt; } } - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8_64(); - loaded_pix = getbpl8_64(); - } - if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_64(); } uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { @@ -49828,30 +80688,12 @@ static void lts_aga_fm2_n0_p8_ilores_dshres_spr(void) sv2 = svt; } } - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix3; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8_64(); - loaded_pix = getbpl8_64(); - } - if (bpldat_copy[0] && ((cmp | 3) & 255) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_64(); } uae_u32 sv3 = 0; if (denise_spr_nr_armeds) { @@ -49861,7 +80703,6 @@ static void lts_aga_fm2_n0_p8_ilores_dshres_spr(void) sv3 = svt; } } - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { @@ -49947,11 +80788,11 @@ static void lts_aga_fm2_n0_p8_ilores_dshres_spr(void) denise_cck++; } } -static void lts_aga_fm2_n0_p8_ilores_dshres_spr_filtered(void) +static void lts_aga_fm2_ehb0_p4_ihires_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm2_n1_p8_ilores_dshres_spr(void) +static void lts_aga_fm2_ehb1_p4_ihires_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -49962,41 +80803,12 @@ 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; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8e_64(); - loaded_pix = getbpl8_64(); - } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl8o_64(); - loaded_pix = getbpl8_64(); - } - 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] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl8_64(); } uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { @@ -50006,41 +80818,12 @@ static void lts_aga_fm2_n1_p8_ilores_dshres_spr(void) sv0 = svt; } } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix1; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8e_64(); - loaded_pix = getbpl8_64(); - } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl8o_64(); - loaded_pix = getbpl8_64(); - } - 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] && ((cmp | 1) & 255) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl8_64(); } uae_u32 sv1 = 0; if (denise_spr_nr_armeds) { @@ -50050,41 +80833,12 @@ static void lts_aga_fm2_n1_p8_ilores_dshres_spr(void) sv1 = svt; } } - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8e_64(); - loaded_pix = getbpl8_64(); - } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl8o_64(); - loaded_pix = getbpl8_64(); - } - 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] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl8_64(); } uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { @@ -50094,41 +80848,12 @@ static void lts_aga_fm2_n1_p8_ilores_dshres_spr(void) sv2 = svt; } } - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { - dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix3; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8e_64(); - loaded_pix = getbpl8_64(); - } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl8o_64(); - loaded_pix = getbpl8_64(); - } - 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] && ((cmp | 3) & 255) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl8_64(); + dpix_val3 = bordercolor; } uae_u32 sv3 = 0; if (denise_spr_nr_armeds) { @@ -50138,7 +80863,6 @@ static void lts_aga_fm2_n1_p8_ilores_dshres_spr(void) sv3 = svt; } } - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { @@ -50224,11 +80948,11 @@ static void lts_aga_fm2_n1_p8_ilores_dshres_spr(void) denise_cck++; } } -static void lts_aga_fm2_n1_p8_ilores_dshres_spr_filtered(void) +static void lts_aga_fm2_ehb1_p4_ihires_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm2_dpf0_p8_ilores_dshres_spr(void) +static void lts_aga_fm2_ham0_p4_ihires_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -50239,35 +80963,12 @@ 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; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8_64(); - loaded_pix = getbpl8_64(); - } - if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_64(); } uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { @@ -50277,35 +80978,12 @@ static void lts_aga_fm2_dpf0_p8_ilores_dshres_spr(void) sv0 = svt; } } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - if (dpf_lookup_no[pix1]) { - val1 += dblpfofs[bpldualpf2of]; - } - val1 ^= bplcon4_denise_xor_val; - dpix_val1 = denise_colors.acolors[val1]; - } - last_bpl_pix = pix1; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8_64(); - loaded_pix = getbpl8_64(); - } - if (bpldat_copy[0] && ((cmp | 1) & 255) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_64(); } uae_u32 sv1 = 0; if (denise_spr_nr_armeds) { @@ -50315,35 +80993,12 @@ static void lts_aga_fm2_dpf0_p8_ilores_dshres_spr(void) sv1 = svt; } } - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8_64(); - loaded_pix = getbpl8_64(); - } - if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_64(); } uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { @@ -50353,35 +81008,12 @@ static void lts_aga_fm2_dpf0_p8_ilores_dshres_spr(void) sv2 = svt; } } - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - uae_u8 val3 = dpf_lookup[pix3]; - if (dpf_lookup_no[pix3]) { - val3 += dblpfofs[bpldualpf2of]; - } - val3 ^= bplcon4_denise_xor_val; - dpix_val3 = denise_colors.acolors[val3]; - } - last_bpl_pix = pix3; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8_64(); - loaded_pix = getbpl8_64(); - } - if (bpldat_copy[0] && ((cmp | 3) & 255) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_64(); } uae_u32 sv3 = 0; if (denise_spr_nr_armeds) { @@ -50391,7 +81023,6 @@ static void lts_aga_fm2_dpf0_p8_ilores_dshres_spr(void) sv3 = svt; } } - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { @@ -50477,11 +81108,11 @@ static void lts_aga_fm2_dpf0_p8_ilores_dshres_spr(void) denise_cck++; } } -static void lts_aga_fm2_dpf0_p8_ilores_dshres_spr_filtered(void) +static void lts_aga_fm2_ham0_p4_ihires_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm2_dpf1_p8_ilores_dshres_spr(void) +static void lts_aga_fm2_ham1_p4_ihires_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -50492,46 +81123,12 @@ 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; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8e_64(); - loaded_pix = getbpl8_64(); - } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl8o_64(); - loaded_pix = getbpl8_64(); - } - 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] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl8_64(); } uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { @@ -50541,46 +81138,12 @@ static void lts_aga_fm2_dpf1_p8_ilores_dshres_spr(void) sv0 = svt; } } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - if (dpf_lookup_no[pix1]) { - val1 += dblpfofs[bpldualpf2of]; - } - val1 ^= bplcon4_denise_xor_val; - dpix_val1 = denise_colors.acolors[val1]; - } - last_bpl_pix = pix1; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8e_64(); - loaded_pix = getbpl8_64(); - } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl8o_64(); - loaded_pix = getbpl8_64(); - } - 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] && ((cmp | 1) & 255) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl8_64(); } uae_u32 sv1 = 0; if (denise_spr_nr_armeds) { @@ -50590,46 +81153,12 @@ static void lts_aga_fm2_dpf1_p8_ilores_dshres_spr(void) sv1 = svt; } } - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8e_64(); - loaded_pix = getbpl8_64(); - } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl8o_64(); - loaded_pix = getbpl8_64(); - } - 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] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl8_64(); } uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { @@ -50639,46 +81168,12 @@ static void lts_aga_fm2_dpf1_p8_ilores_dshres_spr(void) sv2 = svt; } } - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - uae_u8 val3 = dpf_lookup[pix3]; - if (dpf_lookup_no[pix3]) { - val3 += dblpfofs[bpldualpf2of]; - } - val3 ^= bplcon4_denise_xor_val; - dpix_val3 = denise_colors.acolors[val3]; - } - last_bpl_pix = pix3; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8e_64(); - loaded_pix = getbpl8_64(); - } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl8o_64(); - loaded_pix = getbpl8_64(); - } - 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] && ((cmp | 3) & 255) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl8_64(); } uae_u32 sv3 = 0; if (denise_spr_nr_armeds) { @@ -50688,7 +81183,6 @@ static void lts_aga_fm2_dpf1_p8_ilores_dshres_spr(void) sv3 = svt; } } - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { @@ -50774,27 +81268,11 @@ static void lts_aga_fm2_dpf1_p8_ilores_dshres_spr(void) denise_cck++; } } -static void lts_aga_fm2_dpf1_p8_ilores_dshres_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb0_p8_ilores_dshres_spr(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb0_p8_ilores_dshres_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb1_p8_ilores_dshres_spr(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb1_p8_ilores_dshres_spr_filtered(void) +static void lts_aga_fm2_ham1_p4_ihires_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm2_ham0_p8_ilores_dshres_spr(void) +static void lts_aga_fm2_kehb0_p4_ihires_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -50805,30 +81283,12 @@ 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; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = decode_ham_pixel_aga(pix0); - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8_64(); - loaded_pix = getbpl8_64(); - } - if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_64(); } uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { @@ -50838,30 +81298,12 @@ static void lts_aga_fm2_ham0_p8_ilores_dshres_spr(void) sv0 = svt; } } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - dpix_val1 = decode_ham_pixel_aga(pix1); - } - last_bpl_pix = pix1; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8_64(); - loaded_pix = getbpl8_64(); - } - if (bpldat_copy[0] && ((cmp | 1) & 255) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_64(); } uae_u32 sv1 = 0; if (denise_spr_nr_armeds) { @@ -50871,30 +81313,12 @@ static void lts_aga_fm2_ham0_p8_ilores_dshres_spr(void) sv1 = svt; } } - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = decode_ham_pixel_aga(pix2); - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8_64(); - loaded_pix = getbpl8_64(); - } - if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_64(); } uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { @@ -50904,30 +81328,12 @@ static void lts_aga_fm2_ham0_p8_ilores_dshres_spr(void) sv2 = svt; } } - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - dpix_val3 = decode_ham_pixel_aga(pix3); - } - last_bpl_pix = pix3; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8_64(); - loaded_pix = getbpl8_64(); - } - if (bpldat_copy[0] && ((cmp | 3) & 255) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_64(); } uae_u32 sv3 = 0; if (denise_spr_nr_armeds) { @@ -50937,7 +81343,6 @@ static void lts_aga_fm2_ham0_p8_ilores_dshres_spr(void) sv3 = svt; } } - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { @@ -51023,11 +81428,11 @@ static void lts_aga_fm2_ham0_p8_ilores_dshres_spr(void) denise_cck++; } } -static void lts_aga_fm2_ham0_p8_ilores_dshres_spr_filtered(void) +static void lts_aga_fm2_kehb0_p4_ihires_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm2_ham1_p8_ilores_dshres_spr(void) +static void lts_aga_fm2_kehb1_p4_ihires_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -51038,41 +81443,12 @@ 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; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = decode_ham_pixel_aga(pix0); - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8e_64(); - loaded_pix = getbpl8_64(); - } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl8o_64(); - loaded_pix = getbpl8_64(); - } - 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] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl8_64(); } uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { @@ -51082,41 +81458,12 @@ static void lts_aga_fm2_ham1_p8_ilores_dshres_spr(void) sv0 = svt; } } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - dpix_val1 = decode_ham_pixel_aga(pix1); - } - last_bpl_pix = pix1; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8e_64(); - loaded_pix = getbpl8_64(); - } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl8o_64(); - loaded_pix = getbpl8_64(); - } - 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] && ((cmp | 1) & 255) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl8_64(); } uae_u32 sv1 = 0; if (denise_spr_nr_armeds) { @@ -51126,41 +81473,12 @@ static void lts_aga_fm2_ham1_p8_ilores_dshres_spr(void) sv1 = svt; } } - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = decode_ham_pixel_aga(pix2); - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8e_64(); - loaded_pix = getbpl8_64(); - } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl8o_64(); - loaded_pix = getbpl8_64(); - } - 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] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl8_64(); } uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { @@ -51170,41 +81488,12 @@ static void lts_aga_fm2_ham1_p8_ilores_dshres_spr(void) sv2 = svt; } } - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - dpix_val3 = decode_ham_pixel_aga(pix3); - } - last_bpl_pix = pix3; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8e_64(); - loaded_pix = getbpl8_64(); - } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl8o_64(); - loaded_pix = getbpl8_64(); - } - 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] && ((cmp | 3) & 255) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl8_64(); } uae_u32 sv3 = 0; if (denise_spr_nr_armeds) { @@ -51214,7 +81503,6 @@ static void lts_aga_fm2_ham1_p8_ilores_dshres_spr(void) sv3 = svt; } } - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { @@ -51300,27 +81588,11 @@ static void lts_aga_fm2_ham1_p8_ilores_dshres_spr(void) denise_cck++; } } -static void lts_aga_fm2_ham1_p8_ilores_dshres_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb0_p8_ilores_dshres_spr(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb0_p8_ilores_dshres_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb1_p8_ilores_dshres_spr(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb1_p8_ilores_dshres_spr_filtered(void) +static void lts_aga_fm2_kehb1_p4_ihires_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm2_n0_p2_ihires_dshres(void) +static void lts_aga_fm2_n0_p6_ihires_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -51333,6 +81605,7 @@ static void lts_aga_fm2_n0_p2_ihires_dshres(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -51347,16 +81620,25 @@ static void lts_aga_fm2_n0_p2_ihires_dshres(void) bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl2_64(); - loaded_pix = getbpl2_64(); + shiftbpl6_64(); + loaded_pix = getbpl6_64(); } if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl2_64(); + copybpl6_64(); bplshiftcnt[0] = 0; - loaded_pix = getbpl2_64(); + loaded_pix = getbpl6_64(); + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } } loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { @@ -51371,16 +81653,25 @@ static void lts_aga_fm2_n0_p2_ihires_dshres(void) bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl2_64(); - loaded_pix = getbpl2_64(); + shiftbpl6_64(); + loaded_pix = getbpl6_64(); } if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { - copybpl2_64(); + copybpl6_64(); bplshiftcnt[0] = 0; - loaded_pix = getbpl2_64(); + loaded_pix = getbpl6_64(); + } + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } } loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { @@ -51394,17 +81685,26 @@ static void lts_aga_fm2_n0_p2_ihires_dshres(void) } bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl2_64(); - loaded_pix = getbpl2_64(); + bplshiftcnt[0] = 0; + shiftbpl6_64(); + loaded_pix = getbpl6_64(); } if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { - copybpl2_64(); + copybpl6_64(); bplshiftcnt[0] = 0; - loaded_pix = getbpl2_64(); + loaded_pix = getbpl6_64(); + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } } loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { @@ -51419,20 +81719,52 @@ static void lts_aga_fm2_n0_p2_ihires_dshres(void) bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl2_64(); - loaded_pix = getbpl2_64(); + shiftbpl6_64(); + loaded_pix = getbpl6_64(); } if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { - copybpl2_64(); + copybpl6_64(); bplshiftcnt[0] = 0; - loaded_pix = getbpl2_64(); + loaded_pix = getbpl6_64(); + } + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } } loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } dtbuf[h][0] = dpix_val0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } dtbuf[h][1] = dpix_val1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } dtbuf[h][2] = dpix_val2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + } + } dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -51489,11 +81821,11 @@ static void lts_aga_fm2_n0_p2_ihires_dshres(void) denise_cck++; } } -static void lts_aga_fm2_n0_p2_ihires_dshres_filtered(void) +static void lts_aga_fm2_n0_p6_ihires_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm2_n1_p2_ihires_dshres(void) +static void lts_aga_fm2_n1_p6_ihires_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -51506,6 +81838,7 @@ static void lts_aga_fm2_n1_p2_ihires_dshres(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -51520,27 +81853,36 @@ static void lts_aga_fm2_n1_p2_ihires_dshres(void) bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl2e_64(); - loaded_pix = getbpl2_64(); + shiftbpl6e_64(); + loaded_pix = getbpl6_64(); } bplshiftcnt[1] += 2; if (bplshiftcnt[1] >= 4) { bplshiftcnt[1] = 0; - shiftbpl2o_64(); - loaded_pix = getbpl2_64(); + shiftbpl6o_64(); + loaded_pix = getbpl6_64(); } if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl2e_64(); + copybpl6e_64(); bplshiftcnt[0] = 0; - loaded_pix = getbpl2_64(); + loaded_pix = getbpl6_64(); } if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { - copybpl2o_64(); + copybpl6o_64(); bplshiftcnt[1] = 0; - loaded_pix = getbpl2_64(); + loaded_pix = getbpl6_64(); + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } } loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { @@ -51555,27 +81897,36 @@ static void lts_aga_fm2_n1_p2_ihires_dshres(void) bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl2e_64(); - loaded_pix = getbpl2_64(); + shiftbpl6e_64(); + loaded_pix = getbpl6_64(); } bplshiftcnt[1] += 2; if (bplshiftcnt[1] >= 4) { bplshiftcnt[1] = 0; - shiftbpl2o_64(); - loaded_pix = getbpl2_64(); + shiftbpl6o_64(); + loaded_pix = getbpl6_64(); } if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { - copybpl2e_64(); + copybpl6e_64(); bplshiftcnt[0] = 0; - loaded_pix = getbpl2_64(); + loaded_pix = getbpl6_64(); } if (bpldat_copy[1] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) { - copybpl2o_64(); + copybpl6o_64(); bplshiftcnt[1] = 0; - loaded_pix = getbpl2_64(); + loaded_pix = getbpl6_64(); + } + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } } loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { @@ -51590,27 +81941,36 @@ static void lts_aga_fm2_n1_p2_ihires_dshres(void) bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl2e_64(); - loaded_pix = getbpl2_64(); + shiftbpl6e_64(); + loaded_pix = getbpl6_64(); } bplshiftcnt[1] += 2; if (bplshiftcnt[1] >= 4) { bplshiftcnt[1] = 0; - shiftbpl2o_64(); - loaded_pix = getbpl2_64(); + shiftbpl6o_64(); + loaded_pix = getbpl6_64(); } if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { - copybpl2e_64(); + copybpl6e_64(); bplshiftcnt[0] = 0; - loaded_pix = getbpl2_64(); + loaded_pix = getbpl6_64(); } if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) { - copybpl2o_64(); + copybpl6o_64(); bplshiftcnt[1] = 0; - loaded_pix = getbpl2_64(); + loaded_pix = getbpl6_64(); + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } } loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { @@ -51625,31 +81985,63 @@ static void lts_aga_fm2_n1_p2_ihires_dshres(void) bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl2e_64(); - loaded_pix = getbpl2_64(); + shiftbpl6e_64(); + loaded_pix = getbpl6_64(); } bplshiftcnt[1] += 2; if (bplshiftcnt[1] >= 4) { bplshiftcnt[1] = 0; - shiftbpl2o_64(); - loaded_pix = getbpl2_64(); + shiftbpl6o_64(); + loaded_pix = getbpl6_64(); } if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { - copybpl2e_64(); + copybpl6e_64(); bplshiftcnt[0] = 0; - loaded_pix = getbpl2_64(); + loaded_pix = getbpl6_64(); } if (bpldat_copy[1] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[1]) { - copybpl2o_64(); + copybpl6o_64(); bplshiftcnt[1] = 0; - loaded_pix = getbpl2_64(); + loaded_pix = getbpl6_64(); + } + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } } loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } dtbuf[h][0] = dpix_val0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } dtbuf[h][1] = dpix_val1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } dtbuf[h][2] = dpix_val2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + } + } dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -51706,11 +82098,11 @@ static void lts_aga_fm2_n1_p2_ihires_dshres(void) denise_cck++; } } -static void lts_aga_fm2_n1_p2_ihires_dshres_filtered(void) +static void lts_aga_fm2_n1_p6_ihires_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm2_dpf0_p2_ihires_dshres(void) +static void lts_aga_fm2_dpf0_p6_ihires_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -51723,6 +82115,7 @@ static void lts_aga_fm2_dpf0_p2_ihires_dshres(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -51742,16 +82135,25 @@ static void lts_aga_fm2_dpf0_p2_ihires_dshres(void) bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl2_64(); - loaded_pix = getbpl2_64(); + shiftbpl6_64(); + loaded_pix = getbpl6_64(); } if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl2_64(); + copybpl6_64(); bplshiftcnt[0] = 0; - loaded_pix = getbpl2_64(); + loaded_pix = getbpl6_64(); + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } } loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { @@ -51771,16 +82173,25 @@ static void lts_aga_fm2_dpf0_p2_ihires_dshres(void) bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl2_64(); - loaded_pix = getbpl2_64(); + shiftbpl6_64(); + loaded_pix = getbpl6_64(); } if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { - copybpl2_64(); + copybpl6_64(); bplshiftcnt[0] = 0; - loaded_pix = getbpl2_64(); + loaded_pix = getbpl6_64(); + } + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } } loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { @@ -51800,16 +82211,25 @@ static void lts_aga_fm2_dpf0_p2_ihires_dshres(void) bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl2_64(); - loaded_pix = getbpl2_64(); + shiftbpl6_64(); + loaded_pix = getbpl6_64(); } if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { - copybpl2_64(); + copybpl6_64(); bplshiftcnt[0] = 0; - loaded_pix = getbpl2_64(); + loaded_pix = getbpl6_64(); + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } } loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { @@ -51829,20 +82249,52 @@ static void lts_aga_fm2_dpf0_p2_ihires_dshres(void) bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl2_64(); - loaded_pix = getbpl2_64(); + shiftbpl6_64(); + loaded_pix = getbpl6_64(); } if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { - copybpl2_64(); + copybpl6_64(); bplshiftcnt[0] = 0; - loaded_pix = getbpl2_64(); + loaded_pix = getbpl6_64(); + } + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } } loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } dtbuf[h][0] = dpix_val0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } dtbuf[h][1] = dpix_val1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } dtbuf[h][2] = dpix_val2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + } + } dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -51899,11 +82351,11 @@ static void lts_aga_fm2_dpf0_p2_ihires_dshres(void) denise_cck++; } } -static void lts_aga_fm2_dpf0_p2_ihires_dshres_filtered(void) +static void lts_aga_fm2_dpf0_p6_ihires_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm2_dpf1_p2_ihires_dshres(void) +static void lts_aga_fm2_dpf1_p6_ihires_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -51916,6 +82368,7 @@ static void lts_aga_fm2_dpf1_p2_ihires_dshres(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -51935,27 +82388,36 @@ static void lts_aga_fm2_dpf1_p2_ihires_dshres(void) bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl2e_64(); - loaded_pix = getbpl2_64(); + shiftbpl6e_64(); + loaded_pix = getbpl6_64(); } bplshiftcnt[1] += 2; if (bplshiftcnt[1] >= 4) { bplshiftcnt[1] = 0; - shiftbpl2o_64(); - loaded_pix = getbpl2_64(); + shiftbpl6o_64(); + loaded_pix = getbpl6_64(); } if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl2e_64(); + copybpl6e_64(); bplshiftcnt[0] = 0; - loaded_pix = getbpl2_64(); + loaded_pix = getbpl6_64(); } if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { - copybpl2o_64(); + copybpl6o_64(); bplshiftcnt[1] = 0; - loaded_pix = getbpl2_64(); + loaded_pix = getbpl6_64(); + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } } loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { @@ -51975,27 +82437,36 @@ static void lts_aga_fm2_dpf1_p2_ihires_dshres(void) bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl2e_64(); - loaded_pix = getbpl2_64(); + shiftbpl6e_64(); + loaded_pix = getbpl6_64(); } bplshiftcnt[1] += 2; if (bplshiftcnt[1] >= 4) { bplshiftcnt[1] = 0; - shiftbpl2o_64(); - loaded_pix = getbpl2_64(); + shiftbpl6o_64(); + loaded_pix = getbpl6_64(); } if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { - copybpl2e_64(); + copybpl6e_64(); bplshiftcnt[0] = 0; - loaded_pix = getbpl2_64(); + loaded_pix = getbpl6_64(); } if (bpldat_copy[1] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) { - copybpl2o_64(); + copybpl6o_64(); bplshiftcnt[1] = 0; - loaded_pix = getbpl2_64(); + loaded_pix = getbpl6_64(); + } + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } } loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { @@ -52015,27 +82486,36 @@ static void lts_aga_fm2_dpf1_p2_ihires_dshres(void) bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl2e_64(); - loaded_pix = getbpl2_64(); + shiftbpl6e_64(); + loaded_pix = getbpl6_64(); } bplshiftcnt[1] += 2; if (bplshiftcnt[1] >= 4) { bplshiftcnt[1] = 0; - shiftbpl2o_64(); - loaded_pix = getbpl2_64(); + shiftbpl6o_64(); + loaded_pix = getbpl6_64(); } if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { - copybpl2e_64(); + copybpl6e_64(); bplshiftcnt[0] = 0; - loaded_pix = getbpl2_64(); + loaded_pix = getbpl6_64(); } if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) { - copybpl2o_64(); + copybpl6o_64(); bplshiftcnt[1] = 0; - loaded_pix = getbpl2_64(); + loaded_pix = getbpl6_64(); + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } } loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { @@ -52055,31 +82535,63 @@ static void lts_aga_fm2_dpf1_p2_ihires_dshres(void) bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl2e_64(); - loaded_pix = getbpl2_64(); + shiftbpl6e_64(); + loaded_pix = getbpl6_64(); } bplshiftcnt[1] += 2; if (bplshiftcnt[1] >= 4) { bplshiftcnt[1] = 0; - shiftbpl2o_64(); - loaded_pix = getbpl2_64(); + shiftbpl6o_64(); + loaded_pix = getbpl6_64(); } if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { - copybpl2e_64(); + copybpl6e_64(); bplshiftcnt[0] = 0; - loaded_pix = getbpl2_64(); + loaded_pix = getbpl6_64(); } if (bpldat_copy[1] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[1]) { - copybpl2o_64(); + copybpl6o_64(); bplshiftcnt[1] = 0; - loaded_pix = getbpl2_64(); + loaded_pix = getbpl6_64(); + } + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } } loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } dtbuf[h][0] = dpix_val0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } dtbuf[h][1] = dpix_val1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } dtbuf[h][2] = dpix_val2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + } + } dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -52136,59 +82648,11 @@ static void lts_aga_fm2_dpf1_p2_ihires_dshres(void) denise_cck++; } } -static void lts_aga_fm2_dpf1_p2_ihires_dshres_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb0_p2_ihires_dshres(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb0_p2_ihires_dshres_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb1_p2_ihires_dshres(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb1_p2_ihires_dshres_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_ham0_p2_ihires_dshres(void) -{ - lts_null(); -} -static void lts_aga_fm2_ham0_p2_ihires_dshres_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_ham1_p2_ihires_dshres(void) -{ - lts_null(); -} -static void lts_aga_fm2_ham1_p2_ihires_dshres_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb0_p2_ihires_dshres(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb0_p2_ihires_dshres_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb1_p2_ihires_dshres(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb1_p2_ihires_dshres_filtered(void) +static void lts_aga_fm2_dpf1_p6_ihires_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm2_n0_p4_ihires_dshres(void) +static void lts_aga_fm2_ehb0_p6_ihires_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -52201,6 +82665,7 @@ static void lts_aga_fm2_n0_p4_ihires_dshres(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -52208,23 +82673,38 @@ static void lts_aga_fm2_n0_p4_ihires_dshres(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + pix0 ^= bplcon4_denise_xor_val; + if (!(pix0 & 0x20)) { + dpix_val0 = denise_colors.acolors[pix0]; + } else { + uae_u32 v = (denise_colors.color_regs_aga[pix0 & 0x1f] >> 1) & 0x7f7f7f; + dpix_val0 = CONVERT_RGB(v); + } } last_bpl_pix = pix0; } bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl4_64(); - loaded_pix = getbpl4_64(); + shiftbpl6_64(); + loaded_pix = getbpl6_64(); } if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl4_64(); + copybpl6_64(); bplshiftcnt[0] = 0; - loaded_pix = getbpl4_64(); + loaded_pix = getbpl6_64(); + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } } loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { @@ -52232,23 +82712,38 @@ static void lts_aga_fm2_n0_p4_ihires_dshres(void) if (denise_hdiw && bpl1dat_trigger) { pix1 = loaded_pixs[1]; clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; + pix1 ^= bplcon4_denise_xor_val; + if (!(pix1 & 0x20)) { + dpix_val1 = denise_colors.acolors[pix1]; + } else { + uae_u32 v = (denise_colors.color_regs_aga[pix1 & 0x1f] >> 1) & 0x7f7f7f; + dpix_val1 = CONVERT_RGB(v); + } } last_bpl_pix = pix1; } bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl4_64(); - loaded_pix = getbpl4_64(); + shiftbpl6_64(); + loaded_pix = getbpl6_64(); } if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { - copybpl4_64(); + copybpl6_64(); bplshiftcnt[0] = 0; - loaded_pix = getbpl4_64(); + loaded_pix = getbpl6_64(); + } + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } } loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { @@ -52256,23 +82751,38 @@ static void lts_aga_fm2_n0_p4_ihires_dshres(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + pix2 ^= bplcon4_denise_xor_val; + if (!(pix2 & 0x20)) { + dpix_val2 = denise_colors.acolors[pix2]; + } else { + uae_u32 v = (denise_colors.color_regs_aga[pix2 & 0x1f] >> 1) & 0x7f7f7f; + dpix_val2 = CONVERT_RGB(v); + } } last_bpl_pix = pix2; } bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl4_64(); - loaded_pix = getbpl4_64(); + shiftbpl6_64(); + loaded_pix = getbpl6_64(); } if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { - copybpl4_64(); + copybpl6_64(); bplshiftcnt[0] = 0; - loaded_pix = getbpl4_64(); + loaded_pix = getbpl6_64(); + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } } loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { @@ -52280,27 +82790,65 @@ static void lts_aga_fm2_n0_p4_ihires_dshres(void) if (denise_hdiw && bpl1dat_trigger) { pix3 = loaded_pixs[3]; clxdat |= bplcoltable[pix3]; - dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; + pix3 ^= bplcon4_denise_xor_val; + if (!(pix3 & 0x20)) { + dpix_val3 = denise_colors.acolors[pix3]; + } else { + uae_u32 v = (denise_colors.color_regs_aga[pix3 & 0x1f] >> 1) & 0x7f7f7f; + dpix_val3 = CONVERT_RGB(v); + } } last_bpl_pix = pix3; } bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl4_64(); - loaded_pix = getbpl4_64(); + shiftbpl6_64(); + loaded_pix = getbpl6_64(); } if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { - copybpl4_64(); + copybpl6_64(); bplshiftcnt[0] = 0; - loaded_pix = getbpl4_64(); + loaded_pix = getbpl6_64(); + } + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } } loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } dtbuf[h][0] = dpix_val0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } dtbuf[h][1] = dpix_val1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } dtbuf[h][2] = dpix_val2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + } + } dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -52357,11 +82905,11 @@ static void lts_aga_fm2_n0_p4_ihires_dshres(void) denise_cck++; } } -static void lts_aga_fm2_n0_p4_ihires_dshres_filtered(void) +static void lts_aga_fm2_ehb0_p6_ihires_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm2_n1_p4_ihires_dshres(void) +static void lts_aga_fm2_ehb1_p6_ihires_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -52374,6 +82922,7 @@ static void lts_aga_fm2_n1_p4_ihires_dshres(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -52381,34 +82930,49 @@ static void lts_aga_fm2_n1_p4_ihires_dshres(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + pix0 ^= bplcon4_denise_xor_val; + if (!(pix0 & 0x20)) { + dpix_val0 = denise_colors.acolors[pix0]; + } else { + uae_u32 v = (denise_colors.color_regs_aga[pix0 & 0x1f] >> 1) & 0x7f7f7f; + dpix_val0 = CONVERT_RGB(v); + } } last_bpl_pix = pix0; } bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl4e_64(); - loaded_pix = getbpl4_64(); + shiftbpl6e_64(); + loaded_pix = getbpl6_64(); } bplshiftcnt[1] += 2; if (bplshiftcnt[1] >= 4) { bplshiftcnt[1] = 0; - shiftbpl4o_64(); - loaded_pix = getbpl4_64(); + shiftbpl6o_64(); + loaded_pix = getbpl6_64(); } if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl4e_64(); + copybpl6e_64(); bplshiftcnt[0] = 0; - loaded_pix = getbpl4_64(); + loaded_pix = getbpl6_64(); } if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { - copybpl4o_64(); + copybpl6o_64(); bplshiftcnt[1] = 0; - loaded_pix = getbpl4_64(); + loaded_pix = getbpl6_64(); + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } } loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { @@ -52416,34 +82980,49 @@ static void lts_aga_fm2_n1_p4_ihires_dshres(void) if (denise_hdiw && bpl1dat_trigger) { pix1 = loaded_pixs[1]; clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; + pix1 ^= bplcon4_denise_xor_val; + if (!(pix1 & 0x20)) { + dpix_val1 = denise_colors.acolors[pix1]; + } else { + uae_u32 v = (denise_colors.color_regs_aga[pix1 & 0x1f] >> 1) & 0x7f7f7f; + dpix_val1 = CONVERT_RGB(v); + } } last_bpl_pix = pix1; } bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl4e_64(); - loaded_pix = getbpl4_64(); + shiftbpl6e_64(); + loaded_pix = getbpl6_64(); } bplshiftcnt[1] += 2; if (bplshiftcnt[1] >= 4) { bplshiftcnt[1] = 0; - shiftbpl4o_64(); - loaded_pix = getbpl4_64(); + shiftbpl6o_64(); + loaded_pix = getbpl6_64(); } if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { - copybpl4e_64(); + copybpl6e_64(); bplshiftcnt[0] = 0; - loaded_pix = getbpl4_64(); + loaded_pix = getbpl6_64(); } if (bpldat_copy[1] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) { - copybpl4o_64(); + copybpl6o_64(); bplshiftcnt[1] = 0; - loaded_pix = getbpl4_64(); + loaded_pix = getbpl6_64(); + } + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } } loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { @@ -52451,34 +83030,49 @@ static void lts_aga_fm2_n1_p4_ihires_dshres(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + pix2 ^= bplcon4_denise_xor_val; + if (!(pix2 & 0x20)) { + dpix_val2 = denise_colors.acolors[pix2]; + } else { + uae_u32 v = (denise_colors.color_regs_aga[pix2 & 0x1f] >> 1) & 0x7f7f7f; + dpix_val2 = CONVERT_RGB(v); + } } last_bpl_pix = pix2; } bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl4e_64(); - loaded_pix = getbpl4_64(); + shiftbpl6e_64(); + loaded_pix = getbpl6_64(); } bplshiftcnt[1] += 2; if (bplshiftcnt[1] >= 4) { bplshiftcnt[1] = 0; - shiftbpl4o_64(); - loaded_pix = getbpl4_64(); + shiftbpl6o_64(); + loaded_pix = getbpl6_64(); } if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { - copybpl4e_64(); + copybpl6e_64(); bplshiftcnt[0] = 0; - loaded_pix = getbpl4_64(); + loaded_pix = getbpl6_64(); } if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) { - copybpl4o_64(); + copybpl6o_64(); bplshiftcnt[1] = 0; - loaded_pix = getbpl4_64(); + loaded_pix = getbpl6_64(); + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } } loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { @@ -52486,38 +83080,76 @@ static void lts_aga_fm2_n1_p4_ihires_dshres(void) if (denise_hdiw && bpl1dat_trigger) { pix3 = loaded_pixs[3]; clxdat |= bplcoltable[pix3]; - dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; + pix3 ^= bplcon4_denise_xor_val; + if (!(pix3 & 0x20)) { + dpix_val3 = denise_colors.acolors[pix3]; + } else { + uae_u32 v = (denise_colors.color_regs_aga[pix3 & 0x1f] >> 1) & 0x7f7f7f; + dpix_val3 = CONVERT_RGB(v); + } } last_bpl_pix = pix3; } bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl4e_64(); - loaded_pix = getbpl4_64(); + shiftbpl6e_64(); + loaded_pix = getbpl6_64(); } bplshiftcnt[1] += 2; if (bplshiftcnt[1] >= 4) { bplshiftcnt[1] = 0; - shiftbpl4o_64(); - loaded_pix = getbpl4_64(); + shiftbpl6o_64(); + loaded_pix = getbpl6_64(); } if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { - copybpl4e_64(); + copybpl6e_64(); bplshiftcnt[0] = 0; - loaded_pix = getbpl4_64(); + loaded_pix = getbpl6_64(); } if (bpldat_copy[1] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[1]) { - copybpl4o_64(); + copybpl6o_64(); bplshiftcnt[1] = 0; - loaded_pix = getbpl4_64(); + loaded_pix = getbpl6_64(); + } + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } } loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } dtbuf[h][0] = dpix_val0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } dtbuf[h][1] = dpix_val1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } dtbuf[h][2] = dpix_val2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + } + } dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -52574,11 +83206,11 @@ static void lts_aga_fm2_n1_p4_ihires_dshres(void) denise_cck++; } } -static void lts_aga_fm2_n1_p4_ihires_dshres_filtered(void) +static void lts_aga_fm2_ehb1_p6_ihires_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm2_dpf0_p4_ihires_dshres(void) +static void lts_aga_fm2_ham0_p6_ihires_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -52591,6 +83223,7 @@ static void lts_aga_fm2_dpf0_p4_ihires_dshres(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -52598,28 +83231,32 @@ static void lts_aga_fm2_dpf0_p4_ihires_dshres(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; + dpix_val0 = decode_ham_pixel_aga(pix0); } last_bpl_pix = pix0; } bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl4_64(); - loaded_pix = getbpl4_64(); + shiftbpl6_64(); + loaded_pix = getbpl6_64(); } if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl4_64(); + copybpl6_64(); bplshiftcnt[0] = 0; - loaded_pix = getbpl4_64(); + loaded_pix = getbpl6_64(); + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } } loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { @@ -52627,28 +83264,32 @@ static void lts_aga_fm2_dpf0_p4_ihires_dshres(void) if (denise_hdiw && bpl1dat_trigger) { pix1 = loaded_pixs[1]; clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - if (dpf_lookup_no[pix1]) { - val1 += dblpfofs[bpldualpf2of]; - } - val1 ^= bplcon4_denise_xor_val; - dpix_val1 = denise_colors.acolors[val1]; + dpix_val1 = decode_ham_pixel_aga(pix1); } last_bpl_pix = pix1; } bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl4_64(); - loaded_pix = getbpl4_64(); + shiftbpl6_64(); + loaded_pix = getbpl6_64(); } if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { - copybpl4_64(); + copybpl6_64(); bplshiftcnt[0] = 0; - loaded_pix = getbpl4_64(); + loaded_pix = getbpl6_64(); + } + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } } loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { @@ -52656,28 +83297,32 @@ static void lts_aga_fm2_dpf0_p4_ihires_dshres(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; + dpix_val2 = decode_ham_pixel_aga(pix2); } last_bpl_pix = pix2; } bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl4_64(); - loaded_pix = getbpl4_64(); + shiftbpl6_64(); + loaded_pix = getbpl6_64(); } if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { - copybpl4_64(); + copybpl6_64(); bplshiftcnt[0] = 0; - loaded_pix = getbpl4_64(); + loaded_pix = getbpl6_64(); + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } } loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { @@ -52685,32 +83330,59 @@ static void lts_aga_fm2_dpf0_p4_ihires_dshres(void) if (denise_hdiw && bpl1dat_trigger) { pix3 = loaded_pixs[3]; clxdat |= bplcoltable[pix3]; - uae_u8 val3 = dpf_lookup[pix3]; - if (dpf_lookup_no[pix3]) { - val3 += dblpfofs[bpldualpf2of]; - } - val3 ^= bplcon4_denise_xor_val; - dpix_val3 = denise_colors.acolors[val3]; + dpix_val3 = decode_ham_pixel_aga(pix3); } last_bpl_pix = pix3; } bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl4_64(); - loaded_pix = getbpl4_64(); + shiftbpl6_64(); + loaded_pix = getbpl6_64(); } if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { - copybpl4_64(); + copybpl6_64(); bplshiftcnt[0] = 0; - loaded_pix = getbpl4_64(); + loaded_pix = getbpl6_64(); + } + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } } loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } dtbuf[h][0] = dpix_val0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } dtbuf[h][1] = dpix_val1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } dtbuf[h][2] = dpix_val2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + } + } dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -52767,11 +83439,11 @@ static void lts_aga_fm2_dpf0_p4_ihires_dshres(void) denise_cck++; } } -static void lts_aga_fm2_dpf0_p4_ihires_dshres_filtered(void) +static void lts_aga_fm2_ham0_p6_ihires_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm2_dpf1_p4_ihires_dshres(void) +static void lts_aga_fm2_ham1_p6_ihires_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -52784,6 +83456,7 @@ static void lts_aga_fm2_dpf1_p4_ihires_dshres(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -52791,39 +83464,43 @@ static void lts_aga_fm2_dpf1_p4_ihires_dshres(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; + dpix_val0 = decode_ham_pixel_aga(pix0); } last_bpl_pix = pix0; } bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl4e_64(); - loaded_pix = getbpl4_64(); + shiftbpl6e_64(); + loaded_pix = getbpl6_64(); } bplshiftcnt[1] += 2; if (bplshiftcnt[1] >= 4) { bplshiftcnt[1] = 0; - shiftbpl4o_64(); - loaded_pix = getbpl4_64(); + shiftbpl6o_64(); + loaded_pix = getbpl6_64(); } if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl4e_64(); + copybpl6e_64(); bplshiftcnt[0] = 0; - loaded_pix = getbpl4_64(); + loaded_pix = getbpl6_64(); } if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { - copybpl4o_64(); + copybpl6o_64(); bplshiftcnt[1] = 0; - loaded_pix = getbpl4_64(); + loaded_pix = getbpl6_64(); + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } } loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { @@ -52831,39 +83508,43 @@ static void lts_aga_fm2_dpf1_p4_ihires_dshres(void) if (denise_hdiw && bpl1dat_trigger) { pix1 = loaded_pixs[1]; clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - if (dpf_lookup_no[pix1]) { - val1 += dblpfofs[bpldualpf2of]; - } - val1 ^= bplcon4_denise_xor_val; - dpix_val1 = denise_colors.acolors[val1]; + dpix_val1 = decode_ham_pixel_aga(pix1); } last_bpl_pix = pix1; } bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl4e_64(); - loaded_pix = getbpl4_64(); + shiftbpl6e_64(); + loaded_pix = getbpl6_64(); } bplshiftcnt[1] += 2; if (bplshiftcnt[1] >= 4) { bplshiftcnt[1] = 0; - shiftbpl4o_64(); - loaded_pix = getbpl4_64(); + shiftbpl6o_64(); + loaded_pix = getbpl6_64(); } if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { - copybpl4e_64(); + copybpl6e_64(); bplshiftcnt[0] = 0; - loaded_pix = getbpl4_64(); + loaded_pix = getbpl6_64(); } if (bpldat_copy[1] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) { - copybpl4o_64(); + copybpl6o_64(); bplshiftcnt[1] = 0; - loaded_pix = getbpl4_64(); + loaded_pix = getbpl6_64(); + } + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } } loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { @@ -52871,39 +83552,43 @@ static void lts_aga_fm2_dpf1_p4_ihires_dshres(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; + dpix_val2 = decode_ham_pixel_aga(pix2); } last_bpl_pix = pix2; } bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl4e_64(); - loaded_pix = getbpl4_64(); + shiftbpl6e_64(); + loaded_pix = getbpl6_64(); } bplshiftcnt[1] += 2; if (bplshiftcnt[1] >= 4) { bplshiftcnt[1] = 0; - shiftbpl4o_64(); - loaded_pix = getbpl4_64(); + shiftbpl6o_64(); + loaded_pix = getbpl6_64(); } if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { - copybpl4e_64(); + copybpl6e_64(); bplshiftcnt[0] = 0; - loaded_pix = getbpl4_64(); + loaded_pix = getbpl6_64(); } if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) { - copybpl4o_64(); + copybpl6o_64(); bplshiftcnt[1] = 0; - loaded_pix = getbpl4_64(); + loaded_pix = getbpl6_64(); + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } } loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { @@ -52911,43 +83596,70 @@ static void lts_aga_fm2_dpf1_p4_ihires_dshres(void) if (denise_hdiw && bpl1dat_trigger) { pix3 = loaded_pixs[3]; clxdat |= bplcoltable[pix3]; - uae_u8 val3 = dpf_lookup[pix3]; - if (dpf_lookup_no[pix3]) { - val3 += dblpfofs[bpldualpf2of]; - } - val3 ^= bplcon4_denise_xor_val; - dpix_val3 = denise_colors.acolors[val3]; + dpix_val3 = decode_ham_pixel_aga(pix3); } last_bpl_pix = pix3; } bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl4e_64(); - loaded_pix = getbpl4_64(); + shiftbpl6e_64(); + loaded_pix = getbpl6_64(); } bplshiftcnt[1] += 2; if (bplshiftcnt[1] >= 4) { bplshiftcnt[1] = 0; - shiftbpl4o_64(); - loaded_pix = getbpl4_64(); + shiftbpl6o_64(); + loaded_pix = getbpl6_64(); } if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { - copybpl4e_64(); + copybpl6e_64(); bplshiftcnt[0] = 0; - loaded_pix = getbpl4_64(); + loaded_pix = getbpl6_64(); } if (bpldat_copy[1] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[1]) { - copybpl4o_64(); + copybpl6o_64(); bplshiftcnt[1] = 0; - loaded_pix = getbpl4_64(); + loaded_pix = getbpl6_64(); + } + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } } loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } dtbuf[h][0] = dpix_val0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } dtbuf[h][1] = dpix_val1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } dtbuf[h][2] = dpix_val2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + } + } dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -53004,59 +83716,11 @@ static void lts_aga_fm2_dpf1_p4_ihires_dshres(void) denise_cck++; } } -static void lts_aga_fm2_dpf1_p4_ihires_dshres_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb0_p4_ihires_dshres(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb0_p4_ihires_dshres_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb1_p4_ihires_dshres(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb1_p4_ihires_dshres_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_ham0_p4_ihires_dshres(void) -{ - lts_null(); -} -static void lts_aga_fm2_ham0_p4_ihires_dshres_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_ham1_p4_ihires_dshres(void) -{ - lts_null(); -} -static void lts_aga_fm2_ham1_p4_ihires_dshres_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb0_p4_ihires_dshres(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb0_p4_ihires_dshres_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb1_p4_ihires_dshres(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb1_p4_ihires_dshres_filtered(void) +static void lts_aga_fm2_ham1_p6_ihires_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm2_n0_p6_ihires_dshres(void) +static void lts_aga_fm2_kehb0_p6_ihires_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -53069,6 +83733,7 @@ static void lts_aga_fm2_n0_p6_ihires_dshres(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -53076,7 +83741,8 @@ static void lts_aga_fm2_n0_p6_ihires_dshres(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + pix0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[pix0 & 31]; } last_bpl_pix = pix0; } @@ -53091,8 +83757,17 @@ static void lts_aga_fm2_n0_p6_ihires_dshres(void) bplshiftcnt[0] = 0; loaded_pix = getbpl6_64(); } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { @@ -53100,7 +83775,8 @@ static void lts_aga_fm2_n0_p6_ihires_dshres(void) if (denise_hdiw && bpl1dat_trigger) { pix1 = loaded_pixs[1]; clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; + pix1 ^= bplcon4_denise_xor_val; + dpix_val1 = denise_colors.acolors[pix1 & 31]; } last_bpl_pix = pix1; } @@ -53115,8 +83791,17 @@ static void lts_aga_fm2_n0_p6_ihires_dshres(void) bplshiftcnt[0] = 0; loaded_pix = getbpl6_64(); } + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } + } loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { @@ -53124,7 +83809,8 @@ static void lts_aga_fm2_n0_p6_ihires_dshres(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + pix2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[pix2 & 31]; } last_bpl_pix = pix2; } @@ -53139,8 +83825,17 @@ static void lts_aga_fm2_n0_p6_ihires_dshres(void) bplshiftcnt[0] = 0; loaded_pix = getbpl6_64(); } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { @@ -53148,7 +83843,8 @@ static void lts_aga_fm2_n0_p6_ihires_dshres(void) if (denise_hdiw && bpl1dat_trigger) { pix3 = loaded_pixs[3]; clxdat |= bplcoltable[pix3]; - dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; + pix3 ^= bplcon4_denise_xor_val; + dpix_val3 = denise_colors.acolors[pix3 & 31]; } last_bpl_pix = pix3; } @@ -53163,12 +83859,44 @@ static void lts_aga_fm2_n0_p6_ihires_dshres(void) bplshiftcnt[0] = 0; loaded_pix = getbpl6_64(); } + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } + } loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } dtbuf[h][0] = dpix_val0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } dtbuf[h][1] = dpix_val1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } dtbuf[h][2] = dpix_val2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + } + } dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -53225,11 +83953,11 @@ static void lts_aga_fm2_n0_p6_ihires_dshres(void) denise_cck++; } } -static void lts_aga_fm2_n0_p6_ihires_dshres_filtered(void) +static void lts_aga_fm2_kehb0_p6_ihires_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm2_n1_p6_ihires_dshres(void) +static void lts_aga_fm2_kehb1_p6_ihires_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -53242,6 +83970,7 @@ static void lts_aga_fm2_n1_p6_ihires_dshres(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -53249,7 +83978,8 @@ static void lts_aga_fm2_n1_p6_ihires_dshres(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + pix0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[pix0 & 31]; } last_bpl_pix = pix0; } @@ -53275,8 +84005,17 @@ static void lts_aga_fm2_n1_p6_ihires_dshres(void) bplshiftcnt[1] = 0; loaded_pix = getbpl6_64(); } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { @@ -53284,7 +84023,8 @@ static void lts_aga_fm2_n1_p6_ihires_dshres(void) if (denise_hdiw && bpl1dat_trigger) { pix1 = loaded_pixs[1]; clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; + pix1 ^= bplcon4_denise_xor_val; + dpix_val1 = denise_colors.acolors[pix1 & 31]; } last_bpl_pix = pix1; } @@ -53310,8 +84050,17 @@ static void lts_aga_fm2_n1_p6_ihires_dshres(void) bplshiftcnt[1] = 0; loaded_pix = getbpl6_64(); } + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } + } loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { @@ -53319,7 +84068,8 @@ static void lts_aga_fm2_n1_p6_ihires_dshres(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + pix2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[pix2 & 31]; } last_bpl_pix = pix2; } @@ -53345,8 +84095,17 @@ static void lts_aga_fm2_n1_p6_ihires_dshres(void) bplshiftcnt[1] = 0; loaded_pix = getbpl6_64(); } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { @@ -53354,7 +84113,8 @@ static void lts_aga_fm2_n1_p6_ihires_dshres(void) if (denise_hdiw && bpl1dat_trigger) { pix3 = loaded_pixs[3]; clxdat |= bplcoltable[pix3]; - dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; + pix3 ^= bplcon4_denise_xor_val; + dpix_val3 = denise_colors.acolors[pix3 & 31]; } last_bpl_pix = pix3; } @@ -53380,12 +84140,44 @@ static void lts_aga_fm2_n1_p6_ihires_dshres(void) bplshiftcnt[1] = 0; loaded_pix = getbpl6_64(); } + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } + } loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } dtbuf[h][0] = dpix_val0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } dtbuf[h][1] = dpix_val1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } dtbuf[h][2] = dpix_val2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + } + } dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -53442,11 +84234,11 @@ static void lts_aga_fm2_n1_p6_ihires_dshres(void) denise_cck++; } } -static void lts_aga_fm2_n1_p6_ihires_dshres_filtered(void) +static void lts_aga_fm2_kehb1_p6_ihires_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm2_dpf0_p6_ihires_dshres(void) +static void lts_aga_fm2_n0_p8_ihires_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -53459,6 +84251,7 @@ static void lts_aga_fm2_dpf0_p6_ihires_dshres(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -53466,28 +84259,32 @@ static void lts_aga_fm2_dpf0_p6_ihires_dshres(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix0; } bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl6_64(); - loaded_pix = getbpl6_64(); + shiftbpl8_64(); + loaded_pix = getbpl8_64(); } if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl6_64(); + copybpl8_64(); bplshiftcnt[0] = 0; - loaded_pix = getbpl6_64(); + loaded_pix = getbpl8_64(); + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } } loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { @@ -53495,28 +84292,32 @@ static void lts_aga_fm2_dpf0_p6_ihires_dshres(void) if (denise_hdiw && bpl1dat_trigger) { pix1 = loaded_pixs[1]; clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - if (dpf_lookup_no[pix1]) { - val1 += dblpfofs[bpldualpf2of]; - } - val1 ^= bplcon4_denise_xor_val; - dpix_val1 = denise_colors.acolors[val1]; + dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix1; } bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl6_64(); - loaded_pix = getbpl6_64(); + shiftbpl8_64(); + loaded_pix = getbpl8_64(); } if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { - copybpl6_64(); + copybpl8_64(); bplshiftcnt[0] = 0; - loaded_pix = getbpl6_64(); + loaded_pix = getbpl8_64(); + } + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } } loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { @@ -53524,28 +84325,32 @@ static void lts_aga_fm2_dpf0_p6_ihires_dshres(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix2; } bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl6_64(); - loaded_pix = getbpl6_64(); + shiftbpl8_64(); + loaded_pix = getbpl8_64(); } if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { - copybpl6_64(); + copybpl8_64(); bplshiftcnt[0] = 0; - loaded_pix = getbpl6_64(); + loaded_pix = getbpl8_64(); + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } } loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { @@ -53553,32 +84358,59 @@ static void lts_aga_fm2_dpf0_p6_ihires_dshres(void) if (denise_hdiw && bpl1dat_trigger) { pix3 = loaded_pixs[3]; clxdat |= bplcoltable[pix3]; - uae_u8 val3 = dpf_lookup[pix3]; - if (dpf_lookup_no[pix3]) { - val3 += dblpfofs[bpldualpf2of]; - } - val3 ^= bplcon4_denise_xor_val; - dpix_val3 = denise_colors.acolors[val3]; + dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix3; } bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl6_64(); - loaded_pix = getbpl6_64(); + shiftbpl8_64(); + loaded_pix = getbpl8_64(); } if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { - copybpl6_64(); + copybpl8_64(); bplshiftcnt[0] = 0; - loaded_pix = getbpl6_64(); + loaded_pix = getbpl8_64(); + } + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } } loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } dtbuf[h][0] = dpix_val0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } dtbuf[h][1] = dpix_val1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } dtbuf[h][2] = dpix_val2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + } + } dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -53635,11 +84467,11 @@ static void lts_aga_fm2_dpf0_p6_ihires_dshres(void) denise_cck++; } } -static void lts_aga_fm2_dpf0_p6_ihires_dshres_filtered(void) +static void lts_aga_fm2_n0_p8_ihires_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm2_dpf1_p6_ihires_dshres(void) +static void lts_aga_fm2_n1_p8_ihires_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -53652,6 +84484,7 @@ static void lts_aga_fm2_dpf1_p6_ihires_dshres(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -53659,39 +84492,43 @@ static void lts_aga_fm2_dpf1_p6_ihires_dshres(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix0; } bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl6e_64(); - loaded_pix = getbpl6_64(); + shiftbpl8e_64(); + loaded_pix = getbpl8_64(); } bplshiftcnt[1] += 2; if (bplshiftcnt[1] >= 4) { bplshiftcnt[1] = 0; - shiftbpl6o_64(); - loaded_pix = getbpl6_64(); + shiftbpl8o_64(); + loaded_pix = getbpl8_64(); } if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl6e_64(); + copybpl8e_64(); bplshiftcnt[0] = 0; - loaded_pix = getbpl6_64(); + loaded_pix = getbpl8_64(); } if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { - copybpl6o_64(); + copybpl8o_64(); bplshiftcnt[1] = 0; - loaded_pix = getbpl6_64(); + loaded_pix = getbpl8_64(); + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } } loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { @@ -53699,39 +84536,43 @@ static void lts_aga_fm2_dpf1_p6_ihires_dshres(void) if (denise_hdiw && bpl1dat_trigger) { pix1 = loaded_pixs[1]; clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - if (dpf_lookup_no[pix1]) { - val1 += dblpfofs[bpldualpf2of]; - } - val1 ^= bplcon4_denise_xor_val; - dpix_val1 = denise_colors.acolors[val1]; + dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix1; } bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl6e_64(); - loaded_pix = getbpl6_64(); + shiftbpl8e_64(); + loaded_pix = getbpl8_64(); } bplshiftcnt[1] += 2; if (bplshiftcnt[1] >= 4) { bplshiftcnt[1] = 0; - shiftbpl6o_64(); - loaded_pix = getbpl6_64(); + shiftbpl8o_64(); + loaded_pix = getbpl8_64(); } if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { - copybpl6e_64(); + copybpl8e_64(); bplshiftcnt[0] = 0; - loaded_pix = getbpl6_64(); + loaded_pix = getbpl8_64(); } if (bpldat_copy[1] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) { - copybpl6o_64(); + copybpl8o_64(); bplshiftcnt[1] = 0; - loaded_pix = getbpl6_64(); + loaded_pix = getbpl8_64(); + } + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } } loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { @@ -53739,39 +84580,43 @@ static void lts_aga_fm2_dpf1_p6_ihires_dshres(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix2; } bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl6e_64(); - loaded_pix = getbpl6_64(); + shiftbpl8e_64(); + loaded_pix = getbpl8_64(); } bplshiftcnt[1] += 2; if (bplshiftcnt[1] >= 4) { bplshiftcnt[1] = 0; - shiftbpl6o_64(); - loaded_pix = getbpl6_64(); + shiftbpl8o_64(); + loaded_pix = getbpl8_64(); } if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { - copybpl6e_64(); + copybpl8e_64(); bplshiftcnt[0] = 0; - loaded_pix = getbpl6_64(); + loaded_pix = getbpl8_64(); } if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) { - copybpl6o_64(); + copybpl8o_64(); bplshiftcnt[1] = 0; - loaded_pix = getbpl6_64(); + loaded_pix = getbpl8_64(); + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } } loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { @@ -53779,43 +84624,70 @@ static void lts_aga_fm2_dpf1_p6_ihires_dshres(void) if (denise_hdiw && bpl1dat_trigger) { pix3 = loaded_pixs[3]; clxdat |= bplcoltable[pix3]; - uae_u8 val3 = dpf_lookup[pix3]; - if (dpf_lookup_no[pix3]) { - val3 += dblpfofs[bpldualpf2of]; - } - val3 ^= bplcon4_denise_xor_val; - dpix_val3 = denise_colors.acolors[val3]; + dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix3; } bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl6e_64(); - loaded_pix = getbpl6_64(); + shiftbpl8e_64(); + loaded_pix = getbpl8_64(); } bplshiftcnt[1] += 2; if (bplshiftcnt[1] >= 4) { bplshiftcnt[1] = 0; - shiftbpl6o_64(); - loaded_pix = getbpl6_64(); + shiftbpl8o_64(); + loaded_pix = getbpl8_64(); } if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { - copybpl6e_64(); + copybpl8e_64(); bplshiftcnt[0] = 0; - loaded_pix = getbpl6_64(); + loaded_pix = getbpl8_64(); } if (bpldat_copy[1] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[1]) { - copybpl6o_64(); + copybpl8o_64(); bplshiftcnt[1] = 0; - loaded_pix = getbpl6_64(); + loaded_pix = getbpl8_64(); + } + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } } loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } dtbuf[h][0] = dpix_val0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } dtbuf[h][1] = dpix_val1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } dtbuf[h][2] = dpix_val2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + } + } dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -53872,11 +84744,11 @@ static void lts_aga_fm2_dpf1_p6_ihires_dshres(void) denise_cck++; } } -static void lts_aga_fm2_dpf1_p6_ihires_dshres_filtered(void) +static void lts_aga_fm2_n1_p8_ihires_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm2_ehb0_p6_ihires_dshres(void) +static void lts_aga_fm2_dpf0_p8_ihires_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -53889,6 +84761,7 @@ static void lts_aga_fm2_ehb0_p6_ihires_dshres(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -53896,29 +84769,37 @@ static void lts_aga_fm2_ehb0_p6_ihires_dshres(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - pix0 ^= bplcon4_denise_xor_val; - if (!(pix0 & 0x20)) { - dpix_val0 = denise_colors.acolors[pix0]; - } else { - uae_u32 v = (denise_colors.color_regs_aga[pix0 & 0x1f] >> 1) & 0x7f7f7f; - dpix_val0 = CONVERT_RGB(v); + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; } last_bpl_pix = pix0; } bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl6_64(); - loaded_pix = getbpl6_64(); + shiftbpl8_64(); + loaded_pix = getbpl8_64(); } if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl6_64(); + copybpl8_64(); bplshiftcnt[0] = 0; - loaded_pix = getbpl6_64(); + loaded_pix = getbpl8_64(); + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } } loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { @@ -53926,29 +84807,37 @@ static void lts_aga_fm2_ehb0_p6_ihires_dshres(void) if (denise_hdiw && bpl1dat_trigger) { pix1 = loaded_pixs[1]; clxdat |= bplcoltable[pix1]; - pix1 ^= bplcon4_denise_xor_val; - if (!(pix1 & 0x20)) { - dpix_val1 = denise_colors.acolors[pix1]; - } else { - uae_u32 v = (denise_colors.color_regs_aga[pix1 & 0x1f] >> 1) & 0x7f7f7f; - dpix_val1 = CONVERT_RGB(v); + uae_u8 val1 = dpf_lookup[pix1]; + if (dpf_lookup_no[pix1]) { + val1 += dblpfofs[bpldualpf2of]; } + val1 ^= bplcon4_denise_xor_val; + dpix_val1 = denise_colors.acolors[val1]; } last_bpl_pix = pix1; } bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl6_64(); - loaded_pix = getbpl6_64(); + shiftbpl8_64(); + loaded_pix = getbpl8_64(); } if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { - copybpl6_64(); + copybpl8_64(); bplshiftcnt[0] = 0; - loaded_pix = getbpl6_64(); + loaded_pix = getbpl8_64(); + } + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } } loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { @@ -53956,29 +84845,37 @@ static void lts_aga_fm2_ehb0_p6_ihires_dshres(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - pix2 ^= bplcon4_denise_xor_val; - if (!(pix2 & 0x20)) { - dpix_val2 = denise_colors.acolors[pix2]; - } else { - uae_u32 v = (denise_colors.color_regs_aga[pix2 & 0x1f] >> 1) & 0x7f7f7f; - dpix_val2 = CONVERT_RGB(v); + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; } last_bpl_pix = pix2; } bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl6_64(); - loaded_pix = getbpl6_64(); + shiftbpl8_64(); + loaded_pix = getbpl8_64(); } if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { - copybpl6_64(); + copybpl8_64(); bplshiftcnt[0] = 0; - loaded_pix = getbpl6_64(); + loaded_pix = getbpl8_64(); + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } } loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { @@ -53986,33 +84883,64 @@ static void lts_aga_fm2_ehb0_p6_ihires_dshres(void) if (denise_hdiw && bpl1dat_trigger) { pix3 = loaded_pixs[3]; clxdat |= bplcoltable[pix3]; - pix3 ^= bplcon4_denise_xor_val; - if (!(pix3 & 0x20)) { - dpix_val3 = denise_colors.acolors[pix3]; - } else { - uae_u32 v = (denise_colors.color_regs_aga[pix3 & 0x1f] >> 1) & 0x7f7f7f; - dpix_val3 = CONVERT_RGB(v); + uae_u8 val3 = dpf_lookup[pix3]; + if (dpf_lookup_no[pix3]) { + val3 += dblpfofs[bpldualpf2of]; } + val3 ^= bplcon4_denise_xor_val; + dpix_val3 = denise_colors.acolors[val3]; } last_bpl_pix = pix3; } bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl6_64(); - loaded_pix = getbpl6_64(); + shiftbpl8_64(); + loaded_pix = getbpl8_64(); } if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { - copybpl6_64(); + copybpl8_64(); bplshiftcnt[0] = 0; - loaded_pix = getbpl6_64(); + loaded_pix = getbpl8_64(); + } + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } } loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } dtbuf[h][0] = dpix_val0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } dtbuf[h][1] = dpix_val1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } dtbuf[h][2] = dpix_val2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + } + } dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -54069,11 +84997,11 @@ static void lts_aga_fm2_ehb0_p6_ihires_dshres(void) denise_cck++; } } -static void lts_aga_fm2_ehb0_p6_ihires_dshres_filtered(void) +static void lts_aga_fm2_dpf0_p8_ihires_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm2_ehb1_p6_ihires_dshres(void) +static void lts_aga_fm2_dpf1_p8_ihires_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -54086,6 +85014,7 @@ static void lts_aga_fm2_ehb1_p6_ihires_dshres(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -54093,40 +85022,48 @@ static void lts_aga_fm2_ehb1_p6_ihires_dshres(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - pix0 ^= bplcon4_denise_xor_val; - if (!(pix0 & 0x20)) { - dpix_val0 = denise_colors.acolors[pix0]; - } else { - uae_u32 v = (denise_colors.color_regs_aga[pix0 & 0x1f] >> 1) & 0x7f7f7f; - dpix_val0 = CONVERT_RGB(v); + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; } last_bpl_pix = pix0; } bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl6e_64(); - loaded_pix = getbpl6_64(); + shiftbpl8e_64(); + loaded_pix = getbpl8_64(); } bplshiftcnt[1] += 2; if (bplshiftcnt[1] >= 4) { bplshiftcnt[1] = 0; - shiftbpl6o_64(); - loaded_pix = getbpl6_64(); + shiftbpl8o_64(); + loaded_pix = getbpl8_64(); } if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl6e_64(); + copybpl8e_64(); bplshiftcnt[0] = 0; - loaded_pix = getbpl6_64(); + loaded_pix = getbpl8_64(); } if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { - copybpl6o_64(); + copybpl8o_64(); bplshiftcnt[1] = 0; - loaded_pix = getbpl6_64(); + loaded_pix = getbpl8_64(); + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } } loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { @@ -54134,40 +85071,48 @@ static void lts_aga_fm2_ehb1_p6_ihires_dshres(void) if (denise_hdiw && bpl1dat_trigger) { pix1 = loaded_pixs[1]; clxdat |= bplcoltable[pix1]; - pix1 ^= bplcon4_denise_xor_val; - if (!(pix1 & 0x20)) { - dpix_val1 = denise_colors.acolors[pix1]; - } else { - uae_u32 v = (denise_colors.color_regs_aga[pix1 & 0x1f] >> 1) & 0x7f7f7f; - dpix_val1 = CONVERT_RGB(v); + uae_u8 val1 = dpf_lookup[pix1]; + if (dpf_lookup_no[pix1]) { + val1 += dblpfofs[bpldualpf2of]; } + val1 ^= bplcon4_denise_xor_val; + dpix_val1 = denise_colors.acolors[val1]; } last_bpl_pix = pix1; } bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl6e_64(); - loaded_pix = getbpl6_64(); + shiftbpl8e_64(); + loaded_pix = getbpl8_64(); } bplshiftcnt[1] += 2; if (bplshiftcnt[1] >= 4) { bplshiftcnt[1] = 0; - shiftbpl6o_64(); - loaded_pix = getbpl6_64(); + shiftbpl8o_64(); + loaded_pix = getbpl8_64(); } if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { - copybpl6e_64(); + copybpl8e_64(); bplshiftcnt[0] = 0; - loaded_pix = getbpl6_64(); + loaded_pix = getbpl8_64(); } if (bpldat_copy[1] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) { - copybpl6o_64(); + copybpl8o_64(); bplshiftcnt[1] = 0; - loaded_pix = getbpl6_64(); + loaded_pix = getbpl8_64(); + } + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } } loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { @@ -54175,40 +85120,48 @@ static void lts_aga_fm2_ehb1_p6_ihires_dshres(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - pix2 ^= bplcon4_denise_xor_val; - if (!(pix2 & 0x20)) { - dpix_val2 = denise_colors.acolors[pix2]; - } else { - uae_u32 v = (denise_colors.color_regs_aga[pix2 & 0x1f] >> 1) & 0x7f7f7f; - dpix_val2 = CONVERT_RGB(v); + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; } last_bpl_pix = pix2; } bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl6e_64(); - loaded_pix = getbpl6_64(); + shiftbpl8e_64(); + loaded_pix = getbpl8_64(); } bplshiftcnt[1] += 2; if (bplshiftcnt[1] >= 4) { bplshiftcnt[1] = 0; - shiftbpl6o_64(); - loaded_pix = getbpl6_64(); + shiftbpl8o_64(); + loaded_pix = getbpl8_64(); } if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { - copybpl6e_64(); + copybpl8e_64(); bplshiftcnt[0] = 0; - loaded_pix = getbpl6_64(); + loaded_pix = getbpl8_64(); } if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) { - copybpl6o_64(); + copybpl8o_64(); bplshiftcnt[1] = 0; - loaded_pix = getbpl6_64(); + loaded_pix = getbpl8_64(); + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } } loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { @@ -54216,44 +85169,75 @@ static void lts_aga_fm2_ehb1_p6_ihires_dshres(void) if (denise_hdiw && bpl1dat_trigger) { pix3 = loaded_pixs[3]; clxdat |= bplcoltable[pix3]; - pix3 ^= bplcon4_denise_xor_val; - if (!(pix3 & 0x20)) { - dpix_val3 = denise_colors.acolors[pix3]; - } else { - uae_u32 v = (denise_colors.color_regs_aga[pix3 & 0x1f] >> 1) & 0x7f7f7f; - dpix_val3 = CONVERT_RGB(v); + uae_u8 val3 = dpf_lookup[pix3]; + if (dpf_lookup_no[pix3]) { + val3 += dblpfofs[bpldualpf2of]; } + val3 ^= bplcon4_denise_xor_val; + dpix_val3 = denise_colors.acolors[val3]; } last_bpl_pix = pix3; } bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl6e_64(); - loaded_pix = getbpl6_64(); + shiftbpl8e_64(); + loaded_pix = getbpl8_64(); } bplshiftcnt[1] += 2; if (bplshiftcnt[1] >= 4) { bplshiftcnt[1] = 0; - shiftbpl6o_64(); - loaded_pix = getbpl6_64(); + shiftbpl8o_64(); + loaded_pix = getbpl8_64(); } if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { - copybpl6e_64(); + copybpl8e_64(); bplshiftcnt[0] = 0; - loaded_pix = getbpl6_64(); + loaded_pix = getbpl8_64(); } if (bpldat_copy[1] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[1]) { - copybpl6o_64(); + copybpl8o_64(); bplshiftcnt[1] = 0; - loaded_pix = getbpl6_64(); + loaded_pix = getbpl8_64(); + } + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } } loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } dtbuf[h][0] = dpix_val0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } dtbuf[h][1] = dpix_val1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } dtbuf[h][2] = dpix_val2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + } + } dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -54310,11 +85294,11 @@ static void lts_aga_fm2_ehb1_p6_ihires_dshres(void) denise_cck++; } } -static void lts_aga_fm2_ehb1_p6_ihires_dshres_filtered(void) +static void lts_aga_fm2_dpf1_p8_ihires_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm2_ham0_p6_ihires_dshres(void) +static void lts_aga_fm2_ehb0_p8_ihires_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -54325,108 +85309,95 @@ 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; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = decode_ham_pixel_aga(pix0); - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6_64(); - loaded_pix = getbpl6_64(); } - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl6_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6_64(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - dpix_val1 = decode_ham_pixel_aga(pix1); - } - last_bpl_pix = pix1; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6_64(); - loaded_pix = getbpl6_64(); } - if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { - copybpl6_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6_64(); + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } } - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = decode_ham_pixel_aga(pix2); - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6_64(); - loaded_pix = getbpl6_64(); } - if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { - copybpl6_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6_64(); + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } } - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; - uae_u32 dpix_val3 = BLANK_COLOR; - if (!denise_blank_active) { - dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - dpix_val3 = decode_ham_pixel_aga(pix3); - } - last_bpl_pix = pix3; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6_64(); - loaded_pix = getbpl6_64(); + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; } - if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { - copybpl6_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6_64(); + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } } - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } dtbuf[h][0] = dpix_val0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } dtbuf[h][1] = dpix_val1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } dtbuf[h][2] = dpix_val2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + } + } dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -54483,11 +85454,11 @@ static void lts_aga_fm2_ham0_p6_ihires_dshres(void) denise_cck++; } } -static void lts_aga_fm2_ham0_p6_ihires_dshres_filtered(void) +static void lts_aga_fm2_ehb0_p8_ihires_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm2_ham1_p6_ihires_dshres(void) +static void lts_aga_fm2_ehb1_p8_ihires_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -54498,152 +85469,95 @@ 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; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = decode_ham_pixel_aga(pix0); - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6e_64(); - loaded_pix = getbpl6_64(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl6o_64(); - loaded_pix = getbpl6_64(); - } - 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] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { - copybpl6o_64(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl6_64(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - dpix_val1 = decode_ham_pixel_aga(pix1); - } - last_bpl_pix = pix1; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6e_64(); - loaded_pix = getbpl6_64(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl6o_64(); - loaded_pix = getbpl6_64(); - } - 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] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) { - copybpl6o_64(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl6_64(); + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } } - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = decode_ham_pixel_aga(pix2); - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6e_64(); - loaded_pix = getbpl6_64(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl6o_64(); - loaded_pix = getbpl6_64(); - } - 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] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) { - copybpl6o_64(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl6_64(); + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } } - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - dpix_val3 = decode_ham_pixel_aga(pix3); - } - last_bpl_pix = pix3; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6e_64(); - loaded_pix = getbpl6_64(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl6o_64(); - loaded_pix = getbpl6_64(); - } - 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] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[1]) { - copybpl6o_64(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl6_64(); + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } } - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } dtbuf[h][0] = dpix_val0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } dtbuf[h][1] = dpix_val1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } dtbuf[h][2] = dpix_val2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + } + } dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -54700,11 +85614,11 @@ static void lts_aga_fm2_ham1_p6_ihires_dshres(void) denise_cck++; } } -static void lts_aga_fm2_ham1_p6_ihires_dshres_filtered(void) +static void lts_aga_fm2_ehb1_p8_ihires_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm2_kehb0_p6_ihires_dshres(void) +static void lts_aga_fm2_ham0_p8_ihires_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -54717,6 +85631,7 @@ static void lts_aga_fm2_kehb0_p6_ihires_dshres(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -54724,24 +85639,32 @@ static void lts_aga_fm2_kehb0_p6_ihires_dshres(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - pix0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[pix0 & 31]; + dpix_val0 = decode_ham_pixel_aga(pix0); } last_bpl_pix = pix0; } bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl6_64(); - loaded_pix = getbpl6_64(); + shiftbpl8_64(); + loaded_pix = getbpl8_64(); } if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl6_64(); + copybpl8_64(); bplshiftcnt[0] = 0; - loaded_pix = getbpl6_64(); + loaded_pix = getbpl8_64(); + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } } loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { @@ -54749,24 +85672,32 @@ static void lts_aga_fm2_kehb0_p6_ihires_dshres(void) if (denise_hdiw && bpl1dat_trigger) { pix1 = loaded_pixs[1]; clxdat |= bplcoltable[pix1]; - pix1 ^= bplcon4_denise_xor_val; - dpix_val1 = denise_colors.acolors[pix1 & 31]; + dpix_val1 = decode_ham_pixel_aga(pix1); } last_bpl_pix = pix1; } bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl6_64(); - loaded_pix = getbpl6_64(); + shiftbpl8_64(); + loaded_pix = getbpl8_64(); } if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { - copybpl6_64(); + copybpl8_64(); bplshiftcnt[0] = 0; - loaded_pix = getbpl6_64(); + loaded_pix = getbpl8_64(); + } + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } } loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { @@ -54774,24 +85705,32 @@ static void lts_aga_fm2_kehb0_p6_ihires_dshres(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - pix2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[pix2 & 31]; + dpix_val2 = decode_ham_pixel_aga(pix2); } last_bpl_pix = pix2; } bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl6_64(); - loaded_pix = getbpl6_64(); + shiftbpl8_64(); + loaded_pix = getbpl8_64(); } if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { - copybpl6_64(); + copybpl8_64(); bplshiftcnt[0] = 0; - loaded_pix = getbpl6_64(); + loaded_pix = getbpl8_64(); + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } } loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { @@ -54799,28 +85738,59 @@ static void lts_aga_fm2_kehb0_p6_ihires_dshres(void) if (denise_hdiw && bpl1dat_trigger) { pix3 = loaded_pixs[3]; clxdat |= bplcoltable[pix3]; - pix3 ^= bplcon4_denise_xor_val; - dpix_val3 = denise_colors.acolors[pix3 & 31]; + dpix_val3 = decode_ham_pixel_aga(pix3); } last_bpl_pix = pix3; } bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl6_64(); - loaded_pix = getbpl6_64(); + shiftbpl8_64(); + loaded_pix = getbpl8_64(); } if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { - copybpl6_64(); + copybpl8_64(); bplshiftcnt[0] = 0; - loaded_pix = getbpl6_64(); + loaded_pix = getbpl8_64(); + } + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } } loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } dtbuf[h][0] = dpix_val0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } dtbuf[h][1] = dpix_val1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } dtbuf[h][2] = dpix_val2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + } + } dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -54877,11 +85847,11 @@ static void lts_aga_fm2_kehb0_p6_ihires_dshres(void) denise_cck++; } } -static void lts_aga_fm2_kehb0_p6_ihires_dshres_filtered(void) +static void lts_aga_fm2_ham0_p8_ihires_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm2_kehb1_p6_ihires_dshres(void) +static void lts_aga_fm2_ham1_p8_ihires_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -54894,6 +85864,7 @@ static void lts_aga_fm2_kehb1_p6_ihires_dshres(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -54901,35 +85872,43 @@ static void lts_aga_fm2_kehb1_p6_ihires_dshres(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - pix0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[pix0 & 31]; + dpix_val0 = decode_ham_pixel_aga(pix0); } last_bpl_pix = pix0; } bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl6e_64(); - loaded_pix = getbpl6_64(); + shiftbpl8e_64(); + loaded_pix = getbpl8_64(); } bplshiftcnt[1] += 2; if (bplshiftcnt[1] >= 4) { bplshiftcnt[1] = 0; - shiftbpl6o_64(); - loaded_pix = getbpl6_64(); + shiftbpl8o_64(); + loaded_pix = getbpl8_64(); } if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl6e_64(); + copybpl8e_64(); bplshiftcnt[0] = 0; - loaded_pix = getbpl6_64(); + loaded_pix = getbpl8_64(); } if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { - copybpl6o_64(); + copybpl8o_64(); bplshiftcnt[1] = 0; - loaded_pix = getbpl6_64(); + loaded_pix = getbpl8_64(); + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } } loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { @@ -54937,35 +85916,43 @@ static void lts_aga_fm2_kehb1_p6_ihires_dshres(void) if (denise_hdiw && bpl1dat_trigger) { pix1 = loaded_pixs[1]; clxdat |= bplcoltable[pix1]; - pix1 ^= bplcon4_denise_xor_val; - dpix_val1 = denise_colors.acolors[pix1 & 31]; + dpix_val1 = decode_ham_pixel_aga(pix1); } last_bpl_pix = pix1; } bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl6e_64(); - loaded_pix = getbpl6_64(); + shiftbpl8e_64(); + loaded_pix = getbpl8_64(); } bplshiftcnt[1] += 2; if (bplshiftcnt[1] >= 4) { bplshiftcnt[1] = 0; - shiftbpl6o_64(); - loaded_pix = getbpl6_64(); + shiftbpl8o_64(); + loaded_pix = getbpl8_64(); } if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { - copybpl6e_64(); + copybpl8e_64(); bplshiftcnt[0] = 0; - loaded_pix = getbpl6_64(); + loaded_pix = getbpl8_64(); } if (bpldat_copy[1] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) { - copybpl6o_64(); + copybpl8o_64(); bplshiftcnt[1] = 0; - loaded_pix = getbpl6_64(); + loaded_pix = getbpl8_64(); + } + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } } loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { @@ -54973,35 +85960,43 @@ static void lts_aga_fm2_kehb1_p6_ihires_dshres(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - pix2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[pix2 & 31]; + dpix_val2 = decode_ham_pixel_aga(pix2); } last_bpl_pix = pix2; } bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl6e_64(); - loaded_pix = getbpl6_64(); + shiftbpl8e_64(); + loaded_pix = getbpl8_64(); } bplshiftcnt[1] += 2; if (bplshiftcnt[1] >= 4) { bplshiftcnt[1] = 0; - shiftbpl6o_64(); - loaded_pix = getbpl6_64(); + shiftbpl8o_64(); + loaded_pix = getbpl8_64(); } if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { - copybpl6e_64(); + copybpl8e_64(); bplshiftcnt[0] = 0; - loaded_pix = getbpl6_64(); + loaded_pix = getbpl8_64(); } if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) { - copybpl6o_64(); + copybpl8o_64(); bplshiftcnt[1] = 0; - loaded_pix = getbpl6_64(); + loaded_pix = getbpl8_64(); + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } } loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { @@ -55009,39 +86004,70 @@ static void lts_aga_fm2_kehb1_p6_ihires_dshres(void) if (denise_hdiw && bpl1dat_trigger) { pix3 = loaded_pixs[3]; clxdat |= bplcoltable[pix3]; - pix3 ^= bplcon4_denise_xor_val; - dpix_val3 = denise_colors.acolors[pix3 & 31]; + dpix_val3 = decode_ham_pixel_aga(pix3); } last_bpl_pix = pix3; } bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl6e_64(); - loaded_pix = getbpl6_64(); + shiftbpl8e_64(); + loaded_pix = getbpl8_64(); } bplshiftcnt[1] += 2; if (bplshiftcnt[1] >= 4) { bplshiftcnt[1] = 0; - shiftbpl6o_64(); - loaded_pix = getbpl6_64(); + shiftbpl8o_64(); + loaded_pix = getbpl8_64(); } if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { - copybpl6e_64(); + copybpl8e_64(); bplshiftcnt[0] = 0; - loaded_pix = getbpl6_64(); + loaded_pix = getbpl8_64(); } if (bpldat_copy[1] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[1]) { - copybpl6o_64(); + copybpl8o_64(); bplshiftcnt[1] = 0; - loaded_pix = getbpl6_64(); + loaded_pix = getbpl8_64(); + } + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } } loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } dtbuf[h][0] = dpix_val0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } dtbuf[h][1] = dpix_val1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } dtbuf[h][2] = dpix_val2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + } + } dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -55098,11 +86124,11 @@ static void lts_aga_fm2_kehb1_p6_ihires_dshres(void) denise_cck++; } } -static void lts_aga_fm2_kehb1_p6_ihires_dshres_filtered(void) +static void lts_aga_fm2_ham1_p8_ihires_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm2_n0_p8_ihires_dshres(void) +static void lts_aga_fm2_kehb0_p8_ihires_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -55113,108 +86139,95 @@ 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; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix0; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8_64(); - loaded_pix = getbpl8_64(); - } - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_64(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix1; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8_64(); - loaded_pix = getbpl8_64(); } - if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_64(); + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } } - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8_64(); - loaded_pix = getbpl8_64(); } - if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_64(); + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } } - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix3; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8_64(); - loaded_pix = getbpl8_64(); } - if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_64(); + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } } - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } dtbuf[h][0] = dpix_val0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } dtbuf[h][1] = dpix_val1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } dtbuf[h][2] = dpix_val2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + } + } dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -55271,11 +86284,11 @@ static void lts_aga_fm2_n0_p8_ihires_dshres(void) denise_cck++; } } -static void lts_aga_fm2_n0_p8_ihires_dshres_filtered(void) +static void lts_aga_fm2_kehb0_p8_ihires_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm2_n1_p8_ihires_dshres(void) +static void lts_aga_fm2_kehb1_p8_ihires_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -55286,152 +86299,95 @@ 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; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8e_64(); - loaded_pix = getbpl8_64(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl8o_64(); - loaded_pix = getbpl8_64(); - } - 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] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl8_64(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix1; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8e_64(); - loaded_pix = getbpl8_64(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl8o_64(); - loaded_pix = getbpl8_64(); - } - 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] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl8_64(); + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } } - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8e_64(); - loaded_pix = getbpl8_64(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl8o_64(); - loaded_pix = getbpl8_64(); - } - 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] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl8_64(); + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } } - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix3; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8e_64(); - loaded_pix = getbpl8_64(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl8o_64(); - loaded_pix = getbpl8_64(); - } - 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] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl8_64(); + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } } - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } dtbuf[h][0] = dpix_val0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } dtbuf[h][1] = dpix_val1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } dtbuf[h][2] = dpix_val2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + } + } dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -55488,11 +86444,11 @@ static void lts_aga_fm2_n1_p8_ihires_dshres(void) denise_cck++; } } -static void lts_aga_fm2_n1_p8_ihires_dshres_filtered(void) +static void lts_aga_fm2_kehb1_p8_ihires_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm2_dpf0_p8_ihires_dshres(void) +static void lts_aga_fm2_n0_p2_ishres_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -55512,26 +86468,15 @@ static void lts_aga_fm2_dpf0_p8_ihires_dshres(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix0; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8_64(); - loaded_pix = getbpl8_64(); - } - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_64(); + shiftbpl2_64(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl2_64(); } + loaded_pix = getbpl2_64(); loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; uae_u8 pix1 = 0; @@ -55541,26 +86486,15 @@ static void lts_aga_fm2_dpf0_p8_ihires_dshres(void) if (denise_hdiw && bpl1dat_trigger) { pix1 = loaded_pixs[1]; clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - if (dpf_lookup_no[pix1]) { - val1 += dblpfofs[bpldualpf2of]; - } - val1 ^= bplcon4_denise_xor_val; - dpix_val1 = denise_colors.acolors[val1]; + dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix1; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8_64(); - loaded_pix = getbpl8_64(); - } - if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_64(); + shiftbpl2_64(); + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl2_64(); } + loaded_pix = getbpl2_64(); loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; uae_u8 pix2 = 0; @@ -55570,26 +86504,15 @@ static void lts_aga_fm2_dpf0_p8_ihires_dshres(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix2; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8_64(); - loaded_pix = getbpl8_64(); - } - if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_64(); + shiftbpl2_64(); + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl2_64(); } + loaded_pix = getbpl2_64(); loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; uae_u8 pix3 = 0; @@ -55599,26 +86522,15 @@ static void lts_aga_fm2_dpf0_p8_ihires_dshres(void) if (denise_hdiw && bpl1dat_trigger) { pix3 = loaded_pixs[3]; clxdat |= bplcoltable[pix3]; - uae_u8 val3 = dpf_lookup[pix3]; - if (dpf_lookup_no[pix3]) { - val3 += dblpfofs[bpldualpf2of]; - } - val3 ^= bplcon4_denise_xor_val; - dpix_val3 = denise_colors.acolors[val3]; + dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix3; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8_64(); - loaded_pix = getbpl8_64(); - } - if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_64(); + shiftbpl2_64(); + if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { + copybpl2_64(); } + loaded_pix = getbpl2_64(); loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { @@ -55681,11 +86593,11 @@ static void lts_aga_fm2_dpf0_p8_ihires_dshres(void) denise_cck++; } } -static void lts_aga_fm2_dpf0_p8_ihires_dshres_filtered(void) +static void lts_aga_fm2_n0_p2_ishres_dshres_filtered(void) { lts_null(); } -static void lts_aga_fm2_dpf1_p8_ihires_dshres(void) +static void lts_aga_fm2_n1_p2_ishres_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -55705,37 +86617,18 @@ static void lts_aga_fm2_dpf1_p8_ihires_dshres(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix0; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8e_64(); - loaded_pix = getbpl8_64(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl8o_64(); - loaded_pix = getbpl8_64(); - } - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8e_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_64(); + shiftbpl2_64(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl2e_64(); } - if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl8_64(); + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl2o_64(); } + loaded_pix = getbpl2_64(); loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; uae_u8 pix1 = 0; @@ -55745,37 +86638,18 @@ static void lts_aga_fm2_dpf1_p8_ihires_dshres(void) if (denise_hdiw && bpl1dat_trigger) { pix1 = loaded_pixs[1]; clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - if (dpf_lookup_no[pix1]) { - val1 += dblpfofs[bpldualpf2of]; - } - val1 ^= bplcon4_denise_xor_val; - dpix_val1 = denise_colors.acolors[val1]; + dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix1; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8e_64(); - loaded_pix = getbpl8_64(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl8o_64(); - loaded_pix = getbpl8_64(); - } - if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8e_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_64(); + shiftbpl2_64(); + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl2e_64(); } - if (bpldat_copy[1] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl8_64(); + if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { + copybpl2o_64(); } + loaded_pix = getbpl2_64(); loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; uae_u8 pix2 = 0; @@ -55785,37 +86659,18 @@ static void lts_aga_fm2_dpf1_p8_ihires_dshres(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix2; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8e_64(); - loaded_pix = getbpl8_64(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl8o_64(); - loaded_pix = getbpl8_64(); - } - if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8e_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_64(); + shiftbpl2_64(); + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl2e_64(); } - if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl8_64(); + if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { + copybpl2o_64(); } + loaded_pix = getbpl2_64(); loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; uae_u8 pix3 = 0; @@ -55825,37 +86680,18 @@ static void lts_aga_fm2_dpf1_p8_ihires_dshres(void) if (denise_hdiw && bpl1dat_trigger) { pix3 = loaded_pixs[3]; clxdat |= bplcoltable[pix3]; - uae_u8 val3 = dpf_lookup[pix3]; - if (dpf_lookup_no[pix3]) { - val3 += dblpfofs[bpldualpf2of]; - } - val3 ^= bplcon4_denise_xor_val; - dpix_val3 = denise_colors.acolors[val3]; + dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix3; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8e_64(); - loaded_pix = getbpl8_64(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl8o_64(); - loaded_pix = getbpl8_64(); - } - if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8e_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_64(); + shiftbpl2_64(); + if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { + copybpl2e_64(); } - if (bpldat_copy[1] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl8_64(); + if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) { + copybpl2o_64(); } + loaded_pix = getbpl2_64(); loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { @@ -55918,27 +86754,11 @@ static void lts_aga_fm2_dpf1_p8_ihires_dshres(void) denise_cck++; } } -static void lts_aga_fm2_dpf1_p8_ihires_dshres_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb0_p8_ihires_dshres(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb0_p8_ihires_dshres_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb1_p8_ihires_dshres(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb1_p8_ihires_dshres_filtered(void) +static void lts_aga_fm2_n1_p2_ishres_dshres_filtered(void) { lts_null(); } -static void lts_aga_fm2_ham0_p8_ihires_dshres(void) +static void lts_aga_fm2_dpf0_p2_ishres_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -55958,21 +86778,20 @@ static void lts_aga_fm2_ham0_p8_ihires_dshres(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - dpix_val0 = decode_ham_pixel_aga(pix0); + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; } last_bpl_pix = pix0; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8_64(); - loaded_pix = getbpl8_64(); - } - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_64(); + shiftbpl2_64(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl2_64(); } + loaded_pix = getbpl2_64(); loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; uae_u8 pix1 = 0; @@ -55982,21 +86801,20 @@ static void lts_aga_fm2_ham0_p8_ihires_dshres(void) if (denise_hdiw && bpl1dat_trigger) { pix1 = loaded_pixs[1]; clxdat |= bplcoltable[pix1]; - dpix_val1 = decode_ham_pixel_aga(pix1); + uae_u8 val1 = dpf_lookup[pix1]; + if (dpf_lookup_no[pix1]) { + val1 += dblpfofs[bpldualpf2of]; + } + val1 ^= bplcon4_denise_xor_val; + dpix_val1 = denise_colors.acolors[val1]; } last_bpl_pix = pix1; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8_64(); - loaded_pix = getbpl8_64(); - } - if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_64(); + shiftbpl2_64(); + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl2_64(); } + loaded_pix = getbpl2_64(); loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; uae_u8 pix2 = 0; @@ -56006,21 +86824,20 @@ static void lts_aga_fm2_ham0_p8_ihires_dshres(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - dpix_val2 = decode_ham_pixel_aga(pix2); + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; } last_bpl_pix = pix2; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8_64(); - loaded_pix = getbpl8_64(); - } - if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_64(); + shiftbpl2_64(); + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl2_64(); } + loaded_pix = getbpl2_64(); loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; uae_u8 pix3 = 0; @@ -56030,21 +86847,20 @@ static void lts_aga_fm2_ham0_p8_ihires_dshres(void) if (denise_hdiw && bpl1dat_trigger) { pix3 = loaded_pixs[3]; clxdat |= bplcoltable[pix3]; - dpix_val3 = decode_ham_pixel_aga(pix3); + uae_u8 val3 = dpf_lookup[pix3]; + if (dpf_lookup_no[pix3]) { + val3 += dblpfofs[bpldualpf2of]; + } + val3 ^= bplcon4_denise_xor_val; + dpix_val3 = denise_colors.acolors[val3]; } last_bpl_pix = pix3; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8_64(); - loaded_pix = getbpl8_64(); - } - if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_64(); + shiftbpl2_64(); + if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { + copybpl2_64(); } + loaded_pix = getbpl2_64(); loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { @@ -56107,11 +86923,11 @@ static void lts_aga_fm2_ham0_p8_ihires_dshres(void) denise_cck++; } } -static void lts_aga_fm2_ham0_p8_ihires_dshres_filtered(void) +static void lts_aga_fm2_dpf0_p2_ishres_dshres_filtered(void) { lts_null(); } -static void lts_aga_fm2_ham1_p8_ihires_dshres(void) +static void lts_aga_fm2_dpf1_p2_ishres_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -56131,32 +86947,23 @@ static void lts_aga_fm2_ham1_p8_ihires_dshres(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - dpix_val0 = decode_ham_pixel_aga(pix0); + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; } last_bpl_pix = pix0; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8e_64(); - loaded_pix = getbpl8_64(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl8o_64(); - loaded_pix = getbpl8_64(); - } - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8e_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_64(); + shiftbpl2_64(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl2e_64(); } - if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl8_64(); + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl2o_64(); } + loaded_pix = getbpl2_64(); loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; uae_u8 pix1 = 0; @@ -56166,32 +86973,23 @@ static void lts_aga_fm2_ham1_p8_ihires_dshres(void) if (denise_hdiw && bpl1dat_trigger) { pix1 = loaded_pixs[1]; clxdat |= bplcoltable[pix1]; - dpix_val1 = decode_ham_pixel_aga(pix1); + uae_u8 val1 = dpf_lookup[pix1]; + if (dpf_lookup_no[pix1]) { + val1 += dblpfofs[bpldualpf2of]; + } + val1 ^= bplcon4_denise_xor_val; + dpix_val1 = denise_colors.acolors[val1]; } last_bpl_pix = pix1; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8e_64(); - loaded_pix = getbpl8_64(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl8o_64(); - loaded_pix = getbpl8_64(); - } - if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8e_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_64(); + shiftbpl2_64(); + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl2e_64(); } - if (bpldat_copy[1] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl8_64(); + if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { + copybpl2o_64(); } + loaded_pix = getbpl2_64(); loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; uae_u8 pix2 = 0; @@ -56201,32 +86999,23 @@ static void lts_aga_fm2_ham1_p8_ihires_dshres(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - dpix_val2 = decode_ham_pixel_aga(pix2); + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; } last_bpl_pix = pix2; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8e_64(); - loaded_pix = getbpl8_64(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl8o_64(); - loaded_pix = getbpl8_64(); - } - if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8e_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_64(); + shiftbpl2_64(); + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl2e_64(); } - if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl8_64(); + if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { + copybpl2o_64(); } + loaded_pix = getbpl2_64(); loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; uae_u8 pix3 = 0; @@ -56236,32 +87025,23 @@ static void lts_aga_fm2_ham1_p8_ihires_dshres(void) if (denise_hdiw && bpl1dat_trigger) { pix3 = loaded_pixs[3]; clxdat |= bplcoltable[pix3]; - dpix_val3 = decode_ham_pixel_aga(pix3); + uae_u8 val3 = dpf_lookup[pix3]; + if (dpf_lookup_no[pix3]) { + val3 += dblpfofs[bpldualpf2of]; + } + val3 ^= bplcon4_denise_xor_val; + dpix_val3 = denise_colors.acolors[val3]; } last_bpl_pix = pix3; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8e_64(); - loaded_pix = getbpl8_64(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl8o_64(); - loaded_pix = getbpl8_64(); - } - if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8e_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_64(); + shiftbpl2_64(); + if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { + copybpl2e_64(); } - if (bpldat_copy[1] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl8_64(); + if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) { + copybpl2o_64(); } + loaded_pix = getbpl2_64(); loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { @@ -56324,27 +87104,11 @@ static void lts_aga_fm2_ham1_p8_ihires_dshres(void) denise_cck++; } } -static void lts_aga_fm2_ham1_p8_ihires_dshres_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb0_p8_ihires_dshres(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb0_p8_ihires_dshres_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb1_p8_ihires_dshres(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb1_p8_ihires_dshres_filtered(void) +static void lts_aga_fm2_dpf1_p2_ishres_dshres_filtered(void) { lts_null(); } -static void lts_aga_fm2_n0_p2_ihires_dshres_spr(void) +static void lts_aga_fm2_ehb0_p2_ishres_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -56355,168 +87119,35 @@ 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; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl2_64(); - loaded_pix = getbpl2_64(); - } - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl2_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl2_64(); - } - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; - matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix1; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl2_64(); - loaded_pix = getbpl2_64(); - } - if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { - copybpl2_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl2_64(); - } - uae_u32 sv1 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv1 = svt; - } } - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; - matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl2_64(); - loaded_pix = getbpl2_64(); - } - if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { - copybpl2_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl2_64(); - } - uae_u32 sv2 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv2 = svt; - } } - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; - matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix3; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl2_64(); - loaded_pix = getbpl2_64(); - } - if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { - copybpl2_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl2_64(); - } - uae_u32 sv3 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv3 = svt; - } } - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - } - } dtbuf[h][0] = dpix_val0; - if (sv1) { - uae_u32 spix1 = denise_render_sprites2(pix1, sv1); - if (spix1) { - dpix_val1 = denise_colors.acolors[spix1]; - } - } dtbuf[h][1] = dpix_val1; - if (sv2) { - uae_u32 spix2 = denise_render_sprites2(pix2, sv2); - if (spix2) { - dpix_val2 = denise_colors.acolors[spix2]; - } - } dtbuf[h][2] = dpix_val2; - if (sv3) { - uae_u32 spix3 = denise_render_sprites2(pix3, sv3); - if (spix3) { - dpix_val3 = denise_colors.acolors[spix3]; - } - } dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -56573,11 +87204,11 @@ static void lts_aga_fm2_n0_p2_ihires_dshres_spr(void) denise_cck++; } } -static void lts_aga_fm2_n0_p2_ihires_dshres_spr_filtered(void) +static void lts_aga_fm2_ehb0_p2_ishres_dshres_filtered(void) { lts_null(); } -static void lts_aga_fm2_n1_p2_ihires_dshres_spr(void) +static void lts_aga_fm2_ehb1_p2_ishres_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -56588,212 +87219,35 @@ 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; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl2e_64(); - loaded_pix = getbpl2_64(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl2o_64(); - loaded_pix = getbpl2_64(); - } - 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] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { - copybpl2o_64(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl2_64(); - } - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } - } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; - matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix1; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl2e_64(); - loaded_pix = getbpl2_64(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl2o_64(); - loaded_pix = getbpl2_64(); - } - 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] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) { - copybpl2o_64(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl2_64(); - } - uae_u32 sv1 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv1 = svt; - } } - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; - matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl2e_64(); - loaded_pix = getbpl2_64(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl2o_64(); - loaded_pix = getbpl2_64(); - } - 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] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) { - copybpl2o_64(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl2_64(); - } - uae_u32 sv2 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv2 = svt; - } } - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; - matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix3; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl2e_64(); - loaded_pix = getbpl2_64(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl2o_64(); - loaded_pix = getbpl2_64(); - } - 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] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[1]) { - copybpl2o_64(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl2_64(); - } - uae_u32 sv3 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv3 = svt; - } } - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - } - } dtbuf[h][0] = dpix_val0; - if (sv1) { - uae_u32 spix1 = denise_render_sprites2(pix1, sv1); - if (spix1) { - dpix_val1 = denise_colors.acolors[spix1]; - } - } dtbuf[h][1] = dpix_val1; - if (sv2) { - uae_u32 spix2 = denise_render_sprites2(pix2, sv2); - if (spix2) { - dpix_val2 = denise_colors.acolors[spix2]; - } - } dtbuf[h][2] = dpix_val2; - if (sv3) { - uae_u32 spix3 = denise_render_sprites2(pix3, sv3); - if (spix3) { - dpix_val3 = denise_colors.acolors[spix3]; - } - } dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -56850,11 +87304,11 @@ static void lts_aga_fm2_n1_p2_ihires_dshres_spr(void) denise_cck++; } } -static void lts_aga_fm2_n1_p2_ihires_dshres_spr_filtered(void) +static void lts_aga_fm2_ehb1_p2_ishres_dshres_filtered(void) { lts_null(); } -static void lts_aga_fm2_dpf0_p2_ihires_dshres_spr(void) +static void lts_aga_fm2_ham0_p2_ishres_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -56865,188 +87319,35 @@ 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; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl2_64(); - loaded_pix = getbpl2_64(); - } - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl2_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl2_64(); - } - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; - matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - if (dpf_lookup_no[pix1]) { - val1 += dblpfofs[bpldualpf2of]; - } - val1 ^= bplcon4_denise_xor_val; - dpix_val1 = denise_colors.acolors[val1]; - } - last_bpl_pix = pix1; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl2_64(); - loaded_pix = getbpl2_64(); - } - if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { - copybpl2_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl2_64(); - } - uae_u32 sv1 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv1 = svt; - } } - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; - matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl2_64(); - loaded_pix = getbpl2_64(); - } - if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { - copybpl2_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl2_64(); - } - uae_u32 sv2 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv2 = svt; - } } - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; - matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - uae_u8 val3 = dpf_lookup[pix3]; - if (dpf_lookup_no[pix3]) { - val3 += dblpfofs[bpldualpf2of]; - } - val3 ^= bplcon4_denise_xor_val; - dpix_val3 = denise_colors.acolors[val3]; - } - last_bpl_pix = pix3; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl2_64(); - loaded_pix = getbpl2_64(); - } - if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { - copybpl2_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl2_64(); - } - uae_u32 sv3 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv3 = svt; - } } - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - } - } dtbuf[h][0] = dpix_val0; - if (sv1) { - uae_u32 spix1 = denise_render_sprites2(pix1, sv1); - if (spix1) { - dpix_val1 = denise_colors.acolors[spix1]; - } - } dtbuf[h][1] = dpix_val1; - if (sv2) { - uae_u32 spix2 = denise_render_sprites2(pix2, sv2); - if (spix2) { - dpix_val2 = denise_colors.acolors[spix2]; - } - } dtbuf[h][2] = dpix_val2; - if (sv3) { - uae_u32 spix3 = denise_render_sprites2(pix3, sv3); - if (spix3) { - dpix_val3 = denise_colors.acolors[spix3]; - } - } dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -57103,11 +87404,11 @@ static void lts_aga_fm2_dpf0_p2_ihires_dshres_spr(void) denise_cck++; } } -static void lts_aga_fm2_dpf0_p2_ihires_dshres_spr_filtered(void) +static void lts_aga_fm2_ham0_p2_ishres_dshres_filtered(void) { lts_null(); } -static void lts_aga_fm2_dpf1_p2_ihires_dshres_spr(void) +static void lts_aga_fm2_ham1_p2_ishres_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -57118,232 +87419,35 @@ 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; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl2e_64(); - loaded_pix = getbpl2_64(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl2o_64(); - loaded_pix = getbpl2_64(); - } - 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] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { - copybpl2o_64(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl2_64(); - } - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; - matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - if (dpf_lookup_no[pix1]) { - val1 += dblpfofs[bpldualpf2of]; - } - val1 ^= bplcon4_denise_xor_val; - dpix_val1 = denise_colors.acolors[val1]; - } - last_bpl_pix = pix1; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl2e_64(); - loaded_pix = getbpl2_64(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl2o_64(); - loaded_pix = getbpl2_64(); - } - 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] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) { - copybpl2o_64(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl2_64(); - } - uae_u32 sv1 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv1 = svt; - } } - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; - matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl2e_64(); - loaded_pix = getbpl2_64(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl2o_64(); - loaded_pix = getbpl2_64(); - } - 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] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) { - copybpl2o_64(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl2_64(); - } - uae_u32 sv2 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv2 = svt; - } } - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; - matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - uae_u8 val3 = dpf_lookup[pix3]; - if (dpf_lookup_no[pix3]) { - val3 += dblpfofs[bpldualpf2of]; - } - val3 ^= bplcon4_denise_xor_val; - dpix_val3 = denise_colors.acolors[val3]; - } - last_bpl_pix = pix3; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl2e_64(); - loaded_pix = getbpl2_64(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl2o_64(); - loaded_pix = getbpl2_64(); - } - 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] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[1]) { - copybpl2o_64(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl2_64(); - } - uae_u32 sv3 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv3 = svt; - } } - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - } - } dtbuf[h][0] = dpix_val0; - if (sv1) { - uae_u32 spix1 = denise_render_sprites2(pix1, sv1); - if (spix1) { - dpix_val1 = denise_colors.acolors[spix1]; - } - } dtbuf[h][1] = dpix_val1; - if (sv2) { - uae_u32 spix2 = denise_render_sprites2(pix2, sv2); - if (spix2) { - dpix_val2 = denise_colors.acolors[spix2]; - } - } dtbuf[h][2] = dpix_val2; - if (sv3) { - uae_u32 spix3 = denise_render_sprites2(pix3, sv3); - if (spix3) { - dpix_val3 = denise_colors.acolors[spix3]; - } - } dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -57400,59 +87504,111 @@ static void lts_aga_fm2_dpf1_p2_ihires_dshres_spr(void) denise_cck++; } } -static void lts_aga_fm2_dpf1_p2_ihires_dshres_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb0_p2_ihires_dshres_spr(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb0_p2_ihires_dshres_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb1_p2_ihires_dshres_spr(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb1_p2_ihires_dshres_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_ham0_p2_ihires_dshres_spr(void) -{ - lts_null(); -} -static void lts_aga_fm2_ham0_p2_ihires_dshres_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_ham1_p2_ihires_dshres_spr(void) -{ - lts_null(); -} -static void lts_aga_fm2_ham1_p2_ihires_dshres_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb0_p2_ihires_dshres_spr(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb0_p2_ihires_dshres_spr_filtered(void) +static void lts_aga_fm2_ham1_p2_ishres_dshres_filtered(void) { lts_null(); } -static void lts_aga_fm2_kehb1_p2_ihires_dshres_spr(void) +static void lts_aga_fm2_kehb0_p2_ishres_dshres(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 1; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 1; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; + dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm2_kehb1_p2_ihires_dshres_spr_filtered(void) +static void lts_aga_fm2_kehb0_p2_ishres_dshres_filtered(void) { lts_null(); } -static void lts_aga_fm2_n0_p4_ihires_dshres_spr(void) +static void lts_aga_fm2_kehb1_p2_ishres_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -57463,168 +87619,35 @@ 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; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4_64(); - loaded_pix = getbpl4_64(); - } - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl4_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4_64(); - } - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; - matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix1; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4_64(); - loaded_pix = getbpl4_64(); - } - if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { - copybpl4_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4_64(); - } - uae_u32 sv1 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv1 = svt; - } } - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; - matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4_64(); - loaded_pix = getbpl4_64(); } - if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { - copybpl4_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4_64(); - } - uae_u32 sv2 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv2 = svt; - } - } - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; - matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix3; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4_64(); - loaded_pix = getbpl4_64(); - } - if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { - copybpl4_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4_64(); } - uae_u32 sv3 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv3 = svt; - } - } - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - } - } dtbuf[h][0] = dpix_val0; - if (sv1) { - uae_u32 spix1 = denise_render_sprites2(pix1, sv1); - if (spix1) { - dpix_val1 = denise_colors.acolors[spix1]; - } - } dtbuf[h][1] = dpix_val1; - if (sv2) { - uae_u32 spix2 = denise_render_sprites2(pix2, sv2); - if (spix2) { - dpix_val2 = denise_colors.acolors[spix2]; - } - } dtbuf[h][2] = dpix_val2; - if (sv3) { - uae_u32 spix3 = denise_render_sprites2(pix3, sv3); - if (spix3) { - dpix_val3 = denise_colors.acolors[spix3]; - } - } dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -57681,11 +87704,11 @@ static void lts_aga_fm2_n0_p4_ihires_dshres_spr(void) denise_cck++; } } -static void lts_aga_fm2_n0_p4_ihires_dshres_spr_filtered(void) +static void lts_aga_fm2_kehb1_p2_ishres_dshres_filtered(void) { lts_null(); } -static void lts_aga_fm2_n1_p4_ihires_dshres_spr(void) +static void lts_aga_fm2_n0_p4_ishres_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -57698,7 +87721,6 @@ static void lts_aga_fm2_n1_p4_ihires_dshres_spr(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -57710,39 +87732,13 @@ static void lts_aga_fm2_n1_p4_ihires_dshres_spr(void) } last_bpl_pix = pix0; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4e_64(); - loaded_pix = getbpl4_64(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl4o_64(); - loaded_pix = getbpl4_64(); - } - 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] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { - copybpl4o_64(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl4_64(); - } - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } + shiftbpl4_64(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4_64(); } + loaded_pix = getbpl4_64(); loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; - matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { @@ -57754,39 +87750,13 @@ static void lts_aga_fm2_n1_p4_ihires_dshres_spr(void) } last_bpl_pix = pix1; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4e_64(); - loaded_pix = getbpl4_64(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl4o_64(); - loaded_pix = getbpl4_64(); - } - 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] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) { - copybpl4o_64(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl4_64(); - } - uae_u32 sv1 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv1 = svt; - } + shiftbpl4_64(); + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4_64(); } + loaded_pix = getbpl4_64(); loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; - matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { @@ -57798,39 +87768,13 @@ static void lts_aga_fm2_n1_p4_ihires_dshres_spr(void) } last_bpl_pix = pix2; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4e_64(); - loaded_pix = getbpl4_64(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl4o_64(); - loaded_pix = getbpl4_64(); - } - 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] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) { - copybpl4o_64(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl4_64(); - } - uae_u32 sv2 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv2 = svt; - } + shiftbpl4_64(); + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4_64(); } + loaded_pix = getbpl4_64(); loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; - matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { @@ -57842,66 +87786,17 @@ static void lts_aga_fm2_n1_p4_ihires_dshres_spr(void) } last_bpl_pix = pix3; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4e_64(); - loaded_pix = getbpl4_64(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl4o_64(); - loaded_pix = getbpl4_64(); - } - 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] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[1]) { - copybpl4o_64(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl4_64(); - } - uae_u32 sv3 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv3 = svt; - } + shiftbpl4_64(); + if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4_64(); } + loaded_pix = getbpl4_64(); loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - } - } dtbuf[h][0] = dpix_val0; - if (sv1) { - uae_u32 spix1 = denise_render_sprites2(pix1, sv1); - if (spix1) { - dpix_val1 = denise_colors.acolors[spix1]; - } - } dtbuf[h][1] = dpix_val1; - if (sv2) { - uae_u32 spix2 = denise_render_sprites2(pix2, sv2); - if (spix2) { - dpix_val2 = denise_colors.acolors[spix2]; - } - } dtbuf[h][2] = dpix_val2; - if (sv3) { - uae_u32 spix3 = denise_render_sprites2(pix3, sv3); - if (spix3) { - dpix_val3 = denise_colors.acolors[spix3]; - } - } dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -57958,11 +87853,11 @@ static void lts_aga_fm2_n1_p4_ihires_dshres_spr(void) denise_cck++; } } -static void lts_aga_fm2_n1_p4_ihires_dshres_spr_filtered(void) +static void lts_aga_fm2_n0_p4_ishres_dshres_filtered(void) { lts_null(); } -static void lts_aga_fm2_dpf0_p4_ihires_dshres_spr(void) +static void lts_aga_fm2_n1_p4_ishres_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -57975,7 +87870,6 @@ static void lts_aga_fm2_dpf0_p4_ihires_dshres_spr(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -57983,37 +87877,20 @@ static void lts_aga_fm2_dpf0_p4_ihires_dshres_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix0; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4_64(); - loaded_pix = getbpl4_64(); - } - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl4_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4_64(); + shiftbpl4_64(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4e_64(); } - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl4o_64(); } + loaded_pix = getbpl4_64(); loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; - matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { @@ -58021,37 +87898,20 @@ static void lts_aga_fm2_dpf0_p4_ihires_dshres_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix1 = loaded_pixs[1]; clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - if (dpf_lookup_no[pix1]) { - val1 += dblpfofs[bpldualpf2of]; - } - val1 ^= bplcon4_denise_xor_val; - dpix_val1 = denise_colors.acolors[val1]; + dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix1; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4_64(); - loaded_pix = getbpl4_64(); - } - if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { - copybpl4_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4_64(); + shiftbpl4_64(); + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4e_64(); } - uae_u32 sv1 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv1 = svt; - } + if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { + copybpl4o_64(); } + loaded_pix = getbpl4_64(); loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; - matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { @@ -58059,37 +87919,20 @@ static void lts_aga_fm2_dpf0_p4_ihires_dshres_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix2; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4_64(); - loaded_pix = getbpl4_64(); - } - if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { - copybpl4_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4_64(); + shiftbpl4_64(); + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4e_64(); } - uae_u32 sv2 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv2 = svt; - } + if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { + copybpl4o_64(); } + loaded_pix = getbpl4_64(); loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; - matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { @@ -58097,64 +87940,24 @@ static void lts_aga_fm2_dpf0_p4_ihires_dshres_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix3 = loaded_pixs[3]; clxdat |= bplcoltable[pix3]; - uae_u8 val3 = dpf_lookup[pix3]; - if (dpf_lookup_no[pix3]) { - val3 += dblpfofs[bpldualpf2of]; - } - val3 ^= bplcon4_denise_xor_val; - dpix_val3 = denise_colors.acolors[val3]; + dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix3; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4_64(); - loaded_pix = getbpl4_64(); - } - if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { - copybpl4_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4_64(); + shiftbpl4_64(); + if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4e_64(); } - uae_u32 sv3 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv3 = svt; - } + if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) { + copybpl4o_64(); } + loaded_pix = getbpl4_64(); loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - } - } dtbuf[h][0] = dpix_val0; - if (sv1) { - uae_u32 spix1 = denise_render_sprites2(pix1, sv1); - if (spix1) { - dpix_val1 = denise_colors.acolors[spix1]; - } - } dtbuf[h][1] = dpix_val1; - if (sv2) { - uae_u32 spix2 = denise_render_sprites2(pix2, sv2); - if (spix2) { - dpix_val2 = denise_colors.acolors[spix2]; - } - } dtbuf[h][2] = dpix_val2; - if (sv3) { - uae_u32 spix3 = denise_render_sprites2(pix3, sv3); - if (spix3) { - dpix_val3 = denise_colors.acolors[spix3]; - } - } dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -58211,11 +88014,11 @@ static void lts_aga_fm2_dpf0_p4_ihires_dshres_spr(void) denise_cck++; } } -static void lts_aga_fm2_dpf0_p4_ihires_dshres_spr_filtered(void) +static void lts_aga_fm2_n1_p4_ishres_dshres_filtered(void) { lts_null(); } -static void lts_aga_fm2_dpf1_p4_ihires_dshres_spr(void) +static void lts_aga_fm2_dpf0_p4_ishres_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -58226,58 +88029,31 @@ 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; - uae_u32 dpix_val0 = BLANK_COLOR; - if (!denise_blank_active) { - dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4e_64(); - loaded_pix = getbpl4_64(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl4o_64(); - loaded_pix = getbpl4_64(); - } - 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] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { - copybpl4o_64(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl4_64(); - } - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; } + last_bpl_pix = pix0; } + shiftbpl4_64(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4_64(); + } + loaded_pix = getbpl4_64(); loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; - matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { @@ -58294,39 +88070,13 @@ static void lts_aga_fm2_dpf1_p4_ihires_dshres_spr(void) } last_bpl_pix = pix1; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4e_64(); - loaded_pix = getbpl4_64(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl4o_64(); - loaded_pix = getbpl4_64(); - } - 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] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) { - copybpl4o_64(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl4_64(); - } - uae_u32 sv1 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv1 = svt; - } + shiftbpl4_64(); + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4_64(); } + loaded_pix = getbpl4_64(); loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; - matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { @@ -58343,39 +88093,13 @@ static void lts_aga_fm2_dpf1_p4_ihires_dshres_spr(void) } last_bpl_pix = pix2; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4e_64(); - loaded_pix = getbpl4_64(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl4o_64(); - loaded_pix = getbpl4_64(); - } - 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] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) { - copybpl4o_64(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl4_64(); - } - uae_u32 sv2 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv2 = svt; - } + shiftbpl4_64(); + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4_64(); } + loaded_pix = getbpl4_64(); loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; - matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { @@ -58392,66 +88116,17 @@ static void lts_aga_fm2_dpf1_p4_ihires_dshres_spr(void) } last_bpl_pix = pix3; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4e_64(); - loaded_pix = getbpl4_64(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl4o_64(); - loaded_pix = getbpl4_64(); - } - 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] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[1]) { - copybpl4o_64(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl4_64(); - } - uae_u32 sv3 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv3 = svt; - } + shiftbpl4_64(); + if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4_64(); } + loaded_pix = getbpl4_64(); loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - } - } dtbuf[h][0] = dpix_val0; - if (sv1) { - uae_u32 spix1 = denise_render_sprites2(pix1, sv1); - if (spix1) { - dpix_val1 = denise_colors.acolors[spix1]; - } - } dtbuf[h][1] = dpix_val1; - if (sv2) { - uae_u32 spix2 = denise_render_sprites2(pix2, sv2); - if (spix2) { - dpix_val2 = denise_colors.acolors[spix2]; - } - } dtbuf[h][2] = dpix_val2; - if (sv3) { - uae_u32 spix3 = denise_render_sprites2(pix3, sv3); - if (spix3) { - dpix_val3 = denise_colors.acolors[spix3]; - } - } dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -58508,59 +88183,11 @@ static void lts_aga_fm2_dpf1_p4_ihires_dshres_spr(void) denise_cck++; } } -static void lts_aga_fm2_dpf1_p4_ihires_dshres_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb0_p4_ihires_dshres_spr(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb0_p4_ihires_dshres_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb1_p4_ihires_dshres_spr(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb1_p4_ihires_dshres_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_ham0_p4_ihires_dshres_spr(void) -{ - lts_null(); -} -static void lts_aga_fm2_ham0_p4_ihires_dshres_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_ham1_p4_ihires_dshres_spr(void) -{ - lts_null(); -} -static void lts_aga_fm2_ham1_p4_ihires_dshres_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb0_p4_ihires_dshres_spr(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb0_p4_ihires_dshres_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb1_p4_ihires_dshres_spr(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb1_p4_ihires_dshres_spr_filtered(void) +static void lts_aga_fm2_dpf0_p4_ishres_dshres_filtered(void) { lts_null(); } -static void lts_aga_fm2_n0_p6_ihires_dshres_spr(void) +static void lts_aga_fm2_dpf1_p4_ishres_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -58573,7 +88200,6 @@ static void lts_aga_fm2_n0_p6_ihires_dshres_spr(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -58581,32 +88207,25 @@ static void lts_aga_fm2_n0_p6_ihires_dshres_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; } last_bpl_pix = pix0; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6_64(); - loaded_pix = getbpl6_64(); - } - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl6_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6_64(); + shiftbpl4_64(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4e_64(); } - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl4o_64(); } + loaded_pix = getbpl4_64(); loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; - matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { @@ -58614,32 +88233,25 @@ static void lts_aga_fm2_n0_p6_ihires_dshres_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix1 = loaded_pixs[1]; clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; + uae_u8 val1 = dpf_lookup[pix1]; + if (dpf_lookup_no[pix1]) { + val1 += dblpfofs[bpldualpf2of]; + } + val1 ^= bplcon4_denise_xor_val; + dpix_val1 = denise_colors.acolors[val1]; } last_bpl_pix = pix1; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6_64(); - loaded_pix = getbpl6_64(); - } - if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { - copybpl6_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6_64(); + shiftbpl4_64(); + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4e_64(); } - uae_u32 sv1 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv1 = svt; - } + if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { + copybpl4o_64(); } + loaded_pix = getbpl4_64(); loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; - matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { @@ -58647,32 +88259,25 @@ static void lts_aga_fm2_n0_p6_ihires_dshres_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; } last_bpl_pix = pix2; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6_64(); - loaded_pix = getbpl6_64(); - } - if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { - copybpl6_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6_64(); + shiftbpl4_64(); + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4e_64(); } - uae_u32 sv2 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv2 = svt; - } + if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { + copybpl4o_64(); } + loaded_pix = getbpl4_64(); loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; - matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { @@ -58680,59 +88285,29 @@ static void lts_aga_fm2_n0_p6_ihires_dshres_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix3 = loaded_pixs[3]; clxdat |= bplcoltable[pix3]; - dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; + uae_u8 val3 = dpf_lookup[pix3]; + if (dpf_lookup_no[pix3]) { + val3 += dblpfofs[bpldualpf2of]; + } + val3 ^= bplcon4_denise_xor_val; + dpix_val3 = denise_colors.acolors[val3]; } last_bpl_pix = pix3; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6_64(); - loaded_pix = getbpl6_64(); - } - if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { - copybpl6_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6_64(); + shiftbpl4_64(); + if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4e_64(); } - uae_u32 sv3 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv3 = svt; - } + if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) { + copybpl4o_64(); } + loaded_pix = getbpl4_64(); loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - } - } dtbuf[h][0] = dpix_val0; - if (sv1) { - uae_u32 spix1 = denise_render_sprites2(pix1, sv1); - if (spix1) { - dpix_val1 = denise_colors.acolors[spix1]; - } - } dtbuf[h][1] = dpix_val1; - if (sv2) { - uae_u32 spix2 = denise_render_sprites2(pix2, sv2); - if (spix2) { - dpix_val2 = denise_colors.acolors[spix2]; - } - } dtbuf[h][2] = dpix_val2; - if (sv3) { - uae_u32 spix3 = denise_render_sprites2(pix3, sv3); - if (spix3) { - dpix_val3 = denise_colors.acolors[spix3]; - } - } dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -58789,11 +88364,11 @@ static void lts_aga_fm2_n0_p6_ihires_dshres_spr(void) denise_cck++; } } -static void lts_aga_fm2_n0_p6_ihires_dshres_spr_filtered(void) +static void lts_aga_fm2_dpf1_p4_ishres_dshres_filtered(void) { lts_null(); } -static void lts_aga_fm2_n1_p6_ihires_dshres_spr(void) +static void lts_aga_fm2_ehb0_p4_ishres_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -58804,212 +88379,35 @@ 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; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6e_64(); - loaded_pix = getbpl6_64(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl6o_64(); - loaded_pix = getbpl6_64(); - } - 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] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { - copybpl6o_64(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl6_64(); - } - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; - matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix1; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6e_64(); - loaded_pix = getbpl6_64(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl6o_64(); - loaded_pix = getbpl6_64(); - } - 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] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) { - copybpl6o_64(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl6_64(); - } - uae_u32 sv1 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv1 = svt; - } } - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; - matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; - uae_u32 dpix_val2 = BLANK_COLOR; - if (!denise_blank_active) { - dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6e_64(); - loaded_pix = getbpl6_64(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl6o_64(); - loaded_pix = getbpl6_64(); - } - 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] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) { - copybpl6o_64(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl6_64(); - } - uae_u32 sv2 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv2 = svt; - } - } - loaded_pixs[2] = loaded_pix; - internal_pixel_cnt += 1; - matchsprites_aga(cnt + 3); - uae_u8 pix3 = 0; - uae_u32 dpix_val3 = BLANK_COLOR; - if (!denise_blank_active) { - dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix3; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6e_64(); - loaded_pix = getbpl6_64(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl6o_64(); - loaded_pix = getbpl6_64(); - } - 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] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[1]) { - copybpl6o_64(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl6_64(); - } - uae_u32 sv3 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv3 = svt; - } + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; } - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - } - } dtbuf[h][0] = dpix_val0; - if (sv1) { - uae_u32 spix1 = denise_render_sprites2(pix1, sv1); - if (spix1) { - dpix_val1 = denise_colors.acolors[spix1]; - } - } dtbuf[h][1] = dpix_val1; - if (sv2) { - uae_u32 spix2 = denise_render_sprites2(pix2, sv2); - if (spix2) { - dpix_val2 = denise_colors.acolors[spix2]; - } - } dtbuf[h][2] = dpix_val2; - if (sv3) { - uae_u32 spix3 = denise_render_sprites2(pix3, sv3); - if (spix3) { - dpix_val3 = denise_colors.acolors[spix3]; - } - } dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -59066,11 +88464,11 @@ static void lts_aga_fm2_n1_p6_ihires_dshres_spr(void) denise_cck++; } } -static void lts_aga_fm2_n1_p6_ihires_dshres_spr_filtered(void) +static void lts_aga_fm2_ehb0_p4_ishres_dshres_filtered(void) { lts_null(); } -static void lts_aga_fm2_dpf0_p6_ihires_dshres_spr(void) +static void lts_aga_fm2_ehb1_p4_ishres_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -59081,188 +88479,35 @@ 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; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6_64(); - loaded_pix = getbpl6_64(); - } - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl6_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6_64(); - } - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; - matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - if (dpf_lookup_no[pix1]) { - val1 += dblpfofs[bpldualpf2of]; - } - val1 ^= bplcon4_denise_xor_val; - dpix_val1 = denise_colors.acolors[val1]; - } - last_bpl_pix = pix1; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6_64(); - loaded_pix = getbpl6_64(); - } - if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { - copybpl6_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6_64(); - } - uae_u32 sv1 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv1 = svt; - } } - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; - matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6_64(); - loaded_pix = getbpl6_64(); - } - if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { - copybpl6_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6_64(); - } - uae_u32 sv2 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv2 = svt; - } } - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; - matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - uae_u8 val3 = dpf_lookup[pix3]; - if (dpf_lookup_no[pix3]) { - val3 += dblpfofs[bpldualpf2of]; - } - val3 ^= bplcon4_denise_xor_val; - dpix_val3 = denise_colors.acolors[val3]; - } - last_bpl_pix = pix3; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6_64(); - loaded_pix = getbpl6_64(); - } - if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { - copybpl6_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6_64(); - } - uae_u32 sv3 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv3 = svt; - } } - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - } - } dtbuf[h][0] = dpix_val0; - if (sv1) { - uae_u32 spix1 = denise_render_sprites2(pix1, sv1); - if (spix1) { - dpix_val1 = denise_colors.acolors[spix1]; - } - } dtbuf[h][1] = dpix_val1; - if (sv2) { - uae_u32 spix2 = denise_render_sprites2(pix2, sv2); - if (spix2) { - dpix_val2 = denise_colors.acolors[spix2]; - } - } dtbuf[h][2] = dpix_val2; - if (sv3) { - uae_u32 spix3 = denise_render_sprites2(pix3, sv3); - if (spix3) { - dpix_val3 = denise_colors.acolors[spix3]; - } - } dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -59319,11 +88564,11 @@ static void lts_aga_fm2_dpf0_p6_ihires_dshres_spr(void) denise_cck++; } } -static void lts_aga_fm2_dpf0_p6_ihires_dshres_spr_filtered(void) +static void lts_aga_fm2_ehb1_p4_ishres_dshres_filtered(void) { lts_null(); } -static void lts_aga_fm2_dpf1_p6_ihires_dshres_spr(void) +static void lts_aga_fm2_ham0_p4_ishres_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -59334,232 +88579,35 @@ 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; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6e_64(); - loaded_pix = getbpl6_64(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl6o_64(); - loaded_pix = getbpl6_64(); - } - 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] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { - copybpl6o_64(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl6_64(); - } - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; - matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - if (dpf_lookup_no[pix1]) { - val1 += dblpfofs[bpldualpf2of]; - } - val1 ^= bplcon4_denise_xor_val; - dpix_val1 = denise_colors.acolors[val1]; - } - last_bpl_pix = pix1; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6e_64(); - loaded_pix = getbpl6_64(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl6o_64(); - loaded_pix = getbpl6_64(); - } - 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] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) { - copybpl6o_64(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl6_64(); - } - uae_u32 sv1 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv1 = svt; - } } - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; - matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6e_64(); - loaded_pix = getbpl6_64(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl6o_64(); - loaded_pix = getbpl6_64(); - } - 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] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) { - copybpl6o_64(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl6_64(); - } - uae_u32 sv2 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv2 = svt; - } } - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; - matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - uae_u8 val3 = dpf_lookup[pix3]; - if (dpf_lookup_no[pix3]) { - val3 += dblpfofs[bpldualpf2of]; - } - val3 ^= bplcon4_denise_xor_val; - dpix_val3 = denise_colors.acolors[val3]; - } - last_bpl_pix = pix3; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6e_64(); - loaded_pix = getbpl6_64(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl6o_64(); - loaded_pix = getbpl6_64(); - } - 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] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[1]) { - copybpl6o_64(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl6_64(); - } - uae_u32 sv3 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv3 = svt; - } } - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - } - } dtbuf[h][0] = dpix_val0; - if (sv1) { - uae_u32 spix1 = denise_render_sprites2(pix1, sv1); - if (spix1) { - dpix_val1 = denise_colors.acolors[spix1]; - } - } dtbuf[h][1] = dpix_val1; - if (sv2) { - uae_u32 spix2 = denise_render_sprites2(pix2, sv2); - if (spix2) { - dpix_val2 = denise_colors.acolors[spix2]; - } - } dtbuf[h][2] = dpix_val2; - if (sv3) { - uae_u32 spix3 = denise_render_sprites2(pix3, sv3); - if (spix3) { - dpix_val3 = denise_colors.acolors[spix3]; - } - } dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -59616,11 +88664,11 @@ static void lts_aga_fm2_dpf1_p6_ihires_dshres_spr(void) denise_cck++; } } -static void lts_aga_fm2_dpf1_p6_ihires_dshres_spr_filtered(void) +static void lts_aga_fm2_ham0_p4_ishres_dshres_filtered(void) { lts_null(); } -static void lts_aga_fm2_ehb0_p6_ihires_dshres_spr(void) +static void lts_aga_fm2_ham1_p4_ishres_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -59631,192 +88679,135 @@ 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; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - pix0 ^= bplcon4_denise_xor_val; - if (!(pix0 & 0x20)) { - dpix_val0 = denise_colors.acolors[pix0]; - } else { - uae_u32 v = (denise_colors.color_regs_aga[pix0 & 0x1f] >> 1) & 0x7f7f7f; - dpix_val0 = CONVERT_RGB(v); - } - } - last_bpl_pix = pix0; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6_64(); - loaded_pix = getbpl6_64(); + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; } - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl6_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6_64(); + internal_pixel_cnt += 1; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; } - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 1; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; + dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); } + #endif + *buf1++ = t3; + *buf2++ = t3; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_ham1_p4_ishres_dshres_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_kehb0_p4_ishres_dshres(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; - matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - pix1 ^= bplcon4_denise_xor_val; - if (!(pix1 & 0x20)) { - dpix_val1 = denise_colors.acolors[pix1]; - } else { - uae_u32 v = (denise_colors.color_regs_aga[pix1 & 0x1f] >> 1) & 0x7f7f7f; - dpix_val1 = CONVERT_RGB(v); - } - } - last_bpl_pix = pix1; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6_64(); - loaded_pix = getbpl6_64(); - } - if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { - copybpl6_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6_64(); - } - uae_u32 sv1 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv1 = svt; - } } - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; - matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - pix2 ^= bplcon4_denise_xor_val; - if (!(pix2 & 0x20)) { - dpix_val2 = denise_colors.acolors[pix2]; - } else { - uae_u32 v = (denise_colors.color_regs_aga[pix2 & 0x1f] >> 1) & 0x7f7f7f; - dpix_val2 = CONVERT_RGB(v); - } - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6_64(); - loaded_pix = getbpl6_64(); - } - if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { - copybpl6_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6_64(); - } - uae_u32 sv2 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv2 = svt; - } } - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; - matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - pix3 ^= bplcon4_denise_xor_val; - if (!(pix3 & 0x20)) { - dpix_val3 = denise_colors.acolors[pix3]; - } else { - uae_u32 v = (denise_colors.color_regs_aga[pix3 & 0x1f] >> 1) & 0x7f7f7f; - dpix_val3 = CONVERT_RGB(v); - } - } - last_bpl_pix = pix3; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6_64(); - loaded_pix = getbpl6_64(); - } - if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { - copybpl6_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6_64(); - } - uae_u32 sv3 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv3 = svt; - } } - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - } - } dtbuf[h][0] = dpix_val0; - if (sv1) { - uae_u32 spix1 = denise_render_sprites2(pix1, sv1); - if (spix1) { - dpix_val1 = denise_colors.acolors[spix1]; - } - } dtbuf[h][1] = dpix_val1; - if (sv2) { - uae_u32 spix2 = denise_render_sprites2(pix2, sv2); - if (spix2) { - dpix_val2 = denise_colors.acolors[spix2]; - } - } dtbuf[h][2] = dpix_val2; - if (sv3) { - uae_u32 spix3 = denise_render_sprites2(pix3, sv3); - if (spix3) { - dpix_val3 = denise_colors.acolors[spix3]; - } - } dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -59873,11 +88864,11 @@ static void lts_aga_fm2_ehb0_p6_ihires_dshres_spr(void) denise_cck++; } } -static void lts_aga_fm2_ehb0_p6_ihires_dshres_spr_filtered(void) +static void lts_aga_fm2_kehb0_p4_ishres_dshres_filtered(void) { lts_null(); } -static void lts_aga_fm2_ehb1_p6_ihires_dshres_spr(void) +static void lts_aga_fm2_kehb1_p4_ishres_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -59888,236 +88879,35 @@ 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; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - pix0 ^= bplcon4_denise_xor_val; - if (!(pix0 & 0x20)) { - dpix_val0 = denise_colors.acolors[pix0]; - } else { - uae_u32 v = (denise_colors.color_regs_aga[pix0 & 0x1f] >> 1) & 0x7f7f7f; - dpix_val0 = CONVERT_RGB(v); - } - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6e_64(); - loaded_pix = getbpl6_64(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl6o_64(); - loaded_pix = getbpl6_64(); - } - 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] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { - copybpl6o_64(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl6_64(); - } - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; - matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - pix1 ^= bplcon4_denise_xor_val; - if (!(pix1 & 0x20)) { - dpix_val1 = denise_colors.acolors[pix1]; - } else { - uae_u32 v = (denise_colors.color_regs_aga[pix1 & 0x1f] >> 1) & 0x7f7f7f; - dpix_val1 = CONVERT_RGB(v); - } - } - last_bpl_pix = pix1; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6e_64(); - loaded_pix = getbpl6_64(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl6o_64(); - loaded_pix = getbpl6_64(); - } - 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] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) { - copybpl6o_64(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl6_64(); - } - uae_u32 sv1 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv1 = svt; - } } - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; - matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - pix2 ^= bplcon4_denise_xor_val; - if (!(pix2 & 0x20)) { - dpix_val2 = denise_colors.acolors[pix2]; - } else { - uae_u32 v = (denise_colors.color_regs_aga[pix2 & 0x1f] >> 1) & 0x7f7f7f; - dpix_val2 = CONVERT_RGB(v); - } - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6e_64(); - loaded_pix = getbpl6_64(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl6o_64(); - loaded_pix = getbpl6_64(); - } - 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] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) { - copybpl6o_64(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl6_64(); - } - uae_u32 sv2 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv2 = svt; - } - } - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; - matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - pix3 ^= bplcon4_denise_xor_val; - if (!(pix3 & 0x20)) { - dpix_val3 = denise_colors.acolors[pix3]; - } else { - uae_u32 v = (denise_colors.color_regs_aga[pix3 & 0x1f] >> 1) & 0x7f7f7f; - dpix_val3 = CONVERT_RGB(v); - } - } - last_bpl_pix = pix3; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6e_64(); - loaded_pix = getbpl6_64(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl6o_64(); - loaded_pix = getbpl6_64(); - } - 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] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[1]) { - copybpl6o_64(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl6_64(); - } - uae_u32 sv3 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv3 = svt; - } } - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - } - } dtbuf[h][0] = dpix_val0; - if (sv1) { - uae_u32 spix1 = denise_render_sprites2(pix1, sv1); - if (spix1) { - dpix_val1 = denise_colors.acolors[spix1]; - } - } dtbuf[h][1] = dpix_val1; - if (sv2) { - uae_u32 spix2 = denise_render_sprites2(pix2, sv2); - if (spix2) { - dpix_val2 = denise_colors.acolors[spix2]; - } - } dtbuf[h][2] = dpix_val2; - if (sv3) { - uae_u32 spix3 = denise_render_sprites2(pix3, sv3); - if (spix3) { - dpix_val3 = denise_colors.acolors[spix3]; - } - } dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -60174,11 +88964,11 @@ static void lts_aga_fm2_ehb1_p6_ihires_dshres_spr(void) denise_cck++; } } -static void lts_aga_fm2_ehb1_p6_ihires_dshres_spr_filtered(void) +static void lts_aga_fm2_kehb1_p4_ishres_dshres_filtered(void) { lts_null(); } -static void lts_aga_fm2_ham0_p6_ihires_dshres_spr(void) +static void lts_aga_fm2_n0_p6_ishres_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -60191,7 +88981,6 @@ static void lts_aga_fm2_ham0_p6_ihires_dshres_spr(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -60199,32 +88988,17 @@ static void lts_aga_fm2_ham0_p6_ihires_dshres_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - dpix_val0 = decode_ham_pixel_aga(pix0); + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix0; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6_64(); - loaded_pix = getbpl6_64(); - } - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + shiftbpl6_64(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { copybpl6_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6_64(); - } - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } } + loaded_pix = getbpl6_64(); loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; - matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { @@ -60232,32 +89006,17 @@ static void lts_aga_fm2_ham0_p6_ihires_dshres_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix1 = loaded_pixs[1]; clxdat |= bplcoltable[pix1]; - dpix_val1 = decode_ham_pixel_aga(pix1); + dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix1; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6_64(); - loaded_pix = getbpl6_64(); - } - if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { + shiftbpl6_64(); + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { copybpl6_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6_64(); - } - uae_u32 sv1 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv1 = svt; - } } + loaded_pix = getbpl6_64(); loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; - matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { @@ -60265,32 +89024,17 @@ static void lts_aga_fm2_ham0_p6_ihires_dshres_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - dpix_val2 = decode_ham_pixel_aga(pix2); + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix2; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6_64(); - loaded_pix = getbpl6_64(); - } - if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { + shiftbpl6_64(); + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { copybpl6_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6_64(); - } - uae_u32 sv2 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv2 = svt; - } } + loaded_pix = getbpl6_64(); loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; - matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { @@ -60298,59 +89042,21 @@ static void lts_aga_fm2_ham0_p6_ihires_dshres_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix3 = loaded_pixs[3]; clxdat |= bplcoltable[pix3]; - dpix_val3 = decode_ham_pixel_aga(pix3); + dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix3; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6_64(); - loaded_pix = getbpl6_64(); - } - if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { + shiftbpl6_64(); + if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { copybpl6_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6_64(); - } - uae_u32 sv3 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv3 = svt; - } } + loaded_pix = getbpl6_64(); loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - } - } dtbuf[h][0] = dpix_val0; - if (sv1) { - uae_u32 spix1 = denise_render_sprites2(pix1, sv1); - if (spix1) { - dpix_val1 = denise_colors.acolors[spix1]; - } - } dtbuf[h][1] = dpix_val1; - if (sv2) { - uae_u32 spix2 = denise_render_sprites2(pix2, sv2); - if (spix2) { - dpix_val2 = denise_colors.acolors[spix2]; - } - } dtbuf[h][2] = dpix_val2; - if (sv3) { - uae_u32 spix3 = denise_render_sprites2(pix3, sv3); - if (spix3) { - dpix_val3 = denise_colors.acolors[spix3]; - } - } dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -60407,11 +89113,11 @@ static void lts_aga_fm2_ham0_p6_ihires_dshres_spr(void) denise_cck++; } } -static void lts_aga_fm2_ham0_p6_ihires_dshres_spr_filtered(void) +static void lts_aga_fm2_n0_p6_ishres_dshres_filtered(void) { lts_null(); } -static void lts_aga_fm2_ham1_p6_ihires_dshres_spr(void) +static void lts_aga_fm2_n1_p6_ishres_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -60424,7 +89130,6 @@ static void lts_aga_fm2_ham1_p6_ihires_dshres_spr(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -60432,87 +89137,41 @@ static void lts_aga_fm2_ham1_p6_ihires_dshres_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - dpix_val0 = decode_ham_pixel_aga(pix0); + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix0; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6e_64(); - loaded_pix = getbpl6_64(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl6o_64(); - loaded_pix = getbpl6_64(); - } - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + shiftbpl6_64(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { copybpl6e_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6_64(); } - if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { copybpl6o_64(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl6_64(); - } - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } } + loaded_pix = getbpl6_64(); loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; - matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; if (denise_hdiw && bpl1dat_trigger) { pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - dpix_val1 = decode_ham_pixel_aga(pix1); - } - last_bpl_pix = pix1; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6e_64(); - loaded_pix = getbpl6_64(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl6o_64(); - loaded_pix = getbpl6_64(); + clxdat |= bplcoltable[pix1]; + dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; + } + last_bpl_pix = pix1; } - if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { + shiftbpl6_64(); + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { copybpl6e_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6_64(); } - if (bpldat_copy[1] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) { + if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { copybpl6o_64(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl6_64(); - } - uae_u32 sv1 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv1 = svt; - } } + loaded_pix = getbpl6_64(); loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; - matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { @@ -60520,43 +89179,20 @@ static void lts_aga_fm2_ham1_p6_ihires_dshres_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - dpix_val2 = decode_ham_pixel_aga(pix2); + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix2; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6e_64(); - loaded_pix = getbpl6_64(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl6o_64(); - loaded_pix = getbpl6_64(); - } - if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { + shiftbpl6_64(); + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { copybpl6e_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6_64(); } - if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) { + if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { copybpl6o_64(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl6_64(); - } - uae_u32 sv2 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv2 = svt; - } } + loaded_pix = getbpl6_64(); loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; - matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { @@ -60564,70 +89200,24 @@ static void lts_aga_fm2_ham1_p6_ihires_dshres_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix3 = loaded_pixs[3]; clxdat |= bplcoltable[pix3]; - dpix_val3 = decode_ham_pixel_aga(pix3); + dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix3; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6e_64(); - loaded_pix = getbpl6_64(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl6o_64(); - loaded_pix = getbpl6_64(); - } - if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { + shiftbpl6_64(); + if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { copybpl6e_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6_64(); } - if (bpldat_copy[1] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[1]) { + if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) { copybpl6o_64(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl6_64(); - } - uae_u32 sv3 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv3 = svt; - } } + loaded_pix = getbpl6_64(); loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - } - } dtbuf[h][0] = dpix_val0; - if (sv1) { - uae_u32 spix1 = denise_render_sprites2(pix1, sv1); - if (spix1) { - dpix_val1 = denise_colors.acolors[spix1]; - } - } dtbuf[h][1] = dpix_val1; - if (sv2) { - uae_u32 spix2 = denise_render_sprites2(pix2, sv2); - if (spix2) { - dpix_val2 = denise_colors.acolors[spix2]; - } - } dtbuf[h][2] = dpix_val2; - if (sv3) { - uae_u32 spix3 = denise_render_sprites2(pix3, sv3); - if (spix3) { - dpix_val3 = denise_colors.acolors[spix3]; - } - } dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -60684,11 +89274,11 @@ static void lts_aga_fm2_ham1_p6_ihires_dshres_spr(void) denise_cck++; } } -static void lts_aga_fm2_ham1_p6_ihires_dshres_spr_filtered(void) +static void lts_aga_fm2_n1_p6_ishres_dshres_filtered(void) { lts_null(); } -static void lts_aga_fm2_kehb0_p6_ihires_dshres_spr(void) +static void lts_aga_fm2_dpf0_p6_ishres_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -60701,7 +89291,6 @@ static void lts_aga_fm2_kehb0_p6_ihires_dshres_spr(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -60709,33 +89298,22 @@ static void lts_aga_fm2_kehb0_p6_ihires_dshres_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - pix0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[pix0 & 31]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; } last_bpl_pix = pix0; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6_64(); - loaded_pix = getbpl6_64(); - } - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + shiftbpl6_64(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { copybpl6_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6_64(); - } - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } } + loaded_pix = getbpl6_64(); loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; - matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { @@ -60743,33 +89321,22 @@ static void lts_aga_fm2_kehb0_p6_ihires_dshres_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix1 = loaded_pixs[1]; clxdat |= bplcoltable[pix1]; - pix1 ^= bplcon4_denise_xor_val; - dpix_val1 = denise_colors.acolors[pix1 & 31]; + uae_u8 val1 = dpf_lookup[pix1]; + if (dpf_lookup_no[pix1]) { + val1 += dblpfofs[bpldualpf2of]; + } + val1 ^= bplcon4_denise_xor_val; + dpix_val1 = denise_colors.acolors[val1]; } last_bpl_pix = pix1; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6_64(); - loaded_pix = getbpl6_64(); - } - if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { + shiftbpl6_64(); + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { copybpl6_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6_64(); - } - uae_u32 sv1 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv1 = svt; - } } + loaded_pix = getbpl6_64(); loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; - matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { @@ -60777,33 +89344,22 @@ static void lts_aga_fm2_kehb0_p6_ihires_dshres_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - pix2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[pix2 & 31]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; } last_bpl_pix = pix2; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6_64(); - loaded_pix = getbpl6_64(); - } - if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { + shiftbpl6_64(); + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { copybpl6_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6_64(); - } - uae_u32 sv2 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv2 = svt; - } } + loaded_pix = getbpl6_64(); loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; - matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { @@ -60811,60 +89367,26 @@ static void lts_aga_fm2_kehb0_p6_ihires_dshres_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix3 = loaded_pixs[3]; clxdat |= bplcoltable[pix3]; - pix3 ^= bplcon4_denise_xor_val; - dpix_val3 = denise_colors.acolors[pix3 & 31]; + uae_u8 val3 = dpf_lookup[pix3]; + if (dpf_lookup_no[pix3]) { + val3 += dblpfofs[bpldualpf2of]; + } + val3 ^= bplcon4_denise_xor_val; + dpix_val3 = denise_colors.acolors[val3]; } last_bpl_pix = pix3; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6_64(); - loaded_pix = getbpl6_64(); - } - if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { + shiftbpl6_64(); + if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { copybpl6_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6_64(); - } - uae_u32 sv3 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv3 = svt; - } } + loaded_pix = getbpl6_64(); loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - } - } dtbuf[h][0] = dpix_val0; - if (sv1) { - uae_u32 spix1 = denise_render_sprites2(pix1, sv1); - if (spix1) { - dpix_val1 = denise_colors.acolors[spix1]; - } - } dtbuf[h][1] = dpix_val1; - if (sv2) { - uae_u32 spix2 = denise_render_sprites2(pix2, sv2); - if (spix2) { - dpix_val2 = denise_colors.acolors[spix2]; - } - } dtbuf[h][2] = dpix_val2; - if (sv3) { - uae_u32 spix3 = denise_render_sprites2(pix3, sv3); - if (spix3) { - dpix_val3 = denise_colors.acolors[spix3]; - } - } dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -60921,11 +89443,11 @@ static void lts_aga_fm2_kehb0_p6_ihires_dshres_spr(void) denise_cck++; } } -static void lts_aga_fm2_kehb0_p6_ihires_dshres_spr_filtered(void) +static void lts_aga_fm2_dpf0_p6_ishres_dshres_filtered(void) { lts_null(); } -static void lts_aga_fm2_kehb1_p6_ihires_dshres_spr(void) +static void lts_aga_fm2_dpf1_p6_ishres_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -60938,7 +89460,6 @@ static void lts_aga_fm2_kehb1_p6_ihires_dshres_spr(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -60946,44 +89467,25 @@ static void lts_aga_fm2_kehb1_p6_ihires_dshres_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - pix0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[pix0 & 31]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; } last_bpl_pix = pix0; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6e_64(); - loaded_pix = getbpl6_64(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl6o_64(); - loaded_pix = getbpl6_64(); - } - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + shiftbpl6_64(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { copybpl6e_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6_64(); } - if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { copybpl6o_64(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl6_64(); - } - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } } + loaded_pix = getbpl6_64(); loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; - matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { @@ -60991,44 +89493,25 @@ static void lts_aga_fm2_kehb1_p6_ihires_dshres_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix1 = loaded_pixs[1]; clxdat |= bplcoltable[pix1]; - pix1 ^= bplcon4_denise_xor_val; - dpix_val1 = denise_colors.acolors[pix1 & 31]; + uae_u8 val1 = dpf_lookup[pix1]; + if (dpf_lookup_no[pix1]) { + val1 += dblpfofs[bpldualpf2of]; + } + val1 ^= bplcon4_denise_xor_val; + dpix_val1 = denise_colors.acolors[val1]; } last_bpl_pix = pix1; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6e_64(); - loaded_pix = getbpl6_64(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl6o_64(); - loaded_pix = getbpl6_64(); - } - if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { + shiftbpl6_64(); + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { copybpl6e_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6_64(); } - if (bpldat_copy[1] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) { + if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { copybpl6o_64(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl6_64(); - } - uae_u32 sv1 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv1 = svt; - } } + loaded_pix = getbpl6_64(); loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; - matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { @@ -61036,44 +89519,25 @@ static void lts_aga_fm2_kehb1_p6_ihires_dshres_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - pix2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[pix2 & 31]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; } last_bpl_pix = pix2; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6e_64(); - loaded_pix = getbpl6_64(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl6o_64(); - loaded_pix = getbpl6_64(); - } - if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { + shiftbpl6_64(); + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { copybpl6e_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6_64(); } - if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) { + if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { copybpl6o_64(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl6_64(); - } - uae_u32 sv2 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv2 = svt; - } } + loaded_pix = getbpl6_64(); loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; - matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { @@ -61081,71 +89545,29 @@ static void lts_aga_fm2_kehb1_p6_ihires_dshres_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix3 = loaded_pixs[3]; clxdat |= bplcoltable[pix3]; - pix3 ^= bplcon4_denise_xor_val; - dpix_val3 = denise_colors.acolors[pix3 & 31]; + uae_u8 val3 = dpf_lookup[pix3]; + if (dpf_lookup_no[pix3]) { + val3 += dblpfofs[bpldualpf2of]; + } + val3 ^= bplcon4_denise_xor_val; + dpix_val3 = denise_colors.acolors[val3]; } last_bpl_pix = pix3; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl6e_64(); - loaded_pix = getbpl6_64(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl6o_64(); - loaded_pix = getbpl6_64(); - } - if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { + shiftbpl6_64(); + if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { copybpl6e_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl6_64(); } - if (bpldat_copy[1] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[1]) { + if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) { copybpl6o_64(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl6_64(); - } - uae_u32 sv3 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv3 = svt; - } } + loaded_pix = getbpl6_64(); loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - } - } dtbuf[h][0] = dpix_val0; - if (sv1) { - uae_u32 spix1 = denise_render_sprites2(pix1, sv1); - if (spix1) { - dpix_val1 = denise_colors.acolors[spix1]; - } - } dtbuf[h][1] = dpix_val1; - if (sv2) { - uae_u32 spix2 = denise_render_sprites2(pix2, sv2); - if (spix2) { - dpix_val2 = denise_colors.acolors[spix2]; - } - } dtbuf[h][2] = dpix_val2; - if (sv3) { - uae_u32 spix3 = denise_render_sprites2(pix3, sv3); - if (spix3) { - dpix_val3 = denise_colors.acolors[spix3]; - } - } dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -61202,11 +89624,11 @@ static void lts_aga_fm2_kehb1_p6_ihires_dshres_spr(void) denise_cck++; } } -static void lts_aga_fm2_kehb1_p6_ihires_dshres_spr_filtered(void) +static void lts_aga_fm2_dpf1_p6_ishres_dshres_filtered(void) { lts_null(); } -static void lts_aga_fm2_n0_p8_ihires_dshres_spr(void) +static void lts_aga_fm2_ehb0_p6_ishres_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -61219,7 +89641,6 @@ static void lts_aga_fm2_n0_p8_ihires_dshres_spr(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -61227,32 +89648,23 @@ static void lts_aga_fm2_n0_p8_ihires_dshres_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + pix0 ^= bplcon4_denise_xor_val; + if (!(pix0 & 0x20)) { + dpix_val0 = denise_colors.acolors[pix0]; + } else { + uae_u32 v = (denise_colors.color_regs_aga[pix0 & 0x1f] >> 1) & 0x7f7f7f; + dpix_val0 = CONVERT_RGB(v); + } } last_bpl_pix = pix0; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8_64(); - loaded_pix = getbpl8_64(); - } - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_64(); - } - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } + shiftbpl6_64(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6_64(); } + loaded_pix = getbpl6_64(); loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; - matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { @@ -61260,32 +89672,23 @@ static void lts_aga_fm2_n0_p8_ihires_dshres_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix1 = loaded_pixs[1]; clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; + pix1 ^= bplcon4_denise_xor_val; + if (!(pix1 & 0x20)) { + dpix_val1 = denise_colors.acolors[pix1]; + } else { + uae_u32 v = (denise_colors.color_regs_aga[pix1 & 0x1f] >> 1) & 0x7f7f7f; + dpix_val1 = CONVERT_RGB(v); + } } last_bpl_pix = pix1; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8_64(); - loaded_pix = getbpl8_64(); - } - if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_64(); - } - uae_u32 sv1 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv1 = svt; - } + shiftbpl6_64(); + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6_64(); } + loaded_pix = getbpl6_64(); loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; - matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { @@ -61293,32 +89696,23 @@ static void lts_aga_fm2_n0_p8_ihires_dshres_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + pix2 ^= bplcon4_denise_xor_val; + if (!(pix2 & 0x20)) { + dpix_val2 = denise_colors.acolors[pix2]; + } else { + uae_u32 v = (denise_colors.color_regs_aga[pix2 & 0x1f] >> 1) & 0x7f7f7f; + dpix_val2 = CONVERT_RGB(v); + } } last_bpl_pix = pix2; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8_64(); - loaded_pix = getbpl8_64(); - } - if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_64(); - } - uae_u32 sv2 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv2 = svt; - } + shiftbpl6_64(); + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6_64(); } + loaded_pix = getbpl6_64(); loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; - matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { @@ -61326,59 +89720,27 @@ static void lts_aga_fm2_n0_p8_ihires_dshres_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix3 = loaded_pixs[3]; clxdat |= bplcoltable[pix3]; - dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; + pix3 ^= bplcon4_denise_xor_val; + if (!(pix3 & 0x20)) { + dpix_val3 = denise_colors.acolors[pix3]; + } else { + uae_u32 v = (denise_colors.color_regs_aga[pix3 & 0x1f] >> 1) & 0x7f7f7f; + dpix_val3 = CONVERT_RGB(v); + } } last_bpl_pix = pix3; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8_64(); - loaded_pix = getbpl8_64(); - } - if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_64(); - } - uae_u32 sv3 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv3 = svt; - } + shiftbpl6_64(); + if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6_64(); } + loaded_pix = getbpl6_64(); loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - } - } dtbuf[h][0] = dpix_val0; - if (sv1) { - uae_u32 spix1 = denise_render_sprites2(pix1, sv1); - if (spix1) { - dpix_val1 = denise_colors.acolors[spix1]; - } - } dtbuf[h][1] = dpix_val1; - if (sv2) { - uae_u32 spix2 = denise_render_sprites2(pix2, sv2); - if (spix2) { - dpix_val2 = denise_colors.acolors[spix2]; - } - } dtbuf[h][2] = dpix_val2; - if (sv3) { - uae_u32 spix3 = denise_render_sprites2(pix3, sv3); - if (spix3) { - dpix_val3 = denise_colors.acolors[spix3]; - } - } dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -61435,11 +89797,11 @@ static void lts_aga_fm2_n0_p8_ihires_dshres_spr(void) denise_cck++; } } -static void lts_aga_fm2_n0_p8_ihires_dshres_spr_filtered(void) +static void lts_aga_fm2_ehb0_p6_ishres_dshres_filtered(void) { lts_null(); } -static void lts_aga_fm2_n1_p8_ihires_dshres_spr(void) +static void lts_aga_fm2_ehb1_p6_ishres_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -61452,7 +89814,6 @@ static void lts_aga_fm2_n1_p8_ihires_dshres_spr(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -61460,43 +89821,26 @@ static void lts_aga_fm2_n1_p8_ihires_dshres_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + pix0 ^= bplcon4_denise_xor_val; + if (!(pix0 & 0x20)) { + dpix_val0 = denise_colors.acolors[pix0]; + } else { + uae_u32 v = (denise_colors.color_regs_aga[pix0 & 0x1f] >> 1) & 0x7f7f7f; + dpix_val0 = CONVERT_RGB(v); + } } last_bpl_pix = pix0; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8e_64(); - loaded_pix = getbpl8_64(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl8o_64(); - loaded_pix = getbpl8_64(); - } - 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] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl8_64(); + shiftbpl6_64(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6e_64(); } - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl6o_64(); } + loaded_pix = getbpl6_64(); loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; - matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { @@ -61504,43 +89848,26 @@ static void lts_aga_fm2_n1_p8_ihires_dshres_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix1 = loaded_pixs[1]; clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; + pix1 ^= bplcon4_denise_xor_val; + if (!(pix1 & 0x20)) { + dpix_val1 = denise_colors.acolors[pix1]; + } else { + uae_u32 v = (denise_colors.color_regs_aga[pix1 & 0x1f] >> 1) & 0x7f7f7f; + dpix_val1 = CONVERT_RGB(v); + } } last_bpl_pix = pix1; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8e_64(); - loaded_pix = getbpl8_64(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl8o_64(); - loaded_pix = getbpl8_64(); - } - 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] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl8_64(); + shiftbpl6_64(); + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6e_64(); } - uae_u32 sv1 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv1 = svt; - } + if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { + copybpl6o_64(); } + loaded_pix = getbpl6_64(); loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; - matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { @@ -61548,43 +89875,26 @@ static void lts_aga_fm2_n1_p8_ihires_dshres_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + pix2 ^= bplcon4_denise_xor_val; + if (!(pix2 & 0x20)) { + dpix_val2 = denise_colors.acolors[pix2]; + } else { + uae_u32 v = (denise_colors.color_regs_aga[pix2 & 0x1f] >> 1) & 0x7f7f7f; + dpix_val2 = CONVERT_RGB(v); + } } last_bpl_pix = pix2; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8e_64(); - loaded_pix = getbpl8_64(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl8o_64(); - loaded_pix = getbpl8_64(); - } - 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] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl8_64(); + shiftbpl6_64(); + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6e_64(); } - uae_u32 sv2 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv2 = svt; - } + if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { + copybpl6o_64(); } + loaded_pix = getbpl6_64(); loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; - matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { @@ -61592,70 +89902,30 @@ static void lts_aga_fm2_n1_p8_ihires_dshres_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix3 = loaded_pixs[3]; clxdat |= bplcoltable[pix3]; - dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; + pix3 ^= bplcon4_denise_xor_val; + if (!(pix3 & 0x20)) { + dpix_val3 = denise_colors.acolors[pix3]; + } else { + uae_u32 v = (denise_colors.color_regs_aga[pix3 & 0x1f] >> 1) & 0x7f7f7f; + dpix_val3 = CONVERT_RGB(v); + } } last_bpl_pix = pix3; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8e_64(); - loaded_pix = getbpl8_64(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl8o_64(); - loaded_pix = getbpl8_64(); - } - 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] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl8_64(); + shiftbpl6_64(); + if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6e_64(); } - uae_u32 sv3 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv3 = svt; - } + if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) { + copybpl6o_64(); } + loaded_pix = getbpl6_64(); loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - } - } dtbuf[h][0] = dpix_val0; - if (sv1) { - uae_u32 spix1 = denise_render_sprites2(pix1, sv1); - if (spix1) { - dpix_val1 = denise_colors.acolors[spix1]; - } - } dtbuf[h][1] = dpix_val1; - if (sv2) { - uae_u32 spix2 = denise_render_sprites2(pix2, sv2); - if (spix2) { - dpix_val2 = denise_colors.acolors[spix2]; - } - } dtbuf[h][2] = dpix_val2; - if (sv3) { - uae_u32 spix3 = denise_render_sprites2(pix3, sv3); - if (spix3) { - dpix_val3 = denise_colors.acolors[spix3]; - } - } dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -61712,11 +89982,11 @@ static void lts_aga_fm2_n1_p8_ihires_dshres_spr(void) denise_cck++; } } -static void lts_aga_fm2_n1_p8_ihires_dshres_spr_filtered(void) +static void lts_aga_fm2_ehb1_p6_ishres_dshres_filtered(void) { lts_null(); } -static void lts_aga_fm2_dpf0_p8_ihires_dshres_spr(void) +static void lts_aga_fm2_ham0_p6_ishres_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -61729,7 +89999,6 @@ static void lts_aga_fm2_dpf0_p8_ihires_dshres_spr(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -61737,37 +90006,17 @@ static void lts_aga_fm2_dpf0_p8_ihires_dshres_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; + dpix_val0 = decode_ham_pixel_aga(pix0); } last_bpl_pix = pix0; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8_64(); - loaded_pix = getbpl8_64(); - } - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_64(); - } - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } + shiftbpl6_64(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6_64(); } + loaded_pix = getbpl6_64(); loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; - matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { @@ -61775,37 +90024,17 @@ static void lts_aga_fm2_dpf0_p8_ihires_dshres_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix1 = loaded_pixs[1]; clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - if (dpf_lookup_no[pix1]) { - val1 += dblpfofs[bpldualpf2of]; - } - val1 ^= bplcon4_denise_xor_val; - dpix_val1 = denise_colors.acolors[val1]; + dpix_val1 = decode_ham_pixel_aga(pix1); } last_bpl_pix = pix1; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8_64(); - loaded_pix = getbpl8_64(); - } - if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_64(); - } - uae_u32 sv1 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv1 = svt; - } + shiftbpl6_64(); + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6_64(); } + loaded_pix = getbpl6_64(); loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; - matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { @@ -61813,37 +90042,17 @@ static void lts_aga_fm2_dpf0_p8_ihires_dshres_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; + dpix_val2 = decode_ham_pixel_aga(pix2); } last_bpl_pix = pix2; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8_64(); - loaded_pix = getbpl8_64(); - } - if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_64(); - } - uae_u32 sv2 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv2 = svt; - } + shiftbpl6_64(); + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6_64(); } + loaded_pix = getbpl6_64(); loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; - matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { @@ -61851,64 +90060,21 @@ static void lts_aga_fm2_dpf0_p8_ihires_dshres_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix3 = loaded_pixs[3]; clxdat |= bplcoltable[pix3]; - uae_u8 val3 = dpf_lookup[pix3]; - if (dpf_lookup_no[pix3]) { - val3 += dblpfofs[bpldualpf2of]; - } - val3 ^= bplcon4_denise_xor_val; - dpix_val3 = denise_colors.acolors[val3]; + dpix_val3 = decode_ham_pixel_aga(pix3); } last_bpl_pix = pix3; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8_64(); - loaded_pix = getbpl8_64(); - } - if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_64(); - } - uae_u32 sv3 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv3 = svt; - } + shiftbpl6_64(); + if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6_64(); } + loaded_pix = getbpl6_64(); loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - } - } dtbuf[h][0] = dpix_val0; - if (sv1) { - uae_u32 spix1 = denise_render_sprites2(pix1, sv1); - if (spix1) { - dpix_val1 = denise_colors.acolors[spix1]; - } - } dtbuf[h][1] = dpix_val1; - if (sv2) { - uae_u32 spix2 = denise_render_sprites2(pix2, sv2); - if (spix2) { - dpix_val2 = denise_colors.acolors[spix2]; - } - } dtbuf[h][2] = dpix_val2; - if (sv3) { - uae_u32 spix3 = denise_render_sprites2(pix3, sv3); - if (spix3) { - dpix_val3 = denise_colors.acolors[spix3]; - } - } dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -61965,11 +90131,11 @@ static void lts_aga_fm2_dpf0_p8_ihires_dshres_spr(void) denise_cck++; } } -static void lts_aga_fm2_dpf0_p8_ihires_dshres_spr_filtered(void) +static void lts_aga_fm2_ham0_p6_ishres_dshres_filtered(void) { lts_null(); } -static void lts_aga_fm2_dpf1_p8_ihires_dshres_spr(void) +static void lts_aga_fm2_ham1_p6_ishres_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -61982,7 +90148,6 @@ static void lts_aga_fm2_dpf1_p8_ihires_dshres_spr(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -61990,97 +90155,41 @@ static void lts_aga_fm2_dpf1_p8_ihires_dshres_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; + dpix_val0 = decode_ham_pixel_aga(pix0); } last_bpl_pix = pix0; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8e_64(); - loaded_pix = getbpl8_64(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl8o_64(); - loaded_pix = getbpl8_64(); - } - 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] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl8_64(); - } - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } - } - loaded_pixs[0] = loaded_pix; - internal_pixel_cnt += 1; - matchsprites_aga(cnt + 1); - uae_u8 pix1 = 0; - uae_u32 dpix_val1 = BLANK_COLOR; - if (!denise_blank_active) { - dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - if (dpf_lookup_no[pix1]) { - val1 += dblpfofs[bpldualpf2of]; - } - val1 ^= bplcon4_denise_xor_val; - dpix_val1 = denise_colors.acolors[val1]; - } - last_bpl_pix = pix1; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8e_64(); - loaded_pix = getbpl8_64(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl8o_64(); - loaded_pix = getbpl8_64(); - } - if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8e_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_64(); + shiftbpl6_64(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6e_64(); } - if (bpldat_copy[1] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl8_64(); + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl6o_64(); } - uae_u32 sv1 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv1 = svt; + loaded_pix = getbpl6_64(); + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + dpix_val1 = decode_ham_pixel_aga(pix1); } + last_bpl_pix = pix1; + } + shiftbpl6_64(); + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6e_64(); } + if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { + copybpl6o_64(); + } + loaded_pix = getbpl6_64(); loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; - matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { @@ -62088,48 +90197,20 @@ static void lts_aga_fm2_dpf1_p8_ihires_dshres_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; + dpix_val2 = decode_ham_pixel_aga(pix2); } last_bpl_pix = pix2; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8e_64(); - loaded_pix = getbpl8_64(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl8o_64(); - loaded_pix = getbpl8_64(); - } - 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] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl8_64(); + shiftbpl6_64(); + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6e_64(); } - uae_u32 sv2 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv2 = svt; - } + if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { + copybpl6o_64(); } + loaded_pix = getbpl6_64(); loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; - matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { @@ -62137,75 +90218,24 @@ static void lts_aga_fm2_dpf1_p8_ihires_dshres_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix3 = loaded_pixs[3]; clxdat |= bplcoltable[pix3]; - uae_u8 val3 = dpf_lookup[pix3]; - if (dpf_lookup_no[pix3]) { - val3 += dblpfofs[bpldualpf2of]; - } - val3 ^= bplcon4_denise_xor_val; - dpix_val3 = denise_colors.acolors[val3]; + dpix_val3 = decode_ham_pixel_aga(pix3); } last_bpl_pix = pix3; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8e_64(); - loaded_pix = getbpl8_64(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl8o_64(); - loaded_pix = getbpl8_64(); - } - 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] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl8_64(); + shiftbpl6_64(); + if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6e_64(); } - uae_u32 sv3 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv3 = svt; - } + if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) { + copybpl6o_64(); } + loaded_pix = getbpl6_64(); loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - } - } dtbuf[h][0] = dpix_val0; - if (sv1) { - uae_u32 spix1 = denise_render_sprites2(pix1, sv1); - if (spix1) { - dpix_val1 = denise_colors.acolors[spix1]; - } - } dtbuf[h][1] = dpix_val1; - if (sv2) { - uae_u32 spix2 = denise_render_sprites2(pix2, sv2); - if (spix2) { - dpix_val2 = denise_colors.acolors[spix2]; - } - } dtbuf[h][2] = dpix_val2; - if (sv3) { - uae_u32 spix3 = denise_render_sprites2(pix3, sv3); - if (spix3) { - dpix_val3 = denise_colors.acolors[spix3]; - } - } dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -62262,27 +90292,11 @@ static void lts_aga_fm2_dpf1_p8_ihires_dshres_spr(void) denise_cck++; } } -static void lts_aga_fm2_dpf1_p8_ihires_dshres_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb0_p8_ihires_dshres_spr(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb0_p8_ihires_dshres_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb1_p8_ihires_dshres_spr(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb1_p8_ihires_dshres_spr_filtered(void) +static void lts_aga_fm2_ham1_p6_ishres_dshres_filtered(void) { lts_null(); } -static void lts_aga_fm2_ham0_p8_ihires_dshres_spr(void) +static void lts_aga_fm2_kehb0_p6_ishres_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -62295,7 +90309,6 @@ static void lts_aga_fm2_ham0_p8_ihires_dshres_spr(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -62303,32 +90316,18 @@ static void lts_aga_fm2_ham0_p8_ihires_dshres_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - dpix_val0 = decode_ham_pixel_aga(pix0); + pix0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[pix0 & 31]; } last_bpl_pix = pix0; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8_64(); - loaded_pix = getbpl8_64(); - } - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_64(); - } - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } + shiftbpl6_64(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6_64(); } + loaded_pix = getbpl6_64(); loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; - matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { @@ -62336,32 +90335,18 @@ static void lts_aga_fm2_ham0_p8_ihires_dshres_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix1 = loaded_pixs[1]; clxdat |= bplcoltable[pix1]; - dpix_val1 = decode_ham_pixel_aga(pix1); + pix1 ^= bplcon4_denise_xor_val; + dpix_val1 = denise_colors.acolors[pix1 & 31]; } last_bpl_pix = pix1; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8_64(); - loaded_pix = getbpl8_64(); - } - if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_64(); - } - uae_u32 sv1 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv1 = svt; - } + shiftbpl6_64(); + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6_64(); } + loaded_pix = getbpl6_64(); loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; - matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { @@ -62369,32 +90354,18 @@ static void lts_aga_fm2_ham0_p8_ihires_dshres_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - dpix_val2 = decode_ham_pixel_aga(pix2); + pix2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[pix2 & 31]; } last_bpl_pix = pix2; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8_64(); - loaded_pix = getbpl8_64(); - } - if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_64(); - } - uae_u32 sv2 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv2 = svt; - } + shiftbpl6_64(); + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6_64(); } + loaded_pix = getbpl6_64(); loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; - matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { @@ -62402,59 +90373,22 @@ static void lts_aga_fm2_ham0_p8_ihires_dshres_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix3 = loaded_pixs[3]; clxdat |= bplcoltable[pix3]; - dpix_val3 = decode_ham_pixel_aga(pix3); + pix3 ^= bplcon4_denise_xor_val; + dpix_val3 = denise_colors.acolors[pix3 & 31]; } last_bpl_pix = pix3; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8_64(); - loaded_pix = getbpl8_64(); - } - if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_64(); - } - uae_u32 sv3 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv3 = svt; - } + shiftbpl6_64(); + if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6_64(); } + loaded_pix = getbpl6_64(); loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - } - } dtbuf[h][0] = dpix_val0; - if (sv1) { - uae_u32 spix1 = denise_render_sprites2(pix1, sv1); - if (spix1) { - dpix_val1 = denise_colors.acolors[spix1]; - } - } dtbuf[h][1] = dpix_val1; - if (sv2) { - uae_u32 spix2 = denise_render_sprites2(pix2, sv2); - if (spix2) { - dpix_val2 = denise_colors.acolors[spix2]; - } - } dtbuf[h][2] = dpix_val2; - if (sv3) { - uae_u32 spix3 = denise_render_sprites2(pix3, sv3); - if (spix3) { - dpix_val3 = denise_colors.acolors[spix3]; - } - } dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -62511,11 +90445,11 @@ static void lts_aga_fm2_ham0_p8_ihires_dshres_spr(void) denise_cck++; } } -static void lts_aga_fm2_ham0_p8_ihires_dshres_spr_filtered(void) +static void lts_aga_fm2_kehb0_p6_ishres_dshres_filtered(void) { lts_null(); } -static void lts_aga_fm2_ham1_p8_ihires_dshres_spr(void) +static void lts_aga_fm2_kehb1_p6_ishres_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -62528,7 +90462,6 @@ static void lts_aga_fm2_ham1_p8_ihires_dshres_spr(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -62536,43 +90469,21 @@ static void lts_aga_fm2_ham1_p8_ihires_dshres_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - dpix_val0 = decode_ham_pixel_aga(pix0); + pix0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[pix0 & 31]; } last_bpl_pix = pix0; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8e_64(); - loaded_pix = getbpl8_64(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl8o_64(); - loaded_pix = getbpl8_64(); - } - 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] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl8_64(); + shiftbpl6_64(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6e_64(); } - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl6o_64(); } + loaded_pix = getbpl6_64(); loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; - matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { @@ -62580,43 +90491,21 @@ static void lts_aga_fm2_ham1_p8_ihires_dshres_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix1 = loaded_pixs[1]; clxdat |= bplcoltable[pix1]; - dpix_val1 = decode_ham_pixel_aga(pix1); + pix1 ^= bplcon4_denise_xor_val; + dpix_val1 = denise_colors.acolors[pix1 & 31]; } last_bpl_pix = pix1; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8e_64(); - loaded_pix = getbpl8_64(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl8o_64(); - loaded_pix = getbpl8_64(); - } - 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] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl8_64(); + shiftbpl6_64(); + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6e_64(); } - uae_u32 sv1 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv1 = svt; - } + if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { + copybpl6o_64(); } + loaded_pix = getbpl6_64(); loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; - matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { @@ -62624,43 +90513,21 @@ static void lts_aga_fm2_ham1_p8_ihires_dshres_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - dpix_val2 = decode_ham_pixel_aga(pix2); + pix2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[pix2 & 31]; } last_bpl_pix = pix2; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8e_64(); - loaded_pix = getbpl8_64(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl8o_64(); - loaded_pix = getbpl8_64(); - } - 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] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl8_64(); + shiftbpl6_64(); + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6e_64(); } - uae_u32 sv2 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv2 = svt; - } + if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { + copybpl6o_64(); } + loaded_pix = getbpl6_64(); loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; - matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { @@ -62668,70 +90535,25 @@ static void lts_aga_fm2_ham1_p8_ihires_dshres_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix3 = loaded_pixs[3]; clxdat |= bplcoltable[pix3]; - dpix_val3 = decode_ham_pixel_aga(pix3); + pix3 ^= bplcon4_denise_xor_val; + dpix_val3 = denise_colors.acolors[pix3 & 31]; } last_bpl_pix = pix3; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8e_64(); - loaded_pix = getbpl8_64(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl8o_64(); - loaded_pix = getbpl8_64(); - } - 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] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl8_64(); + shiftbpl6_64(); + if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { + copybpl6e_64(); } - uae_u32 sv3 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv3 = svt; - } + if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) { + copybpl6o_64(); } + loaded_pix = getbpl6_64(); loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - } - } dtbuf[h][0] = dpix_val0; - if (sv1) { - uae_u32 spix1 = denise_render_sprites2(pix1, sv1); - if (spix1) { - dpix_val1 = denise_colors.acolors[spix1]; - } - } dtbuf[h][1] = dpix_val1; - if (sv2) { - uae_u32 spix2 = denise_render_sprites2(pix2, sv2); - if (spix2) { - dpix_val2 = denise_colors.acolors[spix2]; - } - } dtbuf[h][2] = dpix_val2; - if (sv3) { - uae_u32 spix3 = denise_render_sprites2(pix3, sv3); - if (spix3) { - dpix_val3 = denise_colors.acolors[spix3]; - } - } dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -62788,27 +90610,11 @@ static void lts_aga_fm2_ham1_p8_ihires_dshres_spr(void) denise_cck++; } } -static void lts_aga_fm2_ham1_p8_ihires_dshres_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb0_p8_ihires_dshres_spr(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb0_p8_ihires_dshres_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb1_p8_ihires_dshres_spr(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb1_p8_ihires_dshres_spr_filtered(void) +static void lts_aga_fm2_kehb1_p6_ishres_dshres_filtered(void) { lts_null(); } -static void lts_aga_fm2_n0_p2_ishres_dshres(void) +static void lts_aga_fm2_n0_p8_ishres_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -62832,11 +90638,11 @@ static void lts_aga_fm2_n0_p2_ishres_dshres(void) } last_bpl_pix = pix0; } - shiftbpl2_64(); + shiftbpl8_64(); if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl2_64(); + copybpl8_64(); } - loaded_pix = getbpl2_64(); + loaded_pix = getbpl8_64(); loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; uae_u8 pix1 = 0; @@ -62850,11 +90656,11 @@ static void lts_aga_fm2_n0_p2_ishres_dshres(void) } last_bpl_pix = pix1; } - shiftbpl2_64(); + shiftbpl8_64(); if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl2_64(); + copybpl8_64(); } - loaded_pix = getbpl2_64(); + loaded_pix = getbpl8_64(); loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; uae_u8 pix2 = 0; @@ -62868,11 +90674,11 @@ static void lts_aga_fm2_n0_p2_ishres_dshres(void) } last_bpl_pix = pix2; } - shiftbpl2_64(); + shiftbpl8_64(); if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl2_64(); + copybpl8_64(); } - loaded_pix = getbpl2_64(); + loaded_pix = getbpl8_64(); loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; uae_u8 pix3 = 0; @@ -62886,11 +90692,11 @@ static void lts_aga_fm2_n0_p2_ishres_dshres(void) } last_bpl_pix = pix3; } - shiftbpl2_64(); + shiftbpl8_64(); if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { - copybpl2_64(); + copybpl8_64(); } - loaded_pix = getbpl2_64(); + loaded_pix = getbpl8_64(); loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { @@ -62953,11 +90759,11 @@ static void lts_aga_fm2_n0_p2_ishres_dshres(void) denise_cck++; } } -static void lts_aga_fm2_n0_p2_ishres_dshres_filtered(void) +static void lts_aga_fm2_n0_p8_ishres_dshres_filtered(void) { lts_null(); } -static void lts_aga_fm2_n1_p2_ishres_dshres(void) +static void lts_aga_fm2_n1_p8_ishres_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -62981,14 +90787,14 @@ static void lts_aga_fm2_n1_p2_ishres_dshres(void) } last_bpl_pix = pix0; } - shiftbpl2_64(); + shiftbpl8_64(); if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl2e_64(); + copybpl8e_64(); } if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl2o_64(); + copybpl8o_64(); } - loaded_pix = getbpl2_64(); + loaded_pix = getbpl8_64(); loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; uae_u8 pix1 = 0; @@ -63002,14 +90808,14 @@ static void lts_aga_fm2_n1_p2_ishres_dshres(void) } last_bpl_pix = pix1; } - shiftbpl2_64(); + shiftbpl8_64(); if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl2e_64(); + copybpl8e_64(); } if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { - copybpl2o_64(); + copybpl8o_64(); } - loaded_pix = getbpl2_64(); + loaded_pix = getbpl8_64(); loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; uae_u8 pix2 = 0; @@ -63023,14 +90829,14 @@ static void lts_aga_fm2_n1_p2_ishres_dshres(void) } last_bpl_pix = pix2; } - shiftbpl2_64(); + shiftbpl8_64(); if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl2e_64(); + copybpl8e_64(); } if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { - copybpl2o_64(); + copybpl8o_64(); } - loaded_pix = getbpl2_64(); + loaded_pix = getbpl8_64(); loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; uae_u8 pix3 = 0; @@ -63044,14 +90850,14 @@ static void lts_aga_fm2_n1_p2_ishres_dshres(void) } last_bpl_pix = pix3; } - shiftbpl2_64(); + shiftbpl8_64(); if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { - copybpl2e_64(); + copybpl8e_64(); } if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) { - copybpl2o_64(); + copybpl8o_64(); } - loaded_pix = getbpl2_64(); + loaded_pix = getbpl8_64(); loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { @@ -63114,11 +90920,11 @@ static void lts_aga_fm2_n1_p2_ishres_dshres(void) denise_cck++; } } -static void lts_aga_fm2_n1_p2_ishres_dshres_filtered(void) +static void lts_aga_fm2_n1_p8_ishres_dshres_filtered(void) { lts_null(); } -static void lts_aga_fm2_dpf0_p2_ishres_dshres(void) +static void lts_aga_fm2_dpf0_p8_ishres_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -63147,11 +90953,11 @@ static void lts_aga_fm2_dpf0_p2_ishres_dshres(void) } last_bpl_pix = pix0; } - shiftbpl2_64(); + shiftbpl8_64(); if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl2_64(); + copybpl8_64(); } - loaded_pix = getbpl2_64(); + loaded_pix = getbpl8_64(); loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; uae_u8 pix1 = 0; @@ -63170,11 +90976,11 @@ static void lts_aga_fm2_dpf0_p2_ishres_dshres(void) } last_bpl_pix = pix1; } - shiftbpl2_64(); + shiftbpl8_64(); if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl2_64(); + copybpl8_64(); } - loaded_pix = getbpl2_64(); + loaded_pix = getbpl8_64(); loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; uae_u8 pix2 = 0; @@ -63193,11 +90999,11 @@ static void lts_aga_fm2_dpf0_p2_ishres_dshres(void) } last_bpl_pix = pix2; } - shiftbpl2_64(); + shiftbpl8_64(); if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl2_64(); + copybpl8_64(); } - loaded_pix = getbpl2_64(); + loaded_pix = getbpl8_64(); loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; uae_u8 pix3 = 0; @@ -63216,11 +91022,11 @@ static void lts_aga_fm2_dpf0_p2_ishres_dshres(void) } last_bpl_pix = pix3; } - shiftbpl2_64(); + shiftbpl8_64(); if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { - copybpl2_64(); + copybpl8_64(); } - loaded_pix = getbpl2_64(); + loaded_pix = getbpl8_64(); loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { @@ -63283,11 +91089,11 @@ static void lts_aga_fm2_dpf0_p2_ishres_dshres(void) denise_cck++; } } -static void lts_aga_fm2_dpf0_p2_ishres_dshres_filtered(void) +static void lts_aga_fm2_dpf0_p8_ishres_dshres_filtered(void) { lts_null(); } -static void lts_aga_fm2_dpf1_p2_ishres_dshres(void) +static void lts_aga_fm2_dpf1_p8_ishres_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -63316,14 +91122,14 @@ static void lts_aga_fm2_dpf1_p2_ishres_dshres(void) } last_bpl_pix = pix0; } - shiftbpl2_64(); + shiftbpl8_64(); if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl2e_64(); + copybpl8e_64(); } if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl2o_64(); + copybpl8o_64(); } - loaded_pix = getbpl2_64(); + loaded_pix = getbpl8_64(); loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; uae_u8 pix1 = 0; @@ -63342,14 +91148,14 @@ static void lts_aga_fm2_dpf1_p2_ishres_dshres(void) } last_bpl_pix = pix1; } - shiftbpl2_64(); + shiftbpl8_64(); if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl2e_64(); + copybpl8e_64(); } if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { - copybpl2o_64(); + copybpl8o_64(); } - loaded_pix = getbpl2_64(); + loaded_pix = getbpl8_64(); loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; uae_u8 pix2 = 0; @@ -63368,14 +91174,14 @@ static void lts_aga_fm2_dpf1_p2_ishres_dshres(void) } last_bpl_pix = pix2; } - shiftbpl2_64(); + shiftbpl8_64(); if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl2e_64(); + copybpl8e_64(); } if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { - copybpl2o_64(); + copybpl8o_64(); } - loaded_pix = getbpl2_64(); + loaded_pix = getbpl8_64(); loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; uae_u8 pix3 = 0; @@ -63394,14 +91200,14 @@ static void lts_aga_fm2_dpf1_p2_ishres_dshres(void) } last_bpl_pix = pix3; } - shiftbpl2_64(); + shiftbpl8_64(); if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { - copybpl2e_64(); + copybpl8e_64(); } if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) { - copybpl2o_64(); + copybpl8o_64(); } - loaded_pix = getbpl2_64(); + loaded_pix = getbpl8_64(); loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { @@ -63464,59 +91270,11 @@ static void lts_aga_fm2_dpf1_p2_ishres_dshres(void) denise_cck++; } } -static void lts_aga_fm2_dpf1_p2_ishres_dshres_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb0_p2_ishres_dshres(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb0_p2_ishres_dshres_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb1_p2_ishres_dshres(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb1_p2_ishres_dshres_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_ham0_p2_ishres_dshres(void) -{ - lts_null(); -} -static void lts_aga_fm2_ham0_p2_ishres_dshres_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_ham1_p2_ishres_dshres(void) -{ - lts_null(); -} -static void lts_aga_fm2_ham1_p2_ishres_dshres_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb0_p2_ishres_dshres(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb0_p2_ishres_dshres_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb1_p2_ishres_dshres(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb1_p2_ishres_dshres_filtered(void) +static void lts_aga_fm2_dpf1_p8_ishres_dshres_filtered(void) { lts_null(); } -static void lts_aga_fm2_n0_p4_ishres_dshres(void) +static void lts_aga_fm2_ehb0_p8_ishres_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -63527,79 +91285,30 @@ 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; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix0; - } - shiftbpl4_64(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4_64(); } - loaded_pix = getbpl4_64(); - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix1; - } - shiftbpl4_64(); - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4_64(); } - loaded_pix = getbpl4_64(); - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix2; - } - shiftbpl4_64(); - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4_64(); } - loaded_pix = getbpl4_64(); - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix3; } - shiftbpl4_64(); - if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4_64(); - } - loaded_pix = getbpl4_64(); - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; @@ -63661,11 +91370,11 @@ static void lts_aga_fm2_n0_p4_ishres_dshres(void) denise_cck++; } } -static void lts_aga_fm2_n0_p4_ishres_dshres_filtered(void) +static void lts_aga_fm2_ehb0_p8_ishres_dshres_filtered(void) { lts_null(); } -static void lts_aga_fm2_n1_p4_ishres_dshres(void) +static void lts_aga_fm2_ehb1_p8_ishres_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -63676,91 +91385,30 @@ 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; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix0; } - shiftbpl4_64(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4e_64(); - } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl4o_64(); - } - loaded_pix = getbpl4_64(); - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix1; - } - shiftbpl4_64(); - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4e_64(); - } - if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { - copybpl4o_64(); } - loaded_pix = getbpl4_64(); - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix2; } - shiftbpl4_64(); - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4e_64(); - } - if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { - copybpl4o_64(); - } - loaded_pix = getbpl4_64(); - loaded_pixs[2] = loaded_pix; - internal_pixel_cnt += 1; - uae_u8 pix3 = 0; - uae_u32 dpix_val3 = BLANK_COLOR; - if (!denise_blank_active) { - dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix3; - } - shiftbpl4_64(); - if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4e_64(); - } - if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) { - copybpl4o_64(); + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; } - loaded_pix = getbpl4_64(); - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; @@ -63822,11 +91470,11 @@ static void lts_aga_fm2_n1_p4_ishres_dshres(void) denise_cck++; } } -static void lts_aga_fm2_n1_p4_ishres_dshres_filtered(void) +static void lts_aga_fm2_ehb1_p8_ishres_dshres_filtered(void) { lts_null(); } -static void lts_aga_fm2_dpf0_p4_ishres_dshres(void) +static void lts_aga_fm2_ham0_p8_ishres_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -63846,20 +91494,15 @@ static void lts_aga_fm2_dpf0_p4_ishres_dshres(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; + dpix_val0 = decode_ham_pixel_aga(pix0); } last_bpl_pix = pix0; } - shiftbpl4_64(); + shiftbpl8_64(); if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4_64(); + copybpl8_64(); } - loaded_pix = getbpl4_64(); + loaded_pix = getbpl8_64(); loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; uae_u8 pix1 = 0; @@ -63869,20 +91512,15 @@ static void lts_aga_fm2_dpf0_p4_ishres_dshres(void) if (denise_hdiw && bpl1dat_trigger) { pix1 = loaded_pixs[1]; clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - if (dpf_lookup_no[pix1]) { - val1 += dblpfofs[bpldualpf2of]; - } - val1 ^= bplcon4_denise_xor_val; - dpix_val1 = denise_colors.acolors[val1]; + dpix_val1 = decode_ham_pixel_aga(pix1); } last_bpl_pix = pix1; } - shiftbpl4_64(); + shiftbpl8_64(); if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4_64(); + copybpl8_64(); } - loaded_pix = getbpl4_64(); + loaded_pix = getbpl8_64(); loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; uae_u8 pix2 = 0; @@ -63892,20 +91530,15 @@ static void lts_aga_fm2_dpf0_p4_ishres_dshres(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; + dpix_val2 = decode_ham_pixel_aga(pix2); } last_bpl_pix = pix2; } - shiftbpl4_64(); + shiftbpl8_64(); if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4_64(); + copybpl8_64(); } - loaded_pix = getbpl4_64(); + loaded_pix = getbpl8_64(); loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; uae_u8 pix3 = 0; @@ -63915,20 +91548,15 @@ static void lts_aga_fm2_dpf0_p4_ishres_dshres(void) if (denise_hdiw && bpl1dat_trigger) { pix3 = loaded_pixs[3]; clxdat |= bplcoltable[pix3]; - uae_u8 val3 = dpf_lookup[pix3]; - if (dpf_lookup_no[pix3]) { - val3 += dblpfofs[bpldualpf2of]; - } - val3 ^= bplcon4_denise_xor_val; - dpix_val3 = denise_colors.acolors[val3]; + dpix_val3 = decode_ham_pixel_aga(pix3); } last_bpl_pix = pix3; } - shiftbpl4_64(); + shiftbpl8_64(); if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4_64(); + copybpl8_64(); } - loaded_pix = getbpl4_64(); + loaded_pix = getbpl8_64(); loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { @@ -63991,11 +91619,11 @@ static void lts_aga_fm2_dpf0_p4_ishres_dshres(void) denise_cck++; } } -static void lts_aga_fm2_dpf0_p4_ishres_dshres_filtered(void) +static void lts_aga_fm2_ham0_p8_ishres_dshres_filtered(void) { lts_null(); } -static void lts_aga_fm2_dpf1_p4_ishres_dshres(void) +static void lts_aga_fm2_ham1_p8_ishres_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -64015,23 +91643,18 @@ static void lts_aga_fm2_dpf1_p4_ishres_dshres(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; + dpix_val0 = decode_ham_pixel_aga(pix0); } last_bpl_pix = pix0; } - shiftbpl4_64(); + shiftbpl8_64(); if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4e_64(); + copybpl8e_64(); } if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl4o_64(); + copybpl8o_64(); } - loaded_pix = getbpl4_64(); + loaded_pix = getbpl8_64(); loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; uae_u8 pix1 = 0; @@ -64041,23 +91664,18 @@ static void lts_aga_fm2_dpf1_p4_ishres_dshres(void) if (denise_hdiw && bpl1dat_trigger) { pix1 = loaded_pixs[1]; clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - if (dpf_lookup_no[pix1]) { - val1 += dblpfofs[bpldualpf2of]; - } - val1 ^= bplcon4_denise_xor_val; - dpix_val1 = denise_colors.acolors[val1]; + dpix_val1 = decode_ham_pixel_aga(pix1); } last_bpl_pix = pix1; } - shiftbpl4_64(); + shiftbpl8_64(); if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4e_64(); + copybpl8e_64(); } if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { - copybpl4o_64(); + copybpl8o_64(); } - loaded_pix = getbpl4_64(); + loaded_pix = getbpl8_64(); loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; uae_u8 pix2 = 0; @@ -64067,23 +91685,18 @@ static void lts_aga_fm2_dpf1_p4_ishres_dshres(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; + dpix_val2 = decode_ham_pixel_aga(pix2); } last_bpl_pix = pix2; } - shiftbpl4_64(); + shiftbpl8_64(); if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4e_64(); + copybpl8e_64(); } if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { - copybpl4o_64(); + copybpl8o_64(); } - loaded_pix = getbpl4_64(); + loaded_pix = getbpl8_64(); loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; uae_u8 pix3 = 0; @@ -64093,23 +91706,18 @@ static void lts_aga_fm2_dpf1_p4_ishres_dshres(void) if (denise_hdiw && bpl1dat_trigger) { pix3 = loaded_pixs[3]; clxdat |= bplcoltable[pix3]; - uae_u8 val3 = dpf_lookup[pix3]; - if (dpf_lookup_no[pix3]) { - val3 += dblpfofs[bpldualpf2of]; - } - val3 ^= bplcon4_denise_xor_val; - dpix_val3 = denise_colors.acolors[val3]; + dpix_val3 = decode_ham_pixel_aga(pix3); } last_bpl_pix = pix3; } - shiftbpl4_64(); + shiftbpl8_64(); if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4e_64(); + copybpl8e_64(); } if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) { - copybpl4o_64(); + copybpl8o_64(); } - loaded_pix = getbpl4_64(); + loaded_pix = getbpl8_64(); loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { @@ -64172,59 +91780,11 @@ static void lts_aga_fm2_dpf1_p4_ishres_dshres(void) denise_cck++; } } -static void lts_aga_fm2_dpf1_p4_ishres_dshres_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb0_p4_ishres_dshres(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb0_p4_ishres_dshres_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb1_p4_ishres_dshres(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb1_p4_ishres_dshres_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_ham0_p4_ishres_dshres(void) -{ - lts_null(); -} -static void lts_aga_fm2_ham0_p4_ishres_dshres_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_ham1_p4_ishres_dshres(void) -{ - lts_null(); -} -static void lts_aga_fm2_ham1_p4_ishres_dshres_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb0_p4_ishres_dshres(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb0_p4_ishres_dshres_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb1_p4_ishres_dshres(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb1_p4_ishres_dshres_filtered(void) +static void lts_aga_fm2_ham1_p8_ishres_dshres_filtered(void) { lts_null(); } -static void lts_aga_fm2_n0_p6_ishres_dshres(void) +static void lts_aga_fm2_kehb0_p8_ishres_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -64235,79 +91795,30 @@ 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; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix0; - } - shiftbpl6_64(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6_64(); } - loaded_pix = getbpl6_64(); - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix1; - } - shiftbpl6_64(); - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6_64(); } - loaded_pix = getbpl6_64(); - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix2; - } - shiftbpl6_64(); - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6_64(); } - loaded_pix = getbpl6_64(); - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix3; - } - shiftbpl6_64(); - if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6_64(); } - loaded_pix = getbpl6_64(); - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; @@ -64369,11 +91880,11 @@ static void lts_aga_fm2_n0_p6_ishres_dshres(void) denise_cck++; } } -static void lts_aga_fm2_n0_p6_ishres_dshres_filtered(void) +static void lts_aga_fm2_kehb0_p8_ishres_dshres_filtered(void) { lts_null(); } -static void lts_aga_fm2_n1_p6_ishres_dshres(void) +static void lts_aga_fm2_kehb1_p8_ishres_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -64384,91 +91895,30 @@ 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; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix0; - } - shiftbpl6_64(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6e_64(); - } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl6o_64(); } - loaded_pix = getbpl6_64(); - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix1; - } - shiftbpl6_64(); - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6e_64(); - } - if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { - copybpl6o_64(); } - loaded_pix = getbpl6_64(); - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix2; - } - shiftbpl6_64(); - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6e_64(); - } - if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { - copybpl6o_64(); } - loaded_pix = getbpl6_64(); - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix3; - } - shiftbpl6_64(); - if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6e_64(); } - if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) { - copybpl6o_64(); - } - loaded_pix = getbpl6_64(); - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; @@ -64530,11 +91980,11 @@ static void lts_aga_fm2_n1_p6_ishres_dshres(void) denise_cck++; } } -static void lts_aga_fm2_n1_p6_ishres_dshres_filtered(void) +static void lts_aga_fm2_kehb1_p8_ishres_dshres_filtered(void) { lts_null(); } -static void lts_aga_fm2_dpf0_p6_ishres_dshres(void) +static void lts_aga_fm2_n0_p2_ishres_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -64547,6 +91997,7 @@ static void lts_aga_fm2_dpf0_p6_ishres_dshres(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -64554,22 +92005,26 @@ static void lts_aga_fm2_dpf0_p6_ishres_dshres(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix0; } - shiftbpl6_64(); + shiftbpl2_64(); if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6_64(); + copybpl2_64(); + } + loaded_pix = getbpl2_64(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } } - loaded_pix = getbpl6_64(); loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { @@ -64577,22 +92032,26 @@ static void lts_aga_fm2_dpf0_p6_ishres_dshres(void) if (denise_hdiw && bpl1dat_trigger) { pix1 = loaded_pixs[1]; clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - if (dpf_lookup_no[pix1]) { - val1 += dblpfofs[bpldualpf2of]; - } - val1 ^= bplcon4_denise_xor_val; - dpix_val1 = denise_colors.acolors[val1]; + dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix1; } - shiftbpl6_64(); + shiftbpl2_64(); if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6_64(); + copybpl2_64(); + } + loaded_pix = getbpl2_64(); + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } } - loaded_pix = getbpl6_64(); loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { @@ -64600,22 +92059,26 @@ static void lts_aga_fm2_dpf0_p6_ishres_dshres(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix2; } - shiftbpl6_64(); + shiftbpl2_64(); if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6_64(); + copybpl2_64(); + } + loaded_pix = getbpl2_64(); + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } } - loaded_pix = getbpl6_64(); loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { @@ -64623,26 +92086,53 @@ static void lts_aga_fm2_dpf0_p6_ishres_dshres(void) if (denise_hdiw && bpl1dat_trigger) { pix3 = loaded_pixs[3]; clxdat |= bplcoltable[pix3]; - uae_u8 val3 = dpf_lookup[pix3]; - if (dpf_lookup_no[pix3]) { - val3 += dblpfofs[bpldualpf2of]; - } - val3 ^= bplcon4_denise_xor_val; - dpix_val3 = denise_colors.acolors[val3]; + dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix3; } - shiftbpl6_64(); + shiftbpl2_64(); if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6_64(); + copybpl2_64(); + } + loaded_pix = getbpl2_64(); + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } } - loaded_pix = getbpl6_64(); loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } dtbuf[h][0] = dpix_val0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } dtbuf[h][1] = dpix_val1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } dtbuf[h][2] = dpix_val2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + } + } dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -64699,11 +92189,11 @@ static void lts_aga_fm2_dpf0_p6_ishres_dshres(void) denise_cck++; } } -static void lts_aga_fm2_dpf0_p6_ishres_dshres_filtered(void) +static void lts_aga_fm2_n0_p2_ishres_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm2_dpf1_p6_ishres_dshres(void) +static void lts_aga_fm2_n1_p2_ishres_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -64716,6 +92206,7 @@ static void lts_aga_fm2_dpf1_p6_ishres_dshres(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -64723,25 +92214,29 @@ static void lts_aga_fm2_dpf1_p6_ishres_dshres(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix0; } - shiftbpl6_64(); + shiftbpl2_64(); if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6e_64(); + copybpl2e_64(); } if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl6o_64(); + copybpl2o_64(); + } + loaded_pix = getbpl2_64(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } } - loaded_pix = getbpl6_64(); loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { @@ -64749,25 +92244,29 @@ static void lts_aga_fm2_dpf1_p6_ishres_dshres(void) if (denise_hdiw && bpl1dat_trigger) { pix1 = loaded_pixs[1]; clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - if (dpf_lookup_no[pix1]) { - val1 += dblpfofs[bpldualpf2of]; - } - val1 ^= bplcon4_denise_xor_val; - dpix_val1 = denise_colors.acolors[val1]; + dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix1; } - shiftbpl6_64(); + shiftbpl2_64(); if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6e_64(); + copybpl2e_64(); } if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { - copybpl6o_64(); + copybpl2o_64(); + } + loaded_pix = getbpl2_64(); + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } } - loaded_pix = getbpl6_64(); loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { @@ -64775,25 +92274,29 @@ static void lts_aga_fm2_dpf1_p6_ishres_dshres(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix2; } - shiftbpl6_64(); + shiftbpl2_64(); if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6e_64(); + copybpl2e_64(); } if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { - copybpl6o_64(); + copybpl2o_64(); + } + loaded_pix = getbpl2_64(); + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } } - loaded_pix = getbpl6_64(); loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { @@ -64801,29 +92304,56 @@ static void lts_aga_fm2_dpf1_p6_ishres_dshres(void) if (denise_hdiw && bpl1dat_trigger) { pix3 = loaded_pixs[3]; clxdat |= bplcoltable[pix3]; - uae_u8 val3 = dpf_lookup[pix3]; - if (dpf_lookup_no[pix3]) { - val3 += dblpfofs[bpldualpf2of]; - } - val3 ^= bplcon4_denise_xor_val; - dpix_val3 = denise_colors.acolors[val3]; + dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix3; } - shiftbpl6_64(); + shiftbpl2_64(); if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6e_64(); + copybpl2e_64(); } if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) { - copybpl6o_64(); + copybpl2o_64(); + } + loaded_pix = getbpl2_64(); + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } } - loaded_pix = getbpl6_64(); loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } dtbuf[h][0] = dpix_val0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } dtbuf[h][1] = dpix_val1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } dtbuf[h][2] = dpix_val2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + } + } dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -64880,11 +92410,11 @@ static void lts_aga_fm2_dpf1_p6_ishres_dshres(void) denise_cck++; } } -static void lts_aga_fm2_dpf1_p6_ishres_dshres_filtered(void) +static void lts_aga_fm2_n1_p2_ishres_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm2_ehb0_p6_ishres_dshres(void) +static void lts_aga_fm2_dpf0_p2_ishres_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -64897,6 +92427,7 @@ static void lts_aga_fm2_ehb0_p6_ishres_dshres(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -64904,23 +92435,31 @@ static void lts_aga_fm2_ehb0_p6_ishres_dshres(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - pix0 ^= bplcon4_denise_xor_val; - if (!(pix0 & 0x20)) { - dpix_val0 = denise_colors.acolors[pix0]; - } else { - uae_u32 v = (denise_colors.color_regs_aga[pix0 & 0x1f] >> 1) & 0x7f7f7f; - dpix_val0 = CONVERT_RGB(v); + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; } last_bpl_pix = pix0; } - shiftbpl6_64(); + shiftbpl2_64(); if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6_64(); + copybpl2_64(); + } + loaded_pix = getbpl2_64(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } } - loaded_pix = getbpl6_64(); loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { @@ -64928,23 +92467,31 @@ static void lts_aga_fm2_ehb0_p6_ishres_dshres(void) if (denise_hdiw && bpl1dat_trigger) { pix1 = loaded_pixs[1]; clxdat |= bplcoltable[pix1]; - pix1 ^= bplcon4_denise_xor_val; - if (!(pix1 & 0x20)) { - dpix_val1 = denise_colors.acolors[pix1]; - } else { - uae_u32 v = (denise_colors.color_regs_aga[pix1 & 0x1f] >> 1) & 0x7f7f7f; - dpix_val1 = CONVERT_RGB(v); + uae_u8 val1 = dpf_lookup[pix1]; + if (dpf_lookup_no[pix1]) { + val1 += dblpfofs[bpldualpf2of]; } + val1 ^= bplcon4_denise_xor_val; + dpix_val1 = denise_colors.acolors[val1]; } last_bpl_pix = pix1; } - shiftbpl6_64(); + shiftbpl2_64(); if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6_64(); + copybpl2_64(); + } + loaded_pix = getbpl2_64(); + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } } - loaded_pix = getbpl6_64(); loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { @@ -64952,23 +92499,31 @@ static void lts_aga_fm2_ehb0_p6_ishres_dshres(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - pix2 ^= bplcon4_denise_xor_val; - if (!(pix2 & 0x20)) { - dpix_val2 = denise_colors.acolors[pix2]; - } else { - uae_u32 v = (denise_colors.color_regs_aga[pix2 & 0x1f] >> 1) & 0x7f7f7f; - dpix_val2 = CONVERT_RGB(v); + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; } last_bpl_pix = pix2; } - shiftbpl6_64(); + shiftbpl2_64(); if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6_64(); + copybpl2_64(); + } + loaded_pix = getbpl2_64(); + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } } - loaded_pix = getbpl6_64(); loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { @@ -64976,27 +92531,58 @@ static void lts_aga_fm2_ehb0_p6_ishres_dshres(void) if (denise_hdiw && bpl1dat_trigger) { pix3 = loaded_pixs[3]; clxdat |= bplcoltable[pix3]; - pix3 ^= bplcon4_denise_xor_val; - if (!(pix3 & 0x20)) { - dpix_val3 = denise_colors.acolors[pix3]; - } else { - uae_u32 v = (denise_colors.color_regs_aga[pix3 & 0x1f] >> 1) & 0x7f7f7f; - dpix_val3 = CONVERT_RGB(v); + uae_u8 val3 = dpf_lookup[pix3]; + if (dpf_lookup_no[pix3]) { + val3 += dblpfofs[bpldualpf2of]; } + val3 ^= bplcon4_denise_xor_val; + dpix_val3 = denise_colors.acolors[val3]; } last_bpl_pix = pix3; } - shiftbpl6_64(); + shiftbpl2_64(); if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6_64(); + copybpl2_64(); + } + loaded_pix = getbpl2_64(); + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } } - loaded_pix = getbpl6_64(); loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } dtbuf[h][0] = dpix_val0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } dtbuf[h][1] = dpix_val1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } dtbuf[h][2] = dpix_val2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + } + } dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -65053,11 +92639,11 @@ static void lts_aga_fm2_ehb0_p6_ishres_dshres(void) denise_cck++; } } -static void lts_aga_fm2_ehb0_p6_ishres_dshres_filtered(void) +static void lts_aga_fm2_dpf0_p2_ishres_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm2_ehb1_p6_ishres_dshres(void) +static void lts_aga_fm2_dpf1_p2_ishres_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -65070,6 +92656,7 @@ static void lts_aga_fm2_ehb1_p6_ishres_dshres(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -65077,26 +92664,34 @@ static void lts_aga_fm2_ehb1_p6_ishres_dshres(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - pix0 ^= bplcon4_denise_xor_val; - if (!(pix0 & 0x20)) { - dpix_val0 = denise_colors.acolors[pix0]; - } else { - uae_u32 v = (denise_colors.color_regs_aga[pix0 & 0x1f] >> 1) & 0x7f7f7f; - dpix_val0 = CONVERT_RGB(v); + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; } last_bpl_pix = pix0; } - shiftbpl6_64(); + shiftbpl2_64(); if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6e_64(); + copybpl2e_64(); } if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl6o_64(); + copybpl2o_64(); + } + loaded_pix = getbpl2_64(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } } - loaded_pix = getbpl6_64(); loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { @@ -65104,26 +92699,34 @@ static void lts_aga_fm2_ehb1_p6_ishres_dshres(void) if (denise_hdiw && bpl1dat_trigger) { pix1 = loaded_pixs[1]; clxdat |= bplcoltable[pix1]; - pix1 ^= bplcon4_denise_xor_val; - if (!(pix1 & 0x20)) { - dpix_val1 = denise_colors.acolors[pix1]; - } else { - uae_u32 v = (denise_colors.color_regs_aga[pix1 & 0x1f] >> 1) & 0x7f7f7f; - dpix_val1 = CONVERT_RGB(v); + uae_u8 val1 = dpf_lookup[pix1]; + if (dpf_lookup_no[pix1]) { + val1 += dblpfofs[bpldualpf2of]; } + val1 ^= bplcon4_denise_xor_val; + dpix_val1 = denise_colors.acolors[val1]; } last_bpl_pix = pix1; } - shiftbpl6_64(); + shiftbpl2_64(); if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6e_64(); + copybpl2e_64(); } if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { - copybpl6o_64(); + copybpl2o_64(); + } + loaded_pix = getbpl2_64(); + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } } - loaded_pix = getbpl6_64(); loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { @@ -65131,26 +92734,34 @@ static void lts_aga_fm2_ehb1_p6_ishres_dshres(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - pix2 ^= bplcon4_denise_xor_val; - if (!(pix2 & 0x20)) { - dpix_val2 = denise_colors.acolors[pix2]; - } else { - uae_u32 v = (denise_colors.color_regs_aga[pix2 & 0x1f] >> 1) & 0x7f7f7f; - dpix_val2 = CONVERT_RGB(v); + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; } last_bpl_pix = pix2; } - shiftbpl6_64(); + shiftbpl2_64(); if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6e_64(); + copybpl2e_64(); } if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { - copybpl6o_64(); + copybpl2o_64(); + } + loaded_pix = getbpl2_64(); + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } } - loaded_pix = getbpl6_64(); loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { @@ -65158,30 +92769,61 @@ static void lts_aga_fm2_ehb1_p6_ishres_dshres(void) if (denise_hdiw && bpl1dat_trigger) { pix3 = loaded_pixs[3]; clxdat |= bplcoltable[pix3]; - pix3 ^= bplcon4_denise_xor_val; - if (!(pix3 & 0x20)) { - dpix_val3 = denise_colors.acolors[pix3]; - } else { - uae_u32 v = (denise_colors.color_regs_aga[pix3 & 0x1f] >> 1) & 0x7f7f7f; - dpix_val3 = CONVERT_RGB(v); + uae_u8 val3 = dpf_lookup[pix3]; + if (dpf_lookup_no[pix3]) { + val3 += dblpfofs[bpldualpf2of]; } + val3 ^= bplcon4_denise_xor_val; + dpix_val3 = denise_colors.acolors[val3]; } last_bpl_pix = pix3; } - shiftbpl6_64(); + shiftbpl2_64(); if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6e_64(); + copybpl2e_64(); } if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) { - copybpl6o_64(); + copybpl2o_64(); + } + loaded_pix = getbpl2_64(); + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } } - loaded_pix = getbpl6_64(); loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } dtbuf[h][0] = dpix_val0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } dtbuf[h][1] = dpix_val1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } dtbuf[h][2] = dpix_val2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + } + } dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -65238,11 +92880,11 @@ static void lts_aga_fm2_ehb1_p6_ishres_dshres(void) denise_cck++; } } -static void lts_aga_fm2_ehb1_p6_ishres_dshres_filtered(void) +static void lts_aga_fm2_dpf1_p2_ishres_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm2_ham0_p6_ishres_dshres(void) +static void lts_aga_fm2_ehb0_p2_ishres_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -65253,84 +92895,95 @@ 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; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = decode_ham_pixel_aga(pix0); - } - last_bpl_pix = pix0; } - shiftbpl6_64(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6_64(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } } - loaded_pix = getbpl6_64(); - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - dpix_val1 = decode_ham_pixel_aga(pix1); - } - last_bpl_pix = pix1; } - shiftbpl6_64(); - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6_64(); + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } } - loaded_pix = getbpl6_64(); - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = decode_ham_pixel_aga(pix2); - } - last_bpl_pix = pix2; } - shiftbpl6_64(); - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6_64(); + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } } - loaded_pix = getbpl6_64(); - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - dpix_val3 = decode_ham_pixel_aga(pix3); - } - last_bpl_pix = pix3; } - shiftbpl6_64(); - if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6_64(); + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } } - loaded_pix = getbpl6_64(); - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } dtbuf[h][0] = dpix_val0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } dtbuf[h][1] = dpix_val1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } dtbuf[h][2] = dpix_val2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + } + } dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -65387,11 +93040,11 @@ static void lts_aga_fm2_ham0_p6_ishres_dshres(void) denise_cck++; } } -static void lts_aga_fm2_ham0_p6_ishres_dshres_filtered(void) +static void lts_aga_fm2_ehb0_p2_ishres_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm2_ham1_p6_ishres_dshres(void) +static void lts_aga_fm2_ehb1_p2_ishres_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -65402,96 +93055,95 @@ 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; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = decode_ham_pixel_aga(pix0); - } - last_bpl_pix = pix0; - } - shiftbpl6_64(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6e_64(); } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl6o_64(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } } - loaded_pix = getbpl6_64(); - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - dpix_val1 = decode_ham_pixel_aga(pix1); - } - last_bpl_pix = pix1; } - shiftbpl6_64(); - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6e_64(); - } - if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { - copybpl6o_64(); + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } } - loaded_pix = getbpl6_64(); - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = decode_ham_pixel_aga(pix2); - } - last_bpl_pix = pix2; - } - shiftbpl6_64(); - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6e_64(); } - if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { - copybpl6o_64(); + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } } - loaded_pix = getbpl6_64(); - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - dpix_val3 = decode_ham_pixel_aga(pix3); - } - last_bpl_pix = pix3; - } - shiftbpl6_64(); - if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6e_64(); } - if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) { - copybpl6o_64(); + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } } - loaded_pix = getbpl6_64(); - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } dtbuf[h][0] = dpix_val0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } dtbuf[h][1] = dpix_val1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } dtbuf[h][2] = dpix_val2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + } + } dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -65548,11 +93200,11 @@ static void lts_aga_fm2_ham1_p6_ishres_dshres(void) denise_cck++; } } -static void lts_aga_fm2_ham1_p6_ishres_dshres_filtered(void) +static void lts_aga_fm2_ehb1_p2_ishres_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm2_kehb0_p6_ishres_dshres(void) +static void lts_aga_fm2_ham0_p2_ishres_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -65563,88 +93215,95 @@ 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; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - pix0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[pix0 & 31]; - } - last_bpl_pix = pix0; } - shiftbpl6_64(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6_64(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } } - loaded_pix = getbpl6_64(); - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - pix1 ^= bplcon4_denise_xor_val; - dpix_val1 = denise_colors.acolors[pix1 & 31]; - } - last_bpl_pix = pix1; } - shiftbpl6_64(); - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6_64(); + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } } - loaded_pix = getbpl6_64(); - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - pix2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[pix2 & 31]; - } - last_bpl_pix = pix2; } - shiftbpl6_64(); - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6_64(); + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } } - loaded_pix = getbpl6_64(); - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - pix3 ^= bplcon4_denise_xor_val; - dpix_val3 = denise_colors.acolors[pix3 & 31]; - } - last_bpl_pix = pix3; } - shiftbpl6_64(); - if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6_64(); + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } } - loaded_pix = getbpl6_64(); - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } dtbuf[h][0] = dpix_val0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } dtbuf[h][1] = dpix_val1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } dtbuf[h][2] = dpix_val2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + } + } dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -65701,11 +93360,11 @@ static void lts_aga_fm2_kehb0_p6_ishres_dshres(void) denise_cck++; } } -static void lts_aga_fm2_kehb0_p6_ishres_dshres_filtered(void) +static void lts_aga_fm2_ham0_p2_ishres_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm2_kehb1_p6_ishres_dshres(void) +static void lts_aga_fm2_ham1_p2_ishres_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -65716,100 +93375,95 @@ 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; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - pix0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[pix0 & 31]; - } - last_bpl_pix = pix0; - } - shiftbpl6_64(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6e_64(); } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl6o_64(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } } - loaded_pix = getbpl6_64(); - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - pix1 ^= bplcon4_denise_xor_val; - dpix_val1 = denise_colors.acolors[pix1 & 31]; - } - last_bpl_pix = pix1; - } - shiftbpl6_64(); - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6e_64(); } - if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { - copybpl6o_64(); + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } } - loaded_pix = getbpl6_64(); - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - pix2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[pix2 & 31]; - } - last_bpl_pix = pix2; - } - shiftbpl6_64(); - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6e_64(); } - if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { - copybpl6o_64(); + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } } - loaded_pix = getbpl6_64(); - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - pix3 ^= bplcon4_denise_xor_val; - dpix_val3 = denise_colors.acolors[pix3 & 31]; - } - last_bpl_pix = pix3; - } - shiftbpl6_64(); - if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6e_64(); } - if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) { - copybpl6o_64(); + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } } - loaded_pix = getbpl6_64(); - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } dtbuf[h][0] = dpix_val0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } dtbuf[h][1] = dpix_val1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } dtbuf[h][2] = dpix_val2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + } + } dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -65866,11 +93520,11 @@ static void lts_aga_fm2_kehb1_p6_ishres_dshres(void) denise_cck++; } } -static void lts_aga_fm2_kehb1_p6_ishres_dshres_filtered(void) +static void lts_aga_fm2_ham1_p2_ishres_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm2_n0_p8_ishres_dshres(void) +static void lts_aga_fm2_kehb0_p2_ishres_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -65881,84 +93535,95 @@ 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; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix0; } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } } - loaded_pix = getbpl8_64(); - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix1; } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } } - loaded_pix = getbpl8_64(); - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix2; } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } } - loaded_pix = getbpl8_64(); - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix3; } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } } - loaded_pix = getbpl8_64(); - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } dtbuf[h][0] = dpix_val0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } dtbuf[h][1] = dpix_val1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } dtbuf[h][2] = dpix_val2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + } + } dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -66015,11 +93680,11 @@ static void lts_aga_fm2_n0_p8_ishres_dshres(void) denise_cck++; } } -static void lts_aga_fm2_n0_p8_ishres_dshres_filtered(void) +static void lts_aga_fm2_kehb0_p2_ishres_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm2_n1_p8_ishres_dshres(void) +static void lts_aga_fm2_kehb1_p2_ishres_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -66030,96 +93695,95 @@ 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; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix0; - } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e_64(); } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } } - loaded_pix = getbpl8_64(); - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix1; - } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e_64(); } - if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } } - loaded_pix = getbpl8_64(); - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix2; - } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e_64(); } - if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } } - loaded_pix = getbpl8_64(); - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix3; } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e_64(); - } - if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } } - loaded_pix = getbpl8_64(); - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } dtbuf[h][0] = dpix_val0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } dtbuf[h][1] = dpix_val1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } dtbuf[h][2] = dpix_val2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + } + } dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -66176,11 +93840,11 @@ static void lts_aga_fm2_n1_p8_ishres_dshres(void) denise_cck++; } } -static void lts_aga_fm2_n1_p8_ishres_dshres_filtered(void) +static void lts_aga_fm2_kehb1_p2_ishres_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm2_dpf0_p8_ishres_dshres(void) +static void lts_aga_fm2_n0_p4_ishres_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -66193,6 +93857,7 @@ static void lts_aga_fm2_dpf0_p8_ishres_dshres(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -66200,22 +93865,26 @@ static void lts_aga_fm2_dpf0_p8_ishres_dshres(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix0; } - shiftbpl8_64(); + shiftbpl4_64(); if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); + copybpl4_64(); + } + loaded_pix = getbpl4_64(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } } - loaded_pix = getbpl8_64(); loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { @@ -66223,45 +93892,53 @@ static void lts_aga_fm2_dpf0_p8_ishres_dshres(void) if (denise_hdiw && bpl1dat_trigger) { pix1 = loaded_pixs[1]; clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - if (dpf_lookup_no[pix1]) { - val1 += dblpfofs[bpldualpf2of]; - } - val1 ^= bplcon4_denise_xor_val; - dpix_val1 = denise_colors.acolors[val1]; + dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix1; } - shiftbpl8_64(); + shiftbpl4_64(); if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); + copybpl4_64(); + } + loaded_pix = getbpl4_64(); + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } } - loaded_pix = getbpl8_64(); loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix2; } - shiftbpl8_64(); + shiftbpl4_64(); if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); + copybpl4_64(); + } + loaded_pix = getbpl4_64(); + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } } - loaded_pix = getbpl8_64(); loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { @@ -66269,26 +93946,53 @@ static void lts_aga_fm2_dpf0_p8_ishres_dshres(void) if (denise_hdiw && bpl1dat_trigger) { pix3 = loaded_pixs[3]; clxdat |= bplcoltable[pix3]; - uae_u8 val3 = dpf_lookup[pix3]; - if (dpf_lookup_no[pix3]) { - val3 += dblpfofs[bpldualpf2of]; - } - val3 ^= bplcon4_denise_xor_val; - dpix_val3 = denise_colors.acolors[val3]; + dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix3; } - shiftbpl8_64(); + shiftbpl4_64(); if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); + copybpl4_64(); + } + loaded_pix = getbpl4_64(); + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } } - loaded_pix = getbpl8_64(); loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } dtbuf[h][0] = dpix_val0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } dtbuf[h][1] = dpix_val1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } dtbuf[h][2] = dpix_val2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + } + } dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -66345,11 +94049,11 @@ static void lts_aga_fm2_dpf0_p8_ishres_dshres(void) denise_cck++; } } -static void lts_aga_fm2_dpf0_p8_ishres_dshres_filtered(void) +static void lts_aga_fm2_n0_p4_ishres_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm2_dpf1_p8_ishres_dshres(void) +static void lts_aga_fm2_n1_p4_ishres_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -66362,6 +94066,7 @@ static void lts_aga_fm2_dpf1_p8_ishres_dshres(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -66369,25 +94074,29 @@ static void lts_aga_fm2_dpf1_p8_ishres_dshres(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix0; } - shiftbpl8_64(); + shiftbpl4_64(); if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e_64(); + copybpl4e_64(); } if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); + copybpl4o_64(); + } + loaded_pix = getbpl4_64(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } } - loaded_pix = getbpl8_64(); loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { @@ -66395,25 +94104,29 @@ static void lts_aga_fm2_dpf1_p8_ishres_dshres(void) if (denise_hdiw && bpl1dat_trigger) { pix1 = loaded_pixs[1]; clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - if (dpf_lookup_no[pix1]) { - val1 += dblpfofs[bpldualpf2of]; - } - val1 ^= bplcon4_denise_xor_val; - dpix_val1 = denise_colors.acolors[val1]; + dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix1; } - shiftbpl8_64(); + shiftbpl4_64(); if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e_64(); + copybpl4e_64(); } if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); + copybpl4o_64(); + } + loaded_pix = getbpl4_64(); + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } } - loaded_pix = getbpl8_64(); loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { @@ -66421,25 +94134,29 @@ static void lts_aga_fm2_dpf1_p8_ishres_dshres(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix2; } - shiftbpl8_64(); + shiftbpl4_64(); if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e_64(); + copybpl4e_64(); } if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); + copybpl4o_64(); + } + loaded_pix = getbpl4_64(); + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } } - loaded_pix = getbpl8_64(); loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { @@ -66447,29 +94164,56 @@ static void lts_aga_fm2_dpf1_p8_ishres_dshres(void) if (denise_hdiw && bpl1dat_trigger) { pix3 = loaded_pixs[3]; clxdat |= bplcoltable[pix3]; - uae_u8 val3 = dpf_lookup[pix3]; - if (dpf_lookup_no[pix3]) { - val3 += dblpfofs[bpldualpf2of]; - } - val3 ^= bplcon4_denise_xor_val; - dpix_val3 = denise_colors.acolors[val3]; + dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix3; } - shiftbpl8_64(); + shiftbpl4_64(); if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e_64(); + copybpl4e_64(); } if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); + copybpl4o_64(); + } + loaded_pix = getbpl4_64(); + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } } - loaded_pix = getbpl8_64(); loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } dtbuf[h][0] = dpix_val0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } dtbuf[h][1] = dpix_val1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } dtbuf[h][2] = dpix_val2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + } + } dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -66526,27 +94270,11 @@ static void lts_aga_fm2_dpf1_p8_ishres_dshres(void) denise_cck++; } } -static void lts_aga_fm2_dpf1_p8_ishres_dshres_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb0_p8_ishres_dshres(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb0_p8_ishres_dshres_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb1_p8_ishres_dshres(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb1_p8_ishres_dshres_filtered(void) +static void lts_aga_fm2_n1_p4_ishres_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm2_ham0_p8_ishres_dshres(void) +static void lts_aga_fm2_dpf0_p4_ishres_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -66559,6 +94287,7 @@ static void lts_aga_fm2_ham0_p8_ishres_dshres(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -66566,17 +94295,31 @@ static void lts_aga_fm2_ham0_p8_ishres_dshres(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - dpix_val0 = decode_ham_pixel_aga(pix0); + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; } last_bpl_pix = pix0; } - shiftbpl8_64(); + shiftbpl4_64(); if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); + copybpl4_64(); + } + loaded_pix = getbpl4_64(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } } - loaded_pix = getbpl8_64(); loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { @@ -66584,17 +94327,31 @@ static void lts_aga_fm2_ham0_p8_ishres_dshres(void) if (denise_hdiw && bpl1dat_trigger) { pix1 = loaded_pixs[1]; clxdat |= bplcoltable[pix1]; - dpix_val1 = decode_ham_pixel_aga(pix1); + uae_u8 val1 = dpf_lookup[pix1]; + if (dpf_lookup_no[pix1]) { + val1 += dblpfofs[bpldualpf2of]; + } + val1 ^= bplcon4_denise_xor_val; + dpix_val1 = denise_colors.acolors[val1]; } last_bpl_pix = pix1; } - shiftbpl8_64(); + shiftbpl4_64(); if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); + copybpl4_64(); + } + loaded_pix = getbpl4_64(); + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } } - loaded_pix = getbpl8_64(); loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { @@ -66602,17 +94359,31 @@ static void lts_aga_fm2_ham0_p8_ishres_dshres(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - dpix_val2 = decode_ham_pixel_aga(pix2); + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; } last_bpl_pix = pix2; } - shiftbpl8_64(); + shiftbpl4_64(); if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); + copybpl4_64(); + } + loaded_pix = getbpl4_64(); + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } } - loaded_pix = getbpl8_64(); loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { @@ -66620,21 +94391,58 @@ static void lts_aga_fm2_ham0_p8_ishres_dshres(void) if (denise_hdiw && bpl1dat_trigger) { pix3 = loaded_pixs[3]; clxdat |= bplcoltable[pix3]; - dpix_val3 = decode_ham_pixel_aga(pix3); + uae_u8 val3 = dpf_lookup[pix3]; + if (dpf_lookup_no[pix3]) { + val3 += dblpfofs[bpldualpf2of]; + } + val3 ^= bplcon4_denise_xor_val; + dpix_val3 = denise_colors.acolors[val3]; } last_bpl_pix = pix3; } - shiftbpl8_64(); + shiftbpl4_64(); if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); + copybpl4_64(); + } + loaded_pix = getbpl4_64(); + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } } - loaded_pix = getbpl8_64(); loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } dtbuf[h][0] = dpix_val0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } dtbuf[h][1] = dpix_val1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } dtbuf[h][2] = dpix_val2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + } + } dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -66691,11 +94499,11 @@ static void lts_aga_fm2_ham0_p8_ishres_dshres(void) denise_cck++; } } -static void lts_aga_fm2_ham0_p8_ishres_dshres_filtered(void) +static void lts_aga_fm2_dpf0_p4_ishres_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm2_ham1_p8_ishres_dshres(void) +static void lts_aga_fm2_dpf1_p4_ishres_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -66708,6 +94516,7 @@ static void lts_aga_fm2_ham1_p8_ishres_dshres(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -66715,20 +94524,34 @@ static void lts_aga_fm2_ham1_p8_ishres_dshres(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - dpix_val0 = decode_ham_pixel_aga(pix0); + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; } last_bpl_pix = pix0; } - shiftbpl8_64(); + shiftbpl4_64(); if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e_64(); + copybpl4e_64(); } if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); + copybpl4o_64(); + } + loaded_pix = getbpl4_64(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } } - loaded_pix = getbpl8_64(); loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { @@ -66736,20 +94559,34 @@ static void lts_aga_fm2_ham1_p8_ishres_dshres(void) if (denise_hdiw && bpl1dat_trigger) { pix1 = loaded_pixs[1]; clxdat |= bplcoltable[pix1]; - dpix_val1 = decode_ham_pixel_aga(pix1); + uae_u8 val1 = dpf_lookup[pix1]; + if (dpf_lookup_no[pix1]) { + val1 += dblpfofs[bpldualpf2of]; + } + val1 ^= bplcon4_denise_xor_val; + dpix_val1 = denise_colors.acolors[val1]; } last_bpl_pix = pix1; } - shiftbpl8_64(); + shiftbpl4_64(); if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e_64(); + copybpl4e_64(); } if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); + copybpl4o_64(); + } + loaded_pix = getbpl4_64(); + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } } - loaded_pix = getbpl8_64(); loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { @@ -66757,20 +94594,34 @@ static void lts_aga_fm2_ham1_p8_ishres_dshres(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - dpix_val2 = decode_ham_pixel_aga(pix2); + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; } last_bpl_pix = pix2; } - shiftbpl8_64(); + shiftbpl4_64(); if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e_64(); + copybpl4e_64(); } if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); + copybpl4o_64(); + } + loaded_pix = getbpl4_64(); + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } } - loaded_pix = getbpl8_64(); loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { @@ -66778,24 +94629,61 @@ static void lts_aga_fm2_ham1_p8_ishres_dshres(void) if (denise_hdiw && bpl1dat_trigger) { pix3 = loaded_pixs[3]; clxdat |= bplcoltable[pix3]; - dpix_val3 = decode_ham_pixel_aga(pix3); + uae_u8 val3 = dpf_lookup[pix3]; + if (dpf_lookup_no[pix3]) { + val3 += dblpfofs[bpldualpf2of]; + } + val3 ^= bplcon4_denise_xor_val; + dpix_val3 = denise_colors.acolors[val3]; } last_bpl_pix = pix3; } - shiftbpl8_64(); + shiftbpl4_64(); if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e_64(); + copybpl4e_64(); } if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); + copybpl4o_64(); + } + loaded_pix = getbpl4_64(); + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } } - loaded_pix = getbpl8_64(); loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } dtbuf[h][0] = dpix_val0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } dtbuf[h][1] = dpix_val1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } dtbuf[h][2] = dpix_val2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + } + } dtbuf[h][3] = dpix_val3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER @@ -66852,27 +94740,11 @@ static void lts_aga_fm2_ham1_p8_ishres_dshres(void) denise_cck++; } } -static void lts_aga_fm2_ham1_p8_ishres_dshres_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb0_p8_ishres_dshres(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb0_p8_ishres_dshres_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb1_p8_ishres_dshres(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb1_p8_ishres_dshres_filtered(void) +static void lts_aga_fm2_dpf1_p4_ishres_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm2_n0_p2_ishres_dshres_spr(void) +static void lts_aga_fm2_ehb0_p4_ishres_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -66883,25 +94755,13 @@ 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; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix0; - } - shiftbpl2_64(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl2_64(); } - loaded_pix = getbpl2_64(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -66910,25 +94770,13 @@ static void lts_aga_fm2_n0_p2_ishres_dshres_spr(void) sv0 = svt; } } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix1; - } - shiftbpl2_64(); - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl2_64(); } - loaded_pix = getbpl2_64(); uae_u32 sv1 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -66937,25 +94785,13 @@ static void lts_aga_fm2_n0_p2_ishres_dshres_spr(void) sv1 = svt; } } - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix2; - } - shiftbpl2_64(); - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl2_64(); } - loaded_pix = getbpl2_64(); uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -66964,25 +94800,13 @@ static void lts_aga_fm2_n0_p2_ishres_dshres_spr(void) sv2 = svt; } } - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix3; - } - shiftbpl2_64(); - if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { - copybpl2_64(); } - loaded_pix = getbpl2_64(); uae_u32 sv3 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -66991,7 +94815,6 @@ static void lts_aga_fm2_n0_p2_ishres_dshres_spr(void) sv3 = svt; } } - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { @@ -67077,11 +94900,11 @@ static void lts_aga_fm2_n0_p2_ishres_dshres_spr(void) denise_cck++; } } -static void lts_aga_fm2_n0_p2_ishres_dshres_spr_filtered(void) +static void lts_aga_fm2_ehb0_p4_ishres_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm2_n1_p2_ishres_dshres_spr(void) +static void lts_aga_fm2_ehb1_p4_ishres_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -67092,28 +94915,13 @@ 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; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix0; } - shiftbpl2_64(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl2e_64(); - } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl2o_64(); - } - loaded_pix = getbpl2_64(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -67122,28 +94930,13 @@ static void lts_aga_fm2_n1_p2_ishres_dshres_spr(void) sv0 = svt; } } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix1; - } - shiftbpl2_64(); - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl2e_64(); - } - if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { - copybpl2o_64(); } - loaded_pix = getbpl2_64(); uae_u32 sv1 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -67152,28 +94945,13 @@ static void lts_aga_fm2_n1_p2_ishres_dshres_spr(void) sv1 = svt; } } - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix2; - } - shiftbpl2_64(); - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl2e_64(); - } - if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { - copybpl2o_64(); } - loaded_pix = getbpl2_64(); uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -67182,28 +94960,13 @@ static void lts_aga_fm2_n1_p2_ishres_dshres_spr(void) sv2 = svt; } } - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix3; } - shiftbpl2_64(); - if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { - copybpl2e_64(); - } - if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) { - copybpl2o_64(); - } - loaded_pix = getbpl2_64(); uae_u32 sv3 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -67212,7 +94975,6 @@ static void lts_aga_fm2_n1_p2_ishres_dshres_spr(void) sv3 = svt; } } - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { @@ -67298,11 +95060,11 @@ static void lts_aga_fm2_n1_p2_ishres_dshres_spr(void) denise_cck++; } } -static void lts_aga_fm2_n1_p2_ishres_dshres_spr_filtered(void) +static void lts_aga_fm2_ehb1_p4_ishres_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm2_dpf0_p2_ishres_dshres_spr(void) +static void lts_aga_fm2_ham0_p4_ishres_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -67313,30 +95075,13 @@ 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; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; - } - shiftbpl2_64(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl2_64(); } - loaded_pix = getbpl2_64(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -67345,30 +95090,13 @@ static void lts_aga_fm2_dpf0_p2_ishres_dshres_spr(void) sv0 = svt; } } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - if (dpf_lookup_no[pix1]) { - val1 += dblpfofs[bpldualpf2of]; - } - val1 ^= bplcon4_denise_xor_val; - dpix_val1 = denise_colors.acolors[val1]; - } - last_bpl_pix = pix1; } - shiftbpl2_64(); - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl2_64(); - } - loaded_pix = getbpl2_64(); uae_u32 sv1 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -67377,30 +95105,13 @@ static void lts_aga_fm2_dpf0_p2_ishres_dshres_spr(void) sv1 = svt; } } - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; - } - last_bpl_pix = pix2; - } - shiftbpl2_64(); - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl2_64(); } - loaded_pix = getbpl2_64(); uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -67409,30 +95120,13 @@ static void lts_aga_fm2_dpf0_p2_ishres_dshres_spr(void) sv2 = svt; } } - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - uae_u8 val3 = dpf_lookup[pix3]; - if (dpf_lookup_no[pix3]) { - val3 += dblpfofs[bpldualpf2of]; - } - val3 ^= bplcon4_denise_xor_val; - dpix_val3 = denise_colors.acolors[val3]; - } - last_bpl_pix = pix3; - } - shiftbpl2_64(); - if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { - copybpl2_64(); } - loaded_pix = getbpl2_64(); uae_u32 sv3 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -67441,7 +95135,6 @@ static void lts_aga_fm2_dpf0_p2_ishres_dshres_spr(void) sv3 = svt; } } - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { @@ -67527,11 +95220,11 @@ static void lts_aga_fm2_dpf0_p2_ishres_dshres_spr(void) denise_cck++; } } -static void lts_aga_fm2_dpf0_p2_ishres_dshres_spr_filtered(void) +static void lts_aga_fm2_ham0_p4_ishres_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm2_dpf1_p2_ishres_dshres_spr(void) +static void lts_aga_fm2_ham1_p4_ishres_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -67542,33 +95235,13 @@ 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; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; - } - shiftbpl2_64(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl2e_64(); - } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl2o_64(); } - loaded_pix = getbpl2_64(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -67577,33 +95250,13 @@ static void lts_aga_fm2_dpf1_p2_ishres_dshres_spr(void) sv0 = svt; } } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - if (dpf_lookup_no[pix1]) { - val1 += dblpfofs[bpldualpf2of]; - } - val1 ^= bplcon4_denise_xor_val; - dpix_val1 = denise_colors.acolors[val1]; - } - last_bpl_pix = pix1; - } - shiftbpl2_64(); - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl2e_64(); - } - if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { - copybpl2o_64(); } - loaded_pix = getbpl2_64(); uae_u32 sv1 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -67612,33 +95265,13 @@ static void lts_aga_fm2_dpf1_p2_ishres_dshres_spr(void) sv1 = svt; } } - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; - } - last_bpl_pix = pix2; } - shiftbpl2_64(); - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl2e_64(); - } - if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { - copybpl2o_64(); - } - loaded_pix = getbpl2_64(); uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -67647,33 +95280,13 @@ static void lts_aga_fm2_dpf1_p2_ishres_dshres_spr(void) sv2 = svt; } } - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - uae_u8 val3 = dpf_lookup[pix3]; - if (dpf_lookup_no[pix3]) { - val3 += dblpfofs[bpldualpf2of]; - } - val3 ^= bplcon4_denise_xor_val; - dpix_val3 = denise_colors.acolors[val3]; - } - last_bpl_pix = pix3; } - shiftbpl2_64(); - if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { - copybpl2e_64(); - } - if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) { - copybpl2o_64(); - } - loaded_pix = getbpl2_64(); uae_u32 sv3 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -67682,7 +95295,6 @@ static void lts_aga_fm2_dpf1_p2_ishres_dshres_spr(void) sv3 = svt; } } - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { @@ -67768,59 +95380,11 @@ static void lts_aga_fm2_dpf1_p2_ishres_dshres_spr(void) denise_cck++; } } -static void lts_aga_fm2_dpf1_p2_ishres_dshres_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb0_p2_ishres_dshres_spr(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb0_p2_ishres_dshres_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb1_p2_ishres_dshres_spr(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb1_p2_ishres_dshres_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_ham0_p2_ishres_dshres_spr(void) -{ - lts_null(); -} -static void lts_aga_fm2_ham0_p2_ishres_dshres_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_ham1_p2_ishres_dshres_spr(void) -{ - lts_null(); -} -static void lts_aga_fm2_ham1_p2_ishres_dshres_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb0_p2_ishres_dshres_spr(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb0_p2_ishres_dshres_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb1_p2_ishres_dshres_spr(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb1_p2_ishres_dshres_spr_filtered(void) +static void lts_aga_fm2_ham1_p4_ishres_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm2_n0_p4_ishres_dshres_spr(void) +static void lts_aga_fm2_kehb0_p4_ishres_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -67831,25 +95395,13 @@ 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; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix0; - } - shiftbpl4_64(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4_64(); } - loaded_pix = getbpl4_64(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -67858,25 +95410,13 @@ static void lts_aga_fm2_n0_p4_ishres_dshres_spr(void) sv0 = svt; } } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix1; } - shiftbpl4_64(); - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4_64(); - } - loaded_pix = getbpl4_64(); uae_u32 sv1 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -67885,25 +95425,13 @@ static void lts_aga_fm2_n0_p4_ishres_dshres_spr(void) sv1 = svt; } } - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix2; - } - shiftbpl4_64(); - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4_64(); } - loaded_pix = getbpl4_64(); uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -67912,25 +95440,13 @@ static void lts_aga_fm2_n0_p4_ishres_dshres_spr(void) sv2 = svt; } } - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix3; - } - shiftbpl4_64(); - if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4_64(); } - loaded_pix = getbpl4_64(); uae_u32 sv3 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -67939,7 +95455,6 @@ static void lts_aga_fm2_n0_p4_ishres_dshres_spr(void) sv3 = svt; } } - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { @@ -68025,11 +95540,11 @@ static void lts_aga_fm2_n0_p4_ishres_dshres_spr(void) denise_cck++; } } -static void lts_aga_fm2_n0_p4_ishres_dshres_spr_filtered(void) +static void lts_aga_fm2_kehb0_p4_ishres_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm2_n1_p4_ishres_dshres_spr(void) +static void lts_aga_fm2_kehb1_p4_ishres_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -68040,28 +95555,13 @@ 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; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix0; } - shiftbpl4_64(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4e_64(); - } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl4o_64(); - } - loaded_pix = getbpl4_64(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -68070,28 +95570,13 @@ static void lts_aga_fm2_n1_p4_ishres_dshres_spr(void) sv0 = svt; } } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix1; - } - shiftbpl4_64(); - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4e_64(); - } - if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { - copybpl4o_64(); } - loaded_pix = getbpl4_64(); uae_u32 sv1 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -68100,28 +95585,13 @@ static void lts_aga_fm2_n1_p4_ishres_dshres_spr(void) sv1 = svt; } } - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix2; } - shiftbpl4_64(); - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4e_64(); - } - if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { - copybpl4o_64(); - } - loaded_pix = getbpl4_64(); uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -68130,28 +95600,13 @@ static void lts_aga_fm2_n1_p4_ishres_dshres_spr(void) sv2 = svt; } } - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; - } - last_bpl_pix = pix3; - } - shiftbpl4_64(); - if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4e_64(); - } - if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) { - copybpl4o_64(); } - loaded_pix = getbpl4_64(); uae_u32 sv3 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -68160,7 +95615,6 @@ static void lts_aga_fm2_n1_p4_ishres_dshres_spr(void) sv3 = svt; } } - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { @@ -68246,11 +95700,11 @@ static void lts_aga_fm2_n1_p4_ishres_dshres_spr(void) denise_cck++; } } -static void lts_aga_fm2_n1_p4_ishres_dshres_spr_filtered(void) +static void lts_aga_fm2_kehb1_p4_ishres_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm2_dpf0_p4_ishres_dshres_spr(void) +static void lts_aga_fm2_n0_p6_ishres_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -68271,20 +95725,15 @@ static void lts_aga_fm2_dpf0_p4_ishres_dshres_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix0; } - shiftbpl4_64(); + shiftbpl6_64(); if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4_64(); + copybpl6_64(); } - loaded_pix = getbpl4_64(); + loaded_pix = getbpl6_64(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -68303,20 +95752,15 @@ static void lts_aga_fm2_dpf0_p4_ishres_dshres_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix1 = loaded_pixs[1]; clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - if (dpf_lookup_no[pix1]) { - val1 += dblpfofs[bpldualpf2of]; - } - val1 ^= bplcon4_denise_xor_val; - dpix_val1 = denise_colors.acolors[val1]; + dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix1; } - shiftbpl4_64(); + shiftbpl6_64(); if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4_64(); + copybpl6_64(); } - loaded_pix = getbpl4_64(); + loaded_pix = getbpl6_64(); uae_u32 sv1 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -68335,20 +95779,15 @@ static void lts_aga_fm2_dpf0_p4_ishres_dshres_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix2; } - shiftbpl4_64(); + shiftbpl6_64(); if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4_64(); + copybpl6_64(); } - loaded_pix = getbpl4_64(); + loaded_pix = getbpl6_64(); uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -68367,20 +95806,15 @@ static void lts_aga_fm2_dpf0_p4_ishres_dshres_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix3 = loaded_pixs[3]; clxdat |= bplcoltable[pix3]; - uae_u8 val3 = dpf_lookup[pix3]; - if (dpf_lookup_no[pix3]) { - val3 += dblpfofs[bpldualpf2of]; - } - val3 ^= bplcon4_denise_xor_val; - dpix_val3 = denise_colors.acolors[val3]; + dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix3; } - shiftbpl4_64(); + shiftbpl6_64(); if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4_64(); + copybpl6_64(); } - loaded_pix = getbpl4_64(); + loaded_pix = getbpl6_64(); uae_u32 sv3 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -68475,11 +95909,11 @@ static void lts_aga_fm2_dpf0_p4_ishres_dshres_spr(void) denise_cck++; } } -static void lts_aga_fm2_dpf0_p4_ishres_dshres_spr_filtered(void) +static void lts_aga_fm2_n0_p6_ishres_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm2_dpf1_p4_ishres_dshres_spr(void) +static void lts_aga_fm2_n1_p6_ishres_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -68500,23 +95934,18 @@ static void lts_aga_fm2_dpf1_p4_ishres_dshres_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix0; } - shiftbpl4_64(); + shiftbpl6_64(); if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4e_64(); + copybpl6e_64(); } if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl4o_64(); + copybpl6o_64(); } - loaded_pix = getbpl4_64(); + loaded_pix = getbpl6_64(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -68535,23 +95964,18 @@ static void lts_aga_fm2_dpf1_p4_ishres_dshres_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix1 = loaded_pixs[1]; clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - if (dpf_lookup_no[pix1]) { - val1 += dblpfofs[bpldualpf2of]; - } - val1 ^= bplcon4_denise_xor_val; - dpix_val1 = denise_colors.acolors[val1]; + dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix1; } - shiftbpl4_64(); + shiftbpl6_64(); if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4e_64(); + copybpl6e_64(); } if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { - copybpl4o_64(); + copybpl6o_64(); } - loaded_pix = getbpl4_64(); + loaded_pix = getbpl6_64(); uae_u32 sv1 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -68570,23 +95994,18 @@ static void lts_aga_fm2_dpf1_p4_ishres_dshres_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix2; } - shiftbpl4_64(); + shiftbpl6_64(); if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4e_64(); + copybpl6e_64(); } if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { - copybpl4o_64(); + copybpl6o_64(); } - loaded_pix = getbpl4_64(); + loaded_pix = getbpl6_64(); uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -68605,23 +96024,18 @@ static void lts_aga_fm2_dpf1_p4_ishres_dshres_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix3 = loaded_pixs[3]; clxdat |= bplcoltable[pix3]; - uae_u8 val3 = dpf_lookup[pix3]; - if (dpf_lookup_no[pix3]) { - val3 += dblpfofs[bpldualpf2of]; - } - val3 ^= bplcon4_denise_xor_val; - dpix_val3 = denise_colors.acolors[val3]; + dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix3; } - shiftbpl4_64(); + shiftbpl6_64(); if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4e_64(); + copybpl6e_64(); } if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) { - copybpl4o_64(); + copybpl6o_64(); } - loaded_pix = getbpl4_64(); + loaded_pix = getbpl6_64(); uae_u32 sv3 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -68716,59 +96130,11 @@ static void lts_aga_fm2_dpf1_p4_ishres_dshres_spr(void) denise_cck++; } } -static void lts_aga_fm2_dpf1_p4_ishres_dshres_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb0_p4_ishres_dshres_spr(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb0_p4_ishres_dshres_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb1_p4_ishres_dshres_spr(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb1_p4_ishres_dshres_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_ham0_p4_ishres_dshres_spr(void) -{ - lts_null(); -} -static void lts_aga_fm2_ham0_p4_ishres_dshres_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_ham1_p4_ishres_dshres_spr(void) -{ - lts_null(); -} -static void lts_aga_fm2_ham1_p4_ishres_dshres_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb0_p4_ishres_dshres_spr(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb0_p4_ishres_dshres_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb1_p4_ishres_dshres_spr(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb1_p4_ishres_dshres_spr_filtered(void) +static void lts_aga_fm2_n1_p6_ishres_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm2_n0_p6_ishres_dshres_spr(void) +static void lts_aga_fm2_dpf0_p6_ishres_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -68789,7 +96155,12 @@ static void lts_aga_fm2_n0_p6_ishres_dshres_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; } last_bpl_pix = pix0; } @@ -68816,7 +96187,12 @@ static void lts_aga_fm2_n0_p6_ishres_dshres_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix1 = loaded_pixs[1]; clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; + uae_u8 val1 = dpf_lookup[pix1]; + if (dpf_lookup_no[pix1]) { + val1 += dblpfofs[bpldualpf2of]; + } + val1 ^= bplcon4_denise_xor_val; + dpix_val1 = denise_colors.acolors[val1]; } last_bpl_pix = pix1; } @@ -68843,7 +96219,12 @@ static void lts_aga_fm2_n0_p6_ishres_dshres_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; } last_bpl_pix = pix2; } @@ -68870,7 +96251,12 @@ static void lts_aga_fm2_n0_p6_ishres_dshres_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix3 = loaded_pixs[3]; clxdat |= bplcoltable[pix3]; - dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; + uae_u8 val3 = dpf_lookup[pix3]; + if (dpf_lookup_no[pix3]) { + val3 += dblpfofs[bpldualpf2of]; + } + val3 ^= bplcon4_denise_xor_val; + dpix_val3 = denise_colors.acolors[val3]; } last_bpl_pix = pix3; } @@ -68973,11 +96359,11 @@ static void lts_aga_fm2_n0_p6_ishres_dshres_spr(void) denise_cck++; } } -static void lts_aga_fm2_n0_p6_ishres_dshres_spr_filtered(void) +static void lts_aga_fm2_dpf0_p6_ishres_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm2_n1_p6_ishres_dshres_spr(void) +static void lts_aga_fm2_dpf1_p6_ishres_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -68998,7 +96384,12 @@ static void lts_aga_fm2_n1_p6_ishres_dshres_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; } last_bpl_pix = pix0; } @@ -69028,7 +96419,12 @@ static void lts_aga_fm2_n1_p6_ishres_dshres_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix1 = loaded_pixs[1]; clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; + uae_u8 val1 = dpf_lookup[pix1]; + if (dpf_lookup_no[pix1]) { + val1 += dblpfofs[bpldualpf2of]; + } + val1 ^= bplcon4_denise_xor_val; + dpix_val1 = denise_colors.acolors[val1]; } last_bpl_pix = pix1; } @@ -69058,7 +96454,12 @@ static void lts_aga_fm2_n1_p6_ishres_dshres_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; } last_bpl_pix = pix2; } @@ -69088,7 +96489,12 @@ static void lts_aga_fm2_n1_p6_ishres_dshres_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix3 = loaded_pixs[3]; clxdat |= bplcoltable[pix3]; - dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; + uae_u8 val3 = dpf_lookup[pix3]; + if (dpf_lookup_no[pix3]) { + val3 += dblpfofs[bpldualpf2of]; + } + val3 ^= bplcon4_denise_xor_val; + dpix_val3 = denise_colors.acolors[val3]; } last_bpl_pix = pix3; } @@ -69194,11 +96600,11 @@ static void lts_aga_fm2_n1_p6_ishres_dshres_spr(void) denise_cck++; } } -static void lts_aga_fm2_n1_p6_ishres_dshres_spr_filtered(void) +static void lts_aga_fm2_dpf1_p6_ishres_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm2_dpf0_p6_ishres_dshres_spr(void) +static void lts_aga_fm2_ehb0_p6_ishres_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -69219,12 +96625,13 @@ static void lts_aga_fm2_dpf0_p6_ishres_dshres_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; + pix0 ^= bplcon4_denise_xor_val; + if (!(pix0 & 0x20)) { + dpix_val0 = denise_colors.acolors[pix0]; + } else { + uae_u32 v = (denise_colors.color_regs_aga[pix0 & 0x1f] >> 1) & 0x7f7f7f; + dpix_val0 = CONVERT_RGB(v); } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; } last_bpl_pix = pix0; } @@ -69251,12 +96658,13 @@ static void lts_aga_fm2_dpf0_p6_ishres_dshres_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix1 = loaded_pixs[1]; clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - if (dpf_lookup_no[pix1]) { - val1 += dblpfofs[bpldualpf2of]; + pix1 ^= bplcon4_denise_xor_val; + if (!(pix1 & 0x20)) { + dpix_val1 = denise_colors.acolors[pix1]; + } else { + uae_u32 v = (denise_colors.color_regs_aga[pix1 & 0x1f] >> 1) & 0x7f7f7f; + dpix_val1 = CONVERT_RGB(v); } - val1 ^= bplcon4_denise_xor_val; - dpix_val1 = denise_colors.acolors[val1]; } last_bpl_pix = pix1; } @@ -69283,12 +96691,13 @@ static void lts_aga_fm2_dpf0_p6_ishres_dshres_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; + pix2 ^= bplcon4_denise_xor_val; + if (!(pix2 & 0x20)) { + dpix_val2 = denise_colors.acolors[pix2]; + } else { + uae_u32 v = (denise_colors.color_regs_aga[pix2 & 0x1f] >> 1) & 0x7f7f7f; + dpix_val2 = CONVERT_RGB(v); } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; } last_bpl_pix = pix2; } @@ -69315,12 +96724,13 @@ static void lts_aga_fm2_dpf0_p6_ishres_dshres_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix3 = loaded_pixs[3]; clxdat |= bplcoltable[pix3]; - uae_u8 val3 = dpf_lookup[pix3]; - if (dpf_lookup_no[pix3]) { - val3 += dblpfofs[bpldualpf2of]; + pix3 ^= bplcon4_denise_xor_val; + if (!(pix3 & 0x20)) { + dpix_val3 = denise_colors.acolors[pix3]; + } else { + uae_u32 v = (denise_colors.color_regs_aga[pix3 & 0x1f] >> 1) & 0x7f7f7f; + dpix_val3 = CONVERT_RGB(v); } - val3 ^= bplcon4_denise_xor_val; - dpix_val3 = denise_colors.acolors[val3]; } last_bpl_pix = pix3; } @@ -69423,11 +96833,11 @@ static void lts_aga_fm2_dpf0_p6_ishres_dshres_spr(void) denise_cck++; } } -static void lts_aga_fm2_dpf0_p6_ishres_dshres_spr_filtered(void) +static void lts_aga_fm2_ehb0_p6_ishres_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm2_dpf1_p6_ishres_dshres_spr(void) +static void lts_aga_fm2_ehb1_p6_ishres_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -69448,12 +96858,13 @@ static void lts_aga_fm2_dpf1_p6_ishres_dshres_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; + pix0 ^= bplcon4_denise_xor_val; + if (!(pix0 & 0x20)) { + dpix_val0 = denise_colors.acolors[pix0]; + } else { + uae_u32 v = (denise_colors.color_regs_aga[pix0 & 0x1f] >> 1) & 0x7f7f7f; + dpix_val0 = CONVERT_RGB(v); } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; } last_bpl_pix = pix0; } @@ -69483,12 +96894,13 @@ static void lts_aga_fm2_dpf1_p6_ishres_dshres_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix1 = loaded_pixs[1]; clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - if (dpf_lookup_no[pix1]) { - val1 += dblpfofs[bpldualpf2of]; + pix1 ^= bplcon4_denise_xor_val; + if (!(pix1 & 0x20)) { + dpix_val1 = denise_colors.acolors[pix1]; + } else { + uae_u32 v = (denise_colors.color_regs_aga[pix1 & 0x1f] >> 1) & 0x7f7f7f; + dpix_val1 = CONVERT_RGB(v); } - val1 ^= bplcon4_denise_xor_val; - dpix_val1 = denise_colors.acolors[val1]; } last_bpl_pix = pix1; } @@ -69518,12 +96930,13 @@ static void lts_aga_fm2_dpf1_p6_ishres_dshres_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; + pix2 ^= bplcon4_denise_xor_val; + if (!(pix2 & 0x20)) { + dpix_val2 = denise_colors.acolors[pix2]; + } else { + uae_u32 v = (denise_colors.color_regs_aga[pix2 & 0x1f] >> 1) & 0x7f7f7f; + dpix_val2 = CONVERT_RGB(v); } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; } last_bpl_pix = pix2; } @@ -69553,12 +96966,13 @@ static void lts_aga_fm2_dpf1_p6_ishres_dshres_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix3 = loaded_pixs[3]; clxdat |= bplcoltable[pix3]; - uae_u8 val3 = dpf_lookup[pix3]; - if (dpf_lookup_no[pix3]) { - val3 += dblpfofs[bpldualpf2of]; + pix3 ^= bplcon4_denise_xor_val; + if (!(pix3 & 0x20)) { + dpix_val3 = denise_colors.acolors[pix3]; + } else { + uae_u32 v = (denise_colors.color_regs_aga[pix3 & 0x1f] >> 1) & 0x7f7f7f; + dpix_val3 = CONVERT_RGB(v); } - val3 ^= bplcon4_denise_xor_val; - dpix_val3 = denise_colors.acolors[val3]; } last_bpl_pix = pix3; } @@ -69664,11 +97078,11 @@ static void lts_aga_fm2_dpf1_p6_ishres_dshres_spr(void) denise_cck++; } } -static void lts_aga_fm2_dpf1_p6_ishres_dshres_spr_filtered(void) +static void lts_aga_fm2_ehb1_p6_ishres_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm2_ehb0_p6_ishres_dshres_spr(void) +static void lts_aga_fm2_ham0_p6_ishres_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -69689,13 +97103,7 @@ static void lts_aga_fm2_ehb0_p6_ishres_dshres_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - pix0 ^= bplcon4_denise_xor_val; - if (!(pix0 & 0x20)) { - dpix_val0 = denise_colors.acolors[pix0]; - } else { - uae_u32 v = (denise_colors.color_regs_aga[pix0 & 0x1f] >> 1) & 0x7f7f7f; - dpix_val0 = CONVERT_RGB(v); - } + dpix_val0 = decode_ham_pixel_aga(pix0); } last_bpl_pix = pix0; } @@ -69722,13 +97130,7 @@ static void lts_aga_fm2_ehb0_p6_ishres_dshres_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix1 = loaded_pixs[1]; clxdat |= bplcoltable[pix1]; - pix1 ^= bplcon4_denise_xor_val; - if (!(pix1 & 0x20)) { - dpix_val1 = denise_colors.acolors[pix1]; - } else { - uae_u32 v = (denise_colors.color_regs_aga[pix1 & 0x1f] >> 1) & 0x7f7f7f; - dpix_val1 = CONVERT_RGB(v); - } + dpix_val1 = decode_ham_pixel_aga(pix1); } last_bpl_pix = pix1; } @@ -69755,13 +97157,7 @@ static void lts_aga_fm2_ehb0_p6_ishres_dshres_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - pix2 ^= bplcon4_denise_xor_val; - if (!(pix2 & 0x20)) { - dpix_val2 = denise_colors.acolors[pix2]; - } else { - uae_u32 v = (denise_colors.color_regs_aga[pix2 & 0x1f] >> 1) & 0x7f7f7f; - dpix_val2 = CONVERT_RGB(v); - } + dpix_val2 = decode_ham_pixel_aga(pix2); } last_bpl_pix = pix2; } @@ -69788,13 +97184,7 @@ static void lts_aga_fm2_ehb0_p6_ishres_dshres_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix3 = loaded_pixs[3]; clxdat |= bplcoltable[pix3]; - pix3 ^= bplcon4_denise_xor_val; - if (!(pix3 & 0x20)) { - dpix_val3 = denise_colors.acolors[pix3]; - } else { - uae_u32 v = (denise_colors.color_regs_aga[pix3 & 0x1f] >> 1) & 0x7f7f7f; - dpix_val3 = CONVERT_RGB(v); - } + dpix_val3 = decode_ham_pixel_aga(pix3); } last_bpl_pix = pix3; } @@ -69897,11 +97287,11 @@ static void lts_aga_fm2_ehb0_p6_ishres_dshres_spr(void) denise_cck++; } } -static void lts_aga_fm2_ehb0_p6_ishres_dshres_spr_filtered(void) +static void lts_aga_fm2_ham0_p6_ishres_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm2_ehb1_p6_ishres_dshres_spr(void) +static void lts_aga_fm2_ham1_p6_ishres_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -69922,13 +97312,7 @@ static void lts_aga_fm2_ehb1_p6_ishres_dshres_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - pix0 ^= bplcon4_denise_xor_val; - if (!(pix0 & 0x20)) { - dpix_val0 = denise_colors.acolors[pix0]; - } else { - uae_u32 v = (denise_colors.color_regs_aga[pix0 & 0x1f] >> 1) & 0x7f7f7f; - dpix_val0 = CONVERT_RGB(v); - } + dpix_val0 = decode_ham_pixel_aga(pix0); } last_bpl_pix = pix0; } @@ -69958,13 +97342,7 @@ static void lts_aga_fm2_ehb1_p6_ishres_dshres_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix1 = loaded_pixs[1]; clxdat |= bplcoltable[pix1]; - pix1 ^= bplcon4_denise_xor_val; - if (!(pix1 & 0x20)) { - dpix_val1 = denise_colors.acolors[pix1]; - } else { - uae_u32 v = (denise_colors.color_regs_aga[pix1 & 0x1f] >> 1) & 0x7f7f7f; - dpix_val1 = CONVERT_RGB(v); - } + dpix_val1 = decode_ham_pixel_aga(pix1); } last_bpl_pix = pix1; } @@ -69994,13 +97372,7 @@ static void lts_aga_fm2_ehb1_p6_ishres_dshres_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - pix2 ^= bplcon4_denise_xor_val; - if (!(pix2 & 0x20)) { - dpix_val2 = denise_colors.acolors[pix2]; - } else { - uae_u32 v = (denise_colors.color_regs_aga[pix2 & 0x1f] >> 1) & 0x7f7f7f; - dpix_val2 = CONVERT_RGB(v); - } + dpix_val2 = decode_ham_pixel_aga(pix2); } last_bpl_pix = pix2; } @@ -70030,13 +97402,7 @@ static void lts_aga_fm2_ehb1_p6_ishres_dshres_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix3 = loaded_pixs[3]; clxdat |= bplcoltable[pix3]; - pix3 ^= bplcon4_denise_xor_val; - if (!(pix3 & 0x20)) { - dpix_val3 = denise_colors.acolors[pix3]; - } else { - uae_u32 v = (denise_colors.color_regs_aga[pix3 & 0x1f] >> 1) & 0x7f7f7f; - dpix_val3 = CONVERT_RGB(v); - } + dpix_val3 = decode_ham_pixel_aga(pix3); } last_bpl_pix = pix3; } @@ -70142,11 +97508,11 @@ static void lts_aga_fm2_ehb1_p6_ishres_dshres_spr(void) denise_cck++; } } -static void lts_aga_fm2_ehb1_p6_ishres_dshres_spr_filtered(void) +static void lts_aga_fm2_ham1_p6_ishres_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm2_ham0_p6_ishres_dshres_spr(void) +static void lts_aga_fm2_kehb0_p6_ishres_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -70167,7 +97533,8 @@ static void lts_aga_fm2_ham0_p6_ishres_dshres_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - dpix_val0 = decode_ham_pixel_aga(pix0); + pix0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[pix0 & 31]; } last_bpl_pix = pix0; } @@ -70194,7 +97561,8 @@ static void lts_aga_fm2_ham0_p6_ishres_dshres_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix1 = loaded_pixs[1]; clxdat |= bplcoltable[pix1]; - dpix_val1 = decode_ham_pixel_aga(pix1); + pix1 ^= bplcon4_denise_xor_val; + dpix_val1 = denise_colors.acolors[pix1 & 31]; } last_bpl_pix = pix1; } @@ -70221,7 +97589,8 @@ static void lts_aga_fm2_ham0_p6_ishres_dshres_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - dpix_val2 = decode_ham_pixel_aga(pix2); + pix2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[pix2 & 31]; } last_bpl_pix = pix2; } @@ -70248,7 +97617,8 @@ static void lts_aga_fm2_ham0_p6_ishres_dshres_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix3 = loaded_pixs[3]; clxdat |= bplcoltable[pix3]; - dpix_val3 = decode_ham_pixel_aga(pix3); + pix3 ^= bplcon4_denise_xor_val; + dpix_val3 = denise_colors.acolors[pix3 & 31]; } last_bpl_pix = pix3; } @@ -70351,11 +97721,11 @@ static void lts_aga_fm2_ham0_p6_ishres_dshres_spr(void) denise_cck++; } } -static void lts_aga_fm2_ham0_p6_ishres_dshres_spr_filtered(void) +static void lts_aga_fm2_kehb0_p6_ishres_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm2_ham1_p6_ishres_dshres_spr(void) +static void lts_aga_fm2_kehb1_p6_ishres_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -70376,7 +97746,8 @@ static void lts_aga_fm2_ham1_p6_ishres_dshres_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - dpix_val0 = decode_ham_pixel_aga(pix0); + pix0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[pix0 & 31]; } last_bpl_pix = pix0; } @@ -70406,7 +97777,8 @@ static void lts_aga_fm2_ham1_p6_ishres_dshres_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix1 = loaded_pixs[1]; clxdat |= bplcoltable[pix1]; - dpix_val1 = decode_ham_pixel_aga(pix1); + pix1 ^= bplcon4_denise_xor_val; + dpix_val1 = denise_colors.acolors[pix1 & 31]; } last_bpl_pix = pix1; } @@ -70436,7 +97808,8 @@ static void lts_aga_fm2_ham1_p6_ishres_dshres_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - dpix_val2 = decode_ham_pixel_aga(pix2); + pix2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[pix2 & 31]; } last_bpl_pix = pix2; } @@ -70466,7 +97839,8 @@ static void lts_aga_fm2_ham1_p6_ishres_dshres_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix3 = loaded_pixs[3]; clxdat |= bplcoltable[pix3]; - dpix_val3 = decode_ham_pixel_aga(pix3); + pix3 ^= bplcon4_denise_xor_val; + dpix_val3 = denise_colors.acolors[pix3 & 31]; } last_bpl_pix = pix3; } @@ -70572,11 +97946,11 @@ static void lts_aga_fm2_ham1_p6_ishres_dshres_spr(void) denise_cck++; } } -static void lts_aga_fm2_ham1_p6_ishres_dshres_spr_filtered(void) +static void lts_aga_fm2_kehb1_p6_ishres_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm2_kehb0_p6_ishres_dshres_spr(void) +static void lts_aga_fm2_n0_p8_ishres_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -70597,16 +97971,15 @@ static void lts_aga_fm2_kehb0_p6_ishres_dshres_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - pix0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[pix0 & 31]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix0; } - shiftbpl6_64(); + shiftbpl8_64(); if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6_64(); + copybpl8_64(); } - loaded_pix = getbpl6_64(); + loaded_pix = getbpl8_64(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -70625,16 +97998,15 @@ static void lts_aga_fm2_kehb0_p6_ishres_dshres_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix1 = loaded_pixs[1]; clxdat |= bplcoltable[pix1]; - pix1 ^= bplcon4_denise_xor_val; - dpix_val1 = denise_colors.acolors[pix1 & 31]; + dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix1; } - shiftbpl6_64(); + shiftbpl8_64(); if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6_64(); + copybpl8_64(); } - loaded_pix = getbpl6_64(); + loaded_pix = getbpl8_64(); uae_u32 sv1 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -70653,16 +98025,15 @@ static void lts_aga_fm2_kehb0_p6_ishres_dshres_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - pix2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[pix2 & 31]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix2; } - shiftbpl6_64(); + shiftbpl8_64(); if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6_64(); + copybpl8_64(); } - loaded_pix = getbpl6_64(); + loaded_pix = getbpl8_64(); uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -70681,16 +98052,15 @@ static void lts_aga_fm2_kehb0_p6_ishres_dshres_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix3 = loaded_pixs[3]; clxdat |= bplcoltable[pix3]; - pix3 ^= bplcon4_denise_xor_val; - dpix_val3 = denise_colors.acolors[pix3 & 31]; + dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix3; } - shiftbpl6_64(); + shiftbpl8_64(); if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6_64(); + copybpl8_64(); } - loaded_pix = getbpl6_64(); + loaded_pix = getbpl8_64(); uae_u32 sv3 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -70785,11 +98155,11 @@ static void lts_aga_fm2_kehb0_p6_ishres_dshres_spr(void) denise_cck++; } } -static void lts_aga_fm2_kehb0_p6_ishres_dshres_spr_filtered(void) +static void lts_aga_fm2_n0_p8_ishres_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm2_kehb1_p6_ishres_dshres_spr(void) +static void lts_aga_fm2_n1_p8_ishres_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -70810,19 +98180,18 @@ static void lts_aga_fm2_kehb1_p6_ishres_dshres_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - pix0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[pix0 & 31]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix0; } - shiftbpl6_64(); + shiftbpl8_64(); if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6e_64(); + copybpl8e_64(); } if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl6o_64(); + copybpl8o_64(); } - loaded_pix = getbpl6_64(); + loaded_pix = getbpl8_64(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -70841,19 +98210,18 @@ static void lts_aga_fm2_kehb1_p6_ishres_dshres_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix1 = loaded_pixs[1]; clxdat |= bplcoltable[pix1]; - pix1 ^= bplcon4_denise_xor_val; - dpix_val1 = denise_colors.acolors[pix1 & 31]; + dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix1; } - shiftbpl6_64(); + shiftbpl8_64(); if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6e_64(); + copybpl8e_64(); } if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { - copybpl6o_64(); + copybpl8o_64(); } - loaded_pix = getbpl6_64(); + loaded_pix = getbpl8_64(); uae_u32 sv1 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -70872,19 +98240,18 @@ static void lts_aga_fm2_kehb1_p6_ishres_dshres_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - pix2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[pix2 & 31]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix2; } - shiftbpl6_64(); + shiftbpl8_64(); if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6e_64(); + copybpl8e_64(); } if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { - copybpl6o_64(); + copybpl8o_64(); } - loaded_pix = getbpl6_64(); + loaded_pix = getbpl8_64(); uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -70903,19 +98270,18 @@ static void lts_aga_fm2_kehb1_p6_ishres_dshres_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix3 = loaded_pixs[3]; clxdat |= bplcoltable[pix3]; - pix3 ^= bplcon4_denise_xor_val; - dpix_val3 = denise_colors.acolors[pix3 & 31]; + dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; } last_bpl_pix = pix3; } - shiftbpl6_64(); + shiftbpl8_64(); if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { - copybpl6e_64(); + copybpl8e_64(); } if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) { - copybpl6o_64(); + copybpl8o_64(); } - loaded_pix = getbpl6_64(); + loaded_pix = getbpl8_64(); uae_u32 sv3 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -71010,11 +98376,11 @@ static void lts_aga_fm2_kehb1_p6_ishres_dshres_spr(void) denise_cck++; } } -static void lts_aga_fm2_kehb1_p6_ishres_dshres_spr_filtered(void) +static void lts_aga_fm2_n1_p8_ishres_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm2_n0_p8_ishres_dshres_spr(void) +static void lts_aga_fm2_dpf0_p8_ishres_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -71035,7 +98401,12 @@ static void lts_aga_fm2_n0_p8_ishres_dshres_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; } last_bpl_pix = pix0; } @@ -71062,7 +98433,12 @@ static void lts_aga_fm2_n0_p8_ishres_dshres_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix1 = loaded_pixs[1]; clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; + uae_u8 val1 = dpf_lookup[pix1]; + if (dpf_lookup_no[pix1]) { + val1 += dblpfofs[bpldualpf2of]; + } + val1 ^= bplcon4_denise_xor_val; + dpix_val1 = denise_colors.acolors[val1]; } last_bpl_pix = pix1; } @@ -71089,7 +98465,12 @@ static void lts_aga_fm2_n0_p8_ishres_dshres_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; } last_bpl_pix = pix2; } @@ -71116,7 +98497,12 @@ static void lts_aga_fm2_n0_p8_ishres_dshres_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix3 = loaded_pixs[3]; clxdat |= bplcoltable[pix3]; - dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; + uae_u8 val3 = dpf_lookup[pix3]; + if (dpf_lookup_no[pix3]) { + val3 += dblpfofs[bpldualpf2of]; + } + val3 ^= bplcon4_denise_xor_val; + dpix_val3 = denise_colors.acolors[val3]; } last_bpl_pix = pix3; } @@ -71219,11 +98605,11 @@ static void lts_aga_fm2_n0_p8_ishres_dshres_spr(void) denise_cck++; } } -static void lts_aga_fm2_n0_p8_ishres_dshres_spr_filtered(void) +static void lts_aga_fm2_dpf0_p8_ishres_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm2_n1_p8_ishres_dshres_spr(void) +static void lts_aga_fm2_dpf1_p8_ishres_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -71244,7 +98630,12 @@ static void lts_aga_fm2_n1_p8_ishres_dshres_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; } last_bpl_pix = pix0; } @@ -71274,7 +98665,12 @@ static void lts_aga_fm2_n1_p8_ishres_dshres_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix1 = loaded_pixs[1]; clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; + uae_u8 val1 = dpf_lookup[pix1]; + if (dpf_lookup_no[pix1]) { + val1 += dblpfofs[bpldualpf2of]; + } + val1 ^= bplcon4_denise_xor_val; + dpix_val1 = denise_colors.acolors[val1]; } last_bpl_pix = pix1; } @@ -71304,7 +98700,12 @@ static void lts_aga_fm2_n1_p8_ishres_dshres_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; } last_bpl_pix = pix2; } @@ -71334,7 +98735,12 @@ static void lts_aga_fm2_n1_p8_ishres_dshres_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix3 = loaded_pixs[3]; clxdat |= bplcoltable[pix3]; - dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; + uae_u8 val3 = dpf_lookup[pix3]; + if (dpf_lookup_no[pix3]) { + val3 += dblpfofs[bpldualpf2of]; + } + val3 ^= bplcon4_denise_xor_val; + dpix_val3 = denise_colors.acolors[val3]; } last_bpl_pix = pix3; } @@ -71440,11 +98846,11 @@ static void lts_aga_fm2_n1_p8_ishres_dshres_spr(void) denise_cck++; } } -static void lts_aga_fm2_n1_p8_ishres_dshres_spr_filtered(void) +static void lts_aga_fm2_dpf1_p8_ishres_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm2_dpf0_p8_ishres_dshres_spr(void) +static void lts_aga_fm2_ehb0_p8_ishres_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -71455,30 +98861,13 @@ 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; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; - } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); } - loaded_pix = getbpl8_64(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -71487,30 +98876,13 @@ static void lts_aga_fm2_dpf0_p8_ishres_dshres_spr(void) sv0 = svt; } } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - if (dpf_lookup_no[pix1]) { - val1 += dblpfofs[bpldualpf2of]; - } - val1 ^= bplcon4_denise_xor_val; - dpix_val1 = denise_colors.acolors[val1]; - } - last_bpl_pix = pix1; - } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); } - loaded_pix = getbpl8_64(); uae_u32 sv1 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -71519,30 +98891,13 @@ static void lts_aga_fm2_dpf0_p8_ishres_dshres_spr(void) sv1 = svt; } } - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; - } - last_bpl_pix = pix2; - } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); } - loaded_pix = getbpl8_64(); uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -71551,30 +98906,173 @@ static void lts_aga_fm2_dpf0_p8_ishres_dshres_spr(void) sv2 = svt; } } - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - uae_u8 val3 = dpf_lookup[pix3]; - if (dpf_lookup_no[pix3]) { - val3 += dblpfofs[bpldualpf2of]; + } + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } + } + internal_pixel_cnt += 1; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; } - val3 ^= bplcon4_denise_xor_val; - dpix_val3 = denise_colors.acolors[val3]; } - last_bpl_pix = pix3; + dtbuf[h][0] = dpix_val0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } + dtbuf[h][1] = dpix_val1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + } + } + dtbuf[h][3] = dpix_val3; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_ehb0_p8_ishres_dshres_spr_filtered(void) +{ + lts_null(); +} +static void lts_aga_fm2_ehb1_p8_ishres_dshres_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } + } + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; } - loaded_pix = getbpl8_64(); uae_u32 sv3 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -71583,7 +99081,6 @@ static void lts_aga_fm2_dpf0_p8_ishres_dshres_spr(void) sv3 = svt; } } - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { @@ -71669,11 +99166,11 @@ static void lts_aga_fm2_dpf0_p8_ishres_dshres_spr(void) denise_cck++; } } -static void lts_aga_fm2_dpf0_p8_ishres_dshres_spr_filtered(void) +static void lts_aga_fm2_ehb1_p8_ishres_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm2_dpf1_p8_ishres_dshres_spr(void) +static void lts_aga_fm2_ham0_p8_ishres_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -71694,21 +99191,13 @@ static void lts_aga_fm2_dpf1_p8_ishres_dshres_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; + dpix_val0 = decode_ham_pixel_aga(pix0); } last_bpl_pix = pix0; } shiftbpl8_64(); if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e_64(); - } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); + copybpl8_64(); } loaded_pix = getbpl8_64(); uae_u32 sv0 = 0; @@ -71729,21 +99218,13 @@ static void lts_aga_fm2_dpf1_p8_ishres_dshres_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix1 = loaded_pixs[1]; clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - if (dpf_lookup_no[pix1]) { - val1 += dblpfofs[bpldualpf2of]; - } - val1 ^= bplcon4_denise_xor_val; - dpix_val1 = denise_colors.acolors[val1]; + dpix_val1 = decode_ham_pixel_aga(pix1); } last_bpl_pix = pix1; } shiftbpl8_64(); if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e_64(); - } - if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); + copybpl8_64(); } loaded_pix = getbpl8_64(); uae_u32 sv1 = 0; @@ -71764,21 +99245,13 @@ static void lts_aga_fm2_dpf1_p8_ishres_dshres_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; + dpix_val2 = decode_ham_pixel_aga(pix2); } last_bpl_pix = pix2; } shiftbpl8_64(); if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e_64(); - } - if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); + copybpl8_64(); } loaded_pix = getbpl8_64(); uae_u32 sv2 = 0; @@ -71799,21 +99272,13 @@ static void lts_aga_fm2_dpf1_p8_ishres_dshres_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix3 = loaded_pixs[3]; clxdat |= bplcoltable[pix3]; - uae_u8 val3 = dpf_lookup[pix3]; - if (dpf_lookup_no[pix3]) { - val3 += dblpfofs[bpldualpf2of]; - } - val3 ^= bplcon4_denise_xor_val; - dpix_val3 = denise_colors.acolors[val3]; + dpix_val3 = decode_ham_pixel_aga(pix3); } last_bpl_pix = pix3; } shiftbpl8_64(); if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e_64(); - } - if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); + copybpl8_64(); } loaded_pix = getbpl8_64(); uae_u32 sv3 = 0; @@ -71910,27 +99375,11 @@ static void lts_aga_fm2_dpf1_p8_ishres_dshres_spr(void) denise_cck++; } } -static void lts_aga_fm2_dpf1_p8_ishres_dshres_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb0_p8_ishres_dshres_spr(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb0_p8_ishres_dshres_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb1_p8_ishres_dshres_spr(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb1_p8_ishres_dshres_spr_filtered(void) +static void lts_aga_fm2_ham0_p8_ishres_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm2_ham0_p8_ishres_dshres_spr(void) +static void lts_aga_fm2_ham1_p8_ishres_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -71957,7 +99406,10 @@ static void lts_aga_fm2_ham0_p8_ishres_dshres_spr(void) } shiftbpl8_64(); if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); + copybpl8e_64(); + } + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o_64(); } loaded_pix = getbpl8_64(); uae_u32 sv0 = 0; @@ -71984,7 +99436,10 @@ static void lts_aga_fm2_ham0_p8_ishres_dshres_spr(void) } shiftbpl8_64(); if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); + copybpl8e_64(); + } + if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o_64(); } loaded_pix = getbpl8_64(); uae_u32 sv1 = 0; @@ -72011,7 +99466,10 @@ static void lts_aga_fm2_ham0_p8_ishres_dshres_spr(void) } shiftbpl8_64(); if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); + copybpl8e_64(); + } + if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o_64(); } loaded_pix = getbpl8_64(); uae_u32 sv2 = 0; @@ -72038,7 +99496,10 @@ static void lts_aga_fm2_ham0_p8_ishres_dshres_spr(void) } shiftbpl8_64(); if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); + copybpl8e_64(); + } + if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o_64(); } loaded_pix = getbpl8_64(); uae_u32 sv3 = 0; @@ -72135,11 +99596,11 @@ static void lts_aga_fm2_ham0_p8_ishres_dshres_spr(void) denise_cck++; } } -static void lts_aga_fm2_ham0_p8_ishres_dshres_spr_filtered(void) +static void lts_aga_fm2_ham1_p8_ishres_dshres_spr_filtered(void) { lts_null(); } -static void lts_aga_fm2_ham1_p8_ishres_dshres_spr(void) +static void lts_aga_fm2_kehb0_p8_ishres_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -72150,28 +99611,13 @@ 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; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = decode_ham_pixel_aga(pix0); - } - last_bpl_pix = pix0; } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e_64(); - } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); - } - loaded_pix = getbpl8_64(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -72180,28 +99626,13 @@ static void lts_aga_fm2_ham1_p8_ishres_dshres_spr(void) sv0 = svt; } } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - dpix_val1 = decode_ham_pixel_aga(pix1); - } - last_bpl_pix = pix1; - } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e_64(); } - if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); - } - loaded_pix = getbpl8_64(); uae_u32 sv1 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -72210,28 +99641,13 @@ static void lts_aga_fm2_ham1_p8_ishres_dshres_spr(void) sv1 = svt; } } - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = decode_ham_pixel_aga(pix2); - } - last_bpl_pix = pix2; - } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e_64(); } - if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); - } - loaded_pix = getbpl8_64(); uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -72240,28 +99656,13 @@ static void lts_aga_fm2_ham1_p8_ishres_dshres_spr(void) sv2 = svt; } } - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - dpix_val3 = decode_ham_pixel_aga(pix3); - } - last_bpl_pix = pix3; - } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e_64(); } - if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); - } - loaded_pix = getbpl8_64(); uae_u32 sv3 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -72270,7 +99671,6 @@ static void lts_aga_fm2_ham1_p8_ishres_dshres_spr(void) sv3 = svt; } } - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { @@ -72356,21 +99756,165 @@ static void lts_aga_fm2_ham1_p8_ishres_dshres_spr(void) denise_cck++; } } -static void lts_aga_fm2_ham1_p8_ishres_dshres_spr_filtered(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb0_p8_ishres_dshres_spr(void) -{ - lts_null(); -} static void lts_aga_fm2_kehb0_p8_ishres_dshres_spr_filtered(void) { lts_null(); } static void lts_aga_fm2_kehb1_p8_ishres_dshres_spr(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } + } + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); + uae_u8 pix3 = 0; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } + } + internal_pixel_cnt += 1; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } + dtbuf[h][1] = dpix_val1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + dtbuf[h][2] = dpix_val2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + } + } + dtbuf[h][3] = dpix_val3; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } static void lts_aga_fm2_kehb1_p8_ishres_dshres_spr_filtered(void) { diff --git a/linetoscr_aga_fm2_genlock.cpp b/linetoscr_aga_fm2_genlock.cpp index 30b489af..a038f7bd 100644 --- a/linetoscr_aga_fm2_genlock.cpp +++ b/linetoscr_aga_fm2_genlock.cpp @@ -313,54 +313,6 @@ static void lts_aga_fm2_dpf1_p4_ilores_dlores_filtered_genlock(void) lts_null(); } static void lts_aga_fm2_ehb0_p4_ilores_dlores_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb0_p4_ilores_dlores_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb1_p4_ilores_dlores_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb1_p4_ilores_dlores_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_ham0_p4_ilores_dlores_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_ham0_p4_ilores_dlores_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_ham1_p4_ilores_dlores_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_ham1_p4_ilores_dlores_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb0_p4_ilores_dlores_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb0_p4_ilores_dlores_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb1_p4_ilores_dlores_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb1_p4_ilores_dlores_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_n0_p8_ilores_dlores_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -371,7 +323,6 @@ 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; @@ -379,20 +330,7 @@ static void lts_aga_fm2_n0_p8_ilores_dlores_genlock(void) if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); - } - last_bpl_pix = pix0; } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); - } - loaded_pix = getbpl8_64(); - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; @@ -429,11 +367,11 @@ static void lts_aga_fm2_n0_p8_ilores_dlores_genlock(void) denise_cck++; } } -static void lts_aga_fm2_n0_p8_ilores_dlores_filtered_genlock(void) +static void lts_aga_fm2_ehb0_p4_ilores_dlores_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm2_n1_p8_ilores_dlores_genlock(void) +static void lts_aga_fm2_ehb1_p4_ilores_dlores_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -444,7 +382,6 @@ 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; @@ -452,23 +389,7 @@ static void lts_aga_fm2_n1_p8_ilores_dlores_genlock(void) if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); - } - last_bpl_pix = pix0; - } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { - copybpl8e_64(); - } - if (bpldat_copy[1] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); } - loaded_pix = getbpl8_64(); - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; @@ -505,11 +426,11 @@ static void lts_aga_fm2_n1_p8_ilores_dlores_genlock(void) denise_cck++; } } -static void lts_aga_fm2_n1_p8_ilores_dlores_filtered_genlock(void) +static void lts_aga_fm2_ehb1_p4_ilores_dlores_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm2_dpf0_p8_ilores_dlores_genlock(void) +static void lts_aga_fm2_ham0_p4_ilores_dlores_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -520,7 +441,6 @@ 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; @@ -528,25 +448,7 @@ static void lts_aga_fm2_dpf0_p8_ilores_dlores_genlock(void) if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - gpix0 = get_genlock_transparency(dpf_lookup[pix0]); - } - last_bpl_pix = pix0; - } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); } - loaded_pix = getbpl8_64(); - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; @@ -583,11 +485,11 @@ static void lts_aga_fm2_dpf0_p8_ilores_dlores_genlock(void) denise_cck++; } } -static void lts_aga_fm2_dpf0_p8_ilores_dlores_filtered_genlock(void) +static void lts_aga_fm2_ham0_p4_ilores_dlores_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm2_dpf1_p8_ilores_dlores_genlock(void) +static void lts_aga_fm2_ham1_p4_ilores_dlores_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -598,7 +500,6 @@ 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; @@ -606,28 +507,7 @@ static void lts_aga_fm2_dpf1_p8_ilores_dlores_genlock(void) if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - gpix0 = get_genlock_transparency(dpf_lookup[pix0]); - } - last_bpl_pix = pix0; } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { - copybpl8e_64(); - } - if (bpldat_copy[1] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); - } - loaded_pix = getbpl8_64(); - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; @@ -664,27 +544,11 @@ static void lts_aga_fm2_dpf1_p8_ilores_dlores_genlock(void) denise_cck++; } } -static void lts_aga_fm2_dpf1_p8_ilores_dlores_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb0_p8_ilores_dlores_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb0_p8_ilores_dlores_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb1_p8_ilores_dlores_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb1_p8_ilores_dlores_filtered_genlock(void) +static void lts_aga_fm2_ham1_p4_ilores_dlores_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm2_ham0_p8_ilores_dlores_genlock(void) +static void lts_aga_fm2_kehb0_p4_ilores_dlores_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -695,7 +559,6 @@ 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; @@ -703,20 +566,7 @@ static void lts_aga_fm2_ham0_p8_ilores_dlores_genlock(void) if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = decode_ham_pixel_aga(pix0); - gpix0 = get_genlock_transparency((pix0 >> 2) & 63); - } - last_bpl_pix = pix0; - } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); } - loaded_pix = getbpl8_64(); - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; @@ -753,11 +603,11 @@ static void lts_aga_fm2_ham0_p8_ilores_dlores_genlock(void) denise_cck++; } } -static void lts_aga_fm2_ham0_p8_ilores_dlores_filtered_genlock(void) +static void lts_aga_fm2_kehb0_p4_ilores_dlores_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm2_ham1_p8_ilores_dlores_genlock(void) +static void lts_aga_fm2_kehb1_p4_ilores_dlores_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -768,7 +618,6 @@ 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; @@ -776,23 +625,7 @@ static void lts_aga_fm2_ham1_p8_ilores_dlores_genlock(void) if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = decode_ham_pixel_aga(pix0); - gpix0 = get_genlock_transparency((pix0 >> 2) & 63); - } - last_bpl_pix = pix0; - } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { - copybpl8e_64(); } - if (bpldat_copy[1] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); - } - loaded_pix = getbpl8_64(); - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; @@ -829,27 +662,11 @@ static void lts_aga_fm2_ham1_p8_ilores_dlores_genlock(void) denise_cck++; } } -static void lts_aga_fm2_ham1_p8_ilores_dlores_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb0_p8_ilores_dlores_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb0_p8_ilores_dlores_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb1_p8_ilores_dlores_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb1_p8_ilores_dlores_filtered_genlock(void) +static void lts_aga_fm2_kehb1_p4_ilores_dlores_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm2_n0_p4_ilores_dlores_spr_genlock(void) +static void lts_aga_fm2_n0_p8_ilores_dlores_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -862,7 +679,6 @@ static void lts_aga_fm2_n0_p4_ilores_dlores_spr_genlock(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; @@ -877,30 +693,14 @@ static void lts_aga_fm2_n0_p4_ilores_dlores_spr_genlock(void) } last_bpl_pix = pix0; } - shiftbpl4_64(); + shiftbpl8_64(); if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { - copybpl4_64(); - } - loaded_pix = getbpl4_64(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } + copybpl8_64(); } + loaded_pix = getbpl8_64(); loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - gpix0 = get_genlock_transparency(spix0); - - } - } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; uae_u32 t0 = dtbuf[h ^ lol][0]; @@ -935,11 +735,11 @@ static void lts_aga_fm2_n0_p4_ilores_dlores_spr_genlock(void) denise_cck++; } } -static void lts_aga_fm2_n0_p4_ilores_dlores_spr_filtered_genlock(void) +static void lts_aga_fm2_n0_p8_ilores_dlores_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm2_n1_p4_ilores_dlores_spr_genlock(void) +static void lts_aga_fm2_n1_p8_ilores_dlores_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -952,7 +752,6 @@ static void lts_aga_fm2_n1_p4_ilores_dlores_spr_genlock(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; @@ -967,33 +766,17 @@ static void lts_aga_fm2_n1_p4_ilores_dlores_spr_genlock(void) } last_bpl_pix = pix0; } - shiftbpl4_64(); + shiftbpl8_64(); if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { - copybpl4e_64(); + copybpl8e_64(); } if (bpldat_copy[1] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[1]) { - copybpl4o_64(); - } - loaded_pix = getbpl4_64(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } + copybpl8o_64(); } + loaded_pix = getbpl8_64(); loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - gpix0 = get_genlock_transparency(spix0); - - } - } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; uae_u32 t0 = dtbuf[h ^ lol][0]; @@ -1028,11 +811,11 @@ static void lts_aga_fm2_n1_p4_ilores_dlores_spr_genlock(void) denise_cck++; } } -static void lts_aga_fm2_n1_p4_ilores_dlores_spr_filtered_genlock(void) +static void lts_aga_fm2_n1_p8_ilores_dlores_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm2_dpf0_p4_ilores_dlores_spr_genlock(void) +static void lts_aga_fm2_dpf0_p8_ilores_dlores_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -1045,7 +828,6 @@ static void lts_aga_fm2_dpf0_p4_ilores_dlores_spr_genlock(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; @@ -1065,30 +847,14 @@ static void lts_aga_fm2_dpf0_p4_ilores_dlores_spr_genlock(void) } last_bpl_pix = pix0; } - shiftbpl4_64(); + shiftbpl8_64(); if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { - copybpl4_64(); - } - loaded_pix = getbpl4_64(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } + copybpl8_64(); } + loaded_pix = getbpl8_64(); loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - gpix0 = get_genlock_transparency(spix0); - - } - } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; uae_u32 t0 = dtbuf[h ^ lol][0]; @@ -1123,11 +889,11 @@ static void lts_aga_fm2_dpf0_p4_ilores_dlores_spr_genlock(void) denise_cck++; } } -static void lts_aga_fm2_dpf0_p4_ilores_dlores_spr_filtered_genlock(void) +static void lts_aga_fm2_dpf0_p8_ilores_dlores_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm2_dpf1_p4_ilores_dlores_spr_genlock(void) +static void lts_aga_fm2_dpf1_p8_ilores_dlores_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -1140,7 +906,6 @@ static void lts_aga_fm2_dpf1_p4_ilores_dlores_spr_genlock(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; @@ -1160,33 +925,17 @@ static void lts_aga_fm2_dpf1_p4_ilores_dlores_spr_genlock(void) } last_bpl_pix = pix0; } - shiftbpl4_64(); + shiftbpl8_64(); if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { - copybpl4e_64(); + copybpl8e_64(); } if (bpldat_copy[1] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[1]) { - copybpl4o_64(); - } - loaded_pix = getbpl4_64(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } + copybpl8o_64(); } + loaded_pix = getbpl8_64(); loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - gpix0 = get_genlock_transparency(spix0); - - } - } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; uae_u32 t0 = dtbuf[h ^ lol][0]; @@ -1221,59 +970,11 @@ static void lts_aga_fm2_dpf1_p4_ilores_dlores_spr_genlock(void) denise_cck++; } } -static void lts_aga_fm2_dpf1_p4_ilores_dlores_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb0_p4_ilores_dlores_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb0_p4_ilores_dlores_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb1_p4_ilores_dlores_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb1_p4_ilores_dlores_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_ham0_p4_ilores_dlores_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_ham0_p4_ilores_dlores_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_ham1_p4_ilores_dlores_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_ham1_p4_ilores_dlores_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb0_p4_ilores_dlores_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb0_p4_ilores_dlores_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb1_p4_ilores_dlores_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb1_p4_ilores_dlores_spr_filtered_genlock(void) +static void lts_aga_fm2_dpf1_p8_ilores_dlores_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm2_n0_p8_ilores_dlores_spr_genlock(void) +static void lts_aga_fm2_ehb0_p8_ilores_dlores_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -1284,47 +985,16 @@ 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; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); - } - last_bpl_pix = pix0; - } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); - } - loaded_pix = getbpl8_64(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - gpix0 = get_genlock_transparency(spix0); - - } - } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; uae_u32 t0 = dtbuf[h ^ lol][0]; @@ -1359,11 +1029,11 @@ static void lts_aga_fm2_n0_p8_ilores_dlores_spr_genlock(void) denise_cck++; } } -static void lts_aga_fm2_n0_p8_ilores_dlores_spr_filtered_genlock(void) +static void lts_aga_fm2_ehb0_p8_ilores_dlores_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm2_n1_p8_ilores_dlores_spr_genlock(void) +static void lts_aga_fm2_ehb1_p8_ilores_dlores_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -1374,50 +1044,16 @@ 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; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); - } - last_bpl_pix = pix0; - } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { - copybpl8e_64(); - } - if (bpldat_copy[1] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); - } - loaded_pix = getbpl8_64(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - gpix0 = get_genlock_transparency(spix0); - - } - } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; uae_u32 t0 = dtbuf[h ^ lol][0]; @@ -1452,11 +1088,11 @@ static void lts_aga_fm2_n1_p8_ilores_dlores_spr_genlock(void) denise_cck++; } } -static void lts_aga_fm2_n1_p8_ilores_dlores_spr_filtered_genlock(void) +static void lts_aga_fm2_ehb1_p8_ilores_dlores_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm2_dpf0_p8_ilores_dlores_spr_genlock(void) +static void lts_aga_fm2_ham0_p8_ilores_dlores_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -1469,7 +1105,6 @@ static void lts_aga_fm2_dpf0_p8_ilores_dlores_spr_genlock(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; @@ -1479,13 +1114,8 @@ static void lts_aga_fm2_dpf0_p8_ilores_dlores_spr_genlock(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - gpix0 = get_genlock_transparency(dpf_lookup[pix0]); + dpix_val0 = decode_ham_pixel_aga(pix0); + gpix0 = get_genlock_transparency((pix0 >> 2) & 63); } last_bpl_pix = pix0; } @@ -1494,25 +1124,9 @@ static void lts_aga_fm2_dpf0_p8_ilores_dlores_spr_genlock(void) copybpl8_64(); } loaded_pix = getbpl8_64(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } - } loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - gpix0 = get_genlock_transparency(spix0); - - } - } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; uae_u32 t0 = dtbuf[h ^ lol][0]; @@ -1547,11 +1161,11 @@ static void lts_aga_fm2_dpf0_p8_ilores_dlores_spr_genlock(void) denise_cck++; } } -static void lts_aga_fm2_dpf0_p8_ilores_dlores_spr_filtered_genlock(void) +static void lts_aga_fm2_ham0_p8_ilores_dlores_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm2_dpf1_p8_ilores_dlores_spr_genlock(void) +static void lts_aga_fm2_ham1_p8_ilores_dlores_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -1564,7 +1178,6 @@ static void lts_aga_fm2_dpf1_p8_ilores_dlores_spr_genlock(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; @@ -1574,13 +1187,8 @@ static void lts_aga_fm2_dpf1_p8_ilores_dlores_spr_genlock(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - gpix0 = get_genlock_transparency(dpf_lookup[pix0]); + dpix_val0 = decode_ham_pixel_aga(pix0); + gpix0 = get_genlock_transparency((pix0 >> 2) & 63); } last_bpl_pix = pix0; } @@ -1592,25 +1200,9 @@ static void lts_aga_fm2_dpf1_p8_ilores_dlores_spr_genlock(void) copybpl8o_64(); } loaded_pix = getbpl8_64(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } - } loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - gpix0 = get_genlock_transparency(spix0); - - } - } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; uae_u32 t0 = dtbuf[h ^ lol][0]; @@ -1645,27 +1237,11 @@ static void lts_aga_fm2_dpf1_p8_ilores_dlores_spr_genlock(void) denise_cck++; } } -static void lts_aga_fm2_dpf1_p8_ilores_dlores_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb0_p8_ilores_dlores_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb0_p8_ilores_dlores_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb1_p8_ilores_dlores_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb1_p8_ilores_dlores_spr_filtered_genlock(void) +static void lts_aga_fm2_ham1_p8_ilores_dlores_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm2_ham0_p8_ilores_dlores_spr_genlock(void) +static void lts_aga_fm2_kehb0_p8_ilores_dlores_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -1676,47 +1252,16 @@ 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; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = decode_ham_pixel_aga(pix0); - gpix0 = get_genlock_transparency((pix0 >> 2) & 63); - } - last_bpl_pix = pix0; - } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); - } - loaded_pix = getbpl8_64(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - gpix0 = get_genlock_transparency(spix0); - - } - } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; uae_u32 t0 = dtbuf[h ^ lol][0]; @@ -1751,11 +1296,11 @@ static void lts_aga_fm2_ham0_p8_ilores_dlores_spr_genlock(void) denise_cck++; } } -static void lts_aga_fm2_ham0_p8_ilores_dlores_spr_filtered_genlock(void) +static void lts_aga_fm2_kehb0_p8_ilores_dlores_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm2_ham1_p8_ilores_dlores_spr_genlock(void) +static void lts_aga_fm2_kehb1_p8_ilores_dlores_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -1766,50 +1311,16 @@ 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; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = decode_ham_pixel_aga(pix0); - gpix0 = get_genlock_transparency((pix0 >> 2) & 63); - } - last_bpl_pix = pix0; - } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { - copybpl8e_64(); - } - if (bpldat_copy[1] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); - } - loaded_pix = getbpl8_64(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - gpix0 = get_genlock_transparency(spix0); - - } - } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; uae_u32 t0 = dtbuf[h ^ lol][0]; @@ -1844,27 +1355,11 @@ static void lts_aga_fm2_ham1_p8_ilores_dlores_spr_genlock(void) denise_cck++; } } -static void lts_aga_fm2_ham1_p8_ilores_dlores_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb0_p8_ilores_dlores_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb0_p8_ilores_dlores_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb1_p8_ilores_dlores_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb1_p8_ilores_dlores_spr_filtered_genlock(void) +static void lts_aga_fm2_kehb1_p8_ilores_dlores_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm2_n0_p4_ihires_dlores_genlock(void) +static void lts_aga_fm2_n0_p4_ilores_dlores_spr_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -1877,6 +1372,7 @@ static void lts_aga_fm2_n0_p4_ihires_dlores_genlock(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; @@ -1892,14 +1388,29 @@ static void lts_aga_fm2_n0_p4_ihires_dlores_genlock(void) last_bpl_pix = pix0; } shiftbpl4_64(); - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { copybpl4_64(); } loaded_pix = getbpl4_64(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } loaded_pixs[0] = loaded_pix; - shiftbpl4_64(); internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; uae_u32 t0 = dtbuf[h ^ lol][0]; @@ -1934,7 +1445,11 @@ static void lts_aga_fm2_n0_p4_ihires_dlores_genlock(void) denise_cck++; } } -static void lts_aga_fm2_n0_p4_ihires_dlores_filtered_genlock(void) +static void lts_aga_fm2_n0_p4_ilores_dlores_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm2_n1_p4_ilores_dlores_spr_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -1947,6 +1462,7 @@ static void lts_aga_fm2_n0_p4_ihires_dlores_filtered_genlock(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; @@ -1962,35 +1478,32 @@ static void lts_aga_fm2_n0_p4_ihires_dlores_filtered_genlock(void) last_bpl_pix = pix0; } shiftbpl4_64(); - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl4_64(); + if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { + copybpl4e_64(); + } + if (bpldat_copy[1] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[1]) { + copybpl4o_64(); } loaded_pix = getbpl4_64(); - loaded_pixs[0] = loaded_pix; - uae_u8 pix1 = 0; - uae_u8 gpix1 = 0xff; - uae_u32 dpix_val1 = BLANK_COLOR; - if (!denise_blank_active) { - gpix1 = get_genlock_transparency_border(); - dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; - gpix1 = get_genlock_transparency(pix1 ^ bplcon4_denise_xor_val); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; } - last_bpl_pix = pix1; - } - shiftbpl4_64(); - if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { - copybpl4_64(); } - loaded_pix = getbpl4_64(); - loaded_pixs[1] = loaded_pix; + loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - dpix_val0 = filter_pixel(dpix_val0, dpix_val1); - gpix0 = filter_pixel_genlock(gpix0, gpix1); + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; uae_u32 t0 = dtbuf[h ^ lol][0]; @@ -2025,7 +1538,11 @@ static void lts_aga_fm2_n0_p4_ihires_dlores_filtered_genlock(void) denise_cck++; } } -static void lts_aga_fm2_n1_p4_ihires_dlores_genlock(void) +static void lts_aga_fm2_n1_p4_ilores_dlores_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm2_dpf0_p4_ilores_dlores_spr_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -2038,6 +1555,7 @@ static void lts_aga_fm2_n1_p4_ihires_dlores_genlock(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; @@ -2047,23 +1565,40 @@ static void lts_aga_fm2_n1_p4_ihires_dlores_genlock(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + gpix0 = get_genlock_transparency(dpf_lookup[pix0]); } last_bpl_pix = pix0; } shiftbpl4_64(); - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl4e_64(); - } - if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { - copybpl4o_64(); + if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { + copybpl4_64(); } loaded_pix = getbpl4_64(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } loaded_pixs[0] = loaded_pix; - shiftbpl4_64(); internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; uae_u32 t0 = dtbuf[h ^ lol][0]; @@ -2098,7 +1633,11 @@ static void lts_aga_fm2_n1_p4_ihires_dlores_genlock(void) denise_cck++; } } -static void lts_aga_fm2_n1_p4_ihires_dlores_filtered_genlock(void) +static void lts_aga_fm2_dpf0_p4_ilores_dlores_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm2_dpf1_p4_ilores_dlores_spr_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -2111,6 +1650,7 @@ static void lts_aga_fm2_n1_p4_ihires_dlores_filtered_genlock(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; @@ -2120,47 +1660,43 @@ static void lts_aga_fm2_n1_p4_ihires_dlores_filtered_genlock(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + gpix0 = get_genlock_transparency(dpf_lookup[pix0]); } last_bpl_pix = pix0; } shiftbpl4_64(); - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { copybpl4e_64(); } - if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { + if (bpldat_copy[1] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[1]) { copybpl4o_64(); } loaded_pix = getbpl4_64(); - loaded_pixs[0] = loaded_pix; - uae_u8 pix1 = 0; - uae_u8 gpix1 = 0xff; - uae_u32 dpix_val1 = BLANK_COLOR; - if (!denise_blank_active) { - gpix1 = get_genlock_transparency_border(); - dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; - gpix1 = get_genlock_transparency(pix1 ^ bplcon4_denise_xor_val); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; } - last_bpl_pix = pix1; - } - shiftbpl4_64(); - if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { - copybpl4e_64(); } - if (bpldat_copy[1] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) { - copybpl4o_64(); - } - loaded_pix = getbpl4_64(); - loaded_pixs[1] = loaded_pix; + loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - dpix_val0 = filter_pixel(dpix_val0, dpix_val1); - gpix0 = filter_pixel_genlock(gpix0, gpix1); + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; uae_u32 t0 = dtbuf[h ^ lol][0]; @@ -2195,7 +1731,11 @@ static void lts_aga_fm2_n1_p4_ihires_dlores_filtered_genlock(void) denise_cck++; } } -static void lts_aga_fm2_dpf0_p4_ihires_dlores_genlock(void) +static void lts_aga_fm2_dpf1_p4_ilores_dlores_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm2_ehb0_p4_ilores_dlores_spr_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -2206,36 +1746,33 @@ 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; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - gpix0 = get_genlock_transparency(dpf_lookup[pix0]); - } - last_bpl_pix = pix0; - } - shiftbpl4_64(); - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl4_64(); } - loaded_pix = getbpl4_64(); - loaded_pixs[0] = loaded_pix; - shiftbpl4_64(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; uae_u32 t0 = dtbuf[h ^ lol][0]; @@ -2270,7 +1807,11 @@ static void lts_aga_fm2_dpf0_p4_ihires_dlores_genlock(void) denise_cck++; } } -static void lts_aga_fm2_dpf0_p4_ihires_dlores_filtered_genlock(void) +static void lts_aga_fm2_ehb0_p4_ilores_dlores_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm2_ehb1_p4_ilores_dlores_spr_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -2281,62 +1822,33 @@ 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; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - gpix0 = get_genlock_transparency(dpf_lookup[pix0]); - } - last_bpl_pix = pix0; - } - shiftbpl4_64(); - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl4_64(); } - loaded_pix = getbpl4_64(); - loaded_pixs[0] = loaded_pix; - uae_u8 pix1 = 0; - uae_u8 gpix1 = 0xff; - uae_u32 dpix_val1 = BLANK_COLOR; - if (!denise_blank_active) { - gpix1 = get_genlock_transparency_border(); - dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - if (dpf_lookup_no[pix1]) { - val1 += dblpfofs[bpldualpf2of]; - } - val1 ^= bplcon4_denise_xor_val; - dpix_val1 = denise_colors.acolors[val1]; - gpix1 = get_genlock_transparency(dpf_lookup[pix1]); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; } - last_bpl_pix = pix1; - } - shiftbpl4_64(); - if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { - copybpl4_64(); } - loaded_pix = getbpl4_64(); - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - dpix_val0 = filter_pixel(dpix_val0, dpix_val1); - gpix0 = filter_pixel_genlock(gpix0, gpix1); + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; uae_u32 t0 = dtbuf[h ^ lol][0]; @@ -2371,7 +1883,11 @@ static void lts_aga_fm2_dpf0_p4_ihires_dlores_filtered_genlock(void) denise_cck++; } } -static void lts_aga_fm2_dpf1_p4_ihires_dlores_genlock(void) +static void lts_aga_fm2_ehb1_p4_ilores_dlores_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm2_ham0_p4_ilores_dlores_spr_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -2382,39 +1898,33 @@ 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; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - gpix0 = get_genlock_transparency(dpf_lookup[pix0]); - } - last_bpl_pix = pix0; } - shiftbpl4_64(); - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl4e_64(); - } - if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { - copybpl4o_64(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } } - loaded_pix = getbpl4_64(); - loaded_pixs[0] = loaded_pix; - shiftbpl4_64(); internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; uae_u32 t0 = dtbuf[h ^ lol][0]; @@ -2449,7 +1959,11 @@ static void lts_aga_fm2_dpf1_p4_ihires_dlores_genlock(void) denise_cck++; } } -static void lts_aga_fm2_dpf1_p4_ihires_dlores_filtered_genlock(void) +static void lts_aga_fm2_ham0_p4_ilores_dlores_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm2_ham1_p4_ilores_dlores_spr_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -2460,68 +1974,33 @@ 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; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - gpix0 = get_genlock_transparency(dpf_lookup[pix0]); - } - last_bpl_pix = pix0; - } - shiftbpl4_64(); - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl4e_64(); } - if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { - copybpl4o_64(); - } - loaded_pix = getbpl4_64(); - loaded_pixs[0] = loaded_pix; - uae_u8 pix1 = 0; - uae_u8 gpix1 = 0xff; - uae_u32 dpix_val1 = BLANK_COLOR; - if (!denise_blank_active) { - gpix1 = get_genlock_transparency_border(); - dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - if (dpf_lookup_no[pix1]) { - val1 += dblpfofs[bpldualpf2of]; - } - val1 ^= bplcon4_denise_xor_val; - dpix_val1 = denise_colors.acolors[val1]; - gpix1 = get_genlock_transparency(dpf_lookup[pix1]); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; } - last_bpl_pix = pix1; - } - shiftbpl4_64(); - if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { - copybpl4e_64(); } - if (bpldat_copy[1] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) { - copybpl4o_64(); - } - loaded_pix = getbpl4_64(); - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - dpix_val0 = filter_pixel(dpix_val0, dpix_val1); - gpix0 = filter_pixel_genlock(gpix0, gpix1); + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; uae_u32 t0 = dtbuf[h ^ lol][0]; @@ -2556,55 +2035,11 @@ static void lts_aga_fm2_dpf1_p4_ihires_dlores_filtered_genlock(void) denise_cck++; } } -static void lts_aga_fm2_ehb0_p4_ihires_dlores_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb0_p4_ihires_dlores_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb1_p4_ihires_dlores_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb1_p4_ihires_dlores_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_ham0_p4_ihires_dlores_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_ham0_p4_ihires_dlores_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_ham1_p4_ihires_dlores_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_ham1_p4_ihires_dlores_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb0_p4_ihires_dlores_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb0_p4_ihires_dlores_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb1_p4_ihires_dlores_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb1_p4_ihires_dlores_filtered_genlock(void) +static void lts_aga_fm2_ham1_p4_ilores_dlores_spr_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm2_n0_p8_ihires_dlores_genlock(void) +static void lts_aga_fm2_kehb0_p4_ilores_dlores_spr_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -2615,31 +2050,33 @@ 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; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); - } - last_bpl_pix = pix0; } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } } - loaded_pix = getbpl8_64(); - loaded_pixs[0] = loaded_pix; - shiftbpl8_64(); internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; uae_u32 t0 = dtbuf[h ^ lol][0]; @@ -2674,7 +2111,11 @@ static void lts_aga_fm2_n0_p8_ihires_dlores_genlock(void) denise_cck++; } } -static void lts_aga_fm2_n0_p8_ihires_dlores_filtered_genlock(void) +static void lts_aga_fm2_kehb0_p4_ilores_dlores_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm2_kehb1_p4_ilores_dlores_spr_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -2685,52 +2126,33 @@ 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; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); - } - last_bpl_pix = pix0; - } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); } - loaded_pix = getbpl8_64(); - loaded_pixs[0] = loaded_pix; - uae_u8 pix1 = 0; - uae_u8 gpix1 = 0xff; - uae_u32 dpix_val1 = BLANK_COLOR; - if (!denise_blank_active) { - gpix1 = get_genlock_transparency_border(); - dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; - gpix1 = get_genlock_transparency(pix1 ^ bplcon4_denise_xor_val); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; } - last_bpl_pix = pix1; - } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); } - loaded_pix = getbpl8_64(); - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - dpix_val0 = filter_pixel(dpix_val0, dpix_val1); - gpix0 = filter_pixel_genlock(gpix0, gpix1); + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; uae_u32 t0 = dtbuf[h ^ lol][0]; @@ -2765,7 +2187,11 @@ static void lts_aga_fm2_n0_p8_ihires_dlores_filtered_genlock(void) denise_cck++; } } -static void lts_aga_fm2_n1_p8_ihires_dlores_genlock(void) +static void lts_aga_fm2_kehb1_p4_ilores_dlores_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm2_n0_p8_ilores_dlores_spr_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -2778,6 +2204,7 @@ static void lts_aga_fm2_n1_p8_ihires_dlores_genlock(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; @@ -2793,17 +2220,29 @@ static void lts_aga_fm2_n1_p8_ihires_dlores_genlock(void) last_bpl_pix = pix0; } shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8e_64(); - } - if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); + if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { + copybpl8_64(); } loaded_pix = getbpl8_64(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } loaded_pixs[0] = loaded_pix; - shiftbpl8_64(); internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; uae_u32 t0 = dtbuf[h ^ lol][0]; @@ -2838,7 +2277,11 @@ static void lts_aga_fm2_n1_p8_ihires_dlores_genlock(void) denise_cck++; } } -static void lts_aga_fm2_n1_p8_ihires_dlores_filtered_genlock(void) +static void lts_aga_fm2_n0_p8_ilores_dlores_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm2_n1_p8_ilores_dlores_spr_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -2851,6 +2294,7 @@ static void lts_aga_fm2_n1_p8_ihires_dlores_filtered_genlock(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; @@ -2866,41 +2310,32 @@ static void lts_aga_fm2_n1_p8_ihires_dlores_filtered_genlock(void) last_bpl_pix = pix0; } shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { copybpl8e_64(); } - if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { + if (bpldat_copy[1] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[1]) { copybpl8o_64(); } loaded_pix = getbpl8_64(); - loaded_pixs[0] = loaded_pix; - uae_u8 pix1 = 0; - uae_u8 gpix1 = 0xff; - uae_u32 dpix_val1 = BLANK_COLOR; - if (!denise_blank_active) { - gpix1 = get_genlock_transparency_border(); - dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; - gpix1 = get_genlock_transparency(pix1 ^ bplcon4_denise_xor_val); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; } - last_bpl_pix = pix1; - } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8e_64(); - } - if (bpldat_copy[1] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); } - loaded_pix = getbpl8_64(); - loaded_pixs[1] = loaded_pix; + loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - dpix_val0 = filter_pixel(dpix_val0, dpix_val1); - gpix0 = filter_pixel_genlock(gpix0, gpix1); + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; uae_u32 t0 = dtbuf[h ^ lol][0]; @@ -2935,7 +2370,11 @@ static void lts_aga_fm2_n1_p8_ihires_dlores_filtered_genlock(void) denise_cck++; } } -static void lts_aga_fm2_dpf0_p8_ihires_dlores_genlock(void) +static void lts_aga_fm2_n1_p8_ilores_dlores_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm2_dpf0_p8_ilores_dlores_spr_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -2948,6 +2387,7 @@ static void lts_aga_fm2_dpf0_p8_ihires_dlores_genlock(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; @@ -2968,14 +2408,29 @@ static void lts_aga_fm2_dpf0_p8_ihires_dlores_genlock(void) last_bpl_pix = pix0; } shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { copybpl8_64(); } loaded_pix = getbpl8_64(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } loaded_pixs[0] = loaded_pix; - shiftbpl8_64(); internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; uae_u32 t0 = dtbuf[h ^ lol][0]; @@ -3010,7 +2465,11 @@ static void lts_aga_fm2_dpf0_p8_ihires_dlores_genlock(void) denise_cck++; } } -static void lts_aga_fm2_dpf0_p8_ihires_dlores_filtered_genlock(void) +static void lts_aga_fm2_dpf0_p8_ilores_dlores_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm2_dpf1_p8_ilores_dlores_spr_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -3023,6 +2482,7 @@ static void lts_aga_fm2_dpf0_p8_ihires_dlores_filtered_genlock(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; @@ -3043,40 +2503,32 @@ static void lts_aga_fm2_dpf0_p8_ihires_dlores_filtered_genlock(void) last_bpl_pix = pix0; } shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); + if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { + copybpl8e_64(); + } + if (bpldat_copy[1] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[1]) { + copybpl8o_64(); } loaded_pix = getbpl8_64(); - loaded_pixs[0] = loaded_pix; - uae_u8 pix1 = 0; - uae_u8 gpix1 = 0xff; - uae_u32 dpix_val1 = BLANK_COLOR; - if (!denise_blank_active) { - gpix1 = get_genlock_transparency_border(); - dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - if (dpf_lookup_no[pix1]) { - val1 += dblpfofs[bpldualpf2of]; - } - val1 ^= bplcon4_denise_xor_val; - dpix_val1 = denise_colors.acolors[val1]; - gpix1 = get_genlock_transparency(dpf_lookup[pix1]); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; } - last_bpl_pix = pix1; - } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); } - loaded_pix = getbpl8_64(); - loaded_pixs[1] = loaded_pix; + loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - dpix_val0 = filter_pixel(dpix_val0, dpix_val1); - gpix0 = filter_pixel_genlock(gpix0, gpix1); + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; uae_u32 t0 = dtbuf[h ^ lol][0]; @@ -3111,7 +2563,11 @@ static void lts_aga_fm2_dpf0_p8_ihires_dlores_filtered_genlock(void) denise_cck++; } } -static void lts_aga_fm2_dpf1_p8_ihires_dlores_genlock(void) +static void lts_aga_fm2_dpf1_p8_ilores_dlores_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm2_ehb0_p8_ilores_dlores_spr_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -3122,39 +2578,33 @@ 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; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - gpix0 = get_genlock_transparency(dpf_lookup[pix0]); - } - last_bpl_pix = pix0; } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8e_64(); - } - if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } } - loaded_pix = getbpl8_64(); - loaded_pixs[0] = loaded_pix; - shiftbpl8_64(); internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; uae_u32 t0 = dtbuf[h ^ lol][0]; @@ -3189,7 +2639,11 @@ static void lts_aga_fm2_dpf1_p8_ihires_dlores_genlock(void) denise_cck++; } } -static void lts_aga_fm2_dpf1_p8_ihires_dlores_filtered_genlock(void) +static void lts_aga_fm2_ehb0_p8_ilores_dlores_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm2_ehb1_p8_ilores_dlores_spr_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -3200,68 +2654,33 @@ 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; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - gpix0 = get_genlock_transparency(dpf_lookup[pix0]); - } - last_bpl_pix = pix0; } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8e_64(); - } - if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); - } - loaded_pix = getbpl8_64(); - loaded_pixs[0] = loaded_pix; - uae_u8 pix1 = 0; - uae_u8 gpix1 = 0xff; - uae_u32 dpix_val1 = BLANK_COLOR; - if (!denise_blank_active) { - gpix1 = get_genlock_transparency_border(); - dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - if (dpf_lookup_no[pix1]) { - val1 += dblpfofs[bpldualpf2of]; - } - val1 ^= bplcon4_denise_xor_val; - dpix_val1 = denise_colors.acolors[val1]; - gpix1 = get_genlock_transparency(dpf_lookup[pix1]); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; } - last_bpl_pix = pix1; } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8e_64(); - } - if (bpldat_copy[1] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); - } - loaded_pix = getbpl8_64(); - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - dpix_val0 = filter_pixel(dpix_val0, dpix_val1); - gpix0 = filter_pixel_genlock(gpix0, gpix1); + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; uae_u32 t0 = dtbuf[h ^ lol][0]; @@ -3296,23 +2715,11 @@ static void lts_aga_fm2_dpf1_p8_ihires_dlores_filtered_genlock(void) denise_cck++; } } -static void lts_aga_fm2_ehb0_p8_ihires_dlores_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb0_p8_ihires_dlores_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb1_p8_ihires_dlores_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb1_p8_ihires_dlores_filtered_genlock(void) +static void lts_aga_fm2_ehb1_p8_ilores_dlores_spr_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm2_ham0_p8_ihires_dlores_genlock(void) +static void lts_aga_fm2_ham0_p8_ilores_dlores_spr_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -3325,6 +2732,7 @@ static void lts_aga_fm2_ham0_p8_ihires_dlores_genlock(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; @@ -3340,30 +2748,29 @@ static void lts_aga_fm2_ham0_p8_ihires_dlores_genlock(void) last_bpl_pix = pix0; } shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { copybpl8_64(); } loaded_pix = getbpl8_64(); - loaded_pixs[0] = loaded_pix; - uae_u8 pix1 = 0; - uae_u8 gpix1 = 0xff; - uae_u32 dpix_val1 = BLANK_COLOR; - if (!denise_blank_active) { - dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - decode_ham_pixel_aga(pix1); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; } - last_bpl_pix = pix1; - } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); } - loaded_pix = getbpl8_64(); - loaded_pixs[1] = loaded_pix; + loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; uae_u32 t0 = dtbuf[h ^ lol][0]; @@ -3398,7 +2805,11 @@ static void lts_aga_fm2_ham0_p8_ihires_dlores_genlock(void) denise_cck++; } } -static void lts_aga_fm2_ham0_p8_ihires_dlores_filtered_genlock(void) +static void lts_aga_fm2_ham0_p8_ilores_dlores_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm2_ham1_p8_ilores_dlores_spr_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -3411,6 +2822,7 @@ static void lts_aga_fm2_ham0_p8_ihires_dlores_filtered_genlock(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; @@ -3426,35 +2838,32 @@ static void lts_aga_fm2_ham0_p8_ihires_dlores_filtered_genlock(void) last_bpl_pix = pix0; } shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); + if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { + copybpl8e_64(); + } + if (bpldat_copy[1] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[1]) { + copybpl8o_64(); } loaded_pix = getbpl8_64(); - loaded_pixs[0] = loaded_pix; - uae_u8 pix1 = 0; - uae_u8 gpix1 = 0xff; - uae_u32 dpix_val1 = BLANK_COLOR; - if (!denise_blank_active) { - gpix1 = get_genlock_transparency_border(); - dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - dpix_val1 = decode_ham_pixel_aga(pix1); - gpix1 = get_genlock_transparency((pix1 >> 2) & 63); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; } - last_bpl_pix = pix1; } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); - } - loaded_pix = getbpl8_64(); - loaded_pixs[1] = loaded_pix; + loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - dpix_val0 = filter_pixel(dpix_val0, dpix_val1); - gpix0 = filter_pixel_genlock(gpix0, gpix1); + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; uae_u32 t0 = dtbuf[h ^ lol][0]; @@ -3489,7 +2898,11 @@ static void lts_aga_fm2_ham0_p8_ihires_dlores_filtered_genlock(void) denise_cck++; } } -static void lts_aga_fm2_ham1_p8_ihires_dlores_genlock(void) +static void lts_aga_fm2_ham1_p8_ilores_dlores_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm2_kehb0_p8_ilores_dlores_spr_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -3500,53 +2913,33 @@ 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; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = decode_ham_pixel_aga(pix0); - gpix0 = get_genlock_transparency((pix0 >> 2) & 63); - } - last_bpl_pix = pix0; - } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8e_64(); - } - if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); } - loaded_pix = getbpl8_64(); - loaded_pixs[0] = loaded_pix; - uae_u8 pix1 = 0; - uae_u8 gpix1 = 0xff; - uae_u32 dpix_val1 = BLANK_COLOR; - if (!denise_blank_active) { - dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - decode_ham_pixel_aga(pix1); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; } - last_bpl_pix = pix1; } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8e_64(); - } - if (bpldat_copy[1] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); - } - loaded_pix = getbpl8_64(); - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; uae_u32 t0 = dtbuf[h ^ lol][0]; @@ -3581,7 +2974,11 @@ static void lts_aga_fm2_ham1_p8_ihires_dlores_genlock(void) denise_cck++; } } -static void lts_aga_fm2_ham1_p8_ihires_dlores_filtered_genlock(void) +static void lts_aga_fm2_kehb0_p8_ilores_dlores_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm2_kehb1_p8_ilores_dlores_spr_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -3592,58 +2989,33 @@ 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; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = decode_ham_pixel_aga(pix0); - gpix0 = get_genlock_transparency((pix0 >> 2) & 63); - } - last_bpl_pix = pix0; - } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8e_64(); } - if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); - } - loaded_pix = getbpl8_64(); - loaded_pixs[0] = loaded_pix; - uae_u8 pix1 = 0; - uae_u8 gpix1 = 0xff; - uae_u32 dpix_val1 = BLANK_COLOR; - if (!denise_blank_active) { - gpix1 = get_genlock_transparency_border(); - dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - dpix_val1 = decode_ham_pixel_aga(pix1); - gpix1 = get_genlock_transparency((pix1 >> 2) & 63); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; } - last_bpl_pix = pix1; } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8e_64(); - } - if (bpldat_copy[1] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); - } - loaded_pix = getbpl8_64(); - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - dpix_val0 = filter_pixel(dpix_val0, dpix_val1); - gpix0 = filter_pixel_genlock(gpix0, gpix1); + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; uae_u32 t0 = dtbuf[h ^ lol][0]; @@ -3678,23 +3050,11 @@ static void lts_aga_fm2_ham1_p8_ihires_dlores_filtered_genlock(void) denise_cck++; } } -static void lts_aga_fm2_kehb0_p8_ihires_dlores_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb0_p8_ihires_dlores_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb1_p8_ihires_dlores_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb1_p8_ihires_dlores_filtered_genlock(void) +static void lts_aga_fm2_kehb1_p8_ilores_dlores_spr_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm2_n0_p4_ihires_dlores_spr_genlock(void) +static void lts_aga_fm2_n0_p4_ihires_dlores_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -3707,7 +3067,6 @@ static void lts_aga_fm2_n0_p4_ihires_dlores_spr_genlock(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; @@ -3727,26 +3086,10 @@ static void lts_aga_fm2_n0_p4_ihires_dlores_spr_genlock(void) copybpl4_64(); } loaded_pix = getbpl4_64(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } - } loaded_pixs[0] = loaded_pix; shiftbpl4_64(); internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - gpix0 = get_genlock_transparency(spix0); - - } - } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; uae_u32 t0 = dtbuf[h ^ lol][0]; @@ -3781,7 +3124,7 @@ static void lts_aga_fm2_n0_p4_ihires_dlores_spr_genlock(void) denise_cck++; } } -static void lts_aga_fm2_n0_p4_ihires_dlores_spr_filtered_genlock(void) +static void lts_aga_fm2_n0_p4_ihires_dlores_filtered_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -3794,7 +3137,6 @@ static void lts_aga_fm2_n0_p4_ihires_dlores_spr_filtered_genlock(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; @@ -3814,14 +3156,6 @@ static void lts_aga_fm2_n0_p4_ihires_dlores_spr_filtered_genlock(void) copybpl4_64(); } loaded_pix = getbpl4_64(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } - } loaded_pixs[0] = loaded_pix; uae_u8 pix1 = 0; uae_u8 gpix1 = 0xff; @@ -3845,15 +3179,6 @@ static void lts_aga_fm2_n0_p4_ihires_dlores_spr_filtered_genlock(void) loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - gpix0 = get_genlock_transparency(spix0); - - dpix_val1 = dpix_val0; - } - } dpix_val0 = filter_pixel(dpix_val0, dpix_val1); gpix0 = filter_pixel_genlock(gpix0, gpix1); dtbuf[h][0] = dpix_val0; @@ -3890,7 +3215,7 @@ static void lts_aga_fm2_n0_p4_ihires_dlores_spr_filtered_genlock(void) denise_cck++; } } -static void lts_aga_fm2_n1_p4_ihires_dlores_spr_genlock(void) +static void lts_aga_fm2_n1_p4_ihires_dlores_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -3903,7 +3228,6 @@ static void lts_aga_fm2_n1_p4_ihires_dlores_spr_genlock(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; @@ -3926,26 +3250,10 @@ static void lts_aga_fm2_n1_p4_ihires_dlores_spr_genlock(void) copybpl4o_64(); } loaded_pix = getbpl4_64(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } - } loaded_pixs[0] = loaded_pix; shiftbpl4_64(); internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - gpix0 = get_genlock_transparency(spix0); - - } - } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; uae_u32 t0 = dtbuf[h ^ lol][0]; @@ -3980,7 +3288,7 @@ static void lts_aga_fm2_n1_p4_ihires_dlores_spr_genlock(void) denise_cck++; } } -static void lts_aga_fm2_n1_p4_ihires_dlores_spr_filtered_genlock(void) +static void lts_aga_fm2_n1_p4_ihires_dlores_filtered_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -3993,7 +3301,6 @@ static void lts_aga_fm2_n1_p4_ihires_dlores_spr_filtered_genlock(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; @@ -4016,14 +3323,6 @@ static void lts_aga_fm2_n1_p4_ihires_dlores_spr_filtered_genlock(void) copybpl4o_64(); } loaded_pix = getbpl4_64(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } - } loaded_pixs[0] = loaded_pix; uae_u8 pix1 = 0; uae_u8 gpix1 = 0xff; @@ -4050,15 +3349,6 @@ static void lts_aga_fm2_n1_p4_ihires_dlores_spr_filtered_genlock(void) loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - gpix0 = get_genlock_transparency(spix0); - - dpix_val1 = dpix_val0; - } - } dpix_val0 = filter_pixel(dpix_val0, dpix_val1); gpix0 = filter_pixel_genlock(gpix0, gpix1); dtbuf[h][0] = dpix_val0; @@ -4095,7 +3385,7 @@ static void lts_aga_fm2_n1_p4_ihires_dlores_spr_filtered_genlock(void) denise_cck++; } } -static void lts_aga_fm2_dpf0_p4_ihires_dlores_spr_genlock(void) +static void lts_aga_fm2_dpf0_p4_ihires_dlores_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -4108,7 +3398,6 @@ static void lts_aga_fm2_dpf0_p4_ihires_dlores_spr_genlock(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; @@ -4133,26 +3422,10 @@ static void lts_aga_fm2_dpf0_p4_ihires_dlores_spr_genlock(void) copybpl4_64(); } loaded_pix = getbpl4_64(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } - } loaded_pixs[0] = loaded_pix; shiftbpl4_64(); internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - gpix0 = get_genlock_transparency(spix0); - - } - } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; uae_u32 t0 = dtbuf[h ^ lol][0]; @@ -4187,7 +3460,7 @@ static void lts_aga_fm2_dpf0_p4_ihires_dlores_spr_genlock(void) denise_cck++; } } -static void lts_aga_fm2_dpf0_p4_ihires_dlores_spr_filtered_genlock(void) +static void lts_aga_fm2_dpf0_p4_ihires_dlores_filtered_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -4200,7 +3473,6 @@ static void lts_aga_fm2_dpf0_p4_ihires_dlores_spr_filtered_genlock(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; @@ -4225,14 +3497,6 @@ static void lts_aga_fm2_dpf0_p4_ihires_dlores_spr_filtered_genlock(void) copybpl4_64(); } loaded_pix = getbpl4_64(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } - } loaded_pixs[0] = loaded_pix; uae_u8 pix1 = 0; uae_u8 gpix1 = 0xff; @@ -4261,15 +3525,6 @@ static void lts_aga_fm2_dpf0_p4_ihires_dlores_spr_filtered_genlock(void) loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - gpix0 = get_genlock_transparency(spix0); - - dpix_val1 = dpix_val0; - } - } dpix_val0 = filter_pixel(dpix_val0, dpix_val1); gpix0 = filter_pixel_genlock(gpix0, gpix1); dtbuf[h][0] = dpix_val0; @@ -4306,7 +3561,7 @@ static void lts_aga_fm2_dpf0_p4_ihires_dlores_spr_filtered_genlock(void) denise_cck++; } } -static void lts_aga_fm2_dpf1_p4_ihires_dlores_spr_genlock(void) +static void lts_aga_fm2_dpf1_p4_ihires_dlores_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -4319,7 +3574,6 @@ static void lts_aga_fm2_dpf1_p4_ihires_dlores_spr_genlock(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; @@ -4347,26 +3601,10 @@ static void lts_aga_fm2_dpf1_p4_ihires_dlores_spr_genlock(void) copybpl4o_64(); } loaded_pix = getbpl4_64(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } - } loaded_pixs[0] = loaded_pix; shiftbpl4_64(); internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - gpix0 = get_genlock_transparency(spix0); - - } - } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; uae_u32 t0 = dtbuf[h ^ lol][0]; @@ -4401,7 +3639,7 @@ static void lts_aga_fm2_dpf1_p4_ihires_dlores_spr_genlock(void) denise_cck++; } } -static void lts_aga_fm2_dpf1_p4_ihires_dlores_spr_filtered_genlock(void) +static void lts_aga_fm2_dpf1_p4_ihires_dlores_filtered_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -4414,7 +3652,6 @@ static void lts_aga_fm2_dpf1_p4_ihires_dlores_spr_filtered_genlock(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; @@ -4442,14 +3679,6 @@ static void lts_aga_fm2_dpf1_p4_ihires_dlores_spr_filtered_genlock(void) copybpl4o_64(); } loaded_pix = getbpl4_64(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } - } loaded_pixs[0] = loaded_pix; uae_u8 pix1 = 0; uae_u8 gpix1 = 0xff; @@ -4481,15 +3710,6 @@ static void lts_aga_fm2_dpf1_p4_ihires_dlores_spr_filtered_genlock(void) loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - gpix0 = get_genlock_transparency(spix0); - - dpix_val1 = dpix_val0; - } - } dpix_val0 = filter_pixel(dpix_val0, dpix_val1); gpix0 = filter_pixel_genlock(gpix0, gpix1); dtbuf[h][0] = dpix_val0; @@ -4526,55 +3746,7 @@ static void lts_aga_fm2_dpf1_p4_ihires_dlores_spr_filtered_genlock(void) denise_cck++; } } -static void lts_aga_fm2_ehb0_p4_ihires_dlores_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb0_p4_ihires_dlores_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb1_p4_ihires_dlores_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb1_p4_ihires_dlores_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_ham0_p4_ihires_dlores_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_ham0_p4_ihires_dlores_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_ham1_p4_ihires_dlores_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_ham1_p4_ihires_dlores_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb0_p4_ihires_dlores_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb0_p4_ihires_dlores_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb1_p4_ihires_dlores_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb1_p4_ihires_dlores_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_n0_p8_ihires_dlores_spr_genlock(void) +static void lts_aga_fm2_ehb0_p4_ihires_dlores_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -4585,48 +3757,16 @@ 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; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); - } - last_bpl_pix = pix0; - } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); - } - loaded_pix = getbpl8_64(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } } - loaded_pixs[0] = loaded_pix; - shiftbpl8_64(); internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - gpix0 = get_genlock_transparency(spix0); - - } - } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; uae_u32 t0 = dtbuf[h ^ lol][0]; @@ -4661,7 +3801,7 @@ static void lts_aga_fm2_n0_p8_ihires_dlores_spr_genlock(void) denise_cck++; } } -static void lts_aga_fm2_n0_p8_ihires_dlores_spr_filtered_genlock(void) +static void lts_aga_fm2_ehb0_p4_ihires_dlores_filtered_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -4672,68 +3812,23 @@ 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; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); - } - last_bpl_pix = pix0; - } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); - } - loaded_pix = getbpl8_64(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } } - loaded_pixs[0] = loaded_pix; uae_u8 pix1 = 0; uae_u8 gpix1 = 0xff; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { gpix1 = get_genlock_transparency_border(); dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; - gpix1 = get_genlock_transparency(pix1 ^ bplcon4_denise_xor_val); - } - last_bpl_pix = pix1; - } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); } - loaded_pix = getbpl8_64(); - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - gpix0 = get_genlock_transparency(spix0); - - dpix_val1 = dpix_val0; - } - } dpix_val0 = filter_pixel(dpix_val0, dpix_val1); gpix0 = filter_pixel_genlock(gpix0, gpix1); dtbuf[h][0] = dpix_val0; @@ -4770,7 +3865,7 @@ static void lts_aga_fm2_n0_p8_ihires_dlores_spr_filtered_genlock(void) denise_cck++; } } -static void lts_aga_fm2_n1_p8_ihires_dlores_spr_genlock(void) +static void lts_aga_fm2_ehb1_p4_ihires_dlores_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -4781,51 +3876,16 @@ 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; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); - } - last_bpl_pix = pix0; - } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8e_64(); - } - if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); - } - loaded_pix = getbpl8_64(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } } - loaded_pixs[0] = loaded_pix; - shiftbpl8_64(); internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - gpix0 = get_genlock_transparency(spix0); - - } - } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; uae_u32 t0 = dtbuf[h ^ lol][0]; @@ -4860,7 +3920,7 @@ static void lts_aga_fm2_n1_p8_ihires_dlores_spr_genlock(void) denise_cck++; } } -static void lts_aga_fm2_n1_p8_ihires_dlores_spr_filtered_genlock(void) +static void lts_aga_fm2_ehb1_p4_ihires_dlores_filtered_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -4871,74 +3931,23 @@ 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; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); - } - last_bpl_pix = pix0; - } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8e_64(); } - if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); - } - loaded_pix = getbpl8_64(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } - } - loaded_pixs[0] = loaded_pix; uae_u8 pix1 = 0; uae_u8 gpix1 = 0xff; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { gpix1 = get_genlock_transparency_border(); dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; - gpix1 = get_genlock_transparency(pix1 ^ bplcon4_denise_xor_val); - } - last_bpl_pix = pix1; - } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8e_64(); } - if (bpldat_copy[1] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); - } - loaded_pix = getbpl8_64(); - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - gpix0 = get_genlock_transparency(spix0); - - dpix_val1 = dpix_val0; - } - } dpix_val0 = filter_pixel(dpix_val0, dpix_val1); gpix0 = filter_pixel_genlock(gpix0, gpix1); dtbuf[h][0] = dpix_val0; @@ -4975,7 +3984,7 @@ static void lts_aga_fm2_n1_p8_ihires_dlores_spr_filtered_genlock(void) denise_cck++; } } -static void lts_aga_fm2_dpf0_p8_ihires_dlores_spr_genlock(void) +static void lts_aga_fm2_ham0_p4_ihires_dlores_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -4986,53 +3995,22 @@ 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; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - gpix0 = get_genlock_transparency(dpf_lookup[pix0]); - } - last_bpl_pix = pix0; - } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); } - loaded_pix = getbpl8_64(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; } - loaded_pixs[0] = loaded_pix; - shiftbpl8_64(); internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - gpix0 = get_genlock_transparency(spix0); - - } - } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; uae_u32 t0 = dtbuf[h ^ lol][0]; @@ -5067,7 +4045,7 @@ static void lts_aga_fm2_dpf0_p8_ihires_dlores_spr_genlock(void) denise_cck++; } } -static void lts_aga_fm2_dpf0_p8_ihires_dlores_spr_filtered_genlock(void) +static void lts_aga_fm2_ham0_p4_ihires_dlores_filtered_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -5078,78 +4056,23 @@ 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; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - gpix0 = get_genlock_transparency(dpf_lookup[pix0]); - } - last_bpl_pix = pix0; - } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); - } - loaded_pix = getbpl8_64(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } } - loaded_pixs[0] = loaded_pix; uae_u8 pix1 = 0; uae_u8 gpix1 = 0xff; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { gpix1 = get_genlock_transparency_border(); dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - if (dpf_lookup_no[pix1]) { - val1 += dblpfofs[bpldualpf2of]; - } - val1 ^= bplcon4_denise_xor_val; - dpix_val1 = denise_colors.acolors[val1]; - gpix1 = get_genlock_transparency(dpf_lookup[pix1]); - } - last_bpl_pix = pix1; - } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); } - loaded_pix = getbpl8_64(); - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - gpix0 = get_genlock_transparency(spix0); - - dpix_val1 = dpix_val0; - } - } dpix_val0 = filter_pixel(dpix_val0, dpix_val1); gpix0 = filter_pixel_genlock(gpix0, gpix1); dtbuf[h][0] = dpix_val0; @@ -5186,7 +4109,7 @@ static void lts_aga_fm2_dpf0_p8_ihires_dlores_spr_filtered_genlock(void) denise_cck++; } } -static void lts_aga_fm2_dpf1_p8_ihires_dlores_spr_genlock(void) +static void lts_aga_fm2_ham1_p4_ihires_dlores_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -5197,56 +4120,22 @@ 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; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - gpix0 = get_genlock_transparency(dpf_lookup[pix0]); - } - last_bpl_pix = pix0; - } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8e_64(); - } - if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); } - loaded_pix = getbpl8_64(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; } - loaded_pixs[0] = loaded_pix; - shiftbpl8_64(); internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - gpix0 = get_genlock_transparency(spix0); - - } - } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; uae_u32 t0 = dtbuf[h ^ lol][0]; @@ -5281,7 +4170,7 @@ static void lts_aga_fm2_dpf1_p8_ihires_dlores_spr_genlock(void) denise_cck++; } } -static void lts_aga_fm2_dpf1_p8_ihires_dlores_spr_filtered_genlock(void) +static void lts_aga_fm2_ham1_p4_ihires_dlores_filtered_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -5292,84 +4181,23 @@ 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; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - gpix0 = get_genlock_transparency(dpf_lookup[pix0]); - } - last_bpl_pix = pix0; - } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8e_64(); - } - if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); - } - loaded_pix = getbpl8_64(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } } - loaded_pixs[0] = loaded_pix; uae_u8 pix1 = 0; uae_u8 gpix1 = 0xff; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { gpix1 = get_genlock_transparency_border(); dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - if (dpf_lookup_no[pix1]) { - val1 += dblpfofs[bpldualpf2of]; - } - val1 ^= bplcon4_denise_xor_val; - dpix_val1 = denise_colors.acolors[val1]; - gpix1 = get_genlock_transparency(dpf_lookup[pix1]); - } - last_bpl_pix = pix1; - } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8e_64(); - } - if (bpldat_copy[1] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); } - loaded_pix = getbpl8_64(); - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - gpix0 = get_genlock_transparency(spix0); - - dpix_val1 = dpix_val0; - } - } dpix_val0 = filter_pixel(dpix_val0, dpix_val1); gpix0 = filter_pixel_genlock(gpix0, gpix1); dtbuf[h][0] = dpix_val0; @@ -5406,23 +4234,126 @@ static void lts_aga_fm2_dpf1_p8_ihires_dlores_spr_filtered_genlock(void) denise_cck++; } } -static void lts_aga_fm2_ehb0_p8_ihires_dlores_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb0_p8_ihires_dlores_spr_filtered_genlock(void) +static void lts_aga_fm2_kehb0_p4_ihires_dlores_genlock(void) { - lts_null(); -} -static void lts_aga_fm2_ehb1_p8_ihires_dlores_spr_genlock(void) -{ - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm2_ehb1_p8_ihires_dlores_spr_filtered_genlock(void) +static void lts_aga_fm2_kehb0_p4_ihires_dlores_filtered_genlock(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + gpix0 = filter_pixel_genlock(gpix0, gpix1); + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm2_ham0_p8_ihires_dlores_spr_genlock(void) +static void lts_aga_fm2_kehb1_p4_ihires_dlores_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -5433,64 +4364,150 @@ 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; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = decode_ham_pixel_aga(pix0); - gpix0 = get_genlock_transparency((pix0 >> 2) & 63); + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); } - last_bpl_pix = pix0; + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_kehb1_p4_ihires_dlores_filtered_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; } - loaded_pix = getbpl8_64(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; } - loaded_pixs[0] = loaded_pix; uae_u8 pix1 = 0; uae_u8 gpix1 = 0xff; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); dpix_val1 = bordercolor; + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + gpix0 = filter_pixel_genlock(gpix0, gpix1); + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_n0_p8_ihires_dlores_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_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; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - decode_ham_pixel_aga(pix1); + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); } - last_bpl_pix = pix1; + last_bpl_pix = pix0; } shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { copybpl8_64(); } loaded_pix = getbpl8_64(); - loaded_pixs[1] = loaded_pix; + loaded_pixs[0] = loaded_pix; + shiftbpl8_64(); internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - gpix0 = get_genlock_transparency(spix0); - - } - } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; uae_u32 t0 = dtbuf[h ^ lol][0]; @@ -5525,7 +4542,7 @@ static void lts_aga_fm2_ham0_p8_ihires_dlores_spr_genlock(void) denise_cck++; } } -static void lts_aga_fm2_ham0_p8_ihires_dlores_spr_filtered_genlock(void) +static void lts_aga_fm2_n0_p8_ihires_dlores_filtered_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -5538,7 +4555,6 @@ static void lts_aga_fm2_ham0_p8_ihires_dlores_spr_filtered_genlock(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; @@ -5548,8 +4564,8 @@ static void lts_aga_fm2_ham0_p8_ihires_dlores_spr_filtered_genlock(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - dpix_val0 = decode_ham_pixel_aga(pix0); - gpix0 = get_genlock_transparency((pix0 >> 2) & 63); + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); } last_bpl_pix = pix0; } @@ -5558,14 +4574,6 @@ static void lts_aga_fm2_ham0_p8_ihires_dlores_spr_filtered_genlock(void) copybpl8_64(); } loaded_pix = getbpl8_64(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } - } loaded_pixs[0] = loaded_pix; uae_u8 pix1 = 0; uae_u8 gpix1 = 0xff; @@ -5576,8 +4584,8 @@ static void lts_aga_fm2_ham0_p8_ihires_dlores_spr_filtered_genlock(void) if (denise_hdiw && bpl1dat_trigger) { pix1 = loaded_pixs[1]; clxdat |= bplcoltable[pix1]; - dpix_val1 = decode_ham_pixel_aga(pix1); - gpix1 = get_genlock_transparency((pix1 >> 2) & 63); + dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; + gpix1 = get_genlock_transparency(pix1 ^ bplcon4_denise_xor_val); } last_bpl_pix = pix1; } @@ -5589,15 +4597,6 @@ static void lts_aga_fm2_ham0_p8_ihires_dlores_spr_filtered_genlock(void) loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - gpix0 = get_genlock_transparency(spix0); - - dpix_val1 = dpix_val0; - } - } dpix_val0 = filter_pixel(dpix_val0, dpix_val1); gpix0 = filter_pixel_genlock(gpix0, gpix1); dtbuf[h][0] = dpix_val0; @@ -5634,7 +4633,7 @@ static void lts_aga_fm2_ham0_p8_ihires_dlores_spr_filtered_genlock(void) denise_cck++; } } -static void lts_aga_fm2_ham1_p8_ihires_dlores_spr_genlock(void) +static void lts_aga_fm2_n1_p8_ihires_dlores_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -5647,7 +4646,6 @@ static void lts_aga_fm2_ham1_p8_ihires_dlores_spr_genlock(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; @@ -5657,8 +4655,8 @@ static void lts_aga_fm2_ham1_p8_ihires_dlores_spr_genlock(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - dpix_val0 = decode_ham_pixel_aga(pix0); - gpix0 = get_genlock_transparency((pix0 >> 2) & 63); + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); } last_bpl_pix = pix0; } @@ -5670,45 +4668,10 @@ static void lts_aga_fm2_ham1_p8_ihires_dlores_spr_genlock(void) copybpl8o_64(); } loaded_pix = getbpl8_64(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } - } loaded_pixs[0] = loaded_pix; - uae_u8 pix1 = 0; - uae_u8 gpix1 = 0xff; - uae_u32 dpix_val1 = BLANK_COLOR; - if (!denise_blank_active) { - dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - decode_ham_pixel_aga(pix1); - } - last_bpl_pix = pix1; - } shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8e_64(); - } - if (bpldat_copy[1] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); - } - loaded_pix = getbpl8_64(); - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - gpix0 = get_genlock_transparency(spix0); - - } - } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; uae_u32 t0 = dtbuf[h ^ lol][0]; @@ -5743,7 +4706,7 @@ static void lts_aga_fm2_ham1_p8_ihires_dlores_spr_genlock(void) denise_cck++; } } -static void lts_aga_fm2_ham1_p8_ihires_dlores_spr_filtered_genlock(void) +static void lts_aga_fm2_n1_p8_ihires_dlores_filtered_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -5756,7 +4719,6 @@ static void lts_aga_fm2_ham1_p8_ihires_dlores_spr_filtered_genlock(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; @@ -5766,8 +4728,8 @@ static void lts_aga_fm2_ham1_p8_ihires_dlores_spr_filtered_genlock(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - dpix_val0 = decode_ham_pixel_aga(pix0); - gpix0 = get_genlock_transparency((pix0 >> 2) & 63); + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); } last_bpl_pix = pix0; } @@ -5779,14 +4741,6 @@ static void lts_aga_fm2_ham1_p8_ihires_dlores_spr_filtered_genlock(void) copybpl8o_64(); } loaded_pix = getbpl8_64(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } - } loaded_pixs[0] = loaded_pix; uae_u8 pix1 = 0; uae_u8 gpix1 = 0xff; @@ -5797,8 +4751,8 @@ static void lts_aga_fm2_ham1_p8_ihires_dlores_spr_filtered_genlock(void) if (denise_hdiw && bpl1dat_trigger) { pix1 = loaded_pixs[1]; clxdat |= bplcoltable[pix1]; - dpix_val1 = decode_ham_pixel_aga(pix1); - gpix1 = get_genlock_transparency((pix1 >> 2) & 63); + dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; + gpix1 = get_genlock_transparency(pix1 ^ bplcon4_denise_xor_val); } last_bpl_pix = pix1; } @@ -5813,15 +4767,6 @@ static void lts_aga_fm2_ham1_p8_ihires_dlores_spr_filtered_genlock(void) loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - gpix0 = get_genlock_transparency(spix0); - - dpix_val1 = dpix_val0; - } - } dpix_val0 = filter_pixel(dpix_val0, dpix_val1); gpix0 = filter_pixel_genlock(gpix0, gpix1); dtbuf[h][0] = dpix_val0; @@ -5858,343 +4803,21430 @@ static void lts_aga_fm2_ham1_p8_ihires_dlores_spr_filtered_genlock(void) denise_cck++; } } -static void lts_aga_fm2_kehb0_p8_ihires_dlores_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb0_p8_ihires_dlores_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb1_p8_ihires_dlores_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb1_p8_ihires_dlores_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_n0_p4_ishres_dlores_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_n0_p4_ishres_dlores_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_n1_p4_ishres_dlores_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_n1_p4_ishres_dlores_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_dpf0_p4_ishres_dlores_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_dpf0_p4_ishres_dlores_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_dpf1_p4_ishres_dlores_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_dpf1_p4_ishres_dlores_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb0_p4_ishres_dlores_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb0_p4_ishres_dlores_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb1_p4_ishres_dlores_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb1_p4_ishres_dlores_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_ham0_p4_ishres_dlores_genlock(void) +static void lts_aga_fm2_dpf0_p8_ihires_dlores_genlock(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_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; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + gpix0 = get_genlock_transparency(dpf_lookup[pix0]); + } + last_bpl_pix = pix0; + } + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8_64(); + } + loaded_pix = getbpl8_64(); + loaded_pixs[0] = loaded_pix; + shiftbpl8_64(); + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm2_ham0_p4_ishres_dlores_filtered_genlock(void) +static void lts_aga_fm2_dpf0_p8_ihires_dlores_filtered_genlock(void) { - lts_null(); -} -static void lts_aga_fm2_ham1_p4_ishres_dlores_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_ham1_p4_ishres_dlores_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb0_p4_ishres_dlores_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb0_p4_ishres_dlores_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb1_p4_ishres_dlores_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb1_p4_ishres_dlores_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_n0_p8_ishres_dlores_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_n0_p8_ishres_dlores_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_n1_p8_ishres_dlores_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_n1_p8_ishres_dlores_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_dpf0_p8_ishres_dlores_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_dpf0_p8_ishres_dlores_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_dpf1_p8_ishres_dlores_genlock(void) -{ - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_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; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + gpix0 = get_genlock_transparency(dpf_lookup[pix0]); + } + last_bpl_pix = pix0; + } + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8_64(); + } + loaded_pix = getbpl8_64(); + loaded_pixs[0] = loaded_pix; + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + uae_u8 val1 = dpf_lookup[pix1]; + if (dpf_lookup_no[pix1]) { + val1 += dblpfofs[bpldualpf2of]; + } + val1 ^= bplcon4_denise_xor_val; + dpix_val1 = denise_colors.acolors[val1]; + gpix1 = get_genlock_transparency(dpf_lookup[pix1]); + } + last_bpl_pix = pix1; + } + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8_64(); + } + loaded_pix = getbpl8_64(); + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + gpix0 = filter_pixel_genlock(gpix0, gpix1); + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm2_dpf1_p8_ishres_dlores_filtered_genlock(void) +static void lts_aga_fm2_dpf1_p8_ihires_dlores_genlock(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_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; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + gpix0 = get_genlock_transparency(dpf_lookup[pix0]); + } + last_bpl_pix = pix0; + } + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8e_64(); + } + if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { + copybpl8o_64(); + } + loaded_pix = getbpl8_64(); + loaded_pixs[0] = loaded_pix; + shiftbpl8_64(); + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm2_ehb0_p8_ishres_dlores_genlock(void) +static void lts_aga_fm2_dpf1_p8_ihires_dlores_filtered_genlock(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_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; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + gpix0 = get_genlock_transparency(dpf_lookup[pix0]); + } + last_bpl_pix = pix0; + } + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8e_64(); + } + if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { + copybpl8o_64(); + } + loaded_pix = getbpl8_64(); + loaded_pixs[0] = loaded_pix; + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + uae_u8 val1 = dpf_lookup[pix1]; + if (dpf_lookup_no[pix1]) { + val1 += dblpfofs[bpldualpf2of]; + } + val1 ^= bplcon4_denise_xor_val; + dpix_val1 = denise_colors.acolors[val1]; + gpix1 = get_genlock_transparency(dpf_lookup[pix1]); + } + last_bpl_pix = pix1; + } + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8e_64(); + } + if (bpldat_copy[1] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) { + copybpl8o_64(); + } + loaded_pix = getbpl8_64(); + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + gpix0 = filter_pixel_genlock(gpix0, gpix1); + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm2_ehb0_p8_ishres_dlores_filtered_genlock(void) +static void lts_aga_fm2_ehb0_p8_ihires_dlores_genlock(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm2_ehb1_p8_ishres_dlores_genlock(void) +static void lts_aga_fm2_ehb0_p8_ihires_dlores_filtered_genlock(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + gpix0 = filter_pixel_genlock(gpix0, gpix1); + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm2_ehb1_p8_ishres_dlores_filtered_genlock(void) +static void lts_aga_fm2_ehb1_p8_ihires_dlores_genlock(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm2_ham0_p8_ishres_dlores_genlock(void) +static void lts_aga_fm2_ehb1_p8_ihires_dlores_filtered_genlock(void) { - lts_null(); -} -static void lts_aga_fm2_ham0_p8_ishres_dlores_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_ham1_p8_ishres_dlores_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_ham1_p8_ishres_dlores_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb0_p8_ishres_dlores_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb0_p8_ishres_dlores_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb1_p8_ishres_dlores_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb1_p8_ishres_dlores_filtered_genlock(void) -{ - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + gpix0 = filter_pixel_genlock(gpix0, gpix1); + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm2_n0_p4_ishres_dlores_spr_genlock(void) +static void lts_aga_fm2_ham0_p8_ihires_dlores_genlock(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_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; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = decode_ham_pixel_aga(pix0); + gpix0 = get_genlock_transparency((pix0 >> 2) & 63); + } + last_bpl_pix = pix0; + } + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8_64(); + } + loaded_pix = getbpl8_64(); + loaded_pixs[0] = loaded_pix; + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + decode_ham_pixel_aga(pix1); + } + last_bpl_pix = pix1; + } + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8_64(); + } + loaded_pix = getbpl8_64(); + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm2_n0_p4_ishres_dlores_spr_filtered_genlock(void) +static void lts_aga_fm2_ham0_p8_ihires_dlores_filtered_genlock(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_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; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = decode_ham_pixel_aga(pix0); + gpix0 = get_genlock_transparency((pix0 >> 2) & 63); + } + last_bpl_pix = pix0; + } + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8_64(); + } + loaded_pix = getbpl8_64(); + loaded_pixs[0] = loaded_pix; + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + dpix_val1 = decode_ham_pixel_aga(pix1); + gpix1 = get_genlock_transparency((pix1 >> 2) & 63); + } + last_bpl_pix = pix1; + } + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8_64(); + } + loaded_pix = getbpl8_64(); + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + gpix0 = filter_pixel_genlock(gpix0, gpix1); + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm2_n1_p4_ishres_dlores_spr_genlock(void) +static void lts_aga_fm2_ham1_p8_ihires_dlores_genlock(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_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; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = decode_ham_pixel_aga(pix0); + gpix0 = get_genlock_transparency((pix0 >> 2) & 63); + } + last_bpl_pix = pix0; + } + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8e_64(); + } + if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { + copybpl8o_64(); + } + loaded_pix = getbpl8_64(); + loaded_pixs[0] = loaded_pix; + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + decode_ham_pixel_aga(pix1); + } + last_bpl_pix = pix1; + } + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8e_64(); + } + if (bpldat_copy[1] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) { + copybpl8o_64(); + } + loaded_pix = getbpl8_64(); + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm2_n1_p4_ishres_dlores_spr_filtered_genlock(void) +static void lts_aga_fm2_ham1_p8_ihires_dlores_filtered_genlock(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_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; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = decode_ham_pixel_aga(pix0); + gpix0 = get_genlock_transparency((pix0 >> 2) & 63); + } + last_bpl_pix = pix0; + } + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8e_64(); + } + if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { + copybpl8o_64(); + } + loaded_pix = getbpl8_64(); + loaded_pixs[0] = loaded_pix; + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + dpix_val1 = decode_ham_pixel_aga(pix1); + gpix1 = get_genlock_transparency((pix1 >> 2) & 63); + } + last_bpl_pix = pix1; + } + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8e_64(); + } + if (bpldat_copy[1] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) { + copybpl8o_64(); + } + loaded_pix = getbpl8_64(); + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + gpix0 = filter_pixel_genlock(gpix0, gpix1); + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm2_dpf0_p4_ishres_dlores_spr_genlock(void) +static void lts_aga_fm2_kehb0_p8_ihires_dlores_genlock(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm2_dpf0_p4_ishres_dlores_spr_filtered_genlock(void) +static void lts_aga_fm2_kehb0_p8_ihires_dlores_filtered_genlock(void) { - lts_null(); -} -static void lts_aga_fm2_dpf1_p4_ishres_dlores_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_dpf1_p4_ishres_dlores_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb0_p4_ishres_dlores_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb0_p4_ishres_dlores_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb1_p4_ishres_dlores_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb1_p4_ishres_dlores_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_ham0_p4_ishres_dlores_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_ham0_p4_ishres_dlores_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_ham1_p4_ishres_dlores_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_ham1_p4_ishres_dlores_spr_filtered_genlock(void) -{ - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + gpix0 = filter_pixel_genlock(gpix0, gpix1); + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm2_kehb0_p4_ishres_dlores_spr_genlock(void) +static void lts_aga_fm2_kehb1_p8_ihires_dlores_genlock(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm2_kehb0_p4_ishres_dlores_spr_filtered_genlock(void) +static void lts_aga_fm2_kehb1_p8_ihires_dlores_filtered_genlock(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + gpix0 = filter_pixel_genlock(gpix0, gpix1); + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm2_kehb1_p4_ishres_dlores_spr_genlock(void) +static void lts_aga_fm2_n0_p4_ihires_dlores_spr_genlock(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix0; + } + shiftbpl4_64(); + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl4_64(); + } + loaded_pix = getbpl4_64(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + shiftbpl4_64(); + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm2_kehb1_p4_ishres_dlores_spr_filtered_genlock(void) +static void lts_aga_fm2_n0_p4_ihires_dlores_spr_filtered_genlock(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix0; + } + shiftbpl4_64(); + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl4_64(); + } + loaded_pix = getbpl4_64(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; + gpix1 = get_genlock_transparency(pix1 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix1; + } + shiftbpl4_64(); + if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { + copybpl4_64(); + } + loaded_pix = getbpl4_64(); + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + gpix0 = filter_pixel_genlock(gpix0, gpix1); + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm2_n0_p8_ishres_dlores_spr_genlock(void) +static void lts_aga_fm2_n1_p4_ihires_dlores_spr_genlock(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix0; + } + shiftbpl4_64(); + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl4e_64(); + } + if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { + copybpl4o_64(); + } + loaded_pix = getbpl4_64(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + shiftbpl4_64(); + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm2_n0_p8_ishres_dlores_spr_filtered_genlock(void) +static void lts_aga_fm2_n1_p4_ihires_dlores_spr_filtered_genlock(void) { - lts_null(); -} -static void lts_aga_fm2_n1_p8_ishres_dlores_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_n1_p8_ishres_dlores_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_dpf0_p8_ishres_dlores_spr_genlock(void) -{ - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix0; + } + shiftbpl4_64(); + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl4e_64(); + } + if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { + copybpl4o_64(); + } + loaded_pix = getbpl4_64(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; + gpix1 = get_genlock_transparency(pix1 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix1; + } + shiftbpl4_64(); + if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { + copybpl4e_64(); + } + if (bpldat_copy[1] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) { + copybpl4o_64(); + } + loaded_pix = getbpl4_64(); + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + gpix0 = filter_pixel_genlock(gpix0, gpix1); + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm2_dpf0_p8_ishres_dlores_spr_filtered_genlock(void) +static void lts_aga_fm2_dpf0_p4_ihires_dlores_spr_genlock(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + gpix0 = get_genlock_transparency(dpf_lookup[pix0]); + } + last_bpl_pix = pix0; + } + shiftbpl4_64(); + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl4_64(); + } + loaded_pix = getbpl4_64(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + shiftbpl4_64(); + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm2_dpf1_p8_ishres_dlores_spr_genlock(void) +static void lts_aga_fm2_dpf0_p4_ihires_dlores_spr_filtered_genlock(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + gpix0 = get_genlock_transparency(dpf_lookup[pix0]); + } + last_bpl_pix = pix0; + } + shiftbpl4_64(); + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl4_64(); + } + loaded_pix = getbpl4_64(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + uae_u8 val1 = dpf_lookup[pix1]; + if (dpf_lookup_no[pix1]) { + val1 += dblpfofs[bpldualpf2of]; + } + val1 ^= bplcon4_denise_xor_val; + dpix_val1 = denise_colors.acolors[val1]; + gpix1 = get_genlock_transparency(dpf_lookup[pix1]); + } + last_bpl_pix = pix1; + } + shiftbpl4_64(); + if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { + copybpl4_64(); + } + loaded_pix = getbpl4_64(); + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + gpix0 = filter_pixel_genlock(gpix0, gpix1); + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm2_dpf1_p8_ishres_dlores_spr_filtered_genlock(void) +static void lts_aga_fm2_dpf1_p4_ihires_dlores_spr_genlock(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + gpix0 = get_genlock_transparency(dpf_lookup[pix0]); + } + last_bpl_pix = pix0; + } + shiftbpl4_64(); + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl4e_64(); + } + if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { + copybpl4o_64(); + } + loaded_pix = getbpl4_64(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + shiftbpl4_64(); + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm2_ehb0_p8_ishres_dlores_spr_genlock(void) +static void lts_aga_fm2_dpf1_p4_ihires_dlores_spr_filtered_genlock(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + gpix0 = get_genlock_transparency(dpf_lookup[pix0]); + } + last_bpl_pix = pix0; + } + shiftbpl4_64(); + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl4e_64(); + } + if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { + copybpl4o_64(); + } + loaded_pix = getbpl4_64(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + uae_u8 val1 = dpf_lookup[pix1]; + if (dpf_lookup_no[pix1]) { + val1 += dblpfofs[bpldualpf2of]; + } + val1 ^= bplcon4_denise_xor_val; + dpix_val1 = denise_colors.acolors[val1]; + gpix1 = get_genlock_transparency(dpf_lookup[pix1]); + } + last_bpl_pix = pix1; + } + shiftbpl4_64(); + if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { + copybpl4e_64(); + } + if (bpldat_copy[1] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) { + copybpl4o_64(); + } + loaded_pix = getbpl4_64(); + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + gpix0 = filter_pixel_genlock(gpix0, gpix1); + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_ehb0_p4_ihires_dlores_spr_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_ehb0_p4_ihires_dlores_spr_filtered_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + gpix0 = filter_pixel_genlock(gpix0, gpix1); + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_ehb1_p4_ihires_dlores_spr_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_ehb1_p4_ihires_dlores_spr_filtered_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + gpix0 = filter_pixel_genlock(gpix0, gpix1); + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_ham0_p4_ihires_dlores_spr_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_ham0_p4_ihires_dlores_spr_filtered_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + gpix0 = filter_pixel_genlock(gpix0, gpix1); + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_ham1_p4_ihires_dlores_spr_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_ham1_p4_ihires_dlores_spr_filtered_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + gpix0 = filter_pixel_genlock(gpix0, gpix1); + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_kehb0_p4_ihires_dlores_spr_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_kehb0_p4_ihires_dlores_spr_filtered_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + gpix0 = filter_pixel_genlock(gpix0, gpix1); + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_kehb1_p4_ihires_dlores_spr_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_kehb1_p4_ihires_dlores_spr_filtered_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + gpix0 = filter_pixel_genlock(gpix0, gpix1); + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_n0_p8_ihires_dlores_spr_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix0; + } + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8_64(); + } + loaded_pix = getbpl8_64(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + shiftbpl8_64(); + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_n0_p8_ihires_dlores_spr_filtered_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix0; + } + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8_64(); + } + loaded_pix = getbpl8_64(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; + gpix1 = get_genlock_transparency(pix1 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix1; + } + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8_64(); + } + loaded_pix = getbpl8_64(); + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + gpix0 = filter_pixel_genlock(gpix0, gpix1); + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_n1_p8_ihires_dlores_spr_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix0; + } + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8e_64(); + } + if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { + copybpl8o_64(); + } + loaded_pix = getbpl8_64(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + shiftbpl8_64(); + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_n1_p8_ihires_dlores_spr_filtered_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix0; + } + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8e_64(); + } + if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { + copybpl8o_64(); + } + loaded_pix = getbpl8_64(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; + gpix1 = get_genlock_transparency(pix1 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix1; + } + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8e_64(); + } + if (bpldat_copy[1] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) { + copybpl8o_64(); + } + loaded_pix = getbpl8_64(); + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + gpix0 = filter_pixel_genlock(gpix0, gpix1); + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_dpf0_p8_ihires_dlores_spr_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + gpix0 = get_genlock_transparency(dpf_lookup[pix0]); + } + last_bpl_pix = pix0; + } + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8_64(); + } + loaded_pix = getbpl8_64(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + shiftbpl8_64(); + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_dpf0_p8_ihires_dlores_spr_filtered_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + gpix0 = get_genlock_transparency(dpf_lookup[pix0]); + } + last_bpl_pix = pix0; + } + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8_64(); + } + loaded_pix = getbpl8_64(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + uae_u8 val1 = dpf_lookup[pix1]; + if (dpf_lookup_no[pix1]) { + val1 += dblpfofs[bpldualpf2of]; + } + val1 ^= bplcon4_denise_xor_val; + dpix_val1 = denise_colors.acolors[val1]; + gpix1 = get_genlock_transparency(dpf_lookup[pix1]); + } + last_bpl_pix = pix1; + } + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8_64(); + } + loaded_pix = getbpl8_64(); + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + gpix0 = filter_pixel_genlock(gpix0, gpix1); + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_dpf1_p8_ihires_dlores_spr_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + gpix0 = get_genlock_transparency(dpf_lookup[pix0]); + } + last_bpl_pix = pix0; + } + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8e_64(); + } + if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { + copybpl8o_64(); + } + loaded_pix = getbpl8_64(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + shiftbpl8_64(); + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_dpf1_p8_ihires_dlores_spr_filtered_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + gpix0 = get_genlock_transparency(dpf_lookup[pix0]); + } + last_bpl_pix = pix0; + } + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8e_64(); + } + if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { + copybpl8o_64(); + } + loaded_pix = getbpl8_64(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + uae_u8 val1 = dpf_lookup[pix1]; + if (dpf_lookup_no[pix1]) { + val1 += dblpfofs[bpldualpf2of]; + } + val1 ^= bplcon4_denise_xor_val; + dpix_val1 = denise_colors.acolors[val1]; + gpix1 = get_genlock_transparency(dpf_lookup[pix1]); + } + last_bpl_pix = pix1; + } + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8e_64(); + } + if (bpldat_copy[1] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) { + copybpl8o_64(); + } + loaded_pix = getbpl8_64(); + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + gpix0 = filter_pixel_genlock(gpix0, gpix1); + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_ehb0_p8_ihires_dlores_spr_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_ehb0_p8_ihires_dlores_spr_filtered_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + gpix0 = filter_pixel_genlock(gpix0, gpix1); + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_ehb1_p8_ihires_dlores_spr_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_ehb1_p8_ihires_dlores_spr_filtered_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + gpix0 = filter_pixel_genlock(gpix0, gpix1); + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_ham0_p8_ihires_dlores_spr_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = decode_ham_pixel_aga(pix0); + gpix0 = get_genlock_transparency((pix0 >> 2) & 63); + } + last_bpl_pix = pix0; + } + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8_64(); + } + loaded_pix = getbpl8_64(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + decode_ham_pixel_aga(pix1); + } + last_bpl_pix = pix1; + } + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8_64(); + } + loaded_pix = getbpl8_64(); + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_ham0_p8_ihires_dlores_spr_filtered_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = decode_ham_pixel_aga(pix0); + gpix0 = get_genlock_transparency((pix0 >> 2) & 63); + } + last_bpl_pix = pix0; + } + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8_64(); + } + loaded_pix = getbpl8_64(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + dpix_val1 = decode_ham_pixel_aga(pix1); + gpix1 = get_genlock_transparency((pix1 >> 2) & 63); + } + last_bpl_pix = pix1; + } + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8_64(); + } + loaded_pix = getbpl8_64(); + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + gpix0 = filter_pixel_genlock(gpix0, gpix1); + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_ham1_p8_ihires_dlores_spr_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = decode_ham_pixel_aga(pix0); + gpix0 = get_genlock_transparency((pix0 >> 2) & 63); + } + last_bpl_pix = pix0; + } + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8e_64(); + } + if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { + copybpl8o_64(); + } + loaded_pix = getbpl8_64(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + decode_ham_pixel_aga(pix1); + } + last_bpl_pix = pix1; + } + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8e_64(); + } + if (bpldat_copy[1] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) { + copybpl8o_64(); + } + loaded_pix = getbpl8_64(); + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_ham1_p8_ihires_dlores_spr_filtered_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = decode_ham_pixel_aga(pix0); + gpix0 = get_genlock_transparency((pix0 >> 2) & 63); + } + last_bpl_pix = pix0; + } + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8e_64(); + } + if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { + copybpl8o_64(); + } + loaded_pix = getbpl8_64(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + dpix_val1 = decode_ham_pixel_aga(pix1); + gpix1 = get_genlock_transparency((pix1 >> 2) & 63); + } + last_bpl_pix = pix1; + } + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8e_64(); + } + if (bpldat_copy[1] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) { + copybpl8o_64(); + } + loaded_pix = getbpl8_64(); + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + gpix0 = filter_pixel_genlock(gpix0, gpix1); + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_kehb0_p8_ihires_dlores_spr_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_kehb0_p8_ihires_dlores_spr_filtered_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + gpix0 = filter_pixel_genlock(gpix0, gpix1); + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_kehb1_p8_ihires_dlores_spr_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_kehb1_p8_ihires_dlores_spr_filtered_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 4; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + gpix0 = filter_pixel_genlock(gpix0, gpix1); + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_n0_p4_ishres_dlores_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm2_n0_p4_ishres_dlores_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm2_n1_p4_ishres_dlores_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm2_n1_p4_ishres_dlores_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm2_dpf0_p4_ishres_dlores_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm2_dpf0_p4_ishres_dlores_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm2_dpf1_p4_ishres_dlores_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm2_dpf1_p4_ishres_dlores_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm2_ehb0_p4_ishres_dlores_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm2_ehb0_p4_ishres_dlores_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm2_ehb1_p4_ishres_dlores_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm2_ehb1_p4_ishres_dlores_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm2_ham0_p4_ishres_dlores_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm2_ham0_p4_ishres_dlores_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm2_ham1_p4_ishres_dlores_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm2_ham1_p4_ishres_dlores_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm2_kehb0_p4_ishres_dlores_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm2_kehb0_p4_ishres_dlores_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm2_kehb1_p4_ishres_dlores_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm2_kehb1_p4_ishres_dlores_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm2_n0_p8_ishres_dlores_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm2_n0_p8_ishres_dlores_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm2_n1_p8_ishres_dlores_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm2_n1_p8_ishres_dlores_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm2_dpf0_p8_ishres_dlores_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm2_dpf0_p8_ishres_dlores_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm2_dpf1_p8_ishres_dlores_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm2_dpf1_p8_ishres_dlores_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm2_ehb0_p8_ishres_dlores_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm2_ehb0_p8_ishres_dlores_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm2_ehb1_p8_ishres_dlores_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm2_ehb1_p8_ishres_dlores_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm2_ham0_p8_ishres_dlores_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm2_ham0_p8_ishres_dlores_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm2_ham1_p8_ishres_dlores_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm2_ham1_p8_ishres_dlores_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm2_kehb0_p8_ishres_dlores_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm2_kehb0_p8_ishres_dlores_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm2_kehb1_p8_ishres_dlores_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm2_kehb1_p8_ishres_dlores_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm2_n0_p4_ishres_dlores_spr_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm2_n0_p4_ishres_dlores_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm2_n1_p4_ishres_dlores_spr_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm2_n1_p4_ishres_dlores_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm2_dpf0_p4_ishres_dlores_spr_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm2_dpf0_p4_ishres_dlores_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm2_dpf1_p4_ishres_dlores_spr_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm2_dpf1_p4_ishres_dlores_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm2_ehb0_p4_ishres_dlores_spr_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm2_ehb0_p4_ishres_dlores_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm2_ehb1_p4_ishres_dlores_spr_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm2_ehb1_p4_ishres_dlores_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm2_ham0_p4_ishres_dlores_spr_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm2_ham0_p4_ishres_dlores_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm2_ham1_p4_ishres_dlores_spr_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm2_ham1_p4_ishres_dlores_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm2_kehb0_p4_ishres_dlores_spr_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm2_kehb0_p4_ishres_dlores_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm2_kehb1_p4_ishres_dlores_spr_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm2_kehb1_p4_ishres_dlores_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm2_n0_p8_ishres_dlores_spr_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm2_n0_p8_ishres_dlores_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm2_n1_p8_ishres_dlores_spr_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm2_n1_p8_ishres_dlores_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm2_dpf0_p8_ishres_dlores_spr_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm2_dpf0_p8_ishres_dlores_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm2_dpf1_p8_ishres_dlores_spr_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm2_dpf1_p8_ishres_dlores_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm2_ehb0_p8_ishres_dlores_spr_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm2_ehb0_p8_ishres_dlores_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm2_ehb1_p8_ishres_dlores_spr_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm2_ehb1_p8_ishres_dlores_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm2_ham0_p8_ishres_dlores_spr_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm2_ham0_p8_ishres_dlores_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm2_ham1_p8_ishres_dlores_spr_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm2_ham1_p8_ishres_dlores_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm2_kehb0_p8_ishres_dlores_spr_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm2_kehb0_p8_ishres_dlores_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm2_kehb1_p8_ishres_dlores_spr_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm2_kehb1_p8_ishres_dlores_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm2_n0_p4_ilores_dhires_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_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; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4_64(); + loaded_pix = getbpl4_64(); + } + if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { + copybpl4_64(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4_64(); + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + gpix2 = get_genlock_transparency(pix2 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4_64(); + loaded_pix = getbpl4_64(); + } + if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { + copybpl4_64(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4_64(); + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_n0_p4_ilores_dhires_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm2_n1_p4_ilores_dhires_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_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; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4e_64(); + loaded_pix = getbpl4_64(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl4o_64(); + loaded_pix = getbpl4_64(); + } + 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] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[1]) { + copybpl4o_64(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl4_64(); + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + gpix2 = get_genlock_transparency(pix2 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4e_64(); + loaded_pix = getbpl4_64(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl4o_64(); + loaded_pix = getbpl4_64(); + } + 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] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[1]) { + copybpl4o_64(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl4_64(); + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_n1_p4_ilores_dhires_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm2_dpf0_p4_ilores_dhires_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_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; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + gpix0 = get_genlock_transparency(dpf_lookup[pix0]); + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4_64(); + loaded_pix = getbpl4_64(); + } + if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { + copybpl4_64(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4_64(); + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; + gpix2 = get_genlock_transparency(dpf_lookup[pix2]); + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4_64(); + loaded_pix = getbpl4_64(); + } + if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { + copybpl4_64(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4_64(); + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_dpf0_p4_ilores_dhires_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm2_dpf1_p4_ilores_dhires_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_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; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + gpix0 = get_genlock_transparency(dpf_lookup[pix0]); + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4e_64(); + loaded_pix = getbpl4_64(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl4o_64(); + loaded_pix = getbpl4_64(); + } + 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] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[1]) { + copybpl4o_64(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl4_64(); + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; + gpix2 = get_genlock_transparency(dpf_lookup[pix2]); + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4e_64(); + loaded_pix = getbpl4_64(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl4o_64(); + loaded_pix = getbpl4_64(); + } + 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] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[1]) { + copybpl4o_64(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl4_64(); + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_dpf1_p4_ilores_dhires_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm2_ehb0_p4_ilores_dhires_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_ehb0_p4_ilores_dhires_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm2_ehb1_p4_ilores_dhires_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_ehb1_p4_ilores_dhires_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm2_ham0_p4_ilores_dhires_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_ham0_p4_ilores_dhires_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm2_ham1_p4_ilores_dhires_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_ham1_p4_ilores_dhires_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm2_kehb0_p4_ilores_dhires_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_kehb0_p4_ilores_dhires_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm2_kehb1_p4_ilores_dhires_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_kehb1_p4_ilores_dhires_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm2_n0_p8_ilores_dhires_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_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; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8_64(); + loaded_pix = getbpl8_64(); + } + if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { + copybpl8_64(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8_64(); + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + gpix2 = get_genlock_transparency(pix2 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8_64(); + loaded_pix = getbpl8_64(); + } + if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { + copybpl8_64(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8_64(); + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_n0_p8_ilores_dhires_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm2_n1_p8_ilores_dhires_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_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; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8e_64(); + loaded_pix = getbpl8_64(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl8o_64(); + loaded_pix = getbpl8_64(); + } + 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] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[1]) { + copybpl8o_64(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl8_64(); + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + gpix2 = get_genlock_transparency(pix2 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8e_64(); + loaded_pix = getbpl8_64(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl8o_64(); + loaded_pix = getbpl8_64(); + } + 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] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[1]) { + copybpl8o_64(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl8_64(); + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_n1_p8_ilores_dhires_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm2_dpf0_p8_ilores_dhires_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_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; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + gpix0 = get_genlock_transparency(dpf_lookup[pix0]); + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8_64(); + loaded_pix = getbpl8_64(); + } + if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { + copybpl8_64(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8_64(); + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; + gpix2 = get_genlock_transparency(dpf_lookup[pix2]); + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8_64(); + loaded_pix = getbpl8_64(); + } + if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { + copybpl8_64(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8_64(); + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_dpf0_p8_ilores_dhires_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm2_dpf1_p8_ilores_dhires_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_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; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + gpix0 = get_genlock_transparency(dpf_lookup[pix0]); + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8e_64(); + loaded_pix = getbpl8_64(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl8o_64(); + loaded_pix = getbpl8_64(); + } + 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] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[1]) { + copybpl8o_64(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl8_64(); + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; + gpix2 = get_genlock_transparency(dpf_lookup[pix2]); + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8e_64(); + loaded_pix = getbpl8_64(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl8o_64(); + loaded_pix = getbpl8_64(); + } + 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] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[1]) { + copybpl8o_64(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl8_64(); + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_dpf1_p8_ilores_dhires_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm2_ehb0_p8_ilores_dhires_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_ehb0_p8_ilores_dhires_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm2_ehb1_p8_ilores_dhires_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_ehb1_p8_ilores_dhires_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm2_ham0_p8_ilores_dhires_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_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; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = decode_ham_pixel_aga(pix0); + gpix0 = get_genlock_transparency((pix0 >> 2) & 63); + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8_64(); + loaded_pix = getbpl8_64(); + } + if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { + copybpl8_64(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8_64(); + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = decode_ham_pixel_aga(pix2); + gpix2 = get_genlock_transparency((pix2 >> 2) & 63); + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8_64(); + loaded_pix = getbpl8_64(); + } + if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { + copybpl8_64(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8_64(); + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_ham0_p8_ilores_dhires_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm2_ham1_p8_ilores_dhires_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_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; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = decode_ham_pixel_aga(pix0); + gpix0 = get_genlock_transparency((pix0 >> 2) & 63); + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8e_64(); + loaded_pix = getbpl8_64(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl8o_64(); + loaded_pix = getbpl8_64(); + } + 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] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[1]) { + copybpl8o_64(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl8_64(); + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = decode_ham_pixel_aga(pix2); + gpix2 = get_genlock_transparency((pix2 >> 2) & 63); + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8e_64(); + loaded_pix = getbpl8_64(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl8o_64(); + loaded_pix = getbpl8_64(); + } + 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] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[1]) { + copybpl8o_64(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl8_64(); + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_ham1_p8_ilores_dhires_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm2_kehb0_p8_ilores_dhires_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_kehb0_p8_ilores_dhires_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm2_kehb1_p8_ilores_dhires_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_kehb1_p8_ilores_dhires_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm2_n0_p4_ilores_dhires_spr_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4_64(); + loaded_pix = getbpl4_64(); + } + if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { + copybpl4_64(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4_64(); + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + gpix2 = get_genlock_transparency(pix2 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4_64(); + loaded_pix = getbpl4_64(); + } + if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { + copybpl4_64(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4_64(); + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_n0_p4_ilores_dhires_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm2_n1_p4_ilores_dhires_spr_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4e_64(); + loaded_pix = getbpl4_64(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl4o_64(); + loaded_pix = getbpl4_64(); + } + 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] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[1]) { + copybpl4o_64(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl4_64(); + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + gpix2 = get_genlock_transparency(pix2 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4e_64(); + loaded_pix = getbpl4_64(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl4o_64(); + loaded_pix = getbpl4_64(); + } + 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] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[1]) { + copybpl4o_64(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl4_64(); + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_n1_p4_ilores_dhires_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm2_dpf0_p4_ilores_dhires_spr_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + gpix0 = get_genlock_transparency(dpf_lookup[pix0]); + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4_64(); + loaded_pix = getbpl4_64(); + } + if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { + copybpl4_64(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4_64(); + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; + gpix2 = get_genlock_transparency(dpf_lookup[pix2]); + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4_64(); + loaded_pix = getbpl4_64(); + } + if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { + copybpl4_64(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4_64(); + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_dpf0_p4_ilores_dhires_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm2_dpf1_p4_ilores_dhires_spr_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + gpix0 = get_genlock_transparency(dpf_lookup[pix0]); + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4e_64(); + loaded_pix = getbpl4_64(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl4o_64(); + loaded_pix = getbpl4_64(); + } + 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] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[1]) { + copybpl4o_64(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl4_64(); + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; + gpix2 = get_genlock_transparency(dpf_lookup[pix2]); + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4e_64(); + loaded_pix = getbpl4_64(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl4o_64(); + loaded_pix = getbpl4_64(); + } + 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] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[1]) { + copybpl4o_64(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl4_64(); + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_dpf1_p4_ilores_dhires_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm2_ehb0_p4_ilores_dhires_spr_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_ehb0_p4_ilores_dhires_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm2_ehb1_p4_ilores_dhires_spr_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_ehb1_p4_ilores_dhires_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm2_ham0_p4_ilores_dhires_spr_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_ham0_p4_ilores_dhires_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm2_ham1_p4_ilores_dhires_spr_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_ham1_p4_ilores_dhires_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm2_kehb0_p4_ilores_dhires_spr_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_kehb0_p4_ilores_dhires_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm2_kehb1_p4_ilores_dhires_spr_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_kehb1_p4_ilores_dhires_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm2_n0_p8_ilores_dhires_spr_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8_64(); + loaded_pix = getbpl8_64(); + } + if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { + copybpl8_64(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8_64(); + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + gpix2 = get_genlock_transparency(pix2 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8_64(); + loaded_pix = getbpl8_64(); + } + if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { + copybpl8_64(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8_64(); + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_n0_p8_ilores_dhires_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm2_n1_p8_ilores_dhires_spr_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8e_64(); + loaded_pix = getbpl8_64(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl8o_64(); + loaded_pix = getbpl8_64(); + } + 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] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[1]) { + copybpl8o_64(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl8_64(); + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + gpix2 = get_genlock_transparency(pix2 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8e_64(); + loaded_pix = getbpl8_64(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl8o_64(); + loaded_pix = getbpl8_64(); + } + 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] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[1]) { + copybpl8o_64(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl8_64(); + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_n1_p8_ilores_dhires_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm2_dpf0_p8_ilores_dhires_spr_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + gpix0 = get_genlock_transparency(dpf_lookup[pix0]); + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8_64(); + loaded_pix = getbpl8_64(); + } + if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { + copybpl8_64(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8_64(); + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; + gpix2 = get_genlock_transparency(dpf_lookup[pix2]); + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8_64(); + loaded_pix = getbpl8_64(); + } + if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { + copybpl8_64(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8_64(); + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_dpf0_p8_ilores_dhires_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm2_dpf1_p8_ilores_dhires_spr_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + gpix0 = get_genlock_transparency(dpf_lookup[pix0]); + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8e_64(); + loaded_pix = getbpl8_64(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl8o_64(); + loaded_pix = getbpl8_64(); + } + 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] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[1]) { + copybpl8o_64(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl8_64(); + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; + gpix2 = get_genlock_transparency(dpf_lookup[pix2]); + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8e_64(); + loaded_pix = getbpl8_64(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl8o_64(); + loaded_pix = getbpl8_64(); + } + 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] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[1]) { + copybpl8o_64(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl8_64(); + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_dpf1_p8_ilores_dhires_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm2_ehb0_p8_ilores_dhires_spr_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_ehb0_p8_ilores_dhires_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm2_ehb1_p8_ilores_dhires_spr_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_ehb1_p8_ilores_dhires_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm2_ham0_p8_ilores_dhires_spr_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = decode_ham_pixel_aga(pix0); + gpix0 = get_genlock_transparency((pix0 >> 2) & 63); + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8_64(); + loaded_pix = getbpl8_64(); + } + if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { + copybpl8_64(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8_64(); + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = decode_ham_pixel_aga(pix2); + gpix2 = get_genlock_transparency((pix2 >> 2) & 63); + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8_64(); + loaded_pix = getbpl8_64(); + } + if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { + copybpl8_64(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8_64(); + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_ham0_p8_ilores_dhires_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm2_ham1_p8_ilores_dhires_spr_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = decode_ham_pixel_aga(pix0); + gpix0 = get_genlock_transparency((pix0 >> 2) & 63); + } + last_bpl_pix = pix0; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8e_64(); + loaded_pix = getbpl8_64(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl8o_64(); + loaded_pix = getbpl8_64(); + } + 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] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[1]) { + copybpl8o_64(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl8_64(); + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = decode_ham_pixel_aga(pix2); + gpix2 = get_genlock_transparency((pix2 >> 2) & 63); + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8e_64(); + loaded_pix = getbpl8_64(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl8o_64(); + loaded_pix = getbpl8_64(); + } + 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] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[1]) { + copybpl8o_64(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl8_64(); + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_ham1_p8_ilores_dhires_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm2_kehb0_p8_ilores_dhires_spr_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_kehb0_p8_ilores_dhires_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm2_kehb1_p8_ilores_dhires_spr_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_kehb1_p8_ilores_dhires_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm2_n0_p4_ihires_dhires_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_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; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix0; + } + shiftbpl4_64(); + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl4_64(); + } + loaded_pix = getbpl4_64(); + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + gpix2 = get_genlock_transparency(pix2 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix2; + } + shiftbpl4_64(); + if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { + copybpl4_64(); + } + loaded_pix = getbpl4_64(); + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_n0_p4_ihires_dhires_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm2_n1_p4_ihires_dhires_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_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; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix0; + } + shiftbpl4_64(); + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl4e_64(); + } + if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { + copybpl4o_64(); + } + loaded_pix = getbpl4_64(); + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + gpix2 = get_genlock_transparency(pix2 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix2; + } + shiftbpl4_64(); + if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { + copybpl4e_64(); + } + if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) { + copybpl4o_64(); + } + loaded_pix = getbpl4_64(); + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_n1_p4_ihires_dhires_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm2_dpf0_p4_ihires_dhires_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_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; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + gpix0 = get_genlock_transparency(dpf_lookup[pix0]); + } + last_bpl_pix = pix0; + } + shiftbpl4_64(); + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl4_64(); + } + loaded_pix = getbpl4_64(); + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; + gpix2 = get_genlock_transparency(dpf_lookup[pix2]); + } + last_bpl_pix = pix2; + } + shiftbpl4_64(); + if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { + copybpl4_64(); + } + loaded_pix = getbpl4_64(); + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_dpf0_p4_ihires_dhires_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm2_dpf1_p4_ihires_dhires_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_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; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + gpix0 = get_genlock_transparency(dpf_lookup[pix0]); + } + last_bpl_pix = pix0; + } + shiftbpl4_64(); + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl4e_64(); + } + if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { + copybpl4o_64(); + } + loaded_pix = getbpl4_64(); + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; + gpix2 = get_genlock_transparency(dpf_lookup[pix2]); + } + last_bpl_pix = pix2; + } + shiftbpl4_64(); + if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { + copybpl4e_64(); + } + if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) { + copybpl4o_64(); + } + loaded_pix = getbpl4_64(); + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_dpf1_p4_ihires_dhires_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm2_ehb0_p4_ihires_dhires_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_ehb0_p4_ihires_dhires_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm2_ehb1_p4_ihires_dhires_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_ehb1_p4_ihires_dhires_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm2_ham0_p4_ihires_dhires_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_ham0_p4_ihires_dhires_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm2_ham1_p4_ihires_dhires_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_ham1_p4_ihires_dhires_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm2_kehb0_p4_ihires_dhires_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_kehb0_p4_ihires_dhires_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm2_kehb1_p4_ihires_dhires_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_kehb1_p4_ihires_dhires_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm2_n0_p8_ihires_dhires_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_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; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix0; + } + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8_64(); + } + loaded_pix = getbpl8_64(); + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + gpix2 = get_genlock_transparency(pix2 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix2; + } + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8_64(); + } + loaded_pix = getbpl8_64(); + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_n0_p8_ihires_dhires_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm2_n1_p8_ihires_dhires_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_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; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix0; + } + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8e_64(); + } + if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { + copybpl8o_64(); + } + loaded_pix = getbpl8_64(); + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + gpix2 = get_genlock_transparency(pix2 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix2; + } + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8e_64(); + } + if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) { + copybpl8o_64(); + } + loaded_pix = getbpl8_64(); + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_n1_p8_ihires_dhires_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm2_dpf0_p8_ihires_dhires_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_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; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + gpix0 = get_genlock_transparency(dpf_lookup[pix0]); + } + last_bpl_pix = pix0; + } + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8_64(); + } + loaded_pix = getbpl8_64(); + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; + gpix2 = get_genlock_transparency(dpf_lookup[pix2]); + } + last_bpl_pix = pix2; + } + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8_64(); + } + loaded_pix = getbpl8_64(); + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_dpf0_p8_ihires_dhires_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm2_dpf1_p8_ihires_dhires_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_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; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + gpix0 = get_genlock_transparency(dpf_lookup[pix0]); + } + last_bpl_pix = pix0; + } + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8e_64(); + } + if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { + copybpl8o_64(); + } + loaded_pix = getbpl8_64(); + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; + gpix2 = get_genlock_transparency(dpf_lookup[pix2]); + } + last_bpl_pix = pix2; + } + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8e_64(); + } + if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) { + copybpl8o_64(); + } + loaded_pix = getbpl8_64(); + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_dpf1_p8_ihires_dhires_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm2_ehb0_p8_ihires_dhires_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_ehb0_p8_ihires_dhires_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm2_ehb1_p8_ihires_dhires_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_ehb1_p8_ihires_dhires_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm2_ham0_p8_ihires_dhires_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_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; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = decode_ham_pixel_aga(pix0); + gpix0 = get_genlock_transparency((pix0 >> 2) & 63); + } + last_bpl_pix = pix0; + } + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8_64(); + } + loaded_pix = getbpl8_64(); + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = decode_ham_pixel_aga(pix2); + gpix2 = get_genlock_transparency((pix2 >> 2) & 63); + } + last_bpl_pix = pix2; + } + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8_64(); + } + loaded_pix = getbpl8_64(); + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_ham0_p8_ihires_dhires_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm2_ham1_p8_ihires_dhires_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_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; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = decode_ham_pixel_aga(pix0); + gpix0 = get_genlock_transparency((pix0 >> 2) & 63); + } + last_bpl_pix = pix0; + } + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8e_64(); + } + if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { + copybpl8o_64(); + } + loaded_pix = getbpl8_64(); + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = decode_ham_pixel_aga(pix2); + gpix2 = get_genlock_transparency((pix2 >> 2) & 63); + } + last_bpl_pix = pix2; + } + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8e_64(); + } + if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) { + copybpl8o_64(); + } + loaded_pix = getbpl8_64(); + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_ham1_p8_ihires_dhires_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm2_kehb0_p8_ihires_dhires_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_kehb0_p8_ihires_dhires_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm2_kehb1_p8_ihires_dhires_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_kehb1_p8_ihires_dhires_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm2_n0_p4_ihires_dhires_spr_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix0; + } + shiftbpl4_64(); + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl4_64(); + } + loaded_pix = getbpl4_64(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + gpix2 = get_genlock_transparency(pix2 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix2; + } + shiftbpl4_64(); + if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { + copybpl4_64(); + } + loaded_pix = getbpl4_64(); + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_n0_p4_ihires_dhires_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm2_n1_p4_ihires_dhires_spr_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix0; + } + shiftbpl4_64(); + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl4e_64(); + } + if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { + copybpl4o_64(); + } + loaded_pix = getbpl4_64(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + gpix2 = get_genlock_transparency(pix2 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix2; + } + shiftbpl4_64(); + if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { + copybpl4e_64(); + } + if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) { + copybpl4o_64(); + } + loaded_pix = getbpl4_64(); + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_n1_p4_ihires_dhires_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm2_dpf0_p4_ihires_dhires_spr_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + gpix0 = get_genlock_transparency(dpf_lookup[pix0]); + } + last_bpl_pix = pix0; + } + shiftbpl4_64(); + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl4_64(); + } + loaded_pix = getbpl4_64(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; + gpix2 = get_genlock_transparency(dpf_lookup[pix2]); + } + last_bpl_pix = pix2; + } + shiftbpl4_64(); + if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { + copybpl4_64(); + } + loaded_pix = getbpl4_64(); + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_dpf0_p4_ihires_dhires_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm2_dpf1_p4_ihires_dhires_spr_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + gpix0 = get_genlock_transparency(dpf_lookup[pix0]); + } + last_bpl_pix = pix0; + } + shiftbpl4_64(); + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl4e_64(); + } + if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { + copybpl4o_64(); + } + loaded_pix = getbpl4_64(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; + gpix2 = get_genlock_transparency(dpf_lookup[pix2]); + } + last_bpl_pix = pix2; + } + shiftbpl4_64(); + if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { + copybpl4e_64(); + } + if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) { + copybpl4o_64(); + } + loaded_pix = getbpl4_64(); + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_dpf1_p4_ihires_dhires_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm2_ehb0_p4_ihires_dhires_spr_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_ehb0_p4_ihires_dhires_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm2_ehb1_p4_ihires_dhires_spr_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_ehb1_p4_ihires_dhires_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm2_ham0_p4_ihires_dhires_spr_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_ham0_p4_ihires_dhires_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm2_ham1_p4_ihires_dhires_spr_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_ham1_p4_ihires_dhires_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm2_kehb0_p4_ihires_dhires_spr_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_kehb0_p4_ihires_dhires_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm2_kehb1_p4_ihires_dhires_spr_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_kehb1_p4_ihires_dhires_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm2_n0_p8_ihires_dhires_spr_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix0; + } + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8_64(); + } + loaded_pix = getbpl8_64(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + gpix2 = get_genlock_transparency(pix2 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix2; + } + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8_64(); + } + loaded_pix = getbpl8_64(); + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_n0_p8_ihires_dhires_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm2_n1_p8_ihires_dhires_spr_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix0; + } + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8e_64(); + } + if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { + copybpl8o_64(); + } + loaded_pix = getbpl8_64(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + gpix2 = get_genlock_transparency(pix2 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix2; + } + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8e_64(); + } + if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) { + copybpl8o_64(); + } + loaded_pix = getbpl8_64(); + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_n1_p8_ihires_dhires_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm2_dpf0_p8_ihires_dhires_spr_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + gpix0 = get_genlock_transparency(dpf_lookup[pix0]); + } + last_bpl_pix = pix0; + } + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8_64(); + } + loaded_pix = getbpl8_64(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; + gpix2 = get_genlock_transparency(dpf_lookup[pix2]); + } + last_bpl_pix = pix2; + } + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8_64(); + } + loaded_pix = getbpl8_64(); + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_dpf0_p8_ihires_dhires_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm2_dpf1_p8_ihires_dhires_spr_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + gpix0 = get_genlock_transparency(dpf_lookup[pix0]); + } + last_bpl_pix = pix0; + } + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8e_64(); + } + if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { + copybpl8o_64(); + } + loaded_pix = getbpl8_64(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; + gpix2 = get_genlock_transparency(dpf_lookup[pix2]); + } + last_bpl_pix = pix2; + } + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8e_64(); + } + if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) { + copybpl8o_64(); + } + loaded_pix = getbpl8_64(); + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_dpf1_p8_ihires_dhires_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm2_ehb0_p8_ihires_dhires_spr_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_ehb0_p8_ihires_dhires_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm2_ehb1_p8_ihires_dhires_spr_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_ehb1_p8_ihires_dhires_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm2_ham0_p8_ihires_dhires_spr_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = decode_ham_pixel_aga(pix0); + gpix0 = get_genlock_transparency((pix0 >> 2) & 63); + } + last_bpl_pix = pix0; + } + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8_64(); + } + loaded_pix = getbpl8_64(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = decode_ham_pixel_aga(pix2); + gpix2 = get_genlock_transparency((pix2 >> 2) & 63); + } + last_bpl_pix = pix2; + } + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8_64(); + } + loaded_pix = getbpl8_64(); + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_ham0_p8_ihires_dhires_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm2_ham1_p8_ihires_dhires_spr_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = decode_ham_pixel_aga(pix0); + gpix0 = get_genlock_transparency((pix0 >> 2) & 63); + } + last_bpl_pix = pix0; + } + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8e_64(); + } + if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { + copybpl8o_64(); + } + loaded_pix = getbpl8_64(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = decode_ham_pixel_aga(pix2); + gpix2 = get_genlock_transparency((pix2 >> 2) & 63); + } + last_bpl_pix = pix2; + } + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8e_64(); + } + if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) { + copybpl8o_64(); + } + loaded_pix = getbpl8_64(); + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_ham1_p8_ihires_dhires_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm2_kehb0_p8_ihires_dhires_spr_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_kehb0_p8_ihires_dhires_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm2_kehb1_p8_ihires_dhires_spr_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_kehb1_p8_ihires_dhires_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm2_n0_p4_ishres_dhires_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_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; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix0; + } + shiftbpl4_64(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4_64(); + } + loaded_pix = getbpl4_64(); + loaded_pixs[0] = loaded_pix; + shiftbpl4_64(); + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + gpix2 = get_genlock_transparency(pix2 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix2; + } + shiftbpl4_64(); + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4_64(); + } + loaded_pix = getbpl4_64(); + loaded_pixs[2] = loaded_pix; + shiftbpl4_64(); + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_n0_p4_ishres_dhires_filtered_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_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; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix0; + } + shiftbpl4_64(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4_64(); + } + loaded_pix = getbpl4_64(); + loaded_pixs[0] = loaded_pix; + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; + gpix1 = get_genlock_transparency(pix1 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix1; + } + shiftbpl4_64(); + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4_64(); + } + loaded_pix = getbpl4_64(); + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + gpix2 = get_genlock_transparency(pix2 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix2; + } + shiftbpl4_64(); + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4_64(); + } + loaded_pix = getbpl4_64(); + loaded_pixs[2] = loaded_pix; + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; + gpix3 = get_genlock_transparency(pix3 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix3; + } + shiftbpl4_64(); + if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4_64(); + } + loaded_pix = getbpl4_64(); + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + gpix0 = filter_pixel_genlock(gpix0, gpix1); + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + gpix2 = filter_pixel_genlock(gpix2, gpix3); + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_n1_p4_ishres_dhires_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_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; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix0; + } + shiftbpl4_64(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4e_64(); + } + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl4o_64(); + } + loaded_pix = getbpl4_64(); + loaded_pixs[0] = loaded_pix; + shiftbpl4_64(); + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + gpix2 = get_genlock_transparency(pix2 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix2; + } + shiftbpl4_64(); + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4e_64(); + } + if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { + copybpl4o_64(); + } + loaded_pix = getbpl4_64(); + loaded_pixs[2] = loaded_pix; + shiftbpl4_64(); + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_n1_p4_ishres_dhires_filtered_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_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; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix0; + } + shiftbpl4_64(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4e_64(); + } + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl4o_64(); + } + loaded_pix = getbpl4_64(); + loaded_pixs[0] = loaded_pix; + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; + gpix1 = get_genlock_transparency(pix1 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix1; + } + shiftbpl4_64(); + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4e_64(); + } + if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { + copybpl4o_64(); + } + loaded_pix = getbpl4_64(); + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + gpix2 = get_genlock_transparency(pix2 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix2; + } + shiftbpl4_64(); + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4e_64(); + } + if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { + copybpl4o_64(); + } + loaded_pix = getbpl4_64(); + loaded_pixs[2] = loaded_pix; + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; + gpix3 = get_genlock_transparency(pix3 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix3; + } + shiftbpl4_64(); + if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4e_64(); + } + if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) { + copybpl4o_64(); + } + loaded_pix = getbpl4_64(); + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + gpix0 = filter_pixel_genlock(gpix0, gpix1); + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + gpix2 = filter_pixel_genlock(gpix2, gpix3); + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_dpf0_p4_ishres_dhires_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_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; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + gpix0 = get_genlock_transparency(dpf_lookup[pix0]); + } + last_bpl_pix = pix0; + } + shiftbpl4_64(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4_64(); + } + loaded_pix = getbpl4_64(); + loaded_pixs[0] = loaded_pix; + shiftbpl4_64(); + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; + gpix2 = get_genlock_transparency(dpf_lookup[pix2]); + } + last_bpl_pix = pix2; + } + shiftbpl4_64(); + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4_64(); + } + loaded_pix = getbpl4_64(); + loaded_pixs[2] = loaded_pix; + shiftbpl4_64(); + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_dpf0_p4_ishres_dhires_filtered_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_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; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + gpix0 = get_genlock_transparency(dpf_lookup[pix0]); + } + last_bpl_pix = pix0; + } + shiftbpl4_64(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4_64(); + } + loaded_pix = getbpl4_64(); + loaded_pixs[0] = loaded_pix; + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + uae_u8 val1 = dpf_lookup[pix1]; + if (dpf_lookup_no[pix1]) { + val1 += dblpfofs[bpldualpf2of]; + } + val1 ^= bplcon4_denise_xor_val; + dpix_val1 = denise_colors.acolors[val1]; + gpix1 = get_genlock_transparency(dpf_lookup[pix1]); + } + last_bpl_pix = pix1; + } + shiftbpl4_64(); + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4_64(); + } + loaded_pix = getbpl4_64(); + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; + gpix2 = get_genlock_transparency(dpf_lookup[pix2]); + } + last_bpl_pix = pix2; + } + shiftbpl4_64(); + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4_64(); + } + loaded_pix = getbpl4_64(); + loaded_pixs[2] = loaded_pix; + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + uae_u8 val3 = dpf_lookup[pix3]; + if (dpf_lookup_no[pix3]) { + val3 += dblpfofs[bpldualpf2of]; + } + val3 ^= bplcon4_denise_xor_val; + dpix_val3 = denise_colors.acolors[val3]; + gpix3 = get_genlock_transparency(dpf_lookup[pix3]); + } + last_bpl_pix = pix3; + } + shiftbpl4_64(); + if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4_64(); + } + loaded_pix = getbpl4_64(); + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + gpix0 = filter_pixel_genlock(gpix0, gpix1); + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + gpix2 = filter_pixel_genlock(gpix2, gpix3); + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_dpf1_p4_ishres_dhires_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_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; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + gpix0 = get_genlock_transparency(dpf_lookup[pix0]); + } + last_bpl_pix = pix0; + } + shiftbpl4_64(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4e_64(); + } + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl4o_64(); + } + loaded_pix = getbpl4_64(); + loaded_pixs[0] = loaded_pix; + shiftbpl4_64(); + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; + gpix2 = get_genlock_transparency(dpf_lookup[pix2]); + } + last_bpl_pix = pix2; + } + shiftbpl4_64(); + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4e_64(); + } + if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { + copybpl4o_64(); + } + loaded_pix = getbpl4_64(); + loaded_pixs[2] = loaded_pix; + shiftbpl4_64(); + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_dpf1_p4_ishres_dhires_filtered_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_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; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + gpix0 = get_genlock_transparency(dpf_lookup[pix0]); + } + last_bpl_pix = pix0; + } + shiftbpl4_64(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4e_64(); + } + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl4o_64(); + } + loaded_pix = getbpl4_64(); + loaded_pixs[0] = loaded_pix; + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + uae_u8 val1 = dpf_lookup[pix1]; + if (dpf_lookup_no[pix1]) { + val1 += dblpfofs[bpldualpf2of]; + } + val1 ^= bplcon4_denise_xor_val; + dpix_val1 = denise_colors.acolors[val1]; + gpix1 = get_genlock_transparency(dpf_lookup[pix1]); + } + last_bpl_pix = pix1; + } + shiftbpl4_64(); + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4e_64(); + } + if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { + copybpl4o_64(); + } + loaded_pix = getbpl4_64(); + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; + gpix2 = get_genlock_transparency(dpf_lookup[pix2]); + } + last_bpl_pix = pix2; + } + shiftbpl4_64(); + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4e_64(); + } + if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { + copybpl4o_64(); + } + loaded_pix = getbpl4_64(); + loaded_pixs[2] = loaded_pix; + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + uae_u8 val3 = dpf_lookup[pix3]; + if (dpf_lookup_no[pix3]) { + val3 += dblpfofs[bpldualpf2of]; + } + val3 ^= bplcon4_denise_xor_val; + dpix_val3 = denise_colors.acolors[val3]; + gpix3 = get_genlock_transparency(dpf_lookup[pix3]); + } + last_bpl_pix = pix3; + } + shiftbpl4_64(); + if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4e_64(); + } + if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) { + copybpl4o_64(); + } + loaded_pix = getbpl4_64(); + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + gpix0 = filter_pixel_genlock(gpix0, gpix1); + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + gpix2 = filter_pixel_genlock(gpix2, gpix3); + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_ehb0_p4_ishres_dhires_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_ehb0_p4_ishres_dhires_filtered_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + gpix0 = filter_pixel_genlock(gpix0, gpix1); + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + gpix2 = filter_pixel_genlock(gpix2, gpix3); + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_ehb1_p4_ishres_dhires_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_ehb1_p4_ishres_dhires_filtered_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + gpix0 = filter_pixel_genlock(gpix0, gpix1); + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + gpix2 = filter_pixel_genlock(gpix2, gpix3); + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_ham0_p4_ishres_dhires_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_ham0_p4_ishres_dhires_filtered_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + gpix0 = filter_pixel_genlock(gpix0, gpix1); + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + gpix2 = filter_pixel_genlock(gpix2, gpix3); + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_ham1_p4_ishres_dhires_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_ham1_p4_ishres_dhires_filtered_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + gpix0 = filter_pixel_genlock(gpix0, gpix1); + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + gpix2 = filter_pixel_genlock(gpix2, gpix3); + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_kehb0_p4_ishres_dhires_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_kehb0_p4_ishres_dhires_filtered_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + gpix0 = filter_pixel_genlock(gpix0, gpix1); + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + gpix2 = filter_pixel_genlock(gpix2, gpix3); + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_kehb1_p4_ishres_dhires_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_kehb1_p4_ishres_dhires_filtered_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + gpix0 = filter_pixel_genlock(gpix0, gpix1); + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + gpix2 = filter_pixel_genlock(gpix2, gpix3); + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_n0_p8_ishres_dhires_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_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; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix0; + } + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8_64(); + } + loaded_pix = getbpl8_64(); + loaded_pixs[0] = loaded_pix; + shiftbpl8_64(); + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + gpix2 = get_genlock_transparency(pix2 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix2; + } + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8_64(); + } + loaded_pix = getbpl8_64(); + loaded_pixs[2] = loaded_pix; + shiftbpl8_64(); + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_n0_p8_ishres_dhires_filtered_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_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; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix0; + } + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8_64(); + } + loaded_pix = getbpl8_64(); + loaded_pixs[0] = loaded_pix; + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; + gpix1 = get_genlock_transparency(pix1 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix1; + } + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8_64(); + } + loaded_pix = getbpl8_64(); + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + gpix2 = get_genlock_transparency(pix2 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix2; + } + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8_64(); + } + loaded_pix = getbpl8_64(); + loaded_pixs[2] = loaded_pix; + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; + gpix3 = get_genlock_transparency(pix3 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix3; + } + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8_64(); + } + loaded_pix = getbpl8_64(); + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + gpix0 = filter_pixel_genlock(gpix0, gpix1); + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + gpix2 = filter_pixel_genlock(gpix2, gpix3); + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_n1_p8_ishres_dhires_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_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; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix0; + } + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8e_64(); + } + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o_64(); + } + loaded_pix = getbpl8_64(); + loaded_pixs[0] = loaded_pix; + shiftbpl8_64(); + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + gpix2 = get_genlock_transparency(pix2 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix2; + } + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8e_64(); + } + if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o_64(); + } + loaded_pix = getbpl8_64(); + loaded_pixs[2] = loaded_pix; + shiftbpl8_64(); + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_n1_p8_ishres_dhires_filtered_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_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; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix0; + } + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8e_64(); + } + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o_64(); + } + loaded_pix = getbpl8_64(); + loaded_pixs[0] = loaded_pix; + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; + gpix1 = get_genlock_transparency(pix1 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix1; + } + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8e_64(); + } + if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o_64(); + } + loaded_pix = getbpl8_64(); + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + gpix2 = get_genlock_transparency(pix2 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix2; + } + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8e_64(); + } + if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o_64(); + } + loaded_pix = getbpl8_64(); + loaded_pixs[2] = loaded_pix; + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; + gpix3 = get_genlock_transparency(pix3 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix3; + } + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8e_64(); + } + if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o_64(); + } + loaded_pix = getbpl8_64(); + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + gpix0 = filter_pixel_genlock(gpix0, gpix1); + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + gpix2 = filter_pixel_genlock(gpix2, gpix3); + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_dpf0_p8_ishres_dhires_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_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; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + gpix0 = get_genlock_transparency(dpf_lookup[pix0]); + } + last_bpl_pix = pix0; + } + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8_64(); + } + loaded_pix = getbpl8_64(); + loaded_pixs[0] = loaded_pix; + shiftbpl8_64(); + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; + gpix2 = get_genlock_transparency(dpf_lookup[pix2]); + } + last_bpl_pix = pix2; + } + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8_64(); + } + loaded_pix = getbpl8_64(); + loaded_pixs[2] = loaded_pix; + shiftbpl8_64(); + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_dpf0_p8_ishres_dhires_filtered_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_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; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + gpix0 = get_genlock_transparency(dpf_lookup[pix0]); + } + last_bpl_pix = pix0; + } + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8_64(); + } + loaded_pix = getbpl8_64(); + loaded_pixs[0] = loaded_pix; + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + uae_u8 val1 = dpf_lookup[pix1]; + if (dpf_lookup_no[pix1]) { + val1 += dblpfofs[bpldualpf2of]; + } + val1 ^= bplcon4_denise_xor_val; + dpix_val1 = denise_colors.acolors[val1]; + gpix1 = get_genlock_transparency(dpf_lookup[pix1]); + } + last_bpl_pix = pix1; + } + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8_64(); + } + loaded_pix = getbpl8_64(); + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; + gpix2 = get_genlock_transparency(dpf_lookup[pix2]); + } + last_bpl_pix = pix2; + } + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8_64(); + } + loaded_pix = getbpl8_64(); + loaded_pixs[2] = loaded_pix; + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + uae_u8 val3 = dpf_lookup[pix3]; + if (dpf_lookup_no[pix3]) { + val3 += dblpfofs[bpldualpf2of]; + } + val3 ^= bplcon4_denise_xor_val; + dpix_val3 = denise_colors.acolors[val3]; + gpix3 = get_genlock_transparency(dpf_lookup[pix3]); + } + last_bpl_pix = pix3; + } + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8_64(); + } + loaded_pix = getbpl8_64(); + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + gpix0 = filter_pixel_genlock(gpix0, gpix1); + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + gpix2 = filter_pixel_genlock(gpix2, gpix3); + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_dpf1_p8_ishres_dhires_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_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; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + gpix0 = get_genlock_transparency(dpf_lookup[pix0]); + } + last_bpl_pix = pix0; + } + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8e_64(); + } + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o_64(); + } + loaded_pix = getbpl8_64(); + loaded_pixs[0] = loaded_pix; + shiftbpl8_64(); + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; + gpix2 = get_genlock_transparency(dpf_lookup[pix2]); + } + last_bpl_pix = pix2; + } + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8e_64(); + } + if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o_64(); + } + loaded_pix = getbpl8_64(); + loaded_pixs[2] = loaded_pix; + shiftbpl8_64(); + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_dpf1_p8_ishres_dhires_filtered_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_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; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + gpix0 = get_genlock_transparency(dpf_lookup[pix0]); + } + last_bpl_pix = pix0; + } + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8e_64(); + } + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o_64(); + } + loaded_pix = getbpl8_64(); + loaded_pixs[0] = loaded_pix; + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + uae_u8 val1 = dpf_lookup[pix1]; + if (dpf_lookup_no[pix1]) { + val1 += dblpfofs[bpldualpf2of]; + } + val1 ^= bplcon4_denise_xor_val; + dpix_val1 = denise_colors.acolors[val1]; + gpix1 = get_genlock_transparency(dpf_lookup[pix1]); + } + last_bpl_pix = pix1; + } + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8e_64(); + } + if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o_64(); + } + loaded_pix = getbpl8_64(); + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; + gpix2 = get_genlock_transparency(dpf_lookup[pix2]); + } + last_bpl_pix = pix2; + } + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8e_64(); + } + if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o_64(); + } + loaded_pix = getbpl8_64(); + loaded_pixs[2] = loaded_pix; + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + uae_u8 val3 = dpf_lookup[pix3]; + if (dpf_lookup_no[pix3]) { + val3 += dblpfofs[bpldualpf2of]; + } + val3 ^= bplcon4_denise_xor_val; + dpix_val3 = denise_colors.acolors[val3]; + gpix3 = get_genlock_transparency(dpf_lookup[pix3]); + } + last_bpl_pix = pix3; + } + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8e_64(); + } + if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o_64(); + } + loaded_pix = getbpl8_64(); + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + gpix0 = filter_pixel_genlock(gpix0, gpix1); + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + gpix2 = filter_pixel_genlock(gpix2, gpix3); + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_ehb0_p8_ishres_dhires_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_ehb0_p8_ishres_dhires_filtered_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + gpix0 = filter_pixel_genlock(gpix0, gpix1); + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + gpix2 = filter_pixel_genlock(gpix2, gpix3); + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_ehb1_p8_ishres_dhires_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_ehb1_p8_ishres_dhires_filtered_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + gpix0 = filter_pixel_genlock(gpix0, gpix1); + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + gpix2 = filter_pixel_genlock(gpix2, gpix3); + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_ham0_p8_ishres_dhires_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_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; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = decode_ham_pixel_aga(pix0); + gpix0 = get_genlock_transparency((pix0 >> 2) & 63); + } + last_bpl_pix = pix0; + } + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8_64(); + } + loaded_pix = getbpl8_64(); + loaded_pixs[0] = loaded_pix; + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + decode_ham_pixel_aga(pix1); + } + last_bpl_pix = pix1; + } + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8_64(); + } + loaded_pix = getbpl8_64(); + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = decode_ham_pixel_aga(pix2); + gpix2 = get_genlock_transparency((pix2 >> 2) & 63); + } + last_bpl_pix = pix2; + } + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8_64(); + } + loaded_pix = getbpl8_64(); + loaded_pixs[2] = loaded_pix; + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + decode_ham_pixel_aga(pix3); + } + last_bpl_pix = pix3; + } + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8_64(); + } + loaded_pix = getbpl8_64(); + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_ham0_p8_ishres_dhires_filtered_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_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; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = decode_ham_pixel_aga(pix0); + gpix0 = get_genlock_transparency((pix0 >> 2) & 63); + } + last_bpl_pix = pix0; + } + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8_64(); + } + loaded_pix = getbpl8_64(); + loaded_pixs[0] = loaded_pix; + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + dpix_val1 = decode_ham_pixel_aga(pix1); + gpix1 = get_genlock_transparency((pix1 >> 2) & 63); + } + last_bpl_pix = pix1; + } + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8_64(); + } + loaded_pix = getbpl8_64(); + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = decode_ham_pixel_aga(pix2); + gpix2 = get_genlock_transparency((pix2 >> 2) & 63); + } + last_bpl_pix = pix2; + } + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8_64(); + } + loaded_pix = getbpl8_64(); + loaded_pixs[2] = loaded_pix; + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + dpix_val3 = decode_ham_pixel_aga(pix3); + gpix3 = get_genlock_transparency((pix3 >> 2) & 63); + } + last_bpl_pix = pix3; + } + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8_64(); + } + loaded_pix = getbpl8_64(); + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + gpix0 = filter_pixel_genlock(gpix0, gpix1); + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + gpix2 = filter_pixel_genlock(gpix2, gpix3); + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_ham1_p8_ishres_dhires_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_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; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = decode_ham_pixel_aga(pix0); + gpix0 = get_genlock_transparency((pix0 >> 2) & 63); + } + last_bpl_pix = pix0; + } + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8e_64(); + } + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o_64(); + } + loaded_pix = getbpl8_64(); + loaded_pixs[0] = loaded_pix; + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + decode_ham_pixel_aga(pix1); + } + last_bpl_pix = pix1; + } + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8e_64(); + } + if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o_64(); + } + loaded_pix = getbpl8_64(); + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = decode_ham_pixel_aga(pix2); + gpix2 = get_genlock_transparency((pix2 >> 2) & 63); + } + last_bpl_pix = pix2; + } + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8e_64(); + } + if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o_64(); + } + loaded_pix = getbpl8_64(); + loaded_pixs[2] = loaded_pix; + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + decode_ham_pixel_aga(pix3); + } + last_bpl_pix = pix3; + } + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8e_64(); + } + if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o_64(); + } + loaded_pix = getbpl8_64(); + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_ham1_p8_ishres_dhires_filtered_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_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; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = decode_ham_pixel_aga(pix0); + gpix0 = get_genlock_transparency((pix0 >> 2) & 63); + } + last_bpl_pix = pix0; + } + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8e_64(); + } + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o_64(); + } + loaded_pix = getbpl8_64(); + loaded_pixs[0] = loaded_pix; + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + dpix_val1 = decode_ham_pixel_aga(pix1); + gpix1 = get_genlock_transparency((pix1 >> 2) & 63); + } + last_bpl_pix = pix1; + } + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8e_64(); + } + if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o_64(); + } + loaded_pix = getbpl8_64(); + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = decode_ham_pixel_aga(pix2); + gpix2 = get_genlock_transparency((pix2 >> 2) & 63); + } + last_bpl_pix = pix2; + } + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8e_64(); + } + if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o_64(); + } + loaded_pix = getbpl8_64(); + loaded_pixs[2] = loaded_pix; + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + dpix_val3 = decode_ham_pixel_aga(pix3); + gpix3 = get_genlock_transparency((pix3 >> 2) & 63); + } + last_bpl_pix = pix3; + } + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8e_64(); + } + if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o_64(); + } + loaded_pix = getbpl8_64(); + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + gpix0 = filter_pixel_genlock(gpix0, gpix1); + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + gpix2 = filter_pixel_genlock(gpix2, gpix3); + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_kehb0_p8_ishres_dhires_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_kehb0_p8_ishres_dhires_filtered_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + gpix0 = filter_pixel_genlock(gpix0, gpix1); + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + gpix2 = filter_pixel_genlock(gpix2, gpix3); + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_kehb1_p8_ishres_dhires_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_kehb1_p8_ishres_dhires_filtered_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + gpix0 = filter_pixel_genlock(gpix0, gpix1); + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + gpix2 = filter_pixel_genlock(gpix2, gpix3); + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_n0_p4_ishres_dhires_spr_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix0; + } + shiftbpl4_64(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4_64(); + } + loaded_pix = getbpl4_64(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + shiftbpl4_64(); + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + gpix2 = get_genlock_transparency(pix2 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix2; + } + shiftbpl4_64(); + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4_64(); + } + loaded_pix = getbpl4_64(); + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + shiftbpl4_64(); + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_n0_p4_ishres_dhires_spr_filtered_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix0; + } + shiftbpl4_64(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4_64(); + } + loaded_pix = getbpl4_64(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; + gpix1 = get_genlock_transparency(pix1 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix1; + } + shiftbpl4_64(); + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4_64(); + } + loaded_pix = getbpl4_64(); + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + gpix2 = get_genlock_transparency(pix2 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix2; + } + shiftbpl4_64(); + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4_64(); + } + loaded_pix = getbpl4_64(); + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; + gpix3 = get_genlock_transparency(pix3 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix3; + } + shiftbpl4_64(); + if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4_64(); + } + loaded_pix = getbpl4_64(); + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + gpix0 = filter_pixel_genlock(gpix0, gpix1); + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + dpix_val3 = dpix_val2; + } + } + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + gpix2 = filter_pixel_genlock(gpix2, gpix3); + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_n1_p4_ishres_dhires_spr_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix0; + } + shiftbpl4_64(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4e_64(); + } + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl4o_64(); + } + loaded_pix = getbpl4_64(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + shiftbpl4_64(); + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + gpix2 = get_genlock_transparency(pix2 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix2; + } + shiftbpl4_64(); + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4e_64(); + } + if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { + copybpl4o_64(); + } + loaded_pix = getbpl4_64(); + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + shiftbpl4_64(); + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_n1_p4_ishres_dhires_spr_filtered_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix0; + } + shiftbpl4_64(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4e_64(); + } + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl4o_64(); + } + loaded_pix = getbpl4_64(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; + gpix1 = get_genlock_transparency(pix1 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix1; + } + shiftbpl4_64(); + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4e_64(); + } + if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { + copybpl4o_64(); + } + loaded_pix = getbpl4_64(); + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + gpix2 = get_genlock_transparency(pix2 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix2; + } + shiftbpl4_64(); + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4e_64(); + } + if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { + copybpl4o_64(); + } + loaded_pix = getbpl4_64(); + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; + gpix3 = get_genlock_transparency(pix3 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix3; + } + shiftbpl4_64(); + if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4e_64(); + } + if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) { + copybpl4o_64(); + } + loaded_pix = getbpl4_64(); + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + gpix0 = filter_pixel_genlock(gpix0, gpix1); + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + dpix_val3 = dpix_val2; + } + } + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + gpix2 = filter_pixel_genlock(gpix2, gpix3); + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_dpf0_p4_ishres_dhires_spr_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + gpix0 = get_genlock_transparency(dpf_lookup[pix0]); + } + last_bpl_pix = pix0; + } + shiftbpl4_64(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4_64(); + } + loaded_pix = getbpl4_64(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + shiftbpl4_64(); + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; + gpix2 = get_genlock_transparency(dpf_lookup[pix2]); + } + last_bpl_pix = pix2; + } + shiftbpl4_64(); + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4_64(); + } + loaded_pix = getbpl4_64(); + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + shiftbpl4_64(); + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_dpf0_p4_ishres_dhires_spr_filtered_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + gpix0 = get_genlock_transparency(dpf_lookup[pix0]); + } + last_bpl_pix = pix0; + } + shiftbpl4_64(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4_64(); + } + loaded_pix = getbpl4_64(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + uae_u8 val1 = dpf_lookup[pix1]; + if (dpf_lookup_no[pix1]) { + val1 += dblpfofs[bpldualpf2of]; + } + val1 ^= bplcon4_denise_xor_val; + dpix_val1 = denise_colors.acolors[val1]; + gpix1 = get_genlock_transparency(dpf_lookup[pix1]); + } + last_bpl_pix = pix1; + } + shiftbpl4_64(); + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4_64(); + } + loaded_pix = getbpl4_64(); + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; + gpix2 = get_genlock_transparency(dpf_lookup[pix2]); + } + last_bpl_pix = pix2; + } + shiftbpl4_64(); + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4_64(); + } + loaded_pix = getbpl4_64(); + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + uae_u8 val3 = dpf_lookup[pix3]; + if (dpf_lookup_no[pix3]) { + val3 += dblpfofs[bpldualpf2of]; + } + val3 ^= bplcon4_denise_xor_val; + dpix_val3 = denise_colors.acolors[val3]; + gpix3 = get_genlock_transparency(dpf_lookup[pix3]); + } + last_bpl_pix = pix3; + } + shiftbpl4_64(); + if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4_64(); + } + loaded_pix = getbpl4_64(); + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + gpix0 = filter_pixel_genlock(gpix0, gpix1); + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + dpix_val3 = dpix_val2; + } + } + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + gpix2 = filter_pixel_genlock(gpix2, gpix3); + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm2_ehb0_p8_ishres_dlores_spr_filtered_genlock(void) +static void lts_aga_fm2_dpf1_p4_ishres_dhires_spr_genlock(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + gpix0 = get_genlock_transparency(dpf_lookup[pix0]); + } + last_bpl_pix = pix0; + } + shiftbpl4_64(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4e_64(); + } + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl4o_64(); + } + loaded_pix = getbpl4_64(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + shiftbpl4_64(); + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; + gpix2 = get_genlock_transparency(dpf_lookup[pix2]); + } + last_bpl_pix = pix2; + } + shiftbpl4_64(); + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4e_64(); + } + if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { + copybpl4o_64(); + } + loaded_pix = getbpl4_64(); + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + shiftbpl4_64(); + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm2_ehb1_p8_ishres_dlores_spr_genlock(void) +static void lts_aga_fm2_dpf1_p4_ishres_dhires_spr_filtered_genlock(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + int cmp = denise_hcounter_cmp << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = loaded_pixs[0]; + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + gpix0 = get_genlock_transparency(dpf_lookup[pix0]); + } + last_bpl_pix = pix0; + } + shiftbpl4_64(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4e_64(); + } + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl4o_64(); + } + loaded_pix = getbpl4_64(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + loaded_pixs[0] = loaded_pix; + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + uae_u8 val1 = dpf_lookup[pix1]; + if (dpf_lookup_no[pix1]) { + val1 += dblpfofs[bpldualpf2of]; + } + val1 ^= bplcon4_denise_xor_val; + dpix_val1 = denise_colors.acolors[val1]; + gpix1 = get_genlock_transparency(dpf_lookup[pix1]); + } + last_bpl_pix = pix1; + } + shiftbpl4_64(); + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4e_64(); + } + if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { + copybpl4o_64(); + } + loaded_pix = getbpl4_64(); + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; + gpix2 = get_genlock_transparency(dpf_lookup[pix2]); + } + last_bpl_pix = pix2; + } + shiftbpl4_64(); + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4e_64(); + } + if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { + copybpl4o_64(); + } + loaded_pix = getbpl4_64(); + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + loaded_pixs[2] = loaded_pix; + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + uae_u8 val3 = dpf_lookup[pix3]; + if (dpf_lookup_no[pix3]) { + val3 += dblpfofs[bpldualpf2of]; + } + val3 ^= bplcon4_denise_xor_val; + dpix_val3 = denise_colors.acolors[val3]; + gpix3 = get_genlock_transparency(dpf_lookup[pix3]); + } + last_bpl_pix = pix3; + } + shiftbpl4_64(); + if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4e_64(); + } + if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) { + copybpl4o_64(); + } + loaded_pix = getbpl4_64(); + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + gpix0 = filter_pixel_genlock(gpix0, gpix1); + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + dpix_val3 = dpix_val2; + } + } + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + gpix2 = filter_pixel_genlock(gpix2, gpix3); + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm2_ehb1_p8_ishres_dlores_spr_filtered_genlock(void) +static void lts_aga_fm2_ehb0_p4_ishres_dhires_spr_genlock(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm2_ham0_p8_ishres_dlores_spr_genlock(void) +static void lts_aga_fm2_ehb0_p4_ishres_dhires_spr_filtered_genlock(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + gpix0 = filter_pixel_genlock(gpix0, gpix1); + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + dpix_val3 = dpix_val2; + } + } + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + gpix2 = filter_pixel_genlock(gpix2, gpix3); + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm2_ham0_p8_ishres_dlores_spr_filtered_genlock(void) +static void lts_aga_fm2_ehb1_p4_ishres_dhires_spr_genlock(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm2_ham1_p8_ishres_dlores_spr_genlock(void) +static void lts_aga_fm2_ehb1_p4_ishres_dhires_spr_filtered_genlock(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + gpix0 = filter_pixel_genlock(gpix0, gpix1); + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + dpix_val3 = dpix_val2; + } + } + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + gpix2 = filter_pixel_genlock(gpix2, gpix3); + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm2_ham1_p8_ishres_dlores_spr_filtered_genlock(void) +static void lts_aga_fm2_ham0_p4_ishres_dhires_spr_genlock(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm2_kehb0_p8_ishres_dlores_spr_genlock(void) +static void lts_aga_fm2_ham0_p4_ishres_dhires_spr_filtered_genlock(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + gpix0 = filter_pixel_genlock(gpix0, gpix1); + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + dpix_val3 = dpix_val2; + } + } + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + gpix2 = filter_pixel_genlock(gpix2, gpix3); + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm2_kehb0_p8_ishres_dlores_spr_filtered_genlock(void) +static void lts_aga_fm2_ham1_p4_ishres_dhires_spr_genlock(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm2_kehb1_p8_ishres_dlores_spr_genlock(void) +static void lts_aga_fm2_ham1_p4_ishres_dhires_spr_filtered_genlock(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + gpix0 = filter_pixel_genlock(gpix0, gpix1); + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + dpix_val3 = dpix_val2; + } + } + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + gpix2 = filter_pixel_genlock(gpix2, gpix3); + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm2_kehb1_p8_ishres_dlores_spr_filtered_genlock(void) +static void lts_aga_fm2_kehb0_p4_ishres_dhires_spr_genlock(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_aga_fm2_n0_p4_ilores_dhires_genlock(void) +static void lts_aga_fm2_kehb0_p4_ishres_dhires_spr_filtered_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -6205,65 +26237,80 @@ 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; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); - } - last_bpl_pix = pix0; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4_64(); - loaded_pix = getbpl4_64(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } } - if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { - copybpl4_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4_64(); + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u8 gpix2 = 0xff; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { gpix2 = get_genlock_transparency_border(); dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; - gpix2 = get_genlock_transparency(pix2 ^ bplcon4_denise_xor_val); - } - last_bpl_pix = pix2; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4_64(); - loaded_pix = getbpl4_64(); + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } } - if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { - copybpl4_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4_64(); + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; } - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + gpix0 = filter_pixel_genlock(gpix0, gpix1); dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + dpix_val3 = dpix_val2; + } + } + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + gpix2 = filter_pixel_genlock(gpix2, gpix3); dtbuf[h][2] = dpix_val2; dtgbuf[h][2] = gpix2; uae_u32 t0 = dtbuf[h ^ lol][0]; @@ -6307,11 +26354,7 @@ static void lts_aga_fm2_n0_p4_ilores_dhires_genlock(void) denise_cck++; } } -static void lts_aga_fm2_n0_p4_ilores_dhires_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_n1_p4_ilores_dhires_genlock(void) +static void lts_aga_fm2_kehb1_p4_ishres_dhires_spr_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -6322,87 +26365,60 @@ 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; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4e_64(); - loaded_pix = getbpl4_64(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl4o_64(); - loaded_pix = getbpl4_64(); - } - 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] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[1]) { - copybpl4o_64(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl4_64(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u8 gpix2 = 0xff; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { gpix2 = get_genlock_transparency_border(); dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; - gpix2 = get_genlock_transparency(pix2 ^ bplcon4_denise_xor_val); - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4e_64(); - loaded_pix = getbpl4_64(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl4o_64(); - loaded_pix = getbpl4_64(); - } - 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] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[1]) { - copybpl4o_64(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl4_64(); + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } } - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } dtbuf[h][2] = dpix_val2; dtgbuf[h][2] = gpix2; uae_u32 t0 = dtbuf[h ^ lol][0]; @@ -6446,11 +26462,7 @@ static void lts_aga_fm2_n1_p4_ilores_dhires_genlock(void) denise_cck++; } } -static void lts_aga_fm2_n1_p4_ilores_dhires_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_dpf0_p4_ilores_dhires_genlock(void) +static void lts_aga_fm2_kehb1_p4_ishres_dhires_spr_filtered_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -6461,75 +26473,80 @@ 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; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - gpix0 = get_genlock_transparency(dpf_lookup[pix0]); - } - last_bpl_pix = pix0; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4_64(); - loaded_pix = getbpl4_64(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } } - if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { - copybpl4_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4_64(); + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u8 gpix2 = 0xff; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { gpix2 = get_genlock_transparency_border(); dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; - gpix2 = get_genlock_transparency(dpf_lookup[pix2]); - } - last_bpl_pix = pix2; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4_64(); - loaded_pix = getbpl4_64(); + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } } - if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { - copybpl4_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4_64(); + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; } - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + gpix0 = filter_pixel_genlock(gpix0, gpix1); dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + dpix_val3 = dpix_val2; + } + } + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + gpix2 = filter_pixel_genlock(gpix2, gpix3); dtbuf[h][2] = dpix_val2; dtgbuf[h][2] = gpix2; uae_u32 t0 = dtbuf[h ^ lol][0]; @@ -6573,11 +26590,7 @@ static void lts_aga_fm2_dpf0_p4_ilores_dhires_genlock(void) denise_cck++; } } -static void lts_aga_fm2_dpf0_p4_ilores_dhires_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_dpf1_p4_ilores_dhires_genlock(void) +static void lts_aga_fm2_n0_p8_ishres_dhires_spr_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -6590,6 +26603,7 @@ static void lts_aga_fm2_dpf1_p4_ilores_dhires_genlock(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; @@ -6599,40 +26613,28 @@ static void lts_aga_fm2_dpf1_p4_ilores_dhires_genlock(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - gpix0 = get_genlock_transparency(dpf_lookup[pix0]); + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); } last_bpl_pix = pix0; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4e_64(); - loaded_pix = getbpl4_64(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl4o_64(); - loaded_pix = getbpl4_64(); - } - if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { - copybpl4e_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4_64(); + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8_64(); } - if (bpldat_copy[1] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[1]) { - copybpl4o_64(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl4_64(); + loaded_pix = getbpl8_64(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } } loaded_pixs[0] = loaded_pix; + shiftbpl8_64(); internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u8 gpix2 = 0xff; uae_u32 dpix_val2 = BLANK_COLOR; @@ -6642,43 +26644,46 @@ static void lts_aga_fm2_dpf1_p4_ilores_dhires_genlock(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; - gpix2 = get_genlock_transparency(dpf_lookup[pix2]); + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + gpix2 = get_genlock_transparency(pix2 ^ bplcon4_denise_xor_val); } last_bpl_pix = pix2; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4e_64(); - loaded_pix = getbpl4_64(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl4o_64(); - loaded_pix = getbpl4_64(); - } - if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { - copybpl4e_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4_64(); + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8_64(); } - if (bpldat_copy[1] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[1]) { - copybpl4o_64(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl4_64(); + loaded_pix = getbpl8_64(); + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } } loaded_pixs[2] = loaded_pix; + shiftbpl8_64(); internal_pixel_cnt += 2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } dtbuf[h][2] = dpix_val2; dtgbuf[h][2] = gpix2; uae_u32 t0 = dtbuf[h ^ lol][0]; @@ -6722,59 +26727,7 @@ static void lts_aga_fm2_dpf1_p4_ilores_dhires_genlock(void) denise_cck++; } } -static void lts_aga_fm2_dpf1_p4_ilores_dhires_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb0_p4_ilores_dhires_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb0_p4_ilores_dhires_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb1_p4_ilores_dhires_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb1_p4_ilores_dhires_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_ham0_p4_ilores_dhires_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_ham0_p4_ilores_dhires_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_ham1_p4_ilores_dhires_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_ham1_p4_ilores_dhires_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb0_p4_ilores_dhires_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb0_p4_ilores_dhires_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb1_p4_ilores_dhires_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb1_p4_ilores_dhires_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_n0_p8_ilores_dhires_genlock(void) +static void lts_aga_fm2_n0_p8_ishres_dhires_spr_filtered_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -6787,6 +26740,7 @@ static void lts_aga_fm2_n0_p8_ilores_dhires_genlock(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; @@ -6801,19 +26755,42 @@ static void lts_aga_fm2_n0_p8_ilores_dhires_genlock(void) } last_bpl_pix = pix0; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8_64(); - loaded_pix = getbpl8_64(); - } - if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { copybpl8_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_64(); + } + loaded_pix = getbpl8_64(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } } loaded_pixs[0] = loaded_pix; + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; + gpix1 = get_genlock_transparency(pix1 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix1; + } + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8_64(); + } + loaded_pix = getbpl8_64(); + loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u8 gpix2 = 0xff; uae_u32 dpix_val2 = BLANK_COLOR; @@ -6828,22 +26805,66 @@ static void lts_aga_fm2_n0_p8_ilores_dhires_genlock(void) } last_bpl_pix = pix2; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8_64(); - loaded_pix = getbpl8_64(); - } - if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { copybpl8_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_64(); + } + loaded_pix = getbpl8_64(); + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } } loaded_pixs[2] = loaded_pix; + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; + gpix3 = get_genlock_transparency(pix3 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix3; + } + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8_64(); + } + loaded_pix = getbpl8_64(); + loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + gpix0 = filter_pixel_genlock(gpix0, gpix1); dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + dpix_val3 = dpix_val2; + } + } + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + gpix2 = filter_pixel_genlock(gpix2, gpix3); dtbuf[h][2] = dpix_val2; dtgbuf[h][2] = gpix2; uae_u32 t0 = dtbuf[h ^ lol][0]; @@ -6887,11 +26908,7 @@ static void lts_aga_fm2_n0_p8_ilores_dhires_genlock(void) denise_cck++; } } -static void lts_aga_fm2_n0_p8_ilores_dhires_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_n1_p8_ilores_dhires_genlock(void) +static void lts_aga_fm2_n1_p8_ishres_dhires_spr_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -6904,6 +26921,7 @@ static void lts_aga_fm2_n1_p8_ilores_dhires_genlock(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; @@ -6918,30 +26936,26 @@ static void lts_aga_fm2_n1_p8_ilores_dhires_genlock(void) } last_bpl_pix = pix0; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8e_64(); - loaded_pix = getbpl8_64(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl8o_64(); - loaded_pix = getbpl8_64(); - } - if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { copybpl8e_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_64(); } - if (bpldat_copy[1] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[1]) { + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { copybpl8o_64(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl8_64(); + } + loaded_pix = getbpl8_64(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } } loaded_pixs[0] = loaded_pix; + shiftbpl8_64(); internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u8 gpix2 = 0xff; uae_u32 dpix_val2 = BLANK_COLOR; @@ -6949,40 +26963,51 @@ static void lts_aga_fm2_n1_p8_ilores_dhires_genlock(void) gpix2 = get_genlock_transparency_border(); dpix_val2 = bordercolor; if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; - gpix2 = get_genlock_transparency(pix2 ^ bplcon4_denise_xor_val); - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8e_64(); - loaded_pix = getbpl8_64(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl8o_64(); - loaded_pix = getbpl8_64(); + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + gpix2 = get_genlock_transparency(pix2 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix2; } - if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { copybpl8e_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_64(); } - if (bpldat_copy[1] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[1]) { + if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { copybpl8o_64(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl8_64(); + } + loaded_pix = getbpl8_64(); + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } } loaded_pixs[2] = loaded_pix; + shiftbpl8_64(); internal_pixel_cnt += 2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } dtbuf[h][2] = dpix_val2; dtgbuf[h][2] = gpix2; uae_u32 t0 = dtbuf[h ^ lol][0]; @@ -7026,11 +27051,7 @@ static void lts_aga_fm2_n1_p8_ilores_dhires_genlock(void) denise_cck++; } } -static void lts_aga_fm2_n1_p8_ilores_dhires_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_dpf0_p8_ilores_dhires_genlock(void) +static void lts_aga_fm2_n1_p8_ishres_dhires_spr_filtered_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -7043,6 +27064,7 @@ static void lts_aga_fm2_dpf0_p8_ilores_dhires_genlock(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; @@ -7052,29 +27074,53 @@ static void lts_aga_fm2_dpf0_p8_ilores_dhires_genlock(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - gpix0 = get_genlock_transparency(dpf_lookup[pix0]); + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); } last_bpl_pix = pix0; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8_64(); - loaded_pix = getbpl8_64(); + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8e_64(); } - if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_64(); + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o_64(); + } + loaded_pix = getbpl8_64(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } } loaded_pixs[0] = loaded_pix; + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; + gpix1 = get_genlock_transparency(pix1 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix1; + } + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8e_64(); + } + if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o_64(); + } + loaded_pix = getbpl8_64(); + loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u8 gpix2 = 0xff; uae_u32 dpix_val2 = BLANK_COLOR; @@ -7084,32 +27130,77 @@ static void lts_aga_fm2_dpf0_p8_ilores_dhires_genlock(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; - gpix2 = get_genlock_transparency(dpf_lookup[pix2]); + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + gpix2 = get_genlock_transparency(pix2 ^ bplcon4_denise_xor_val); } last_bpl_pix = pix2; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8_64(); - loaded_pix = getbpl8_64(); + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8e_64(); } - if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_64(); + if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o_64(); + } + loaded_pix = getbpl8_64(); + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } } loaded_pixs[2] = loaded_pix; + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; + gpix3 = get_genlock_transparency(pix3 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix3; + } + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8e_64(); + } + if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o_64(); + } + loaded_pix = getbpl8_64(); + loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + gpix0 = filter_pixel_genlock(gpix0, gpix1); dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + dpix_val3 = dpix_val2; + } + } + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + gpix2 = filter_pixel_genlock(gpix2, gpix3); dtbuf[h][2] = dpix_val2; dtgbuf[h][2] = gpix2; uae_u32 t0 = dtbuf[h ^ lol][0]; @@ -7153,11 +27244,7 @@ static void lts_aga_fm2_dpf0_p8_ilores_dhires_genlock(void) denise_cck++; } } -static void lts_aga_fm2_dpf0_p8_ilores_dhires_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_dpf1_p8_ilores_dhires_genlock(void) +static void lts_aga_fm2_dpf0_p8_ishres_dhires_spr_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -7170,6 +27257,7 @@ static void lts_aga_fm2_dpf1_p8_ilores_dhires_genlock(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; @@ -7189,30 +27277,23 @@ static void lts_aga_fm2_dpf1_p8_ilores_dhires_genlock(void) } last_bpl_pix = pix0; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8e_64(); - loaded_pix = getbpl8_64(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl8o_64(); - loaded_pix = getbpl8_64(); - } - if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { - copybpl8e_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_64(); + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8_64(); } - if (bpldat_copy[1] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl8_64(); + loaded_pix = getbpl8_64(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } } loaded_pixs[0] = loaded_pix; + shiftbpl8_64(); internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u8 gpix2 = 0xff; uae_u32 dpix_val2 = BLANK_COLOR; @@ -7232,33 +27313,41 @@ static void lts_aga_fm2_dpf1_p8_ilores_dhires_genlock(void) } last_bpl_pix = pix2; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8e_64(); - loaded_pix = getbpl8_64(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl8o_64(); - loaded_pix = getbpl8_64(); - } - if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { - copybpl8e_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_64(); + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8_64(); } - if (bpldat_copy[1] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl8_64(); + loaded_pix = getbpl8_64(); + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } } loaded_pixs[2] = loaded_pix; + shiftbpl8_64(); internal_pixel_cnt += 2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } dtbuf[h][2] = dpix_val2; dtgbuf[h][2] = gpix2; uae_u32 t0 = dtbuf[h ^ lol][0]; @@ -7302,27 +27391,7 @@ static void lts_aga_fm2_dpf1_p8_ilores_dhires_genlock(void) denise_cck++; } } -static void lts_aga_fm2_dpf1_p8_ilores_dhires_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb0_p8_ilores_dhires_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb0_p8_ilores_dhires_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb1_p8_ilores_dhires_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb1_p8_ilores_dhires_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_ham0_p8_ilores_dhires_genlock(void) +static void lts_aga_fm2_dpf0_p8_ishres_dhires_spr_filtered_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -7335,6 +27404,7 @@ static void lts_aga_fm2_ham0_p8_ilores_dhires_genlock(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; @@ -7344,24 +27414,57 @@ static void lts_aga_fm2_ham0_p8_ilores_dhires_genlock(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - dpix_val0 = decode_ham_pixel_aga(pix0); - gpix0 = get_genlock_transparency((pix0 >> 2) & 63); + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + gpix0 = get_genlock_transparency(dpf_lookup[pix0]); } last_bpl_pix = pix0; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8_64(); - loaded_pix = getbpl8_64(); - } - if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { copybpl8_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_64(); + } + loaded_pix = getbpl8_64(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } } loaded_pixs[0] = loaded_pix; + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + uae_u8 val1 = dpf_lookup[pix1]; + if (dpf_lookup_no[pix1]) { + val1 += dblpfofs[bpldualpf2of]; + } + val1 ^= bplcon4_denise_xor_val; + dpix_val1 = denise_colors.acolors[val1]; + gpix1 = get_genlock_transparency(dpf_lookup[pix1]); + } + last_bpl_pix = pix1; + } + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8_64(); + } + loaded_pix = getbpl8_64(); + loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u8 gpix2 = 0xff; uae_u32 dpix_val2 = BLANK_COLOR; @@ -7371,27 +27474,81 @@ static void lts_aga_fm2_ham0_p8_ilores_dhires_genlock(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - dpix_val2 = decode_ham_pixel_aga(pix2); - gpix2 = get_genlock_transparency((pix2 >> 2) & 63); + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; + gpix2 = get_genlock_transparency(dpf_lookup[pix2]); } last_bpl_pix = pix2; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8_64(); - loaded_pix = getbpl8_64(); - } - if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { copybpl8_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_64(); + } + loaded_pix = getbpl8_64(); + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } } loaded_pixs[2] = loaded_pix; + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + uae_u8 val3 = dpf_lookup[pix3]; + if (dpf_lookup_no[pix3]) { + val3 += dblpfofs[bpldualpf2of]; + } + val3 ^= bplcon4_denise_xor_val; + dpix_val3 = denise_colors.acolors[val3]; + gpix3 = get_genlock_transparency(dpf_lookup[pix3]); + } + last_bpl_pix = pix3; + } + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8_64(); + } + loaded_pix = getbpl8_64(); + loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + gpix0 = filter_pixel_genlock(gpix0, gpix1); dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + dpix_val3 = dpix_val2; + } + } + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + gpix2 = filter_pixel_genlock(gpix2, gpix3); dtbuf[h][2] = dpix_val2; dtgbuf[h][2] = gpix2; uae_u32 t0 = dtbuf[h ^ lol][0]; @@ -7435,11 +27592,7 @@ static void lts_aga_fm2_ham0_p8_ilores_dhires_genlock(void) denise_cck++; } } -static void lts_aga_fm2_ham0_p8_ilores_dhires_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_ham1_p8_ilores_dhires_genlock(void) +static void lts_aga_fm2_dpf1_p8_ishres_dhires_spr_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -7452,6 +27605,7 @@ static void lts_aga_fm2_ham1_p8_ilores_dhires_genlock(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; @@ -7461,35 +27615,36 @@ static void lts_aga_fm2_ham1_p8_ilores_dhires_genlock(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - dpix_val0 = decode_ham_pixel_aga(pix0); - gpix0 = get_genlock_transparency((pix0 >> 2) & 63); + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + gpix0 = get_genlock_transparency(dpf_lookup[pix0]); } last_bpl_pix = pix0; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8e_64(); - loaded_pix = getbpl8_64(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl8o_64(); - loaded_pix = getbpl8_64(); - } - if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { copybpl8e_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_64(); } - if (bpldat_copy[1] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[1]) { + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { copybpl8o_64(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl8_64(); + } + loaded_pix = getbpl8_64(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } } loaded_pixs[0] = loaded_pix; + shiftbpl8_64(); internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u8 gpix2 = 0xff; uae_u32 dpix_val2 = BLANK_COLOR; @@ -7499,38 +27654,54 @@ static void lts_aga_fm2_ham1_p8_ilores_dhires_genlock(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - dpix_val2 = decode_ham_pixel_aga(pix2); - gpix2 = get_genlock_transparency((pix2 >> 2) & 63); + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; + gpix2 = get_genlock_transparency(dpf_lookup[pix2]); } last_bpl_pix = pix2; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8e_64(); - loaded_pix = getbpl8_64(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl8o_64(); - loaded_pix = getbpl8_64(); - } - if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { copybpl8e_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_64(); } - if (bpldat_copy[1] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[1]) { + if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { copybpl8o_64(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl8_64(); + } + loaded_pix = getbpl8_64(); + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } } loaded_pixs[2] = loaded_pix; + shiftbpl8_64(); internal_pixel_cnt += 2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } dtbuf[h][2] = dpix_val2; dtgbuf[h][2] = gpix2; uae_u32 t0 = dtbuf[h ^ lol][0]; @@ -7574,27 +27745,7 @@ static void lts_aga_fm2_ham1_p8_ilores_dhires_genlock(void) denise_cck++; } } -static void lts_aga_fm2_ham1_p8_ilores_dhires_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb0_p8_ilores_dhires_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb0_p8_ilores_dhires_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb1_p8_ilores_dhires_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb1_p8_ilores_dhires_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_n0_p4_ilores_dhires_spr_genlock(void) +static void lts_aga_fm2_dpf1_p8_ishres_dhires_spr_filtered_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -7617,22 +27768,24 @@ static void lts_aga_fm2_n0_p4_ilores_dhires_spr_genlock(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + gpix0 = get_genlock_transparency(dpf_lookup[pix0]); } last_bpl_pix = pix0; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4_64(); - loaded_pix = getbpl4_64(); + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8e_64(); } - if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { - copybpl4_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4_64(); + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o_64(); } + loaded_pix = getbpl8_64(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -7642,6 +27795,34 @@ static void lts_aga_fm2_n0_p4_ilores_dhires_spr_genlock(void) } } loaded_pixs[0] = loaded_pix; + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + uae_u8 val1 = dpf_lookup[pix1]; + if (dpf_lookup_no[pix1]) { + val1 += dblpfofs[bpldualpf2of]; + } + val1 ^= bplcon4_denise_xor_val; + dpix_val1 = denise_colors.acolors[val1]; + gpix1 = get_genlock_transparency(dpf_lookup[pix1]); + } + last_bpl_pix = pix1; + } + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8e_64(); + } + if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o_64(); + } + loaded_pix = getbpl8_64(); + loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 2; matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; @@ -7653,22 +27834,24 @@ static void lts_aga_fm2_n0_p4_ilores_dhires_spr_genlock(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; - gpix2 = get_genlock_transparency(pix2 ^ bplcon4_denise_xor_val); + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; + gpix2 = get_genlock_transparency(dpf_lookup[pix2]); } last_bpl_pix = pix2; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4_64(); - loaded_pix = getbpl4_64(); + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8e_64(); } - if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { - copybpl4_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4_64(); + if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o_64(); } + loaded_pix = getbpl8_64(); uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -7678,6 +27861,34 @@ static void lts_aga_fm2_n0_p4_ilores_dhires_spr_genlock(void) } } loaded_pixs[2] = loaded_pix; + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + uae_u8 val3 = dpf_lookup[pix3]; + if (dpf_lookup_no[pix3]) { + val3 += dblpfofs[bpldualpf2of]; + } + val3 ^= bplcon4_denise_xor_val; + dpix_val3 = denise_colors.acolors[val3]; + gpix3 = get_genlock_transparency(dpf_lookup[pix3]); + } + last_bpl_pix = pix3; + } + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8e_64(); + } + if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o_64(); + } + loaded_pix = getbpl8_64(); + loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { @@ -7686,8 +27897,11 @@ static void lts_aga_fm2_n0_p4_ilores_dhires_spr_genlock(void) dpix_val0 = denise_colors.acolors[spix0]; gpix0 = get_genlock_transparency(spix0); + dpix_val1 = dpix_val0; } } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + gpix0 = filter_pixel_genlock(gpix0, gpix1); dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; if (sv2) { @@ -7696,8 +27910,11 @@ static void lts_aga_fm2_n0_p4_ilores_dhires_spr_genlock(void) dpix_val2 = denise_colors.acolors[spix2]; gpix2 = get_genlock_transparency(spix2); + dpix_val3 = dpix_val2; } } + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + gpix2 = filter_pixel_genlock(gpix2, gpix3); dtbuf[h][2] = dpix_val2; dtgbuf[h][2] = gpix2; uae_u32 t0 = dtbuf[h ^ lol][0]; @@ -7741,11 +27958,7 @@ static void lts_aga_fm2_n0_p4_ilores_dhires_spr_genlock(void) denise_cck++; } } -static void lts_aga_fm2_n0_p4_ilores_dhires_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_n1_p4_ilores_dhires_spr_genlock(void) +static void lts_aga_fm2_ehb0_p8_ishres_dhires_spr_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -7756,7 +27969,6 @@ 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; @@ -7765,35 +27977,6 @@ static void lts_aga_fm2_n1_p4_ilores_dhires_spr_genlock(void) if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4e_64(); - loaded_pix = getbpl4_64(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl4o_64(); - loaded_pix = getbpl4_64(); - } - 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] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[1]) { - copybpl4o_64(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl4_64(); } uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { @@ -7803,7 +27986,6 @@ static void lts_aga_fm2_n1_p4_ilores_dhires_spr_genlock(void) sv0 = svt; } } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 2; matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; @@ -7812,35 +27994,6 @@ static void lts_aga_fm2_n1_p4_ilores_dhires_spr_genlock(void) if (!denise_blank_active) { gpix2 = get_genlock_transparency_border(); dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; - gpix2 = get_genlock_transparency(pix2 ^ bplcon4_denise_xor_val); - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4e_64(); - loaded_pix = getbpl4_64(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl4o_64(); - loaded_pix = getbpl4_64(); - } - 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] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[1]) { - copybpl4o_64(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl4_64(); } uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { @@ -7850,7 +28003,6 @@ static void lts_aga_fm2_n1_p4_ilores_dhires_spr_genlock(void) sv2 = svt; } } - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { @@ -7914,11 +28066,7 @@ static void lts_aga_fm2_n1_p4_ilores_dhires_spr_genlock(void) denise_cck++; } } -static void lts_aga_fm2_n1_p4_ilores_dhires_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_dpf0_p4_ilores_dhires_spr_genlock(void) +static void lts_aga_fm2_ehb0_p8_ishres_dhires_spr_filtered_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -7929,7 +28077,6 @@ 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; @@ -7938,29 +28085,6 @@ static void lts_aga_fm2_dpf0_p4_ilores_dhires_spr_genlock(void) if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - gpix0 = get_genlock_transparency(dpf_lookup[pix0]); - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4_64(); - loaded_pix = getbpl4_64(); - } - if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { - copybpl4_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4_64(); } uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { @@ -7970,7 +28094,13 @@ static void lts_aga_fm2_dpf0_p4_ilores_dhires_spr_genlock(void) sv0 = svt; } } - loaded_pixs[0] = loaded_pix; + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } internal_pixel_cnt += 2; matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; @@ -7979,29 +28109,6 @@ static void lts_aga_fm2_dpf0_p4_ilores_dhires_spr_genlock(void) if (!denise_blank_active) { gpix2 = get_genlock_transparency_border(); dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; - gpix2 = get_genlock_transparency(dpf_lookup[pix2]); - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4_64(); - loaded_pix = getbpl4_64(); - } - if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { - copybpl4_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4_64(); } uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { @@ -8011,7 +28118,13 @@ static void lts_aga_fm2_dpf0_p4_ilores_dhires_spr_genlock(void) sv2 = svt; } } - loaded_pixs[2] = loaded_pix; + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + } internal_pixel_cnt += 2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { @@ -8020,8 +28133,11 @@ static void lts_aga_fm2_dpf0_p4_ilores_dhires_spr_genlock(void) dpix_val0 = denise_colors.acolors[spix0]; gpix0 = get_genlock_transparency(spix0); + dpix_val1 = dpix_val0; } } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + gpix0 = filter_pixel_genlock(gpix0, gpix1); dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; if (sv2) { @@ -8030,8 +28146,11 @@ static void lts_aga_fm2_dpf0_p4_ilores_dhires_spr_genlock(void) dpix_val2 = denise_colors.acolors[spix2]; gpix2 = get_genlock_transparency(spix2); + dpix_val3 = dpix_val2; } } + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + gpix2 = filter_pixel_genlock(gpix2, gpix3); dtbuf[h][2] = dpix_val2; dtgbuf[h][2] = gpix2; uae_u32 t0 = dtbuf[h ^ lol][0]; @@ -8075,11 +28194,7 @@ static void lts_aga_fm2_dpf0_p4_ilores_dhires_spr_genlock(void) denise_cck++; } } -static void lts_aga_fm2_dpf0_p4_ilores_dhires_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_dpf1_p4_ilores_dhires_spr_genlock(void) +static void lts_aga_fm2_ehb1_p8_ishres_dhires_spr_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -8090,7 +28205,6 @@ 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; @@ -8099,40 +28213,6 @@ static void lts_aga_fm2_dpf1_p4_ilores_dhires_spr_genlock(void) if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - gpix0 = get_genlock_transparency(dpf_lookup[pix0]); - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4e_64(); - loaded_pix = getbpl4_64(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl4o_64(); - loaded_pix = getbpl4_64(); - } - 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] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[1]) { - copybpl4o_64(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl4_64(); } uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { @@ -8142,7 +28222,6 @@ static void lts_aga_fm2_dpf1_p4_ilores_dhires_spr_genlock(void) sv0 = svt; } } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 2; matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; @@ -8151,40 +28230,6 @@ static void lts_aga_fm2_dpf1_p4_ilores_dhires_spr_genlock(void) if (!denise_blank_active) { gpix2 = get_genlock_transparency_border(); dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; - gpix2 = get_genlock_transparency(dpf_lookup[pix2]); - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4e_64(); - loaded_pix = getbpl4_64(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl4o_64(); - loaded_pix = getbpl4_64(); - } - 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] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[1]) { - copybpl4o_64(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl4_64(); } uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { @@ -8194,7 +28239,6 @@ static void lts_aga_fm2_dpf1_p4_ilores_dhires_spr_genlock(void) sv2 = svt; } } - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { @@ -8258,59 +28302,7 @@ static void lts_aga_fm2_dpf1_p4_ilores_dhires_spr_genlock(void) denise_cck++; } } -static void lts_aga_fm2_dpf1_p4_ilores_dhires_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb0_p4_ilores_dhires_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb0_p4_ilores_dhires_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb1_p4_ilores_dhires_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb1_p4_ilores_dhires_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_ham0_p4_ilores_dhires_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_ham0_p4_ilores_dhires_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_ham1_p4_ilores_dhires_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_ham1_p4_ilores_dhires_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb0_p4_ilores_dhires_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb0_p4_ilores_dhires_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb1_p4_ilores_dhires_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb1_p4_ilores_dhires_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_n0_p8_ilores_dhires_spr_genlock(void) +static void lts_aga_fm2_ehb1_p8_ishres_dhires_spr_filtered_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -8321,7 +28313,6 @@ 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; @@ -8330,24 +28321,6 @@ static void lts_aga_fm2_n0_p8_ilores_dhires_spr_genlock(void) if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8_64(); - loaded_pix = getbpl8_64(); - } - if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_64(); } uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { @@ -8357,7 +28330,13 @@ static void lts_aga_fm2_n0_p8_ilores_dhires_spr_genlock(void) sv0 = svt; } } - loaded_pixs[0] = loaded_pix; + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } internal_pixel_cnt += 2; matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; @@ -8366,24 +28345,6 @@ static void lts_aga_fm2_n0_p8_ilores_dhires_spr_genlock(void) if (!denise_blank_active) { gpix2 = get_genlock_transparency_border(); dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; - gpix2 = get_genlock_transparency(pix2 ^ bplcon4_denise_xor_val); - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8_64(); - loaded_pix = getbpl8_64(); - } - if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_64(); } uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { @@ -8393,7 +28354,13 @@ static void lts_aga_fm2_n0_p8_ilores_dhires_spr_genlock(void) sv2 = svt; } } - loaded_pixs[2] = loaded_pix; + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + } internal_pixel_cnt += 2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { @@ -8402,8 +28369,11 @@ static void lts_aga_fm2_n0_p8_ilores_dhires_spr_genlock(void) dpix_val0 = denise_colors.acolors[spix0]; gpix0 = get_genlock_transparency(spix0); + dpix_val1 = dpix_val0; } } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + gpix0 = filter_pixel_genlock(gpix0, gpix1); dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; if (sv2) { @@ -8412,8 +28382,11 @@ static void lts_aga_fm2_n0_p8_ilores_dhires_spr_genlock(void) dpix_val2 = denise_colors.acolors[spix2]; gpix2 = get_genlock_transparency(spix2); + dpix_val3 = dpix_val2; } } + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + gpix2 = filter_pixel_genlock(gpix2, gpix3); dtbuf[h][2] = dpix_val2; dtgbuf[h][2] = gpix2; uae_u32 t0 = dtbuf[h ^ lol][0]; @@ -8457,11 +28430,7 @@ static void lts_aga_fm2_n0_p8_ilores_dhires_spr_genlock(void) denise_cck++; } } -static void lts_aga_fm2_n0_p8_ilores_dhires_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_n1_p8_ilores_dhires_spr_genlock(void) +static void lts_aga_fm2_ham0_p8_ishres_dhires_spr_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -8484,33 +28453,16 @@ static void lts_aga_fm2_n1_p8_ilores_dhires_spr_genlock(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); + dpix_val0 = decode_ham_pixel_aga(pix0); + gpix0 = get_genlock_transparency((pix0 >> 2) & 63); } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8e_64(); - loaded_pix = getbpl8_64(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl8o_64(); - loaded_pix = getbpl8_64(); - } - 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] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl8_64(); + last_bpl_pix = pix0; + } + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8_64(); } + loaded_pix = getbpl8_64(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -8520,6 +28472,23 @@ static void lts_aga_fm2_n1_p8_ilores_dhires_spr_genlock(void) } } loaded_pixs[0] = loaded_pix; + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + decode_ham_pixel_aga(pix1); + } + last_bpl_pix = pix1; + } + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8_64(); + } + loaded_pix = getbpl8_64(); + loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 2; matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; @@ -8531,33 +28500,16 @@ static void lts_aga_fm2_n1_p8_ilores_dhires_spr_genlock(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; - gpix2 = get_genlock_transparency(pix2 ^ bplcon4_denise_xor_val); + dpix_val2 = decode_ham_pixel_aga(pix2); + gpix2 = get_genlock_transparency((pix2 >> 2) & 63); } last_bpl_pix = pix2; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8e_64(); - loaded_pix = getbpl8_64(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl8o_64(); - loaded_pix = getbpl8_64(); - } - 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] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl8_64(); + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8_64(); } + loaded_pix = getbpl8_64(); uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -8567,6 +28519,23 @@ static void lts_aga_fm2_n1_p8_ilores_dhires_spr_genlock(void) } } loaded_pixs[2] = loaded_pix; + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + decode_ham_pixel_aga(pix3); + } + last_bpl_pix = pix3; + } + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8_64(); + } + loaded_pix = getbpl8_64(); + loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { @@ -8630,11 +28599,7 @@ static void lts_aga_fm2_n1_p8_ilores_dhires_spr_genlock(void) denise_cck++; } } -static void lts_aga_fm2_n1_p8_ilores_dhires_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_dpf0_p8_ilores_dhires_spr_genlock(void) +static void lts_aga_fm2_ham0_p8_ishres_dhires_spr_filtered_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -8657,27 +28622,16 @@ static void lts_aga_fm2_dpf0_p8_ilores_dhires_spr_genlock(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - gpix0 = get_genlock_transparency(dpf_lookup[pix0]); + dpix_val0 = decode_ham_pixel_aga(pix0); + gpix0 = get_genlock_transparency((pix0 >> 2) & 63); } last_bpl_pix = pix0; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8_64(); - loaded_pix = getbpl8_64(); - } - if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { copybpl8_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_64(); } + loaded_pix = getbpl8_64(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -8687,6 +28641,26 @@ static void lts_aga_fm2_dpf0_p8_ilores_dhires_spr_genlock(void) } } loaded_pixs[0] = loaded_pix; + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + dpix_val1 = decode_ham_pixel_aga(pix1); + gpix1 = get_genlock_transparency((pix1 >> 2) & 63); + } + last_bpl_pix = pix1; + } + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8_64(); + } + loaded_pix = getbpl8_64(); + loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 2; matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; @@ -8698,27 +28672,16 @@ static void lts_aga_fm2_dpf0_p8_ilores_dhires_spr_genlock(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; - gpix2 = get_genlock_transparency(dpf_lookup[pix2]); + dpix_val2 = decode_ham_pixel_aga(pix2); + gpix2 = get_genlock_transparency((pix2 >> 2) & 63); } last_bpl_pix = pix2; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8_64(); - loaded_pix = getbpl8_64(); - } - if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { copybpl8_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_64(); } + loaded_pix = getbpl8_64(); uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -8728,6 +28691,26 @@ static void lts_aga_fm2_dpf0_p8_ilores_dhires_spr_genlock(void) } } loaded_pixs[2] = loaded_pix; + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + dpix_val3 = decode_ham_pixel_aga(pix3); + gpix3 = get_genlock_transparency((pix3 >> 2) & 63); + } + last_bpl_pix = pix3; + } + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8_64(); + } + loaded_pix = getbpl8_64(); + loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { @@ -8736,8 +28719,11 @@ static void lts_aga_fm2_dpf0_p8_ilores_dhires_spr_genlock(void) dpix_val0 = denise_colors.acolors[spix0]; gpix0 = get_genlock_transparency(spix0); + dpix_val1 = dpix_val0; } } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + gpix0 = filter_pixel_genlock(gpix0, gpix1); dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; if (sv2) { @@ -8746,8 +28732,11 @@ static void lts_aga_fm2_dpf0_p8_ilores_dhires_spr_genlock(void) dpix_val2 = denise_colors.acolors[spix2]; gpix2 = get_genlock_transparency(spix2); + dpix_val3 = dpix_val2; } } + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + gpix2 = filter_pixel_genlock(gpix2, gpix3); dtbuf[h][2] = dpix_val2; dtgbuf[h][2] = gpix2; uae_u32 t0 = dtbuf[h ^ lol][0]; @@ -8791,11 +28780,7 @@ static void lts_aga_fm2_dpf0_p8_ilores_dhires_spr_genlock(void) denise_cck++; } } -static void lts_aga_fm2_dpf0_p8_ilores_dhires_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_dpf1_p8_ilores_dhires_spr_genlock(void) +static void lts_aga_fm2_ham1_p8_ishres_dhires_spr_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -8818,38 +28803,19 @@ static void lts_aga_fm2_dpf1_p8_ilores_dhires_spr_genlock(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - gpix0 = get_genlock_transparency(dpf_lookup[pix0]); + dpix_val0 = decode_ham_pixel_aga(pix0); + gpix0 = get_genlock_transparency((pix0 >> 2) & 63); } last_bpl_pix = pix0; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8e_64(); - loaded_pix = getbpl8_64(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl8o_64(); - loaded_pix = getbpl8_64(); - } - if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { copybpl8e_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_64(); } - if (bpldat_copy[1] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[1]) { + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { copybpl8o_64(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl8_64(); } + loaded_pix = getbpl8_64(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -8859,6 +28825,26 @@ static void lts_aga_fm2_dpf1_p8_ilores_dhires_spr_genlock(void) } } loaded_pixs[0] = loaded_pix; + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + decode_ham_pixel_aga(pix1); + } + last_bpl_pix = pix1; + } + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8e_64(); + } + if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o_64(); + } + loaded_pix = getbpl8_64(); + loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 2; matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; @@ -8870,38 +28856,19 @@ static void lts_aga_fm2_dpf1_p8_ilores_dhires_spr_genlock(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; - gpix2 = get_genlock_transparency(dpf_lookup[pix2]); + dpix_val2 = decode_ham_pixel_aga(pix2); + gpix2 = get_genlock_transparency((pix2 >> 2) & 63); } last_bpl_pix = pix2; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8e_64(); - loaded_pix = getbpl8_64(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl8o_64(); - loaded_pix = getbpl8_64(); - } - if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { copybpl8e_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_64(); } - if (bpldat_copy[1] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[1]) { + if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { copybpl8o_64(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl8_64(); } + loaded_pix = getbpl8_64(); uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -8911,6 +28878,26 @@ static void lts_aga_fm2_dpf1_p8_ilores_dhires_spr_genlock(void) } } loaded_pixs[2] = loaded_pix; + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + decode_ham_pixel_aga(pix3); + } + last_bpl_pix = pix3; + } + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8e_64(); + } + if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o_64(); + } + loaded_pix = getbpl8_64(); + loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { @@ -8974,27 +28961,7 @@ static void lts_aga_fm2_dpf1_p8_ilores_dhires_spr_genlock(void) denise_cck++; } } -static void lts_aga_fm2_dpf1_p8_ilores_dhires_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb0_p8_ilores_dhires_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb0_p8_ilores_dhires_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb1_p8_ilores_dhires_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb1_p8_ilores_dhires_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_ham0_p8_ilores_dhires_spr_genlock(void) +static void lts_aga_fm2_ham1_p8_ishres_dhires_spr_filtered_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -9022,17 +28989,14 @@ static void lts_aga_fm2_ham0_p8_ilores_dhires_spr_genlock(void) } last_bpl_pix = pix0; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8_64(); - loaded_pix = getbpl8_64(); + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8e_64(); } - if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_64(); + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o_64(); } + loaded_pix = getbpl8_64(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -9042,6 +29006,29 @@ static void lts_aga_fm2_ham0_p8_ilores_dhires_spr_genlock(void) } } loaded_pixs[0] = loaded_pix; + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + dpix_val1 = decode_ham_pixel_aga(pix1); + gpix1 = get_genlock_transparency((pix1 >> 2) & 63); + } + last_bpl_pix = pix1; + } + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8e_64(); + } + if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o_64(); + } + loaded_pix = getbpl8_64(); + loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 2; matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; @@ -9058,17 +29045,14 @@ static void lts_aga_fm2_ham0_p8_ilores_dhires_spr_genlock(void) } last_bpl_pix = pix2; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8_64(); - loaded_pix = getbpl8_64(); + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8e_64(); } - if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_64(); + if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o_64(); } + loaded_pix = getbpl8_64(); uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -9078,6 +29062,29 @@ static void lts_aga_fm2_ham0_p8_ilores_dhires_spr_genlock(void) } } loaded_pixs[2] = loaded_pix; + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + dpix_val3 = decode_ham_pixel_aga(pix3); + gpix3 = get_genlock_transparency((pix3 >> 2) & 63); + } + last_bpl_pix = pix3; + } + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8e_64(); + } + if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o_64(); + } + loaded_pix = getbpl8_64(); + loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { @@ -9086,8 +29093,11 @@ static void lts_aga_fm2_ham0_p8_ilores_dhires_spr_genlock(void) dpix_val0 = denise_colors.acolors[spix0]; gpix0 = get_genlock_transparency(spix0); + dpix_val1 = dpix_val0; } } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + gpix0 = filter_pixel_genlock(gpix0, gpix1); dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; if (sv2) { @@ -9096,8 +29106,11 @@ static void lts_aga_fm2_ham0_p8_ilores_dhires_spr_genlock(void) dpix_val2 = denise_colors.acolors[spix2]; gpix2 = get_genlock_transparency(spix2); + dpix_val3 = dpix_val2; } } + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + gpix2 = filter_pixel_genlock(gpix2, gpix3); dtbuf[h][2] = dpix_val2; dtgbuf[h][2] = gpix2; uae_u32 t0 = dtbuf[h ^ lol][0]; @@ -9141,11 +29154,7 @@ static void lts_aga_fm2_ham0_p8_ilores_dhires_spr_genlock(void) denise_cck++; } } -static void lts_aga_fm2_ham0_p8_ilores_dhires_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_ham1_p8_ilores_dhires_spr_genlock(void) +static void lts_aga_fm2_kehb0_p8_ishres_dhires_spr_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -9156,7 +29165,6 @@ 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; @@ -9165,35 +29173,6 @@ static void lts_aga_fm2_ham1_p8_ilores_dhires_spr_genlock(void) if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = decode_ham_pixel_aga(pix0); - gpix0 = get_genlock_transparency((pix0 >> 2) & 63); - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8e_64(); - loaded_pix = getbpl8_64(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl8o_64(); - loaded_pix = getbpl8_64(); - } - 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] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl8_64(); } uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { @@ -9203,7 +29182,6 @@ static void lts_aga_fm2_ham1_p8_ilores_dhires_spr_genlock(void) sv0 = svt; } } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 2; matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; @@ -9212,35 +29190,6 @@ static void lts_aga_fm2_ham1_p8_ilores_dhires_spr_genlock(void) if (!denise_blank_active) { gpix2 = get_genlock_transparency_border(); dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = decode_ham_pixel_aga(pix2); - gpix2 = get_genlock_transparency((pix2 >> 2) & 63); - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8e_64(); - loaded_pix = getbpl8_64(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl8o_64(); - loaded_pix = getbpl8_64(); - } - 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] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl8_64(); } uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { @@ -9250,7 +29199,6 @@ static void lts_aga_fm2_ham1_p8_ilores_dhires_spr_genlock(void) sv2 = svt; } } - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { @@ -9314,27 +29262,7 @@ static void lts_aga_fm2_ham1_p8_ilores_dhires_spr_genlock(void) denise_cck++; } } -static void lts_aga_fm2_ham1_p8_ilores_dhires_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb0_p8_ilores_dhires_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb0_p8_ilores_dhires_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb1_p8_ilores_dhires_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb1_p8_ilores_dhires_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_n0_p4_ihires_dhires_genlock(void) +static void lts_aga_fm2_kehb0_p8_ishres_dhires_spr_filtered_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -9345,53 +29273,80 @@ 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; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; } - last_bpl_pix = pix0; } - shiftbpl4_64(); - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl4_64(); + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; } - loaded_pix = getbpl4_64(); - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u8 gpix2 = 0xff; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { gpix2 = get_genlock_transparency_border(); dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; - gpix2 = get_genlock_transparency(pix2 ^ bplcon4_denise_xor_val); + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; } - last_bpl_pix = pix2; } - shiftbpl4_64(); - if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { - copybpl4_64(); + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; } - loaded_pix = getbpl4_64(); - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + gpix0 = filter_pixel_genlock(gpix0, gpix1); dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + dpix_val3 = dpix_val2; + } + } + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + gpix2 = filter_pixel_genlock(gpix2, gpix3); dtbuf[h][2] = dpix_val2; dtgbuf[h][2] = gpix2; uae_u32 t0 = dtbuf[h ^ lol][0]; @@ -9435,11 +29390,7 @@ static void lts_aga_fm2_n0_p4_ihires_dhires_genlock(void) denise_cck++; } } -static void lts_aga_fm2_n0_p4_ihires_dhires_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_n1_p4_ihires_dhires_genlock(void) +static void lts_aga_fm2_kehb1_p8_ishres_dhires_spr_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -9450,59 +29401,60 @@ 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; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); - } - last_bpl_pix = pix0; } - shiftbpl4_64(); - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl4e_64(); - } - if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { - copybpl4o_64(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } } - loaded_pix = getbpl4_64(); - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u8 gpix2 = 0xff; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { gpix2 = get_genlock_transparency_border(); dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; - gpix2 = get_genlock_transparency(pix2 ^ bplcon4_denise_xor_val); - } - last_bpl_pix = pix2; - } - shiftbpl4_64(); - if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { - copybpl4e_64(); } - if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) { - copybpl4o_64(); + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } } - loaded_pix = getbpl4_64(); - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } dtbuf[h][2] = dpix_val2; dtgbuf[h][2] = gpix2; uae_u32 t0 = dtbuf[h ^ lol][0]; @@ -9546,11 +29498,7 @@ static void lts_aga_fm2_n1_p4_ihires_dhires_genlock(void) denise_cck++; } } -static void lts_aga_fm2_n1_p4_ihires_dhires_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_dpf0_p4_ihires_dhires_genlock(void) +static void lts_aga_fm2_kehb1_p8_ishres_dhires_spr_filtered_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -9561,63 +29509,80 @@ 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; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - gpix0 = get_genlock_transparency(dpf_lookup[pix0]); + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; } - last_bpl_pix = pix0; } - shiftbpl4_64(); - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl4_64(); + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; } - loaded_pix = getbpl4_64(); - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 2; + matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u8 gpix2 = 0xff; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { gpix2 = get_genlock_transparency_border(); dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; - gpix2 = get_genlock_transparency(dpf_lookup[pix2]); + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; } - last_bpl_pix = pix2; } - shiftbpl4_64(); - if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { - copybpl4_64(); + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; } - loaded_pix = getbpl4_64(); - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + dpix_val1 = dpix_val0; + } + } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + gpix0 = filter_pixel_genlock(gpix0, gpix1); dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + dpix_val3 = dpix_val2; + } + } + dpix_val2 = filter_pixel(dpix_val2, dpix_val3); + gpix2 = filter_pixel_genlock(gpix2, gpix3); dtbuf[h][2] = dpix_val2; dtgbuf[h][2] = gpix2; uae_u32 t0 = dtbuf[h ^ lol][0]; @@ -9661,11 +29626,7 @@ static void lts_aga_fm2_dpf0_p4_ihires_dhires_genlock(void) denise_cck++; } } -static void lts_aga_fm2_dpf0_p4_ihires_dhires_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_dpf1_p4_ihires_dhires_genlock(void) +static void lts_aga_fm2_n0_p4_ilores_dshres_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -9687,26 +29648,51 @@ static void lts_aga_fm2_dpf1_p4_ihires_dhires_genlock(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - gpix0 = get_genlock_transparency(dpf_lookup[pix0]); + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); } last_bpl_pix = pix0; } - shiftbpl4_64(); - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl4e_64(); + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4_64(); + loaded_pix = getbpl4_64(); } - if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { - copybpl4o_64(); + if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { + copybpl4_64(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4_64(); } - loaded_pix = getbpl4_64(); loaded_pixs[0] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; + gpix1 = get_genlock_transparency(pix1 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix1; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4_64(); + loaded_pix = getbpl4_64(); + } + if (bpldat_copy[0] && ((cmp | 1) & 255) == bplcon1_shift_full_masked[0]) { + copybpl4_64(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4_64(); + } + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u8 gpix2 = 0xff; uae_u32 dpix_val2 = BLANK_COLOR; @@ -9716,31 +29702,60 @@ static void lts_aga_fm2_dpf1_p4_ihires_dhires_genlock(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; - gpix2 = get_genlock_transparency(dpf_lookup[pix2]); + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + gpix2 = get_genlock_transparency(pix2 ^ bplcon4_denise_xor_val); } last_bpl_pix = pix2; } - shiftbpl4_64(); - if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { - copybpl4e_64(); + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4_64(); + loaded_pix = getbpl4_64(); } - if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) { - copybpl4o_64(); + if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { + copybpl4_64(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4_64(); } - loaded_pix = getbpl4_64(); loaded_pixs[2] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; + gpix3 = get_genlock_transparency(pix3 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix3; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4_64(); + loaded_pix = getbpl4_64(); + } + if (bpldat_copy[0] && ((cmp | 3) & 255) == bplcon1_shift_full_masked[0]) { + copybpl4_64(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4_64(); + } + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; + dtbuf[h][1] = dpix_val1; + dtgbuf[h][1] = gpix1; dtbuf[h][2] = dpix_val2; dtgbuf[h][2] = gpix2; + dtbuf[h][3] = dpix_val3; + dtgbuf[h][3] = gpix3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -9750,6 +29765,15 @@ static void lts_aga_fm2_dpf1_p4_ihires_dhires_genlock(void) *buf1++ = t0; *buf2++ = t0; *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = dtgbuf[h ^ lol][1]; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -9759,6 +29783,15 @@ static void lts_aga_fm2_dpf1_p4_ihires_dhires_genlock(void) *buf1++ = t2; *buf2++ = t2; *gbuf++ = dtgbuf[h ^ lol][2]; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + *gbuf++ = dtgbuf[h ^ lol][3]; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -9782,59 +29815,11 @@ static void lts_aga_fm2_dpf1_p4_ihires_dhires_genlock(void) denise_cck++; } } -static void lts_aga_fm2_dpf1_p4_ihires_dhires_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb0_p4_ihires_dhires_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb0_p4_ihires_dhires_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb1_p4_ihires_dhires_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb1_p4_ihires_dhires_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_ham0_p4_ihires_dhires_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_ham0_p4_ihires_dhires_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_ham1_p4_ihires_dhires_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_ham1_p4_ihires_dhires_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb0_p4_ihires_dhires_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb0_p4_ihires_dhires_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb1_p4_ihires_dhires_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb1_p4_ihires_dhires_filtered_genlock(void) +static void lts_aga_fm2_n0_p4_ilores_dshres_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm2_n0_p8_ihires_dhires_genlock(void) +static void lts_aga_fm2_n1_p4_ilores_dshres_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -9861,13 +29846,68 @@ static void lts_aga_fm2_n0_p8_ihires_dhires_genlock(void) } last_bpl_pix = pix0; } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4e_64(); + loaded_pix = getbpl4_64(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl4o_64(); + loaded_pix = getbpl4_64(); + } + 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] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[1]) { + copybpl4o_64(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl4_64(); } - loaded_pix = getbpl8_64(); loaded_pixs[0] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; + gpix1 = get_genlock_transparency(pix1 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix1; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4e_64(); + loaded_pix = getbpl4_64(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl4o_64(); + loaded_pix = getbpl4_64(); + } + 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] && ((cmp | 1) & 255) == bplcon1_shift_full_masked[1]) { + copybpl4o_64(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl4_64(); + } + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u8 gpix2 = 0xff; uae_u32 dpix_val2 = BLANK_COLOR; @@ -9882,27 +29922,95 @@ static void lts_aga_fm2_n0_p8_ihires_dhires_genlock(void) } last_bpl_pix = pix2; } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4e_64(); + loaded_pix = getbpl4_64(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl4o_64(); + loaded_pix = getbpl4_64(); + } + 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] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[1]) { + copybpl4o_64(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl4_64(); } - loaded_pix = getbpl8_64(); loaded_pixs[2] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; + gpix3 = get_genlock_transparency(pix3 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix3; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4e_64(); + loaded_pix = getbpl4_64(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl4o_64(); + loaded_pix = getbpl4_64(); + } + 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] && ((cmp | 3) & 255) == bplcon1_shift_full_masked[1]) { + copybpl4o_64(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl4_64(); + } + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; + dtbuf[h][1] = dpix_val1; + dtgbuf[h][1] = gpix1; dtbuf[h][2] = dpix_val2; dtgbuf[h][2] = gpix2; + dtbuf[h][3] = dpix_val3; + dtgbuf[h][3] = gpix3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { t0 = decode_denise_specials_debug(t0, cnt + 0); } #endif - *buf1++ = t0; - *buf2++ = t0; - *gbuf++ = dtgbuf[h ^ lol][0]; + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = dtgbuf[h ^ lol][1]; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -9912,6 +30020,15 @@ static void lts_aga_fm2_n0_p8_ihires_dhires_genlock(void) *buf1++ = t2; *buf2++ = t2; *gbuf++ = dtgbuf[h ^ lol][2]; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + *gbuf++ = dtgbuf[h ^ lol][3]; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -9935,11 +30052,11 @@ static void lts_aga_fm2_n0_p8_ihires_dhires_genlock(void) denise_cck++; } } -static void lts_aga_fm2_n0_p8_ihires_dhires_filtered_genlock(void) +static void lts_aga_fm2_n1_p4_ilores_dshres_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm2_n1_p8_ihires_dhires_genlock(void) +static void lts_aga_fm2_dpf0_p4_ilores_dshres_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -9961,21 +30078,61 @@ static void lts_aga_fm2_n1_p8_ihires_dhires_genlock(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + gpix0 = get_genlock_transparency(dpf_lookup[pix0]); } last_bpl_pix = pix0; } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8e_64(); + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4_64(); + loaded_pix = getbpl4_64(); } - if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); + if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { + copybpl4_64(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4_64(); } - loaded_pix = getbpl8_64(); loaded_pixs[0] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + uae_u8 val1 = dpf_lookup[pix1]; + if (dpf_lookup_no[pix1]) { + val1 += dblpfofs[bpldualpf2of]; + } + val1 ^= bplcon4_denise_xor_val; + dpix_val1 = denise_colors.acolors[val1]; + gpix1 = get_genlock_transparency(dpf_lookup[pix1]); + } + last_bpl_pix = pix1; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4_64(); + loaded_pix = getbpl4_64(); + } + if (bpldat_copy[0] && ((cmp | 1) & 255) == bplcon1_shift_full_masked[0]) { + copybpl4_64(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4_64(); + } + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u8 gpix2 = 0xff; uae_u32 dpix_val2 = BLANK_COLOR; @@ -9985,26 +30142,70 @@ static void lts_aga_fm2_n1_p8_ihires_dhires_genlock(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; - gpix2 = get_genlock_transparency(pix2 ^ bplcon4_denise_xor_val); + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; + gpix2 = get_genlock_transparency(dpf_lookup[pix2]); } last_bpl_pix = pix2; } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8e_64(); + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4_64(); + loaded_pix = getbpl4_64(); } - if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); + if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { + copybpl4_64(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4_64(); } - loaded_pix = getbpl8_64(); loaded_pixs[2] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + uae_u8 val3 = dpf_lookup[pix3]; + if (dpf_lookup_no[pix3]) { + val3 += dblpfofs[bpldualpf2of]; + } + val3 ^= bplcon4_denise_xor_val; + dpix_val3 = denise_colors.acolors[val3]; + gpix3 = get_genlock_transparency(dpf_lookup[pix3]); + } + last_bpl_pix = pix3; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4_64(); + loaded_pix = getbpl4_64(); + } + if (bpldat_copy[0] && ((cmp | 3) & 255) == bplcon1_shift_full_masked[0]) { + copybpl4_64(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4_64(); + } + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; + dtbuf[h][1] = dpix_val1; + dtgbuf[h][1] = gpix1; dtbuf[h][2] = dpix_val2; dtgbuf[h][2] = gpix2; + dtbuf[h][3] = dpix_val3; + dtgbuf[h][3] = gpix3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -10014,6 +30215,15 @@ static void lts_aga_fm2_n1_p8_ihires_dhires_genlock(void) *buf1++ = t0; *buf2++ = t0; *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = dtgbuf[h ^ lol][1]; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -10023,6 +30233,15 @@ static void lts_aga_fm2_n1_p8_ihires_dhires_genlock(void) *buf1++ = t2; *buf2++ = t2; *gbuf++ = dtgbuf[h ^ lol][2]; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + *gbuf++ = dtgbuf[h ^ lol][3]; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -10046,11 +30265,11 @@ static void lts_aga_fm2_n1_p8_ihires_dhires_genlock(void) denise_cck++; } } -static void lts_aga_fm2_n1_p8_ihires_dhires_filtered_genlock(void) +static void lts_aga_fm2_dpf0_p4_ilores_dshres_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm2_dpf0_p8_ihires_dhires_genlock(void) +static void lts_aga_fm2_dpf1_p4_ilores_dshres_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -10082,13 +30301,73 @@ static void lts_aga_fm2_dpf0_p8_ihires_dhires_genlock(void) } last_bpl_pix = pix0; } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4e_64(); + loaded_pix = getbpl4_64(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl4o_64(); + loaded_pix = getbpl4_64(); + } + 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] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[1]) { + copybpl4o_64(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl4_64(); } - loaded_pix = getbpl8_64(); loaded_pixs[0] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + uae_u8 val1 = dpf_lookup[pix1]; + if (dpf_lookup_no[pix1]) { + val1 += dblpfofs[bpldualpf2of]; + } + val1 ^= bplcon4_denise_xor_val; + dpix_val1 = denise_colors.acolors[val1]; + gpix1 = get_genlock_transparency(dpf_lookup[pix1]); + } + last_bpl_pix = pix1; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4e_64(); + loaded_pix = getbpl4_64(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl4o_64(); + loaded_pix = getbpl4_64(); + } + 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] && ((cmp | 1) & 255) == bplcon1_shift_full_masked[1]) { + copybpl4o_64(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl4_64(); + } + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u8 gpix2 = 0xff; uae_u32 dpix_val2 = BLANK_COLOR; @@ -10108,18 +30387,82 @@ static void lts_aga_fm2_dpf0_p8_ihires_dhires_genlock(void) } last_bpl_pix = pix2; } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4e_64(); + loaded_pix = getbpl4_64(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl4o_64(); + loaded_pix = getbpl4_64(); + } + 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] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[1]) { + copybpl4o_64(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl4_64(); } - loaded_pix = getbpl8_64(); loaded_pixs[2] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + uae_u8 val3 = dpf_lookup[pix3]; + if (dpf_lookup_no[pix3]) { + val3 += dblpfofs[bpldualpf2of]; + } + val3 ^= bplcon4_denise_xor_val; + dpix_val3 = denise_colors.acolors[val3]; + gpix3 = get_genlock_transparency(dpf_lookup[pix3]); + } + last_bpl_pix = pix3; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4e_64(); + loaded_pix = getbpl4_64(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl4o_64(); + loaded_pix = getbpl4_64(); + } + 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] && ((cmp | 3) & 255) == bplcon1_shift_full_masked[1]) { + copybpl4o_64(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl4_64(); + } + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; + dtbuf[h][1] = dpix_val1; + dtgbuf[h][1] = gpix1; dtbuf[h][2] = dpix_val2; dtgbuf[h][2] = gpix2; + dtbuf[h][3] = dpix_val3; + dtgbuf[h][3] = gpix3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -10129,6 +30472,15 @@ static void lts_aga_fm2_dpf0_p8_ihires_dhires_genlock(void) *buf1++ = t0; *buf2++ = t0; *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = dtgbuf[h ^ lol][1]; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -10138,6 +30490,15 @@ static void lts_aga_fm2_dpf0_p8_ihires_dhires_genlock(void) *buf1++ = t2; *buf2++ = t2; *gbuf++ = dtgbuf[h ^ lol][2]; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + *gbuf++ = dtgbuf[h ^ lol][3]; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -10161,11 +30522,11 @@ static void lts_aga_fm2_dpf0_p8_ihires_dhires_genlock(void) denise_cck++; } } -static void lts_aga_fm2_dpf0_p8_ihires_dhires_filtered_genlock(void) +static void lts_aga_fm2_dpf1_p4_ilores_dshres_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm2_dpf1_p8_ihires_dhires_genlock(void) +static void lts_aga_fm2_ehb0_p4_ilores_dshres_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -10176,7 +30537,6 @@ 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; @@ -10184,63 +30544,41 @@ static void lts_aga_fm2_dpf1_p8_ihires_dhires_genlock(void) if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - gpix0 = get_genlock_transparency(dpf_lookup[pix0]); - } - last_bpl_pix = pix0; - } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8e_64(); } - if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; } - loaded_pix = getbpl8_64(); - loaded_pixs[0] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u8 gpix2 = 0xff; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { gpix2 = get_genlock_transparency_border(); dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; - gpix2 = get_genlock_transparency(dpf_lookup[pix2]); - } - last_bpl_pix = pix2; - } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8e_64(); } - if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; } - loaded_pix = getbpl8_64(); - loaded_pixs[2] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; + dtbuf[h][1] = dpix_val1; + dtgbuf[h][1] = gpix1; dtbuf[h][2] = dpix_val2; dtgbuf[h][2] = gpix2; + dtbuf[h][3] = dpix_val3; + dtgbuf[h][3] = gpix3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -10250,6 +30588,15 @@ static void lts_aga_fm2_dpf1_p8_ihires_dhires_genlock(void) *buf1++ = t0; *buf2++ = t0; *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = dtgbuf[h ^ lol][1]; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -10259,6 +30606,15 @@ static void lts_aga_fm2_dpf1_p8_ihires_dhires_genlock(void) *buf1++ = t2; *buf2++ = t2; *gbuf++ = dtgbuf[h ^ lol][2]; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + *gbuf++ = dtgbuf[h ^ lol][3]; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -10282,27 +30638,11 @@ static void lts_aga_fm2_dpf1_p8_ihires_dhires_genlock(void) denise_cck++; } } -static void lts_aga_fm2_dpf1_p8_ihires_dhires_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb0_p8_ihires_dhires_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb0_p8_ihires_dhires_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb1_p8_ihires_dhires_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb1_p8_ihires_dhires_filtered_genlock(void) +static void lts_aga_fm2_ehb0_p4_ilores_dshres_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm2_ham0_p8_ihires_dhires_genlock(void) +static void lts_aga_fm2_ehb1_p4_ilores_dshres_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -10313,7 +30653,6 @@ 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; @@ -10321,47 +30660,41 @@ static void lts_aga_fm2_ham0_p8_ihires_dhires_genlock(void) if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = decode_ham_pixel_aga(pix0); - gpix0 = get_genlock_transparency((pix0 >> 2) & 63); - } - last_bpl_pix = pix0; } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; } - loaded_pix = getbpl8_64(); - loaded_pixs[0] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u8 gpix2 = 0xff; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { gpix2 = get_genlock_transparency_border(); dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = decode_ham_pixel_aga(pix2); - gpix2 = get_genlock_transparency((pix2 >> 2) & 63); - } - last_bpl_pix = pix2; } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; } - loaded_pix = getbpl8_64(); - loaded_pixs[2] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; + dtbuf[h][1] = dpix_val1; + dtgbuf[h][1] = gpix1; dtbuf[h][2] = dpix_val2; dtgbuf[h][2] = gpix2; + dtbuf[h][3] = dpix_val3; + dtgbuf[h][3] = gpix3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -10371,6 +30704,15 @@ static void lts_aga_fm2_ham0_p8_ihires_dhires_genlock(void) *buf1++ = t0; *buf2++ = t0; *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = dtgbuf[h ^ lol][1]; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -10380,6 +30722,15 @@ static void lts_aga_fm2_ham0_p8_ihires_dhires_genlock(void) *buf1++ = t2; *buf2++ = t2; *gbuf++ = dtgbuf[h ^ lol][2]; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + *gbuf++ = dtgbuf[h ^ lol][3]; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -10403,11 +30754,11 @@ static void lts_aga_fm2_ham0_p8_ihires_dhires_genlock(void) denise_cck++; } } -static void lts_aga_fm2_ham0_p8_ihires_dhires_filtered_genlock(void) +static void lts_aga_fm2_ehb1_p4_ilores_dshres_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm2_ham1_p8_ihires_dhires_genlock(void) +static void lts_aga_fm2_ham0_p4_ilores_dshres_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -10418,7 +30769,6 @@ 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; @@ -10426,53 +30776,41 @@ static void lts_aga_fm2_ham1_p8_ihires_dhires_genlock(void) if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = decode_ham_pixel_aga(pix0); - gpix0 = get_genlock_transparency((pix0 >> 2) & 63); - } - last_bpl_pix = pix0; - } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8e_64(); - } - if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); } - loaded_pix = getbpl8_64(); - loaded_pixs[0] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u8 gpix2 = 0xff; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { gpix2 = get_genlock_transparency_border(); dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = decode_ham_pixel_aga(pix2); - gpix2 = get_genlock_transparency((pix2 >> 2) & 63); - } - last_bpl_pix = pix2; - } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8e_64(); } - if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; } - loaded_pix = getbpl8_64(); - loaded_pixs[2] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; + dtbuf[h][1] = dpix_val1; + dtgbuf[h][1] = gpix1; dtbuf[h][2] = dpix_val2; dtgbuf[h][2] = gpix2; + dtbuf[h][3] = dpix_val3; + dtgbuf[h][3] = gpix3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -10482,6 +30820,15 @@ static void lts_aga_fm2_ham1_p8_ihires_dhires_genlock(void) *buf1++ = t0; *buf2++ = t0; *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = dtgbuf[h ^ lol][1]; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -10491,6 +30838,15 @@ static void lts_aga_fm2_ham1_p8_ihires_dhires_genlock(void) *buf1++ = t2; *buf2++ = t2; *gbuf++ = dtgbuf[h ^ lol][2]; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + *gbuf++ = dtgbuf[h ^ lol][3]; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -10514,27 +30870,11 @@ static void lts_aga_fm2_ham1_p8_ihires_dhires_genlock(void) denise_cck++; } } -static void lts_aga_fm2_ham1_p8_ihires_dhires_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb0_p8_ihires_dhires_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb0_p8_ihires_dhires_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb1_p8_ihires_dhires_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb1_p8_ihires_dhires_filtered_genlock(void) +static void lts_aga_fm2_ham0_p4_ilores_dshres_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm2_n0_p4_ihires_dhires_spr_genlock(void) +static void lts_aga_fm2_ham1_p4_ilores_dshres_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -10545,89 +30885,48 @@ 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; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); - } - last_bpl_pix = pix0; - } - shiftbpl4_64(); - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl4_64(); } - loaded_pix = getbpl4_64(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; } - loaded_pixs[0] = loaded_pix; - internal_pixel_cnt += 2; - matchsprites_aga(cnt + 2); + internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u8 gpix2 = 0xff; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { gpix2 = get_genlock_transparency_border(); dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; - gpix2 = get_genlock_transparency(pix2 ^ bplcon4_denise_xor_val); - } - last_bpl_pix = pix2; - } - shiftbpl4_64(); - if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { - copybpl4_64(); } - loaded_pix = getbpl4_64(); - uae_u32 sv2 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv2 = svt; - } + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; } - loaded_pixs[2] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - gpix0 = get_genlock_transparency(spix0); - - } - } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; - if (sv2) { - uae_u32 spix2 = denise_render_sprites2(pix2, sv2); - if (spix2) { - dpix_val2 = denise_colors.acolors[spix2]; - gpix2 = get_genlock_transparency(spix2); - - } - } + dtbuf[h][1] = dpix_val1; + dtgbuf[h][1] = gpix1; dtbuf[h][2] = dpix_val2; dtgbuf[h][2] = gpix2; + dtbuf[h][3] = dpix_val3; + dtgbuf[h][3] = gpix3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -10637,6 +30936,15 @@ static void lts_aga_fm2_n0_p4_ihires_dhires_spr_genlock(void) *buf1++ = t0; *buf2++ = t0; *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = dtgbuf[h ^ lol][1]; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -10646,6 +30954,15 @@ static void lts_aga_fm2_n0_p4_ihires_dhires_spr_genlock(void) *buf1++ = t2; *buf2++ = t2; *gbuf++ = dtgbuf[h ^ lol][2]; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + *gbuf++ = dtgbuf[h ^ lol][3]; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -10669,11 +30986,11 @@ static void lts_aga_fm2_n0_p4_ihires_dhires_spr_genlock(void) denise_cck++; } } -static void lts_aga_fm2_n0_p4_ihires_dhires_spr_filtered_genlock(void) +static void lts_aga_fm2_ham1_p4_ilores_dshres_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm2_n1_p4_ihires_dhires_spr_genlock(void) +static void lts_aga_fm2_kehb0_p4_ilores_dshres_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -10684,95 +31001,48 @@ 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; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); - } - last_bpl_pix = pix0; - } - shiftbpl4_64(); - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl4e_64(); - } - if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { - copybpl4o_64(); } - loaded_pix = getbpl4_64(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; } - loaded_pixs[0] = loaded_pix; - internal_pixel_cnt += 2; - matchsprites_aga(cnt + 2); + internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u8 gpix2 = 0xff; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { gpix2 = get_genlock_transparency_border(); dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; - gpix2 = get_genlock_transparency(pix2 ^ bplcon4_denise_xor_val); - } - last_bpl_pix = pix2; - } - shiftbpl4_64(); - if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { - copybpl4e_64(); - } - if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) { - copybpl4o_64(); } - loaded_pix = getbpl4_64(); - uae_u32 sv2 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv2 = svt; - } + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; } - loaded_pixs[2] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - gpix0 = get_genlock_transparency(spix0); - - } - } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; - if (sv2) { - uae_u32 spix2 = denise_render_sprites2(pix2, sv2); - if (spix2) { - dpix_val2 = denise_colors.acolors[spix2]; - gpix2 = get_genlock_transparency(spix2); - - } - } + dtbuf[h][1] = dpix_val1; + dtgbuf[h][1] = gpix1; dtbuf[h][2] = dpix_val2; dtgbuf[h][2] = gpix2; + dtbuf[h][3] = dpix_val3; + dtgbuf[h][3] = gpix3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -10782,6 +31052,15 @@ static void lts_aga_fm2_n1_p4_ihires_dhires_spr_genlock(void) *buf1++ = t0; *buf2++ = t0; *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = dtgbuf[h ^ lol][1]; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -10791,6 +31070,15 @@ static void lts_aga_fm2_n1_p4_ihires_dhires_spr_genlock(void) *buf1++ = t2; *buf2++ = t2; *gbuf++ = dtgbuf[h ^ lol][2]; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + *gbuf++ = dtgbuf[h ^ lol][3]; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -10814,11 +31102,11 @@ static void lts_aga_fm2_n1_p4_ihires_dhires_spr_genlock(void) denise_cck++; } } -static void lts_aga_fm2_n1_p4_ihires_dhires_spr_filtered_genlock(void) +static void lts_aga_fm2_kehb0_p4_ilores_dshres_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm2_dpf0_p4_ihires_dhires_spr_genlock(void) +static void lts_aga_fm2_kehb1_p4_ilores_dshres_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -10829,99 +31117,48 @@ 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; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - gpix0 = get_genlock_transparency(dpf_lookup[pix0]); - } - last_bpl_pix = pix0; } - shiftbpl4_64(); - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl4_64(); - } - loaded_pix = getbpl4_64(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; } - loaded_pixs[0] = loaded_pix; - internal_pixel_cnt += 2; - matchsprites_aga(cnt + 2); + internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u8 gpix2 = 0xff; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { gpix2 = get_genlock_transparency_border(); dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; - gpix2 = get_genlock_transparency(dpf_lookup[pix2]); - } - last_bpl_pix = pix2; - } - shiftbpl4_64(); - if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { - copybpl4_64(); } - loaded_pix = getbpl4_64(); - uae_u32 sv2 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv2 = svt; - } + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; } - loaded_pixs[2] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - gpix0 = get_genlock_transparency(spix0); - - } - } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; - if (sv2) { - uae_u32 spix2 = denise_render_sprites2(pix2, sv2); - if (spix2) { - dpix_val2 = denise_colors.acolors[spix2]; - gpix2 = get_genlock_transparency(spix2); - - } - } + dtbuf[h][1] = dpix_val1; + dtgbuf[h][1] = gpix1; dtbuf[h][2] = dpix_val2; dtgbuf[h][2] = gpix2; + dtbuf[h][3] = dpix_val3; + dtgbuf[h][3] = gpix3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -10931,6 +31168,15 @@ static void lts_aga_fm2_dpf0_p4_ihires_dhires_spr_genlock(void) *buf1++ = t0; *buf2++ = t0; *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = dtgbuf[h ^ lol][1]; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -10940,6 +31186,15 @@ static void lts_aga_fm2_dpf0_p4_ihires_dhires_spr_genlock(void) *buf1++ = t2; *buf2++ = t2; *gbuf++ = dtgbuf[h ^ lol][2]; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + *gbuf++ = dtgbuf[h ^ lol][3]; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -10963,11 +31218,11 @@ static void lts_aga_fm2_dpf0_p4_ihires_dhires_spr_genlock(void) denise_cck++; } } -static void lts_aga_fm2_dpf0_p4_ihires_dhires_spr_filtered_genlock(void) +static void lts_aga_fm2_kehb1_p4_ilores_dshres_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm2_dpf1_p4_ihires_dhires_spr_genlock(void) +static void lts_aga_fm2_n0_p8_ilores_dshres_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -10980,7 +31235,6 @@ static void lts_aga_fm2_dpf1_p4_ihires_dhires_spr_genlock(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; @@ -10990,35 +31244,51 @@ static void lts_aga_fm2_dpf1_p4_ihires_dhires_spr_genlock(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - gpix0 = get_genlock_transparency(dpf_lookup[pix0]); + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); } last_bpl_pix = pix0; } - shiftbpl4_64(); - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl4e_64(); + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8_64(); + loaded_pix = getbpl8_64(); } - if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { - copybpl4o_64(); + if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { + copybpl8_64(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8_64(); } - loaded_pix = getbpl4_64(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; + gpix1 = get_genlock_transparency(pix1 ^ bplcon4_denise_xor_val); } + last_bpl_pix = pix1; } - loaded_pixs[0] = loaded_pix; - internal_pixel_cnt += 2; - matchsprites_aga(cnt + 2); + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8_64(); + loaded_pix = getbpl8_64(); + } + if (bpldat_copy[0] && ((cmp | 1) & 255) == bplcon1_shift_full_masked[0]) { + copybpl8_64(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8_64(); + } + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u8 gpix2 = 0xff; uae_u32 dpix_val2 = BLANK_COLOR; @@ -11028,55 +31298,60 @@ static void lts_aga_fm2_dpf1_p4_ihires_dhires_spr_genlock(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; - gpix2 = get_genlock_transparency(dpf_lookup[pix2]); + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + gpix2 = get_genlock_transparency(pix2 ^ bplcon4_denise_xor_val); } last_bpl_pix = pix2; } - shiftbpl4_64(); - if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { - copybpl4e_64(); + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8_64(); + loaded_pix = getbpl8_64(); } - if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) { - copybpl4o_64(); + if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { + copybpl8_64(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8_64(); } - loaded_pix = getbpl4_64(); - uae_u32 sv2 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv2 = svt; + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; + gpix3 = get_genlock_transparency(pix3 ^ bplcon4_denise_xor_val); } + last_bpl_pix = pix3; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8_64(); + loaded_pix = getbpl8_64(); } - loaded_pixs[2] = loaded_pix; - internal_pixel_cnt += 2; + if (bpldat_copy[0] && ((cmp | 3) & 255) == bplcon1_shift_full_masked[0]) { + copybpl8_64(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8_64(); + } + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - gpix0 = get_genlock_transparency(spix0); - - } - } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; - if (sv2) { - uae_u32 spix2 = denise_render_sprites2(pix2, sv2); - if (spix2) { - dpix_val2 = denise_colors.acolors[spix2]; - gpix2 = get_genlock_transparency(spix2); - - } - } + dtbuf[h][1] = dpix_val1; + dtgbuf[h][1] = gpix1; dtbuf[h][2] = dpix_val2; dtgbuf[h][2] = gpix2; + dtbuf[h][3] = dpix_val3; + dtgbuf[h][3] = gpix3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -11086,6 +31361,15 @@ static void lts_aga_fm2_dpf1_p4_ihires_dhires_spr_genlock(void) *buf1++ = t0; *buf2++ = t0; *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = dtgbuf[h ^ lol][1]; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -11095,6 +31379,15 @@ static void lts_aga_fm2_dpf1_p4_ihires_dhires_spr_genlock(void) *buf1++ = t2; *buf2++ = t2; *gbuf++ = dtgbuf[h ^ lol][2]; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + *gbuf++ = dtgbuf[h ^ lol][3]; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -11118,59 +31411,11 @@ static void lts_aga_fm2_dpf1_p4_ihires_dhires_spr_genlock(void) denise_cck++; } } -static void lts_aga_fm2_dpf1_p4_ihires_dhires_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb0_p4_ihires_dhires_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb0_p4_ihires_dhires_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb1_p4_ihires_dhires_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb1_p4_ihires_dhires_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_ham0_p4_ihires_dhires_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_ham0_p4_ihires_dhires_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_ham1_p4_ihires_dhires_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_ham1_p4_ihires_dhires_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb0_p4_ihires_dhires_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb0_p4_ihires_dhires_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb1_p4_ihires_dhires_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb1_p4_ihires_dhires_spr_filtered_genlock(void) +static void lts_aga_fm2_n0_p8_ilores_dshres_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm2_n0_p8_ihires_dhires_spr_genlock(void) +static void lts_aga_fm2_n1_p8_ilores_dshres_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -11183,7 +31428,6 @@ static void lts_aga_fm2_n0_p8_ihires_dhires_spr_genlock(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; @@ -11198,22 +31442,68 @@ static void lts_aga_fm2_n0_p8_ihires_dhires_spr_genlock(void) } last_bpl_pix = pix0; } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8e_64(); + loaded_pix = getbpl8_64(); } - loaded_pix = getbpl8_64(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl8o_64(); + loaded_pix = getbpl8_64(); + } + 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] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[1]) { + copybpl8o_64(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl8_64(); } loaded_pixs[0] = loaded_pix; - internal_pixel_cnt += 2; - matchsprites_aga(cnt + 2); + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; + gpix1 = get_genlock_transparency(pix1 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix1; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8e_64(); + loaded_pix = getbpl8_64(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl8o_64(); + loaded_pix = getbpl8_64(); + } + 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] && ((cmp | 1) & 255) == bplcon1_shift_full_masked[1]) { + copybpl8o_64(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl8_64(); + } + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u8 gpix2 = 0xff; uae_u32 dpix_val2 = BLANK_COLOR; @@ -11228,42 +31518,77 @@ static void lts_aga_fm2_n0_p8_ihires_dhires_spr_genlock(void) } last_bpl_pix = pix2; } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8e_64(); + loaded_pix = getbpl8_64(); } - loaded_pix = getbpl8_64(); - uae_u32 sv2 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv2 = svt; - } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl8o_64(); + loaded_pix = getbpl8_64(); + } + 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] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[1]) { + copybpl8o_64(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl8_64(); } loaded_pixs[2] = loaded_pix; - internal_pixel_cnt += 2; - if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - gpix0 = get_genlock_transparency(spix0); - - } + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; + gpix3 = get_genlock_transparency(pix3 ^ bplcon4_denise_xor_val); } + last_bpl_pix = pix3; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8e_64(); + loaded_pix = getbpl8_64(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl8o_64(); + loaded_pix = getbpl8_64(); + } + 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] && ((cmp | 3) & 255) == bplcon1_shift_full_masked[1]) { + copybpl8o_64(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl8_64(); + } + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 1; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; - if (sv2) { - uae_u32 spix2 = denise_render_sprites2(pix2, sv2); - if (spix2) { - dpix_val2 = denise_colors.acolors[spix2]; - gpix2 = get_genlock_transparency(spix2); - - } - } + dtbuf[h][1] = dpix_val1; + dtgbuf[h][1] = gpix1; dtbuf[h][2] = dpix_val2; dtgbuf[h][2] = gpix2; + dtbuf[h][3] = dpix_val3; + dtgbuf[h][3] = gpix3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -11273,6 +31598,15 @@ static void lts_aga_fm2_n0_p8_ihires_dhires_spr_genlock(void) *buf1++ = t0; *buf2++ = t0; *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = dtgbuf[h ^ lol][1]; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -11282,6 +31616,15 @@ static void lts_aga_fm2_n0_p8_ihires_dhires_spr_genlock(void) *buf1++ = t2; *buf2++ = t2; *gbuf++ = dtgbuf[h ^ lol][2]; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + *gbuf++ = dtgbuf[h ^ lol][3]; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -11305,11 +31648,11 @@ static void lts_aga_fm2_n0_p8_ihires_dhires_spr_genlock(void) denise_cck++; } } -static void lts_aga_fm2_n0_p8_ihires_dhires_spr_filtered_genlock(void) +static void lts_aga_fm2_n1_p8_ilores_dshres_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm2_n1_p8_ihires_dhires_spr_genlock(void) +static void lts_aga_fm2_dpf0_p8_ilores_dshres_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -11322,7 +31665,6 @@ static void lts_aga_fm2_n1_p8_ihires_dhires_spr_genlock(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; @@ -11332,30 +31674,61 @@ static void lts_aga_fm2_n1_p8_ihires_dhires_spr_genlock(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + gpix0 = get_genlock_transparency(dpf_lookup[pix0]); } last_bpl_pix = pix0; } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8e_64(); + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8_64(); + loaded_pix = getbpl8_64(); } - if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); + if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { + copybpl8_64(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8_64(); } - loaded_pix = getbpl8_64(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + uae_u8 val1 = dpf_lookup[pix1]; + if (dpf_lookup_no[pix1]) { + val1 += dblpfofs[bpldualpf2of]; + } + val1 ^= bplcon4_denise_xor_val; + dpix_val1 = denise_colors.acolors[val1]; + gpix1 = get_genlock_transparency(dpf_lookup[pix1]); } + last_bpl_pix = pix1; } - loaded_pixs[0] = loaded_pix; - internal_pixel_cnt += 2; - matchsprites_aga(cnt + 2); + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8_64(); + loaded_pix = getbpl8_64(); + } + if (bpldat_copy[0] && ((cmp | 1) & 255) == bplcon1_shift_full_masked[0]) { + copybpl8_64(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8_64(); + } + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u8 gpix2 = 0xff; uae_u32 dpix_val2 = BLANK_COLOR; @@ -11365,50 +31738,70 @@ static void lts_aga_fm2_n1_p8_ihires_dhires_spr_genlock(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; - gpix2 = get_genlock_transparency(pix2 ^ bplcon4_denise_xor_val); + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; + gpix2 = get_genlock_transparency(dpf_lookup[pix2]); } last_bpl_pix = pix2; } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8e_64(); - } - if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8_64(); + loaded_pix = getbpl8_64(); } - loaded_pix = getbpl8_64(); - uae_u32 sv2 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv2 = svt; - } + if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { + copybpl8_64(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8_64(); } loaded_pixs[2] = loaded_pix; - internal_pixel_cnt += 2; - if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - gpix0 = get_genlock_transparency(spix0); - + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + uae_u8 val3 = dpf_lookup[pix3]; + if (dpf_lookup_no[pix3]) { + val3 += dblpfofs[bpldualpf2of]; } + val3 ^= bplcon4_denise_xor_val; + dpix_val3 = denise_colors.acolors[val3]; + gpix3 = get_genlock_transparency(dpf_lookup[pix3]); } + last_bpl_pix = pix3; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8_64(); + loaded_pix = getbpl8_64(); + } + if (bpldat_copy[0] && ((cmp | 3) & 255) == bplcon1_shift_full_masked[0]) { + copybpl8_64(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8_64(); + } + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 1; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; - if (sv2) { - uae_u32 spix2 = denise_render_sprites2(pix2, sv2); - if (spix2) { - dpix_val2 = denise_colors.acolors[spix2]; - gpix2 = get_genlock_transparency(spix2); - - } - } + dtbuf[h][1] = dpix_val1; + dtgbuf[h][1] = gpix1; dtbuf[h][2] = dpix_val2; dtgbuf[h][2] = gpix2; + dtbuf[h][3] = dpix_val3; + dtgbuf[h][3] = gpix3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -11418,6 +31811,15 @@ static void lts_aga_fm2_n1_p8_ihires_dhires_spr_genlock(void) *buf1++ = t0; *buf2++ = t0; *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = dtgbuf[h ^ lol][1]; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -11427,6 +31829,15 @@ static void lts_aga_fm2_n1_p8_ihires_dhires_spr_genlock(void) *buf1++ = t2; *buf2++ = t2; *gbuf++ = dtgbuf[h ^ lol][2]; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + *gbuf++ = dtgbuf[h ^ lol][3]; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -11450,11 +31861,11 @@ static void lts_aga_fm2_n1_p8_ihires_dhires_spr_genlock(void) denise_cck++; } } -static void lts_aga_fm2_n1_p8_ihires_dhires_spr_filtered_genlock(void) +static void lts_aga_fm2_dpf0_p8_ilores_dshres_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm2_dpf0_p8_ihires_dhires_spr_genlock(void) +static void lts_aga_fm2_dpf1_p8_ilores_dshres_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -11467,7 +31878,6 @@ static void lts_aga_fm2_dpf0_p8_ihires_dhires_spr_genlock(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; @@ -11487,22 +31897,73 @@ static void lts_aga_fm2_dpf0_p8_ihires_dhires_spr_genlock(void) } last_bpl_pix = pix0; } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8e_64(); + loaded_pix = getbpl8_64(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl8o_64(); + loaded_pix = getbpl8_64(); + } + 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] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[1]) { + copybpl8o_64(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl8_64(); + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + uae_u8 val1 = dpf_lookup[pix1]; + if (dpf_lookup_no[pix1]) { + val1 += dblpfofs[bpldualpf2of]; + } + val1 ^= bplcon4_denise_xor_val; + dpix_val1 = denise_colors.acolors[val1]; + gpix1 = get_genlock_transparency(dpf_lookup[pix1]); + } + last_bpl_pix = pix1; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8e_64(); + loaded_pix = getbpl8_64(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl8o_64(); + loaded_pix = getbpl8_64(); + } + if (bpldat_copy[0] && ((cmp | 1) & 255) == bplcon1_shift_full_masked[0]) { + copybpl8e_64(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8_64(); } - loaded_pix = getbpl8_64(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } + if (bpldat_copy[1] && ((cmp | 1) & 255) == bplcon1_shift_full_masked[1]) { + copybpl8o_64(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl8_64(); } - loaded_pixs[0] = loaded_pix; - internal_pixel_cnt += 2; - matchsprites_aga(cnt + 2); + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u8 gpix2 = 0xff; uae_u32 dpix_val2 = BLANK_COLOR; @@ -11522,42 +31983,82 @@ static void lts_aga_fm2_dpf0_p8_ihires_dhires_spr_genlock(void) } last_bpl_pix = pix2; } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8e_64(); + loaded_pix = getbpl8_64(); } - loaded_pix = getbpl8_64(); - uae_u32 sv2 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv2 = svt; - } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl8o_64(); + loaded_pix = getbpl8_64(); + } + 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] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[1]) { + copybpl8o_64(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl8_64(); } loaded_pixs[2] = loaded_pix; - internal_pixel_cnt += 2; - if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - gpix0 = get_genlock_transparency(spix0); - + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + uae_u8 val3 = dpf_lookup[pix3]; + if (dpf_lookup_no[pix3]) { + val3 += dblpfofs[bpldualpf2of]; } + val3 ^= bplcon4_denise_xor_val; + dpix_val3 = denise_colors.acolors[val3]; + gpix3 = get_genlock_transparency(dpf_lookup[pix3]); } + last_bpl_pix = pix3; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8e_64(); + loaded_pix = getbpl8_64(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl8o_64(); + loaded_pix = getbpl8_64(); + } + 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] && ((cmp | 3) & 255) == bplcon1_shift_full_masked[1]) { + copybpl8o_64(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl8_64(); + } + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 1; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; - if (sv2) { - uae_u32 spix2 = denise_render_sprites2(pix2, sv2); - if (spix2) { - dpix_val2 = denise_colors.acolors[spix2]; - gpix2 = get_genlock_transparency(spix2); - - } - } + dtbuf[h][1] = dpix_val1; + dtgbuf[h][1] = gpix1; dtbuf[h][2] = dpix_val2; dtgbuf[h][2] = gpix2; + dtbuf[h][3] = dpix_val3; + dtgbuf[h][3] = gpix3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -11567,6 +32068,15 @@ static void lts_aga_fm2_dpf0_p8_ihires_dhires_spr_genlock(void) *buf1++ = t0; *buf2++ = t0; *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = dtgbuf[h ^ lol][1]; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -11576,6 +32086,15 @@ static void lts_aga_fm2_dpf0_p8_ihires_dhires_spr_genlock(void) *buf1++ = t2; *buf2++ = t2; *gbuf++ = dtgbuf[h ^ lol][2]; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + *gbuf++ = dtgbuf[h ^ lol][3]; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -11599,11 +32118,11 @@ static void lts_aga_fm2_dpf0_p8_ihires_dhires_spr_genlock(void) denise_cck++; } } -static void lts_aga_fm2_dpf0_p8_ihires_dhires_spr_filtered_genlock(void) +static void lts_aga_fm2_dpf1_p8_ilores_dshres_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm2_dpf1_p8_ihires_dhires_spr_genlock(void) +static void lts_aga_fm2_ehb0_p8_ilores_dshres_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -11614,105 +32133,48 @@ 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; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - gpix0 = get_genlock_transparency(dpf_lookup[pix0]); - } - last_bpl_pix = pix0; - } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8e_64(); - } - if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); } - loaded_pix = getbpl8_64(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; } - loaded_pixs[0] = loaded_pix; - internal_pixel_cnt += 2; - matchsprites_aga(cnt + 2); + internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u8 gpix2 = 0xff; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { gpix2 = get_genlock_transparency_border(); dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; - gpix2 = get_genlock_transparency(dpf_lookup[pix2]); - } - last_bpl_pix = pix2; - } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8e_64(); - } - if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); } - loaded_pix = getbpl8_64(); - uae_u32 sv2 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv2 = svt; - } + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; } - loaded_pixs[2] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - gpix0 = get_genlock_transparency(spix0); - - } - } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; - if (sv2) { - uae_u32 spix2 = denise_render_sprites2(pix2, sv2); - if (spix2) { - dpix_val2 = denise_colors.acolors[spix2]; - gpix2 = get_genlock_transparency(spix2); - - } - } + dtbuf[h][1] = dpix_val1; + dtgbuf[h][1] = gpix1; dtbuf[h][2] = dpix_val2; dtgbuf[h][2] = gpix2; + dtbuf[h][3] = dpix_val3; + dtgbuf[h][3] = gpix3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -11722,6 +32184,15 @@ static void lts_aga_fm2_dpf1_p8_ihires_dhires_spr_genlock(void) *buf1++ = t0; *buf2++ = t0; *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = dtgbuf[h ^ lol][1]; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -11731,6 +32202,15 @@ static void lts_aga_fm2_dpf1_p8_ihires_dhires_spr_genlock(void) *buf1++ = t2; *buf2++ = t2; *gbuf++ = dtgbuf[h ^ lol][2]; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + *gbuf++ = dtgbuf[h ^ lol][3]; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -11754,27 +32234,11 @@ static void lts_aga_fm2_dpf1_p8_ihires_dhires_spr_genlock(void) denise_cck++; } } -static void lts_aga_fm2_dpf1_p8_ihires_dhires_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb0_p8_ihires_dhires_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb0_p8_ihires_dhires_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb1_p8_ihires_dhires_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb1_p8_ihires_dhires_spr_filtered_genlock(void) +static void lts_aga_fm2_ehb0_p8_ilores_dshres_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm2_ham0_p8_ihires_dhires_spr_genlock(void) +static void lts_aga_fm2_ehb1_p8_ilores_dshres_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -11785,89 +32249,48 @@ 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; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = decode_ham_pixel_aga(pix0); - gpix0 = get_genlock_transparency((pix0 >> 2) & 63); - } - last_bpl_pix = pix0; - } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); } - loaded_pix = getbpl8_64(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; } - loaded_pixs[0] = loaded_pix; - internal_pixel_cnt += 2; - matchsprites_aga(cnt + 2); + internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u8 gpix2 = 0xff; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { gpix2 = get_genlock_transparency_border(); dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = decode_ham_pixel_aga(pix2); - gpix2 = get_genlock_transparency((pix2 >> 2) & 63); - } - last_bpl_pix = pix2; - } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); } - loaded_pix = getbpl8_64(); - uae_u32 sv2 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv2 = svt; - } + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; } - loaded_pixs[2] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - gpix0 = get_genlock_transparency(spix0); - - } - } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; - if (sv2) { - uae_u32 spix2 = denise_render_sprites2(pix2, sv2); - if (spix2) { - dpix_val2 = denise_colors.acolors[spix2]; - gpix2 = get_genlock_transparency(spix2); - - } - } + dtbuf[h][1] = dpix_val1; + dtgbuf[h][1] = gpix1; dtbuf[h][2] = dpix_val2; dtgbuf[h][2] = gpix2; + dtbuf[h][3] = dpix_val3; + dtgbuf[h][3] = gpix3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -11877,6 +32300,15 @@ static void lts_aga_fm2_ham0_p8_ihires_dhires_spr_genlock(void) *buf1++ = t0; *buf2++ = t0; *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = dtgbuf[h ^ lol][1]; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -11886,6 +32318,15 @@ static void lts_aga_fm2_ham0_p8_ihires_dhires_spr_genlock(void) *buf1++ = t2; *buf2++ = t2; *gbuf++ = dtgbuf[h ^ lol][2]; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + *gbuf++ = dtgbuf[h ^ lol][3]; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -11909,11 +32350,11 @@ static void lts_aga_fm2_ham0_p8_ihires_dhires_spr_genlock(void) denise_cck++; } } -static void lts_aga_fm2_ham0_p8_ihires_dhires_spr_filtered_genlock(void) +static void lts_aga_fm2_ehb1_p8_ilores_dshres_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm2_ham1_p8_ihires_dhires_spr_genlock(void) +static void lts_aga_fm2_ham0_p8_ilores_dshres_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -11926,7 +32367,6 @@ static void lts_aga_fm2_ham1_p8_ihires_dhires_spr_genlock(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; @@ -11941,25 +32381,46 @@ static void lts_aga_fm2_ham1_p8_ihires_dhires_spr_genlock(void) } last_bpl_pix = pix0; } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8e_64(); + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8_64(); + loaded_pix = getbpl8_64(); } - if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); + if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { + copybpl8_64(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8_64(); } - loaded_pix = getbpl8_64(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + dpix_val1 = decode_ham_pixel_aga(pix1); + gpix1 = get_genlock_transparency((pix1 >> 2) & 63); } + last_bpl_pix = pix1; } - loaded_pixs[0] = loaded_pix; - internal_pixel_cnt += 2; - matchsprites_aga(cnt + 2); + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8_64(); + loaded_pix = getbpl8_64(); + } + if (bpldat_copy[0] && ((cmp | 1) & 255) == bplcon1_shift_full_masked[0]) { + copybpl8_64(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8_64(); + } + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u8 gpix2 = 0xff; uae_u32 dpix_val2 = BLANK_COLOR; @@ -11974,54 +32435,73 @@ static void lts_aga_fm2_ham1_p8_ihires_dhires_spr_genlock(void) } last_bpl_pix = pix2; } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8e_64(); + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8_64(); + loaded_pix = getbpl8_64(); } - if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); + if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { + copybpl8_64(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8_64(); } - loaded_pix = getbpl8_64(); - uae_u32 sv2 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv2 = svt; + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + dpix_val3 = decode_ham_pixel_aga(pix3); + gpix3 = get_genlock_transparency((pix3 >> 2) & 63); } + last_bpl_pix = pix3; } - loaded_pixs[2] = loaded_pix; - internal_pixel_cnt += 2; + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8_64(); + loaded_pix = getbpl8_64(); + } + if (bpldat_copy[0] && ((cmp | 3) & 255) == bplcon1_shift_full_masked[0]) { + copybpl8_64(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8_64(); + } + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - gpix0 = get_genlock_transparency(spix0); - - } - } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; - if (sv2) { - uae_u32 spix2 = denise_render_sprites2(pix2, sv2); - if (spix2) { - dpix_val2 = denise_colors.acolors[spix2]; - gpix2 = get_genlock_transparency(spix2); - - } - } + dtbuf[h][1] = dpix_val1; + dtgbuf[h][1] = gpix1; dtbuf[h][2] = dpix_val2; dtgbuf[h][2] = gpix2; + dtbuf[h][3] = dpix_val3; + dtgbuf[h][3] = gpix3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { - t0 = decode_denise_specials_debug(t0, cnt + 0); + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); } #endif - *buf1++ = t0; - *buf2++ = t0; - *gbuf++ = dtgbuf[h ^ lol][0]; + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = dtgbuf[h ^ lol][1]; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -12031,6 +32511,15 @@ static void lts_aga_fm2_ham1_p8_ihires_dhires_spr_genlock(void) *buf1++ = t2; *buf2++ = t2; *gbuf++ = dtgbuf[h ^ lol][2]; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + *gbuf++ = dtgbuf[h ^ lol][3]; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -12054,27 +32543,11 @@ static void lts_aga_fm2_ham1_p8_ihires_dhires_spr_genlock(void) denise_cck++; } } -static void lts_aga_fm2_ham1_p8_ihires_dhires_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb0_p8_ihires_dhires_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb0_p8_ihires_dhires_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb1_p8_ihires_dhires_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb1_p8_ihires_dhires_spr_filtered_genlock(void) +static void lts_aga_fm2_ham0_p8_ilores_dshres_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm2_n0_p4_ishres_dhires_genlock(void) +static void lts_aga_fm2_ham1_p8_ilores_dshres_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -12096,19 +32569,73 @@ static void lts_aga_fm2_n0_p4_ishres_dhires_genlock(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); + dpix_val0 = decode_ham_pixel_aga(pix0); + gpix0 = get_genlock_transparency((pix0 >> 2) & 63); } last_bpl_pix = pix0; } - shiftbpl4_64(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4_64(); + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8e_64(); + loaded_pix = getbpl8_64(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl8o_64(); + loaded_pix = getbpl8_64(); + } + 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] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[1]) { + copybpl8o_64(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl8_64(); } - loaded_pix = getbpl4_64(); loaded_pixs[0] = loaded_pix; - shiftbpl4_64(); - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + dpix_val1 = decode_ham_pixel_aga(pix1); + gpix1 = get_genlock_transparency((pix1 >> 2) & 63); + } + last_bpl_pix = pix1; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8e_64(); + loaded_pix = getbpl8_64(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl8o_64(); + loaded_pix = getbpl8_64(); + } + 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] && ((cmp | 1) & 255) == bplcon1_shift_full_masked[1]) { + copybpl8o_64(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl8_64(); + } + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u8 gpix2 = 0xff; uae_u32 dpix_val2 = BLANK_COLOR; @@ -12118,24 +32645,82 @@ static void lts_aga_fm2_n0_p4_ishres_dhires_genlock(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; - gpix2 = get_genlock_transparency(pix2 ^ bplcon4_denise_xor_val); + dpix_val2 = decode_ham_pixel_aga(pix2); + gpix2 = get_genlock_transparency((pix2 >> 2) & 63); } last_bpl_pix = pix2; } - shiftbpl4_64(); - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4_64(); + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8e_64(); + loaded_pix = getbpl8_64(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl8o_64(); + loaded_pix = getbpl8_64(); + } + 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] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[1]) { + copybpl8o_64(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl8_64(); } - loaded_pix = getbpl4_64(); loaded_pixs[2] = loaded_pix; - shiftbpl4_64(); - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + dpix_val3 = decode_ham_pixel_aga(pix3); + gpix3 = get_genlock_transparency((pix3 >> 2) & 63); + } + last_bpl_pix = pix3; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8e_64(); + loaded_pix = getbpl8_64(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl8o_64(); + loaded_pix = getbpl8_64(); + } + 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] && ((cmp | 3) & 255) == bplcon1_shift_full_masked[1]) { + copybpl8o_64(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl8_64(); + } + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; + dtbuf[h][1] = dpix_val1; + dtgbuf[h][1] = gpix1; dtbuf[h][2] = dpix_val2; dtgbuf[h][2] = gpix2; + dtbuf[h][3] = dpix_val3; + dtgbuf[h][3] = gpix3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -12145,6 +32730,15 @@ static void lts_aga_fm2_n0_p4_ishres_dhires_genlock(void) *buf1++ = t0; *buf2++ = t0; *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = dtgbuf[h ^ lol][1]; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -12154,6 +32748,15 @@ static void lts_aga_fm2_n0_p4_ishres_dhires_genlock(void) *buf1++ = t2; *buf2++ = t2; *gbuf++ = dtgbuf[h ^ lol][2]; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + *gbuf++ = dtgbuf[h ^ lol][3]; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -12177,7 +32780,11 @@ static void lts_aga_fm2_n0_p4_ishres_dhires_genlock(void) denise_cck++; } } -static void lts_aga_fm2_n0_p4_ishres_dhires_filtered_genlock(void) +static void lts_aga_fm2_ham1_p8_ilores_dshres_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm2_kehb0_p8_ilores_dshres_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -12188,7 +32795,6 @@ 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; @@ -12196,91 +32802,41 @@ static void lts_aga_fm2_n0_p4_ishres_dhires_filtered_genlock(void) if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); - } - last_bpl_pix = pix0; - } - shiftbpl4_64(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4_64(); } - loaded_pix = getbpl4_64(); - loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 1; uae_u8 pix1 = 0; uae_u8 gpix1 = 0xff; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { gpix1 = get_genlock_transparency_border(); dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; - gpix1 = get_genlock_transparency(pix1 ^ bplcon4_denise_xor_val); - } - last_bpl_pix = pix1; - } - shiftbpl4_64(); - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4_64(); } - loaded_pix = getbpl4_64(); - loaded_pixs[1] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u8 gpix2 = 0xff; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { gpix2 = get_genlock_transparency_border(); dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; - gpix2 = get_genlock_transparency(pix2 ^ bplcon4_denise_xor_val); - } - last_bpl_pix = pix2; - } - shiftbpl4_64(); - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4_64(); } - loaded_pix = getbpl4_64(); - loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 1; uae_u8 pix3 = 0; uae_u8 gpix3 = 0xff; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { gpix3 = get_genlock_transparency_border(); dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; - gpix3 = get_genlock_transparency(pix3 ^ bplcon4_denise_xor_val); - } - last_bpl_pix = pix3; } - shiftbpl4_64(); - if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4_64(); - } - loaded_pix = getbpl4_64(); - loaded_pixs[3] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - dpix_val0 = filter_pixel(dpix_val0, dpix_val1); - gpix0 = filter_pixel_genlock(gpix0, gpix1); dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; - dpix_val2 = filter_pixel(dpix_val2, dpix_val3); - gpix2 = filter_pixel_genlock(gpix2, gpix3); + dtbuf[h][1] = dpix_val1; + dtgbuf[h][1] = gpix1; dtbuf[h][2] = dpix_val2; dtgbuf[h][2] = gpix2; + dtbuf[h][3] = dpix_val3; + dtgbuf[h][3] = gpix3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -12290,6 +32846,15 @@ static void lts_aga_fm2_n0_p4_ishres_dhires_filtered_genlock(void) *buf1++ = t0; *buf2++ = t0; *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = dtgbuf[h ^ lol][1]; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -12299,6 +32864,15 @@ static void lts_aga_fm2_n0_p4_ishres_dhires_filtered_genlock(void) *buf1++ = t2; *buf2++ = t2; *gbuf++ = dtgbuf[h ^ lol][2]; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + *gbuf++ = dtgbuf[h ^ lol][3]; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -12322,7 +32896,11 @@ static void lts_aga_fm2_n0_p4_ishres_dhires_filtered_genlock(void) denise_cck++; } } -static void lts_aga_fm2_n1_p4_ishres_dhires_genlock(void) +static void lts_aga_fm2_kehb0_p8_ilores_dshres_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm2_kehb1_p8_ilores_dshres_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -12333,7 +32911,6 @@ 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; @@ -12341,55 +32918,41 @@ static void lts_aga_fm2_n1_p4_ishres_dhires_genlock(void) if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); - } - last_bpl_pix = pix0; } - shiftbpl4_64(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4e_64(); - } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl4o_64(); + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; } - loaded_pix = getbpl4_64(); - loaded_pixs[0] = loaded_pix; - shiftbpl4_64(); - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u8 gpix2 = 0xff; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { gpix2 = get_genlock_transparency_border(); dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; - gpix2 = get_genlock_transparency(pix2 ^ bplcon4_denise_xor_val); - } - last_bpl_pix = pix2; - } - shiftbpl4_64(); - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4e_64(); } - if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { - copybpl4o_64(); + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; } - loaded_pix = getbpl4_64(); - loaded_pixs[2] = loaded_pix; - shiftbpl4_64(); - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; + dtbuf[h][1] = dpix_val1; + dtgbuf[h][1] = gpix1; dtbuf[h][2] = dpix_val2; dtgbuf[h][2] = gpix2; + dtbuf[h][3] = dpix_val3; + dtgbuf[h][3] = gpix3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -12399,6 +32962,15 @@ static void lts_aga_fm2_n1_p4_ishres_dhires_genlock(void) *buf1++ = t0; *buf2++ = t0; *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = dtgbuf[h ^ lol][1]; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -12408,6 +32980,15 @@ static void lts_aga_fm2_n1_p4_ishres_dhires_genlock(void) *buf1++ = t2; *buf2++ = t2; *gbuf++ = dtgbuf[h ^ lol][2]; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + *gbuf++ = dtgbuf[h ^ lol][3]; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -12431,7 +33012,11 @@ static void lts_aga_fm2_n1_p4_ishres_dhires_genlock(void) denise_cck++; } } -static void lts_aga_fm2_n1_p4_ishres_dhires_filtered_genlock(void) +static void lts_aga_fm2_kehb1_p8_ilores_dshres_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm2_n0_p4_ilores_dshres_spr_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -12444,6 +33029,7 @@ static void lts_aga_fm2_n1_p4_ishres_dhires_filtered_genlock(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; @@ -12458,15 +33044,28 @@ static void lts_aga_fm2_n1_p4_ishres_dhires_filtered_genlock(void) } last_bpl_pix = pix0; } - shiftbpl4_64(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4e_64(); + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4_64(); + loaded_pix = getbpl4_64(); } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl4o_64(); + if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { + copybpl4_64(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4_64(); + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } } - loaded_pix = getbpl4_64(); loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u8 gpix1 = 0xff; uae_u32 dpix_val1 = BLANK_COLOR; @@ -12481,16 +33080,28 @@ static void lts_aga_fm2_n1_p4_ishres_dhires_filtered_genlock(void) } last_bpl_pix = pix1; } - shiftbpl4_64(); - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4e_64(); + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4_64(); + loaded_pix = getbpl4_64(); } - if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { - copybpl4o_64(); + if (bpldat_copy[0] && ((cmp | 1) & 255) == bplcon1_shift_full_masked[0]) { + copybpl4_64(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4_64(); + } + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } } - loaded_pix = getbpl4_64(); loaded_pixs[1] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u8 gpix2 = 0xff; uae_u32 dpix_val2 = BLANK_COLOR; @@ -12505,15 +33116,28 @@ static void lts_aga_fm2_n1_p4_ishres_dhires_filtered_genlock(void) } last_bpl_pix = pix2; } - shiftbpl4_64(); - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4e_64(); + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4_64(); + loaded_pix = getbpl4_64(); } - if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { - copybpl4o_64(); + if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { + copybpl4_64(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4_64(); + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } } - loaded_pix = getbpl4_64(); loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u8 gpix3 = 0xff; uae_u32 dpix_val3 = BLANK_COLOR; @@ -12528,25 +33152,68 @@ static void lts_aga_fm2_n1_p4_ishres_dhires_filtered_genlock(void) } last_bpl_pix = pix3; } - shiftbpl4_64(); - if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4e_64(); + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4_64(); + loaded_pix = getbpl4_64(); } - if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) { - copybpl4o_64(); + if (bpldat_copy[0] && ((cmp | 3) & 255) == bplcon1_shift_full_masked[0]) { + copybpl4_64(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4_64(); + } + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } } - loaded_pix = getbpl4_64(); loaded_pixs[3] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - dpix_val0 = filter_pixel(dpix_val0, dpix_val1); - gpix0 = filter_pixel_genlock(gpix0, gpix1); + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; - dpix_val2 = filter_pixel(dpix_val2, dpix_val3); - gpix2 = filter_pixel_genlock(gpix2, gpix3); + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + gpix1 = get_genlock_transparency(spix1); + + } + } + dtbuf[h][1] = dpix_val1; + dtgbuf[h][1] = gpix1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } dtbuf[h][2] = dpix_val2; dtgbuf[h][2] = gpix2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + gpix3 = get_genlock_transparency(spix3); + + } + } + dtbuf[h][3] = dpix_val3; + dtgbuf[h][3] = gpix3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -12556,6 +33223,15 @@ static void lts_aga_fm2_n1_p4_ishres_dhires_filtered_genlock(void) *buf1++ = t0; *buf2++ = t0; *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = dtgbuf[h ^ lol][1]; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -12565,6 +33241,15 @@ static void lts_aga_fm2_n1_p4_ishres_dhires_filtered_genlock(void) *buf1++ = t2; *buf2++ = t2; *gbuf++ = dtgbuf[h ^ lol][2]; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + *gbuf++ = dtgbuf[h ^ lol][3]; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -12588,7 +33273,11 @@ static void lts_aga_fm2_n1_p4_ishres_dhires_filtered_genlock(void) denise_cck++; } } -static void lts_aga_fm2_dpf0_p4_ishres_dhires_genlock(void) +static void lts_aga_fm2_n0_p4_ilores_dshres_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm2_n1_p4_ilores_dshres_spr_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -12601,6 +33290,7 @@ static void lts_aga_fm2_dpf0_p4_ishres_dhires_genlock(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; @@ -12610,24 +33300,91 @@ static void lts_aga_fm2_dpf0_p4_ishres_dhires_genlock(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - gpix0 = get_genlock_transparency(dpf_lookup[pix0]); + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); } last_bpl_pix = pix0; } - shiftbpl4_64(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4_64(); + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4e_64(); + loaded_pix = getbpl4_64(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl4o_64(); + loaded_pix = getbpl4_64(); + } + 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] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[1]) { + copybpl4o_64(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl4_64(); + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } } - loaded_pix = getbpl4_64(); loaded_pixs[0] = loaded_pix; - shiftbpl4_64(); - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; + gpix1 = get_genlock_transparency(pix1 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix1; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4e_64(); + loaded_pix = getbpl4_64(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl4o_64(); + loaded_pix = getbpl4_64(); + } + 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] && ((cmp | 1) & 255) == bplcon1_shift_full_masked[1]) { + copybpl4o_64(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl4_64(); + } + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } + } + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u8 gpix2 = 0xff; uae_u32 dpix_val2 = BLANK_COLOR; @@ -12637,29 +33394,131 @@ static void lts_aga_fm2_dpf0_p4_ishres_dhires_genlock(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; - gpix2 = get_genlock_transparency(dpf_lookup[pix2]); + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + gpix2 = get_genlock_transparency(pix2 ^ bplcon4_denise_xor_val); } last_bpl_pix = pix2; } - shiftbpl4_64(); - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4_64(); + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4e_64(); + loaded_pix = getbpl4_64(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl4o_64(); + loaded_pix = getbpl4_64(); + } + 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] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[1]) { + copybpl4o_64(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl4_64(); + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } } - loaded_pix = getbpl4_64(); loaded_pixs[2] = loaded_pix; - shiftbpl4_64(); - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; + gpix3 = get_genlock_transparency(pix3 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix3; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4e_64(); + loaded_pix = getbpl4_64(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl4o_64(); + loaded_pix = getbpl4_64(); + } + 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] && ((cmp | 3) & 255) == bplcon1_shift_full_masked[1]) { + copybpl4o_64(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl4_64(); + } + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } + } + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + gpix1 = get_genlock_transparency(spix1); + + } + } + dtbuf[h][1] = dpix_val1; + dtgbuf[h][1] = gpix1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } dtbuf[h][2] = dpix_val2; dtgbuf[h][2] = gpix2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + gpix3 = get_genlock_transparency(spix3); + + } + } + dtbuf[h][3] = dpix_val3; + dtgbuf[h][3] = gpix3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -12669,6 +33528,15 @@ static void lts_aga_fm2_dpf0_p4_ishres_dhires_genlock(void) *buf1++ = t0; *buf2++ = t0; *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = dtgbuf[h ^ lol][1]; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -12678,6 +33546,15 @@ static void lts_aga_fm2_dpf0_p4_ishres_dhires_genlock(void) *buf1++ = t2; *buf2++ = t2; *gbuf++ = dtgbuf[h ^ lol][2]; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + *gbuf++ = dtgbuf[h ^ lol][3]; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -12701,7 +33578,11 @@ static void lts_aga_fm2_dpf0_p4_ishres_dhires_genlock(void) denise_cck++; } } -static void lts_aga_fm2_dpf0_p4_ishres_dhires_filtered_genlock(void) +static void lts_aga_fm2_n1_p4_ilores_dshres_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm2_dpf0_p4_ilores_dshres_spr_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -12714,6 +33595,7 @@ static void lts_aga_fm2_dpf0_p4_ishres_dhires_filtered_genlock(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; @@ -12733,12 +33615,28 @@ static void lts_aga_fm2_dpf0_p4_ishres_dhires_filtered_genlock(void) } last_bpl_pix = pix0; } - shiftbpl4_64(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4_64(); + loaded_pix = getbpl4_64(); + } + if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { copybpl4_64(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4_64(); + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } } - loaded_pix = getbpl4_64(); loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u8 gpix1 = 0xff; uae_u32 dpix_val1 = BLANK_COLOR; @@ -12758,13 +33656,28 @@ static void lts_aga_fm2_dpf0_p4_ishres_dhires_filtered_genlock(void) } last_bpl_pix = pix1; } - shiftbpl4_64(); - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4_64(); + loaded_pix = getbpl4_64(); + } + if (bpldat_copy[0] && ((cmp | 1) & 255) == bplcon1_shift_full_masked[0]) { copybpl4_64(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4_64(); + } + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } } - loaded_pix = getbpl4_64(); loaded_pixs[1] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u8 gpix2 = 0xff; uae_u32 dpix_val2 = BLANK_COLOR; @@ -12784,12 +33697,28 @@ static void lts_aga_fm2_dpf0_p4_ishres_dhires_filtered_genlock(void) } last_bpl_pix = pix2; } - shiftbpl4_64(); - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4_64(); + loaded_pix = getbpl4_64(); + } + if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { copybpl4_64(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4_64(); + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } } - loaded_pix = getbpl4_64(); loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u8 gpix3 = 0xff; uae_u32 dpix_val3 = BLANK_COLOR; @@ -12809,22 +33738,68 @@ static void lts_aga_fm2_dpf0_p4_ishres_dhires_filtered_genlock(void) } last_bpl_pix = pix3; } - shiftbpl4_64(); - if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4_64(); + loaded_pix = getbpl4_64(); + } + if (bpldat_copy[0] && ((cmp | 3) & 255) == bplcon1_shift_full_masked[0]) { copybpl4_64(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4_64(); + } + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } } - loaded_pix = getbpl4_64(); loaded_pixs[3] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - dpix_val0 = filter_pixel(dpix_val0, dpix_val1); - gpix0 = filter_pixel_genlock(gpix0, gpix1); + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; - dpix_val2 = filter_pixel(dpix_val2, dpix_val3); - gpix2 = filter_pixel_genlock(gpix2, gpix3); + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + gpix1 = get_genlock_transparency(spix1); + + } + } + dtbuf[h][1] = dpix_val1; + dtgbuf[h][1] = gpix1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } dtbuf[h][2] = dpix_val2; dtgbuf[h][2] = gpix2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + gpix3 = get_genlock_transparency(spix3); + + } + } + dtbuf[h][3] = dpix_val3; + dtgbuf[h][3] = gpix3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -12834,6 +33809,15 @@ static void lts_aga_fm2_dpf0_p4_ishres_dhires_filtered_genlock(void) *buf1++ = t0; *buf2++ = t0; *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = dtgbuf[h ^ lol][1]; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -12843,6 +33827,15 @@ static void lts_aga_fm2_dpf0_p4_ishres_dhires_filtered_genlock(void) *buf1++ = t2; *buf2++ = t2; *gbuf++ = dtgbuf[h ^ lol][2]; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + *gbuf++ = dtgbuf[h ^ lol][3]; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -12866,7 +33859,11 @@ static void lts_aga_fm2_dpf0_p4_ishres_dhires_filtered_genlock(void) denise_cck++; } } -static void lts_aga_fm2_dpf1_p4_ishres_dhires_genlock(void) +static void lts_aga_fm2_dpf0_p4_ilores_dshres_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm2_dpf1_p4_ilores_dshres_spr_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -12879,6 +33876,7 @@ static void lts_aga_fm2_dpf1_p4_ishres_dhires_genlock(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; @@ -12898,17 +33896,91 @@ static void lts_aga_fm2_dpf1_p4_ishres_dhires_genlock(void) } last_bpl_pix = pix0; } - shiftbpl4_64(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4e_64(); + loaded_pix = getbpl4_64(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl4o_64(); + loaded_pix = getbpl4_64(); + } + 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] && ((cmp | 0) & 63) == 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(); + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } } - loaded_pix = getbpl4_64(); loaded_pixs[0] = loaded_pix; - shiftbpl4_64(); - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + uae_u8 val1 = dpf_lookup[pix1]; + if (dpf_lookup_no[pix1]) { + val1 += dblpfofs[bpldualpf2of]; + } + val1 ^= bplcon4_denise_xor_val; + dpix_val1 = denise_colors.acolors[val1]; + gpix1 = get_genlock_transparency(dpf_lookup[pix1]); + } + last_bpl_pix = pix1; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4e_64(); + loaded_pix = getbpl4_64(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl4o_64(); + loaded_pix = getbpl4_64(); + } + 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] && ((cmp | 1) & 255) == bplcon1_shift_full_masked[1]) { + copybpl4o_64(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl4_64(); + } + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } + } + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u8 gpix2 = 0xff; uae_u32 dpix_val2 = BLANK_COLOR; @@ -12928,22 +34000,131 @@ static void lts_aga_fm2_dpf1_p4_ishres_dhires_genlock(void) } last_bpl_pix = pix2; } - shiftbpl4_64(); - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4e_64(); + loaded_pix = getbpl4_64(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl4o_64(); + loaded_pix = getbpl4_64(); + } + 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] && ((cmp | 2) & 63) == 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(); + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } } - loaded_pix = getbpl4_64(); loaded_pixs[2] = loaded_pix; - shiftbpl4_64(); - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + uae_u8 val3 = dpf_lookup[pix3]; + if (dpf_lookup_no[pix3]) { + val3 += dblpfofs[bpldualpf2of]; + } + val3 ^= bplcon4_denise_xor_val; + dpix_val3 = denise_colors.acolors[val3]; + gpix3 = get_genlock_transparency(dpf_lookup[pix3]); + } + last_bpl_pix = pix3; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4e_64(); + loaded_pix = getbpl4_64(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl4o_64(); + loaded_pix = getbpl4_64(); + } + 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] && ((cmp | 3) & 255) == bplcon1_shift_full_masked[1]) { + copybpl4o_64(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl4_64(); + } + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } + } + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + gpix1 = get_genlock_transparency(spix1); + + } + } + dtbuf[h][1] = dpix_val1; + dtgbuf[h][1] = gpix1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } dtbuf[h][2] = dpix_val2; dtgbuf[h][2] = gpix2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + gpix3 = get_genlock_transparency(spix3); + + } + } + dtbuf[h][3] = dpix_val3; + dtgbuf[h][3] = gpix3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -12953,6 +34134,15 @@ static void lts_aga_fm2_dpf1_p4_ishres_dhires_genlock(void) *buf1++ = t0; *buf2++ = t0; *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = dtgbuf[h ^ lol][1]; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -12962,6 +34152,15 @@ static void lts_aga_fm2_dpf1_p4_ishres_dhires_genlock(void) *buf1++ = t2; *buf2++ = t2; *gbuf++ = dtgbuf[h ^ lol][2]; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + *gbuf++ = dtgbuf[h ^ lol][3]; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -12985,7 +34184,11 @@ static void lts_aga_fm2_dpf1_p4_ishres_dhires_genlock(void) denise_cck++; } } -static void lts_aga_fm2_dpf1_p4_ishres_dhires_filtered_genlock(void) +static void lts_aga_fm2_dpf1_p4_ilores_dshres_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm2_ehb0_p4_ilores_dshres_spr_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -12996,131 +34199,116 @@ 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; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - gpix0 = get_genlock_transparency(dpf_lookup[pix0]); - } - last_bpl_pix = pix0; - } - shiftbpl4_64(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4e_64(); } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl4o_64(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } } - loaded_pix = getbpl4_64(); - loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u8 gpix1 = 0xff; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { gpix1 = get_genlock_transparency_border(); dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - if (dpf_lookup_no[pix1]) { - val1 += dblpfofs[bpldualpf2of]; - } - val1 ^= bplcon4_denise_xor_val; - dpix_val1 = denise_colors.acolors[val1]; - gpix1 = get_genlock_transparency(dpf_lookup[pix1]); - } - last_bpl_pix = pix1; } - shiftbpl4_64(); - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4e_64(); - } - if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { - copybpl4o_64(); + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } } - loaded_pix = getbpl4_64(); - loaded_pixs[1] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u8 gpix2 = 0xff; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { gpix2 = get_genlock_transparency_border(); dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; - gpix2 = get_genlock_transparency(dpf_lookup[pix2]); - } - last_bpl_pix = pix2; - } - shiftbpl4_64(); - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4e_64(); } - if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { - copybpl4o_64(); + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } } - loaded_pix = getbpl4_64(); - loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u8 gpix3 = 0xff; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { gpix3 = get_genlock_transparency_border(); dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - uae_u8 val3 = dpf_lookup[pix3]; - if (dpf_lookup_no[pix3]) { - val3 += dblpfofs[bpldualpf2of]; - } - val3 ^= bplcon4_denise_xor_val; - dpix_val3 = denise_colors.acolors[val3]; - gpix3 = get_genlock_transparency(dpf_lookup[pix3]); - } - last_bpl_pix = pix3; - } - shiftbpl4_64(); - if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4e_64(); } - if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) { - copybpl4o_64(); + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } } - loaded_pix = getbpl4_64(); - loaded_pixs[3] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - dpix_val0 = filter_pixel(dpix_val0, dpix_val1); - gpix0 = filter_pixel_genlock(gpix0, gpix1); + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; - dpix_val2 = filter_pixel(dpix_val2, dpix_val3); - gpix2 = filter_pixel_genlock(gpix2, gpix3); + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + gpix1 = get_genlock_transparency(spix1); + + } + } + dtbuf[h][1] = dpix_val1; + dtgbuf[h][1] = gpix1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } dtbuf[h][2] = dpix_val2; dtgbuf[h][2] = gpix2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + gpix3 = get_genlock_transparency(spix3); + + } + } + dtbuf[h][3] = dpix_val3; + dtgbuf[h][3] = gpix3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -13130,6 +34318,15 @@ static void lts_aga_fm2_dpf1_p4_ishres_dhires_filtered_genlock(void) *buf1++ = t0; *buf2++ = t0; *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = dtgbuf[h ^ lol][1]; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -13139,6 +34336,15 @@ static void lts_aga_fm2_dpf1_p4_ishres_dhires_filtered_genlock(void) *buf1++ = t2; *buf2++ = t2; *gbuf++ = dtgbuf[h ^ lol][2]; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + *gbuf++ = dtgbuf[h ^ lol][3]; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -13162,55 +34368,11 @@ static void lts_aga_fm2_dpf1_p4_ishres_dhires_filtered_genlock(void) denise_cck++; } } -static void lts_aga_fm2_ehb0_p4_ishres_dhires_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb0_p4_ishres_dhires_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb1_p4_ishres_dhires_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb1_p4_ishres_dhires_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_ham0_p4_ishres_dhires_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_ham0_p4_ishres_dhires_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_ham1_p4_ishres_dhires_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_ham1_p4_ishres_dhires_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb0_p4_ishres_dhires_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb0_p4_ishres_dhires_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb1_p4_ishres_dhires_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb1_p4_ishres_dhires_filtered_genlock(void) +static void lts_aga_fm2_ehb0_p4_ilores_dshres_spr_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm2_n0_p8_ishres_dhires_genlock(void) +static void lts_aga_fm2_ehb1_p4_ilores_dshres_spr_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -13221,57 +34383,116 @@ 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; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; } - last_bpl_pix = pix0; } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; } - loaded_pix = getbpl8_64(); - loaded_pixs[0] = loaded_pix; - shiftbpl8_64(); - internal_pixel_cnt += 2; + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } + } + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u8 gpix2 = 0xff; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { gpix2 = get_genlock_transparency_border(); dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; - gpix2 = get_genlock_transparency(pix2 ^ bplcon4_denise_xor_val); + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; } - last_bpl_pix = pix2; } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; } - loaded_pix = getbpl8_64(); - loaded_pixs[2] = loaded_pix; - shiftbpl8_64(); - internal_pixel_cnt += 2; + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } + } + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + gpix1 = get_genlock_transparency(spix1); + + } + } + dtbuf[h][1] = dpix_val1; + dtgbuf[h][1] = gpix1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } dtbuf[h][2] = dpix_val2; dtgbuf[h][2] = gpix2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + gpix3 = get_genlock_transparency(spix3); + + } + } + dtbuf[h][3] = dpix_val3; + dtgbuf[h][3] = gpix3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -13281,6 +34502,15 @@ static void lts_aga_fm2_n0_p8_ishres_dhires_genlock(void) *buf1++ = t0; *buf2++ = t0; *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = dtgbuf[h ^ lol][1]; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -13290,6 +34520,15 @@ static void lts_aga_fm2_n0_p8_ishres_dhires_genlock(void) *buf1++ = t2; *buf2++ = t2; *gbuf++ = dtgbuf[h ^ lol][2]; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + *gbuf++ = dtgbuf[h ^ lol][3]; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -13313,7 +34552,11 @@ static void lts_aga_fm2_n0_p8_ishres_dhires_genlock(void) denise_cck++; } } -static void lts_aga_fm2_n0_p8_ishres_dhires_filtered_genlock(void) +static void lts_aga_fm2_ehb1_p4_ilores_dshres_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm2_ham0_p4_ilores_dshres_spr_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -13324,99 +34567,116 @@ 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; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); - } - last_bpl_pix = pix0; } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } } - loaded_pix = getbpl8_64(); - loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u8 gpix1 = 0xff; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { gpix1 = get_genlock_transparency_border(); dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; - gpix1 = get_genlock_transparency(pix1 ^ bplcon4_denise_xor_val); - } - last_bpl_pix = pix1; } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } } - loaded_pix = getbpl8_64(); - loaded_pixs[1] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u8 gpix2 = 0xff; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { gpix2 = get_genlock_transparency_border(); dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; - gpix2 = get_genlock_transparency(pix2 ^ bplcon4_denise_xor_val); - } - last_bpl_pix = pix2; } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } } - loaded_pix = getbpl8_64(); - loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u8 gpix3 = 0xff; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { gpix3 = get_genlock_transparency_border(); dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; - gpix3 = get_genlock_transparency(pix3 ^ bplcon4_denise_xor_val); - } - last_bpl_pix = pix3; } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } } - loaded_pix = getbpl8_64(); - loaded_pixs[3] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - dpix_val0 = filter_pixel(dpix_val0, dpix_val1); - gpix0 = filter_pixel_genlock(gpix0, gpix1); + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; - dpix_val2 = filter_pixel(dpix_val2, dpix_val3); - gpix2 = filter_pixel_genlock(gpix2, gpix3); + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + gpix1 = get_genlock_transparency(spix1); + + } + } + dtbuf[h][1] = dpix_val1; + dtgbuf[h][1] = gpix1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } dtbuf[h][2] = dpix_val2; dtgbuf[h][2] = gpix2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + gpix3 = get_genlock_transparency(spix3); + + } + } + dtbuf[h][3] = dpix_val3; + dtgbuf[h][3] = gpix3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -13426,6 +34686,15 @@ static void lts_aga_fm2_n0_p8_ishres_dhires_filtered_genlock(void) *buf1++ = t0; *buf2++ = t0; *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = dtgbuf[h ^ lol][1]; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -13435,6 +34704,15 @@ static void lts_aga_fm2_n0_p8_ishres_dhires_filtered_genlock(void) *buf1++ = t2; *buf2++ = t2; *gbuf++ = dtgbuf[h ^ lol][2]; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + *gbuf++ = dtgbuf[h ^ lol][3]; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -13458,7 +34736,11 @@ static void lts_aga_fm2_n0_p8_ishres_dhires_filtered_genlock(void) denise_cck++; } } -static void lts_aga_fm2_n1_p8_ishres_dhires_genlock(void) +static void lts_aga_fm2_ham0_p4_ilores_dshres_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm2_ham1_p4_ilores_dshres_spr_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -13469,63 +34751,116 @@ 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; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; } - last_bpl_pix = pix0; } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e_64(); + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } } - loaded_pix = getbpl8_64(); - loaded_pixs[0] = loaded_pix; - shiftbpl8_64(); - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u8 gpix2 = 0xff; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { gpix2 = get_genlock_transparency_border(); dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; - gpix2 = get_genlock_transparency(pix2 ^ bplcon4_denise_xor_val); + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; } - last_bpl_pix = pix2; } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e_64(); + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; } - if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } } - loaded_pix = getbpl8_64(); - loaded_pixs[2] = loaded_pix; - shiftbpl8_64(); - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + gpix1 = get_genlock_transparency(spix1); + + } + } + dtbuf[h][1] = dpix_val1; + dtgbuf[h][1] = gpix1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } dtbuf[h][2] = dpix_val2; dtgbuf[h][2] = gpix2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + gpix3 = get_genlock_transparency(spix3); + + } + } + dtbuf[h][3] = dpix_val3; + dtgbuf[h][3] = gpix3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -13535,6 +34870,15 @@ static void lts_aga_fm2_n1_p8_ishres_dhires_genlock(void) *buf1++ = t0; *buf2++ = t0; *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = dtgbuf[h ^ lol][1]; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -13544,6 +34888,15 @@ static void lts_aga_fm2_n1_p8_ishres_dhires_genlock(void) *buf1++ = t2; *buf2++ = t2; *gbuf++ = dtgbuf[h ^ lol][2]; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + *gbuf++ = dtgbuf[h ^ lol][3]; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -13567,7 +34920,11 @@ static void lts_aga_fm2_n1_p8_ishres_dhires_genlock(void) denise_cck++; } } -static void lts_aga_fm2_n1_p8_ishres_dhires_filtered_genlock(void) +static void lts_aga_fm2_ham1_p4_ilores_dshres_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm2_kehb0_p4_ilores_dshres_spr_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -13578,111 +34935,116 @@ 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; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); - } - last_bpl_pix = pix0; - } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e_64(); } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } } - loaded_pix = getbpl8_64(); - loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u8 gpix1 = 0xff; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { gpix1 = get_genlock_transparency_border(); dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; - gpix1 = get_genlock_transparency(pix1 ^ bplcon4_denise_xor_val); - } - last_bpl_pix = pix1; - } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e_64(); } - if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } } - loaded_pix = getbpl8_64(); - loaded_pixs[1] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u8 gpix2 = 0xff; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { gpix2 = get_genlock_transparency_border(); dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; - gpix2 = get_genlock_transparency(pix2 ^ bplcon4_denise_xor_val); - } - last_bpl_pix = pix2; - } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e_64(); } - if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } } - loaded_pix = getbpl8_64(); - loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u8 gpix3 = 0xff; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { gpix3 = get_genlock_transparency_border(); dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; - gpix3 = get_genlock_transparency(pix3 ^ bplcon4_denise_xor_val); - } - last_bpl_pix = pix3; - } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e_64(); } - if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } } - loaded_pix = getbpl8_64(); - loaded_pixs[3] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - dpix_val0 = filter_pixel(dpix_val0, dpix_val1); - gpix0 = filter_pixel_genlock(gpix0, gpix1); + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; - dpix_val2 = filter_pixel(dpix_val2, dpix_val3); - gpix2 = filter_pixel_genlock(gpix2, gpix3); + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + gpix1 = get_genlock_transparency(spix1); + + } + } + dtbuf[h][1] = dpix_val1; + dtgbuf[h][1] = gpix1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } dtbuf[h][2] = dpix_val2; dtgbuf[h][2] = gpix2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + gpix3 = get_genlock_transparency(spix3); + + } + } + dtbuf[h][3] = dpix_val3; + dtgbuf[h][3] = gpix3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -13692,6 +35054,15 @@ static void lts_aga_fm2_n1_p8_ishres_dhires_filtered_genlock(void) *buf1++ = t0; *buf2++ = t0; *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = dtgbuf[h ^ lol][1]; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -13701,6 +35072,15 @@ static void lts_aga_fm2_n1_p8_ishres_dhires_filtered_genlock(void) *buf1++ = t2; *buf2++ = t2; *gbuf++ = dtgbuf[h ^ lol][2]; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + *gbuf++ = dtgbuf[h ^ lol][3]; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -13724,7 +35104,11 @@ static void lts_aga_fm2_n1_p8_ishres_dhires_filtered_genlock(void) denise_cck++; } } -static void lts_aga_fm2_dpf0_p8_ishres_dhires_genlock(void) +static void lts_aga_fm2_kehb0_p4_ilores_dshres_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm2_kehb1_p4_ilores_dshres_spr_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -13735,67 +35119,116 @@ 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; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - gpix0 = get_genlock_transparency(dpf_lookup[pix0]); - } - last_bpl_pix = pix0; } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } } - loaded_pix = getbpl8_64(); - loaded_pixs[0] = loaded_pix; - shiftbpl8_64(); - internal_pixel_cnt += 2; - uae_u8 pix2 = 0; - uae_u8 gpix2 = 0xff; - uae_u32 dpix_val2 = BLANK_COLOR; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { - gpix2 = get_genlock_transparency_border(); - dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; - gpix2 = get_genlock_transparency(dpf_lookup[pix2]); + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } + } + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; } - last_bpl_pix = pix2; } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; } - loaded_pix = getbpl8_64(); - loaded_pixs[2] = loaded_pix; - shiftbpl8_64(); - internal_pixel_cnt += 2; + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } + } + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + gpix1 = get_genlock_transparency(spix1); + + } + } + dtbuf[h][1] = dpix_val1; + dtgbuf[h][1] = gpix1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } dtbuf[h][2] = dpix_val2; dtgbuf[h][2] = gpix2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + gpix3 = get_genlock_transparency(spix3); + + } + } + dtbuf[h][3] = dpix_val3; + dtgbuf[h][3] = gpix3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -13805,6 +35238,15 @@ static void lts_aga_fm2_dpf0_p8_ishres_dhires_genlock(void) *buf1++ = t0; *buf2++ = t0; *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = dtgbuf[h ^ lol][1]; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -13814,6 +35256,15 @@ static void lts_aga_fm2_dpf0_p8_ishres_dhires_genlock(void) *buf1++ = t2; *buf2++ = t2; *gbuf++ = dtgbuf[h ^ lol][2]; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + *gbuf++ = dtgbuf[h ^ lol][3]; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -13837,7 +35288,11 @@ static void lts_aga_fm2_dpf0_p8_ishres_dhires_genlock(void) denise_cck++; } } -static void lts_aga_fm2_dpf0_p8_ishres_dhires_filtered_genlock(void) +static void lts_aga_fm2_kehb1_p4_ilores_dshres_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm2_n0_p8_ilores_dshres_spr_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -13850,6 +35305,7 @@ static void lts_aga_fm2_dpf0_p8_ishres_dhires_filtered_genlock(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; @@ -13859,22 +35315,33 @@ static void lts_aga_fm2_dpf0_p8_ishres_dhires_filtered_genlock(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - gpix0 = get_genlock_transparency(dpf_lookup[pix0]); + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); } last_bpl_pix = pix0; } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8_64(); + loaded_pix = getbpl8_64(); + } + if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { copybpl8_64(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8_64(); + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } } - loaded_pix = getbpl8_64(); loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u8 gpix1 = 0xff; uae_u32 dpix_val1 = BLANK_COLOR; @@ -13884,23 +35351,33 @@ static void lts_aga_fm2_dpf0_p8_ishres_dhires_filtered_genlock(void) if (denise_hdiw && bpl1dat_trigger) { pix1 = loaded_pixs[1]; clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - if (dpf_lookup_no[pix1]) { - val1 += dblpfofs[bpldualpf2of]; - } - val1 ^= bplcon4_denise_xor_val; - dpix_val1 = denise_colors.acolors[val1]; - gpix1 = get_genlock_transparency(dpf_lookup[pix1]); + dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; + gpix1 = get_genlock_transparency(pix1 ^ bplcon4_denise_xor_val); } last_bpl_pix = pix1; } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8_64(); + loaded_pix = getbpl8_64(); + } + if (bpldat_copy[0] && ((cmp | 1) & 255) == bplcon1_shift_full_masked[0]) { copybpl8_64(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8_64(); + } + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } } - loaded_pix = getbpl8_64(); loaded_pixs[1] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u8 gpix2 = 0xff; uae_u32 dpix_val2 = BLANK_COLOR; @@ -13910,22 +35387,33 @@ static void lts_aga_fm2_dpf0_p8_ishres_dhires_filtered_genlock(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; - gpix2 = get_genlock_transparency(dpf_lookup[pix2]); + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + gpix2 = get_genlock_transparency(pix2 ^ bplcon4_denise_xor_val); } last_bpl_pix = pix2; } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8_64(); + loaded_pix = getbpl8_64(); + } + if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { copybpl8_64(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8_64(); + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } } - loaded_pix = getbpl8_64(); loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u8 gpix3 = 0xff; uae_u32 dpix_val3 = BLANK_COLOR; @@ -13935,32 +35423,73 @@ static void lts_aga_fm2_dpf0_p8_ishres_dhires_filtered_genlock(void) if (denise_hdiw && bpl1dat_trigger) { pix3 = loaded_pixs[3]; clxdat |= bplcoltable[pix3]; - uae_u8 val3 = dpf_lookup[pix3]; - if (dpf_lookup_no[pix3]) { - val3 += dblpfofs[bpldualpf2of]; - } - val3 ^= bplcon4_denise_xor_val; - dpix_val3 = denise_colors.acolors[val3]; - gpix3 = get_genlock_transparency(dpf_lookup[pix3]); + dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; + gpix3 = get_genlock_transparency(pix3 ^ bplcon4_denise_xor_val); } last_bpl_pix = pix3; } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8_64(); + loaded_pix = getbpl8_64(); + } + if (bpldat_copy[0] && ((cmp | 3) & 255) == bplcon1_shift_full_masked[0]) { copybpl8_64(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8_64(); + } + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } } - loaded_pix = getbpl8_64(); loaded_pixs[3] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - dpix_val0 = filter_pixel(dpix_val0, dpix_val1); - gpix0 = filter_pixel_genlock(gpix0, gpix1); + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; - dpix_val2 = filter_pixel(dpix_val2, dpix_val3); - gpix2 = filter_pixel_genlock(gpix2, gpix3); + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + gpix1 = get_genlock_transparency(spix1); + + } + } + dtbuf[h][1] = dpix_val1; + dtgbuf[h][1] = gpix1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } dtbuf[h][2] = dpix_val2; dtgbuf[h][2] = gpix2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + gpix3 = get_genlock_transparency(spix3); + + } + } + dtbuf[h][3] = dpix_val3; + dtgbuf[h][3] = gpix3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -13970,6 +35499,15 @@ static void lts_aga_fm2_dpf0_p8_ishres_dhires_filtered_genlock(void) *buf1++ = t0; *buf2++ = t0; *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = dtgbuf[h ^ lol][1]; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -13979,6 +35517,15 @@ static void lts_aga_fm2_dpf0_p8_ishres_dhires_filtered_genlock(void) *buf1++ = t2; *buf2++ = t2; *gbuf++ = dtgbuf[h ^ lol][2]; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + *gbuf++ = dtgbuf[h ^ lol][3]; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -14002,7 +35549,11 @@ static void lts_aga_fm2_dpf0_p8_ishres_dhires_filtered_genlock(void) denise_cck++; } } -static void lts_aga_fm2_dpf1_p8_ishres_dhires_genlock(void) +static void lts_aga_fm2_n0_p8_ilores_dshres_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm2_n1_p8_ilores_dshres_spr_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -14015,6 +35566,7 @@ static void lts_aga_fm2_dpf1_p8_ishres_dhires_genlock(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; @@ -14024,27 +35576,91 @@ static void lts_aga_fm2_dpf1_p8_ishres_dhires_genlock(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - gpix0 = get_genlock_transparency(dpf_lookup[pix0]); + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); } last_bpl_pix = pix0; } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8e_64(); + loaded_pix = getbpl8_64(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl8o_64(); + loaded_pix = getbpl8_64(); + } + 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] && ((cmp | 0) & 63) == 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(); + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } } - loaded_pix = getbpl8_64(); loaded_pixs[0] = loaded_pix; - shiftbpl8_64(); - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; + gpix1 = get_genlock_transparency(pix1 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix1; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8e_64(); + loaded_pix = getbpl8_64(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl8o_64(); + loaded_pix = getbpl8_64(); + } + 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] && ((cmp | 1) & 255) == bplcon1_shift_full_masked[1]) { + copybpl8o_64(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl8_64(); + } + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } + } + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u8 gpix2 = 0xff; uae_u32 dpix_val2 = BLANK_COLOR; @@ -14054,32 +35670,131 @@ static void lts_aga_fm2_dpf1_p8_ishres_dhires_genlock(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; - gpix2 = get_genlock_transparency(dpf_lookup[pix2]); + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + gpix2 = get_genlock_transparency(pix2 ^ bplcon4_denise_xor_val); } last_bpl_pix = pix2; } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8e_64(); + loaded_pix = getbpl8_64(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl8o_64(); + loaded_pix = getbpl8_64(); + } + 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] && ((cmp | 2) & 63) == 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(); + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } } - loaded_pix = getbpl8_64(); loaded_pixs[2] = loaded_pix; - shiftbpl8_64(); - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; + gpix3 = get_genlock_transparency(pix3 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix3; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8e_64(); + loaded_pix = getbpl8_64(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl8o_64(); + loaded_pix = getbpl8_64(); + } + 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] && ((cmp | 3) & 255) == bplcon1_shift_full_masked[1]) { + copybpl8o_64(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl8_64(); + } + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } + } + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + gpix1 = get_genlock_transparency(spix1); + + } + } + dtbuf[h][1] = dpix_val1; + dtgbuf[h][1] = gpix1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } dtbuf[h][2] = dpix_val2; dtgbuf[h][2] = gpix2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + gpix3 = get_genlock_transparency(spix3); + + } + } + dtbuf[h][3] = dpix_val3; + dtgbuf[h][3] = gpix3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -14089,6 +35804,15 @@ static void lts_aga_fm2_dpf1_p8_ishres_dhires_genlock(void) *buf1++ = t0; *buf2++ = t0; *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = dtgbuf[h ^ lol][1]; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -14098,6 +35822,15 @@ static void lts_aga_fm2_dpf1_p8_ishres_dhires_genlock(void) *buf1++ = t2; *buf2++ = t2; *gbuf++ = dtgbuf[h ^ lol][2]; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + *gbuf++ = dtgbuf[h ^ lol][3]; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -14121,7 +35854,11 @@ static void lts_aga_fm2_dpf1_p8_ishres_dhires_genlock(void) denise_cck++; } } -static void lts_aga_fm2_dpf1_p8_ishres_dhires_filtered_genlock(void) +static void lts_aga_fm2_n1_p8_ilores_dshres_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm2_dpf0_p8_ilores_dshres_spr_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -14134,6 +35871,7 @@ static void lts_aga_fm2_dpf1_p8_ishres_dhires_filtered_genlock(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; @@ -14153,15 +35891,28 @@ static void lts_aga_fm2_dpf1_p8_ishres_dhires_filtered_genlock(void) } last_bpl_pix = pix0; } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e_64(); + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8_64(); + loaded_pix = getbpl8_64(); } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); + if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { + copybpl8_64(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8_64(); + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } } - loaded_pix = getbpl8_64(); loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u8 gpix1 = 0xff; uae_u32 dpix_val1 = BLANK_COLOR; @@ -14181,16 +35932,28 @@ static void lts_aga_fm2_dpf1_p8_ishres_dhires_filtered_genlock(void) } last_bpl_pix = pix1; } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e_64(); + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8_64(); + loaded_pix = getbpl8_64(); } - if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); + if (bpldat_copy[0] && ((cmp | 1) & 255) == bplcon1_shift_full_masked[0]) { + copybpl8_64(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8_64(); + } + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } } - loaded_pix = getbpl8_64(); loaded_pixs[1] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u8 gpix2 = 0xff; uae_u32 dpix_val2 = BLANK_COLOR; @@ -14210,15 +35973,28 @@ static void lts_aga_fm2_dpf1_p8_ishres_dhires_filtered_genlock(void) } last_bpl_pix = pix2; } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e_64(); + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8_64(); + loaded_pix = getbpl8_64(); } - if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); + if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { + copybpl8_64(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8_64(); + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } } - loaded_pix = getbpl8_64(); loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u8 gpix3 = 0xff; uae_u32 dpix_val3 = BLANK_COLOR; @@ -14238,25 +36014,68 @@ static void lts_aga_fm2_dpf1_p8_ishres_dhires_filtered_genlock(void) } last_bpl_pix = pix3; } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e_64(); + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8_64(); + loaded_pix = getbpl8_64(); } - if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); + if (bpldat_copy[0] && ((cmp | 3) & 255) == bplcon1_shift_full_masked[0]) { + copybpl8_64(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8_64(); + } + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } } - loaded_pix = getbpl8_64(); loaded_pixs[3] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - dpix_val0 = filter_pixel(dpix_val0, dpix_val1); - gpix0 = filter_pixel_genlock(gpix0, gpix1); + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; - dpix_val2 = filter_pixel(dpix_val2, dpix_val3); - gpix2 = filter_pixel_genlock(gpix2, gpix3); + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + gpix1 = get_genlock_transparency(spix1); + + } + } + dtbuf[h][1] = dpix_val1; + dtgbuf[h][1] = gpix1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } dtbuf[h][2] = dpix_val2; dtgbuf[h][2] = gpix2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + gpix3 = get_genlock_transparency(spix3); + + } + } + dtbuf[h][3] = dpix_val3; + dtgbuf[h][3] = gpix3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -14266,6 +36085,15 @@ static void lts_aga_fm2_dpf1_p8_ishres_dhires_filtered_genlock(void) *buf1++ = t0; *buf2++ = t0; *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = dtgbuf[h ^ lol][1]; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -14275,6 +36103,15 @@ static void lts_aga_fm2_dpf1_p8_ishres_dhires_filtered_genlock(void) *buf1++ = t2; *buf2++ = t2; *gbuf++ = dtgbuf[h ^ lol][2]; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + *gbuf++ = dtgbuf[h ^ lol][3]; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -14298,23 +36135,11 @@ static void lts_aga_fm2_dpf1_p8_ishres_dhires_filtered_genlock(void) denise_cck++; } } -static void lts_aga_fm2_ehb0_p8_ishres_dhires_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb0_p8_ishres_dhires_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb1_p8_ishres_dhires_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb1_p8_ishres_dhires_filtered_genlock(void) +static void lts_aga_fm2_dpf0_p8_ilores_dshres_spr_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm2_ham0_p8_ishres_dhires_genlock(void) +static void lts_aga_fm2_dpf1_p8_ilores_dshres_spr_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -14327,6 +36152,7 @@ static void lts_aga_fm2_ham0_p8_ishres_dhires_genlock(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; @@ -14336,152 +36162,49 @@ static void lts_aga_fm2_ham0_p8_ishres_dhires_genlock(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - dpix_val0 = decode_ham_pixel_aga(pix0); - gpix0 = get_genlock_transparency((pix0 >> 2) & 63); + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + gpix0 = get_genlock_transparency(dpf_lookup[pix0]); } last_bpl_pix = pix0; } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); - } - loaded_pix = getbpl8_64(); - loaded_pixs[0] = loaded_pix; - uae_u8 pix1 = 0; - uae_u8 gpix1 = 0xff; - uae_u32 dpix_val1 = BLANK_COLOR; - if (!denise_blank_active) { - dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - decode_ham_pixel_aga(pix1); - } - last_bpl_pix = pix1; - } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); - } - loaded_pix = getbpl8_64(); - loaded_pixs[1] = loaded_pix; - internal_pixel_cnt += 2; - uae_u8 pix2 = 0; - uae_u8 gpix2 = 0xff; - uae_u32 dpix_val2 = BLANK_COLOR; - if (!denise_blank_active) { - gpix2 = get_genlock_transparency_border(); - dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = decode_ham_pixel_aga(pix2); - gpix2 = get_genlock_transparency((pix2 >> 2) & 63); - } - last_bpl_pix = pix2; - } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); - } - loaded_pix = getbpl8_64(); - loaded_pixs[2] = loaded_pix; - uae_u8 pix3 = 0; - uae_u8 gpix3 = 0xff; - uae_u32 dpix_val3 = BLANK_COLOR; - if (!denise_blank_active) { - dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - decode_ham_pixel_aga(pix3); - } - last_bpl_pix = pix3; + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8e_64(); + loaded_pix = getbpl8_64(); } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl8o_64(); + loaded_pix = getbpl8_64(); } - loaded_pix = getbpl8_64(); - loaded_pixs[3] = loaded_pix; - internal_pixel_cnt += 2; - if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - dtbuf[h][0] = dpix_val0; - dtgbuf[h][0] = gpix0; - dtbuf[h][2] = dpix_val2; - dtgbuf[h][2] = gpix2; - uae_u32 t0 = dtbuf[h ^ lol][0]; - #ifdef DEBUGGER - if (decode_specials_debug) { - t0 = decode_denise_specials_debug(t0, cnt + 0); - } - #endif - *buf1++ = t0; - *buf2++ = t0; - *gbuf++ = dtgbuf[h ^ lol][0]; - uae_u32 t2 = dtbuf[h ^ lol][2]; - #ifdef DEBUGGER - if (decode_specials_debug) { - t2 = decode_denise_specials_debug(t2, cnt + 2); - } - #endif - *buf1++ = t2; - *buf2++ = t2; - *gbuf++ = dtgbuf[h ^ lol][2]; + if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { + copybpl8e_64(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8_64(); } - sprites_hidden = sprites_hidden2; - #ifdef DEBUGGER - *debug_dma_dhpos_odd = denise_hcounter; - #endif - denise_hcounter_cmp++; - denise_hcounter_cmp &= 511; - denise_hcounter++; - denise_hcounter &= 511; - denise_hcounter_next++; - denise_hcounter_next &= 511; - } - denise_pixtotal++; - if (denise_pixtotal == 0) { - internal_pixel_start_cnt = internal_pixel_cnt; - } - denise_hcounter = denise_hcounter_new; - if (denise_accurate_mode) { - denise_hcounter_cmp = denise_hcounter_new; - } - denise_cck++; - } -} -static void lts_aga_fm2_ham0_p8_ishres_dhires_filtered_genlock(void) -{ - while (denise_cck < denise_endcycle) { - do_denise_cck(denise_linecnt, denise_startpos, denise_cck); - if (lts_changed) return; - for (int h = 0; h < 2; h++) { - if (h) { - denise_hcounter_next = denise_hcounter_new; + if (bpldat_copy[1] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[1]) { + copybpl8o_64(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl8_64(); } - int cnt = denise_hcounter << 2; - int cnt_next = denise_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; - uae_u32 dpix_val0 = BLANK_COLOR; - if (!denise_blank_active) { - gpix0 = get_genlock_transparency_border(); - dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = decode_ham_pixel_aga(pix0); - gpix0 = get_genlock_transparency((pix0 >> 2) & 63); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; } - last_bpl_pix = pix0; - } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); } - loaded_pix = getbpl8_64(); loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u8 gpix1 = 0xff; uae_u32 dpix_val1 = BLANK_COLOR; @@ -14491,18 +36214,49 @@ static void lts_aga_fm2_ham0_p8_ishres_dhires_filtered_genlock(void) if (denise_hdiw && bpl1dat_trigger) { pix1 = loaded_pixs[1]; clxdat |= bplcoltable[pix1]; - dpix_val1 = decode_ham_pixel_aga(pix1); - gpix1 = get_genlock_transparency((pix1 >> 2) & 63); + uae_u8 val1 = dpf_lookup[pix1]; + if (dpf_lookup_no[pix1]) { + val1 += dblpfofs[bpldualpf2of]; + } + val1 ^= bplcon4_denise_xor_val; + dpix_val1 = denise_colors.acolors[val1]; + gpix1 = get_genlock_transparency(dpf_lookup[pix1]); } last_bpl_pix = pix1; } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8e_64(); + loaded_pix = getbpl8_64(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl8o_64(); + loaded_pix = getbpl8_64(); + } + 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] && ((cmp | 1) & 255) == bplcon1_shift_full_masked[1]) { + copybpl8o_64(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl8_64(); + } + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } } - loaded_pix = getbpl8_64(); loaded_pixs[1] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u8 gpix2 = 0xff; uae_u32 dpix_val2 = BLANK_COLOR; @@ -14512,17 +36266,49 @@ static void lts_aga_fm2_ham0_p8_ishres_dhires_filtered_genlock(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - dpix_val2 = decode_ham_pixel_aga(pix2); - gpix2 = get_genlock_transparency((pix2 >> 2) & 63); + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; + gpix2 = get_genlock_transparency(dpf_lookup[pix2]); } last_bpl_pix = pix2; } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8e_64(); + loaded_pix = getbpl8_64(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl8o_64(); + loaded_pix = getbpl8_64(); + } + 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] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[1]) { + copybpl8o_64(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl8_64(); + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } } - loaded_pix = getbpl8_64(); loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u8 gpix3 = 0xff; uae_u32 dpix_val3 = BLANK_COLOR; @@ -14532,27 +36318,89 @@ static void lts_aga_fm2_ham0_p8_ishres_dhires_filtered_genlock(void) if (denise_hdiw && bpl1dat_trigger) { pix3 = loaded_pixs[3]; clxdat |= bplcoltable[pix3]; - dpix_val3 = decode_ham_pixel_aga(pix3); - gpix3 = get_genlock_transparency((pix3 >> 2) & 63); + uae_u8 val3 = dpf_lookup[pix3]; + if (dpf_lookup_no[pix3]) { + val3 += dblpfofs[bpldualpf2of]; + } + val3 ^= bplcon4_denise_xor_val; + dpix_val3 = denise_colors.acolors[val3]; + gpix3 = get_genlock_transparency(dpf_lookup[pix3]); } last_bpl_pix = pix3; } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8e_64(); + loaded_pix = getbpl8_64(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl8o_64(); + loaded_pix = getbpl8_64(); + } + 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] && ((cmp | 3) & 255) == bplcon1_shift_full_masked[1]) { + copybpl8o_64(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl8_64(); + } + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } } - loaded_pix = getbpl8_64(); loaded_pixs[3] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - dpix_val0 = filter_pixel(dpix_val0, dpix_val1); - gpix0 = filter_pixel_genlock(gpix0, gpix1); + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; - dpix_val2 = filter_pixel(dpix_val2, dpix_val3); - gpix2 = filter_pixel_genlock(gpix2, gpix3); + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + gpix1 = get_genlock_transparency(spix1); + + } + } + dtbuf[h][1] = dpix_val1; + dtgbuf[h][1] = gpix1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } dtbuf[h][2] = dpix_val2; dtgbuf[h][2] = gpix2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + gpix3 = get_genlock_transparency(spix3); + + } + } + dtbuf[h][3] = dpix_val3; + dtgbuf[h][3] = gpix3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -14562,6 +36410,15 @@ static void lts_aga_fm2_ham0_p8_ishres_dhires_filtered_genlock(void) *buf1++ = t0; *buf2++ = t0; *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = dtgbuf[h ^ lol][1]; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -14571,6 +36428,15 @@ static void lts_aga_fm2_ham0_p8_ishres_dhires_filtered_genlock(void) *buf1++ = t2; *buf2++ = t2; *gbuf++ = dtgbuf[h ^ lol][2]; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + *gbuf++ = dtgbuf[h ^ lol][3]; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -14594,7 +36460,11 @@ static void lts_aga_fm2_ham0_p8_ishres_dhires_filtered_genlock(void) denise_cck++; } } -static void lts_aga_fm2_ham1_p8_ishres_dhires_genlock(void) +static void lts_aga_fm2_dpf1_p8_ilores_dshres_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm2_ehb0_p8_ilores_dshres_spr_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -14605,101 +36475,116 @@ 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; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = decode_ham_pixel_aga(pix0); - gpix0 = get_genlock_transparency((pix0 >> 2) & 63); - } - last_bpl_pix = pix0; - } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e_64(); } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } } - loaded_pix = getbpl8_64(); - loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u8 gpix1 = 0xff; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - decode_ham_pixel_aga(pix1); - } - last_bpl_pix = pix1; } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e_64(); - } - if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } } - loaded_pix = getbpl8_64(); - loaded_pixs[1] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u8 gpix2 = 0xff; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { gpix2 = get_genlock_transparency_border(); dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = decode_ham_pixel_aga(pix2); - gpix2 = get_genlock_transparency((pix2 >> 2) & 63); - } - last_bpl_pix = pix2; - } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e_64(); } - if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } } - loaded_pix = getbpl8_64(); - loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u8 gpix3 = 0xff; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - decode_ham_pixel_aga(pix3); - } - last_bpl_pix = pix3; } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e_64(); - } - if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } } - loaded_pix = getbpl8_64(); - loaded_pixs[3] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + gpix1 = get_genlock_transparency(spix1); + + } + } + dtbuf[h][1] = dpix_val1; + dtgbuf[h][1] = gpix1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } dtbuf[h][2] = dpix_val2; dtgbuf[h][2] = gpix2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + gpix3 = get_genlock_transparency(spix3); + + } + } + dtbuf[h][3] = dpix_val3; + dtgbuf[h][3] = gpix3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -14709,6 +36594,15 @@ static void lts_aga_fm2_ham1_p8_ishres_dhires_genlock(void) *buf1++ = t0; *buf2++ = t0; *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = dtgbuf[h ^ lol][1]; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -14718,6 +36612,15 @@ static void lts_aga_fm2_ham1_p8_ishres_dhires_genlock(void) *buf1++ = t2; *buf2++ = t2; *gbuf++ = dtgbuf[h ^ lol][2]; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + *gbuf++ = dtgbuf[h ^ lol][3]; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -14741,7 +36644,11 @@ static void lts_aga_fm2_ham1_p8_ishres_dhires_genlock(void) denise_cck++; } } -static void lts_aga_fm2_ham1_p8_ishres_dhires_filtered_genlock(void) +static void lts_aga_fm2_ehb0_p8_ilores_dshres_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm2_ehb1_p8_ilores_dshres_spr_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -14752,111 +36659,116 @@ 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; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = decode_ham_pixel_aga(pix0); - gpix0 = get_genlock_transparency((pix0 >> 2) & 63); - } - last_bpl_pix = pix0; - } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e_64(); } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } } - loaded_pix = getbpl8_64(); - loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u8 gpix1 = 0xff; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { gpix1 = get_genlock_transparency_border(); dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - dpix_val1 = decode_ham_pixel_aga(pix1); - gpix1 = get_genlock_transparency((pix1 >> 2) & 63); - } - last_bpl_pix = pix1; - } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e_64(); } - if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } } - loaded_pix = getbpl8_64(); - loaded_pixs[1] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u8 gpix2 = 0xff; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { gpix2 = get_genlock_transparency_border(); dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = decode_ham_pixel_aga(pix2); - gpix2 = get_genlock_transparency((pix2 >> 2) & 63); - } - last_bpl_pix = pix2; - } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e_64(); } - if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } } - loaded_pix = getbpl8_64(); - loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u8 gpix3 = 0xff; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { gpix3 = get_genlock_transparency_border(); dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - dpix_val3 = decode_ham_pixel_aga(pix3); - gpix3 = get_genlock_transparency((pix3 >> 2) & 63); - } - last_bpl_pix = pix3; - } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e_64(); } - if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } } - loaded_pix = getbpl8_64(); - loaded_pixs[3] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - dpix_val0 = filter_pixel(dpix_val0, dpix_val1); - gpix0 = filter_pixel_genlock(gpix0, gpix1); + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; - dpix_val2 = filter_pixel(dpix_val2, dpix_val3); - gpix2 = filter_pixel_genlock(gpix2, gpix3); + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + gpix1 = get_genlock_transparency(spix1); + + } + } + dtbuf[h][1] = dpix_val1; + dtgbuf[h][1] = gpix1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } dtbuf[h][2] = dpix_val2; dtgbuf[h][2] = gpix2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + gpix3 = get_genlock_transparency(spix3); + + } + } + dtbuf[h][3] = dpix_val3; + dtgbuf[h][3] = gpix3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -14866,6 +36778,15 @@ static void lts_aga_fm2_ham1_p8_ishres_dhires_filtered_genlock(void) *buf1++ = t0; *buf2++ = t0; *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = dtgbuf[h ^ lol][1]; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -14875,6 +36796,15 @@ static void lts_aga_fm2_ham1_p8_ishres_dhires_filtered_genlock(void) *buf1++ = t2; *buf2++ = t2; *gbuf++ = dtgbuf[h ^ lol][2]; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + *gbuf++ = dtgbuf[h ^ lol][3]; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -14898,23 +36828,11 @@ static void lts_aga_fm2_ham1_p8_ishres_dhires_filtered_genlock(void) denise_cck++; } } -static void lts_aga_fm2_kehb0_p8_ishres_dhires_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb0_p8_ishres_dhires_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb1_p8_ishres_dhires_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb1_p8_ishres_dhires_filtered_genlock(void) +static void lts_aga_fm2_ehb1_p8_ilores_dshres_spr_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm2_n0_p4_ishres_dhires_spr_genlock(void) +static void lts_aga_fm2_ham0_p8_ilores_dshres_spr_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -14937,16 +36855,22 @@ static void lts_aga_fm2_n0_p4_ishres_dhires_spr_genlock(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); + dpix_val0 = decode_ham_pixel_aga(pix0); + gpix0 = get_genlock_transparency((pix0 >> 2) & 63); } last_bpl_pix = pix0; } - shiftbpl4_64(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4_64(); + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8_64(); + loaded_pix = getbpl8_64(); + } + if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { + copybpl8_64(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8_64(); } - loaded_pix = getbpl4_64(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -14956,8 +36880,43 @@ static void lts_aga_fm2_n0_p4_ishres_dhires_spr_genlock(void) } } loaded_pixs[0] = loaded_pix; - shiftbpl4_64(); - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + dpix_val1 = decode_ham_pixel_aga(pix1); + gpix1 = get_genlock_transparency((pix1 >> 2) & 63); + } + last_bpl_pix = pix1; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8_64(); + loaded_pix = getbpl8_64(); + } + if (bpldat_copy[0] && ((cmp | 1) & 255) == bplcon1_shift_full_masked[0]) { + copybpl8_64(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8_64(); + } + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } + } + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 1; matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u8 gpix2 = 0xff; @@ -14968,16 +36927,22 @@ static void lts_aga_fm2_n0_p4_ishres_dhires_spr_genlock(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; - gpix2 = get_genlock_transparency(pix2 ^ bplcon4_denise_xor_val); + dpix_val2 = decode_ham_pixel_aga(pix2); + gpix2 = get_genlock_transparency((pix2 >> 2) & 63); } last_bpl_pix = pix2; } - shiftbpl4_64(); - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4_64(); + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8_64(); + loaded_pix = getbpl8_64(); + } + if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { + copybpl8_64(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8_64(); } - loaded_pix = getbpl4_64(); uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -14987,8 +36952,43 @@ static void lts_aga_fm2_n0_p4_ishres_dhires_spr_genlock(void) } } loaded_pixs[2] = loaded_pix; - shiftbpl4_64(); - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + dpix_val3 = decode_ham_pixel_aga(pix3); + gpix3 = get_genlock_transparency((pix3 >> 2) & 63); + } + last_bpl_pix = pix3; + } + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8_64(); + loaded_pix = getbpl8_64(); + } + if (bpldat_copy[0] && ((cmp | 3) & 255) == bplcon1_shift_full_masked[0]) { + copybpl8_64(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8_64(); + } + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } + } + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { uae_u32 spix0 = denise_render_sprites2(pix0, sv0); @@ -15000,6 +37000,16 @@ static void lts_aga_fm2_n0_p4_ishres_dhires_spr_genlock(void) } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + gpix1 = get_genlock_transparency(spix1); + + } + } + dtbuf[h][1] = dpix_val1; + dtgbuf[h][1] = gpix1; if (sv2) { uae_u32 spix2 = denise_render_sprites2(pix2, sv2); if (spix2) { @@ -15008,8 +37018,18 @@ static void lts_aga_fm2_n0_p4_ishres_dhires_spr_genlock(void) } } - dtbuf[h][2] = dpix_val2; - dtgbuf[h][2] = gpix2; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + gpix3 = get_genlock_transparency(spix3); + + } + } + dtbuf[h][3] = dpix_val3; + dtgbuf[h][3] = gpix3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -15019,6 +37039,15 @@ static void lts_aga_fm2_n0_p4_ishres_dhires_spr_genlock(void) *buf1++ = t0; *buf2++ = t0; *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = dtgbuf[h ^ lol][1]; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -15028,6 +37057,15 @@ static void lts_aga_fm2_n0_p4_ishres_dhires_spr_genlock(void) *buf1++ = t2; *buf2++ = t2; *gbuf++ = dtgbuf[h ^ lol][2]; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + *gbuf++ = dtgbuf[h ^ lol][3]; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -15051,7 +37089,11 @@ static void lts_aga_fm2_n0_p4_ishres_dhires_spr_genlock(void) denise_cck++; } } -static void lts_aga_fm2_n0_p4_ishres_dhires_spr_filtered_genlock(void) +static void lts_aga_fm2_ham0_p8_ilores_dshres_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm2_ham1_p8_ilores_dshres_spr_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -15074,16 +37116,33 @@ static void lts_aga_fm2_n0_p4_ishres_dhires_spr_filtered_genlock(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); + dpix_val0 = decode_ham_pixel_aga(pix0); + gpix0 = get_genlock_transparency((pix0 >> 2) & 63); } last_bpl_pix = pix0; } - shiftbpl4_64(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4_64(); + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8e_64(); + loaded_pix = getbpl8_64(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl8o_64(); + loaded_pix = getbpl8_64(); + } + 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] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[1]) { + copybpl8o_64(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl8_64(); } - loaded_pix = getbpl4_64(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -15093,6 +37152,8 @@ static void lts_aga_fm2_n0_p4_ishres_dhires_spr_filtered_genlock(void) } } loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u8 gpix1 = 0xff; uae_u32 dpix_val1 = BLANK_COLOR; @@ -15102,18 +37163,43 @@ static void lts_aga_fm2_n0_p4_ishres_dhires_spr_filtered_genlock(void) if (denise_hdiw && bpl1dat_trigger) { pix1 = loaded_pixs[1]; clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; - gpix1 = get_genlock_transparency(pix1 ^ bplcon4_denise_xor_val); + dpix_val1 = decode_ham_pixel_aga(pix1); + gpix1 = get_genlock_transparency((pix1 >> 2) & 63); } last_bpl_pix = pix1; } - shiftbpl4_64(); - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4_64(); + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8e_64(); + loaded_pix = getbpl8_64(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl8o_64(); + loaded_pix = getbpl8_64(); + } + 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] && ((cmp | 1) & 255) == bplcon1_shift_full_masked[1]) { + copybpl8o_64(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl8_64(); + } + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } } - loaded_pix = getbpl4_64(); loaded_pixs[1] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u8 gpix2 = 0xff; @@ -15124,16 +37210,33 @@ static void lts_aga_fm2_n0_p4_ishres_dhires_spr_filtered_genlock(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; - gpix2 = get_genlock_transparency(pix2 ^ bplcon4_denise_xor_val); + dpix_val2 = decode_ham_pixel_aga(pix2); + gpix2 = get_genlock_transparency((pix2 >> 2) & 63); } last_bpl_pix = pix2; } - shiftbpl4_64(); - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4_64(); + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8e_64(); + loaded_pix = getbpl8_64(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl8o_64(); + loaded_pix = getbpl8_64(); + } + 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] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[1]) { + copybpl8o_64(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl8_64(); } - loaded_pix = getbpl4_64(); uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -15143,6 +37246,8 @@ static void lts_aga_fm2_n0_p4_ishres_dhires_spr_filtered_genlock(void) } } loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u8 gpix3 = 0xff; uae_u32 dpix_val3 = BLANK_COLOR; @@ -15152,18 +37257,43 @@ static void lts_aga_fm2_n0_p4_ishres_dhires_spr_filtered_genlock(void) if (denise_hdiw && bpl1dat_trigger) { pix3 = loaded_pixs[3]; clxdat |= bplcoltable[pix3]; - dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; - gpix3 = get_genlock_transparency(pix3 ^ bplcon4_denise_xor_val); + dpix_val3 = decode_ham_pixel_aga(pix3); + gpix3 = get_genlock_transparency((pix3 >> 2) & 63); } last_bpl_pix = pix3; } - shiftbpl4_64(); - if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4_64(); + bplshiftcnt[0] += 1; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8e_64(); + loaded_pix = getbpl8_64(); + } + bplshiftcnt[1] += 1; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl8o_64(); + loaded_pix = getbpl8_64(); + } + 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] && ((cmp | 3) & 255) == bplcon1_shift_full_masked[1]) { + copybpl8o_64(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl8_64(); + } + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } } - loaded_pix = getbpl4_64(); loaded_pixs[3] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { uae_u32 spix0 = denise_render_sprites2(pix0, sv0); @@ -15171,26 +37301,40 @@ static void lts_aga_fm2_n0_p4_ishres_dhires_spr_filtered_genlock(void) dpix_val0 = denise_colors.acolors[spix0]; gpix0 = get_genlock_transparency(spix0); - dpix_val1 = dpix_val0; } } - dpix_val0 = filter_pixel(dpix_val0, dpix_val1); - gpix0 = filter_pixel_genlock(gpix0, gpix1); dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + gpix1 = get_genlock_transparency(spix1); + + } + } + dtbuf[h][1] = dpix_val1; + dtgbuf[h][1] = gpix1; if (sv2) { uae_u32 spix2 = denise_render_sprites2(pix2, sv2); if (spix2) { dpix_val2 = denise_colors.acolors[spix2]; gpix2 = get_genlock_transparency(spix2); - dpix_val3 = dpix_val2; } } - dpix_val2 = filter_pixel(dpix_val2, dpix_val3); - gpix2 = filter_pixel_genlock(gpix2, gpix3); dtbuf[h][2] = dpix_val2; dtgbuf[h][2] = gpix2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + gpix3 = get_genlock_transparency(spix3); + + } + } + dtbuf[h][3] = dpix_val3; + dtgbuf[h][3] = gpix3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -15200,6 +37344,15 @@ static void lts_aga_fm2_n0_p4_ishres_dhires_spr_filtered_genlock(void) *buf1++ = t0; *buf2++ = t0; *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = dtgbuf[h ^ lol][1]; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -15209,6 +37362,15 @@ static void lts_aga_fm2_n0_p4_ishres_dhires_spr_filtered_genlock(void) *buf1++ = t2; *buf2++ = t2; *gbuf++ = dtgbuf[h ^ lol][2]; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + *gbuf++ = dtgbuf[h ^ lol][3]; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -15232,7 +37394,11 @@ static void lts_aga_fm2_n0_p4_ishres_dhires_spr_filtered_genlock(void) denise_cck++; } } -static void lts_aga_fm2_n1_p4_ishres_dhires_spr_genlock(void) +static void lts_aga_fm2_ham1_p8_ilores_dshres_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm2_kehb0_p8_ilores_dshres_spr_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -15243,7 +37409,6 @@ 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; @@ -15252,22 +37417,7 @@ static void lts_aga_fm2_n1_p4_ishres_dhires_spr_genlock(void) if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); - } - last_bpl_pix = pix0; - } - shiftbpl4_64(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4e_64(); - } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl4o_64(); } - loaded_pix = getbpl4_64(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -15276,9 +37426,24 @@ static void lts_aga_fm2_n1_p4_ishres_dhires_spr_genlock(void) sv0 = svt; } } - loaded_pixs[0] = loaded_pix; - shiftbpl4_64(); - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } + } + internal_pixel_cnt += 1; matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u8 gpix2 = 0xff; @@ -15286,22 +37451,7 @@ static void lts_aga_fm2_n1_p4_ishres_dhires_spr_genlock(void) if (!denise_blank_active) { gpix2 = get_genlock_transparency_border(); dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; - gpix2 = get_genlock_transparency(pix2 ^ bplcon4_denise_xor_val); - } - last_bpl_pix = pix2; - } - shiftbpl4_64(); - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4e_64(); - } - if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { - copybpl4o_64(); } - loaded_pix = getbpl4_64(); uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -15310,9 +37460,24 @@ static void lts_aga_fm2_n1_p4_ishres_dhires_spr_genlock(void) sv2 = svt; } } - loaded_pixs[2] = loaded_pix; - shiftbpl4_64(); - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + } + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } + } + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { uae_u32 spix0 = denise_render_sprites2(pix0, sv0); @@ -15324,6 +37489,16 @@ static void lts_aga_fm2_n1_p4_ishres_dhires_spr_genlock(void) } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + gpix1 = get_genlock_transparency(spix1); + + } + } + dtbuf[h][1] = dpix_val1; + dtgbuf[h][1] = gpix1; if (sv2) { uae_u32 spix2 = denise_render_sprites2(pix2, sv2); if (spix2) { @@ -15334,6 +37509,16 @@ static void lts_aga_fm2_n1_p4_ishres_dhires_spr_genlock(void) } dtbuf[h][2] = dpix_val2; dtgbuf[h][2] = gpix2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + gpix3 = get_genlock_transparency(spix3); + + } + } + dtbuf[h][3] = dpix_val3; + dtgbuf[h][3] = gpix3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -15343,6 +37528,15 @@ static void lts_aga_fm2_n1_p4_ishres_dhires_spr_genlock(void) *buf1++ = t0; *buf2++ = t0; *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = dtgbuf[h ^ lol][1]; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -15352,6 +37546,15 @@ static void lts_aga_fm2_n1_p4_ishres_dhires_spr_genlock(void) *buf1++ = t2; *buf2++ = t2; *gbuf++ = dtgbuf[h ^ lol][2]; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + *gbuf++ = dtgbuf[h ^ lol][3]; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -15375,7 +37578,11 @@ static void lts_aga_fm2_n1_p4_ishres_dhires_spr_genlock(void) denise_cck++; } } -static void lts_aga_fm2_n1_p4_ishres_dhires_spr_filtered_genlock(void) +static void lts_aga_fm2_kehb0_p8_ilores_dshres_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm2_kehb1_p8_ilores_dshres_spr_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -15386,7 +37593,6 @@ 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; @@ -15395,22 +37601,7 @@ static void lts_aga_fm2_n1_p4_ishres_dhires_spr_filtered_genlock(void) if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); - } - last_bpl_pix = pix0; - } - shiftbpl4_64(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4e_64(); - } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl4o_64(); } - loaded_pix = getbpl4_64(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -15419,31 +37610,24 @@ static void lts_aga_fm2_n1_p4_ishres_dhires_spr_filtered_genlock(void) sv0 = svt; } } - loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u8 gpix1 = 0xff; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { gpix1 = get_genlock_transparency_border(); dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; - gpix1 = get_genlock_transparency(pix1 ^ bplcon4_denise_xor_val); - } - last_bpl_pix = pix1; - } - shiftbpl4_64(); - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4e_64(); } - if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { - copybpl4o_64(); + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } } - loaded_pix = getbpl4_64(); - loaded_pixs[1] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u8 gpix2 = 0xff; @@ -15451,22 +37635,7 @@ static void lts_aga_fm2_n1_p4_ishres_dhires_spr_filtered_genlock(void) if (!denise_blank_active) { gpix2 = get_genlock_transparency_border(); dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; - gpix2 = get_genlock_transparency(pix2 ^ bplcon4_denise_xor_val); - } - last_bpl_pix = pix2; - } - shiftbpl4_64(); - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4e_64(); - } - if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { - copybpl4o_64(); } - loaded_pix = getbpl4_64(); uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -15475,31 +37644,24 @@ static void lts_aga_fm2_n1_p4_ishres_dhires_spr_filtered_genlock(void) sv2 = svt; } } - loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u8 gpix3 = 0xff; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { gpix3 = get_genlock_transparency_border(); dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; - gpix3 = get_genlock_transparency(pix3 ^ bplcon4_denise_xor_val); - } - last_bpl_pix = pix3; - } - shiftbpl4_64(); - if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4e_64(); } - if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) { - copybpl4o_64(); + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } } - loaded_pix = getbpl4_64(); - loaded_pixs[3] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { uae_u32 spix0 = denise_render_sprites2(pix0, sv0); @@ -15507,26 +37669,40 @@ static void lts_aga_fm2_n1_p4_ishres_dhires_spr_filtered_genlock(void) dpix_val0 = denise_colors.acolors[spix0]; gpix0 = get_genlock_transparency(spix0); - dpix_val1 = dpix_val0; } } - dpix_val0 = filter_pixel(dpix_val0, dpix_val1); - gpix0 = filter_pixel_genlock(gpix0, gpix1); dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + gpix1 = get_genlock_transparency(spix1); + + } + } + dtbuf[h][1] = dpix_val1; + dtgbuf[h][1] = gpix1; if (sv2) { uae_u32 spix2 = denise_render_sprites2(pix2, sv2); if (spix2) { dpix_val2 = denise_colors.acolors[spix2]; gpix2 = get_genlock_transparency(spix2); - dpix_val3 = dpix_val2; } } - dpix_val2 = filter_pixel(dpix_val2, dpix_val3); - gpix2 = filter_pixel_genlock(gpix2, gpix3); dtbuf[h][2] = dpix_val2; dtgbuf[h][2] = gpix2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + gpix3 = get_genlock_transparency(spix3); + + } + } + dtbuf[h][3] = dpix_val3; + dtgbuf[h][3] = gpix3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -15536,6 +37712,15 @@ static void lts_aga_fm2_n1_p4_ishres_dhires_spr_filtered_genlock(void) *buf1++ = t0; *buf2++ = t0; *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = dtgbuf[h ^ lol][1]; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -15545,6 +37730,15 @@ static void lts_aga_fm2_n1_p4_ishres_dhires_spr_filtered_genlock(void) *buf1++ = t2; *buf2++ = t2; *gbuf++ = dtgbuf[h ^ lol][2]; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + *gbuf++ = dtgbuf[h ^ lol][3]; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -15568,7 +37762,11 @@ static void lts_aga_fm2_n1_p4_ishres_dhires_spr_filtered_genlock(void) denise_cck++; } } -static void lts_aga_fm2_dpf0_p4_ishres_dhires_spr_genlock(void) +static void lts_aga_fm2_kehb1_p8_ilores_dshres_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm2_n0_p4_ihires_dshres_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -15581,7 +37779,6 @@ static void lts_aga_fm2_dpf0_p4_ishres_dhires_spr_genlock(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; @@ -15591,33 +37788,51 @@ static void lts_aga_fm2_dpf0_p4_ishres_dhires_spr_genlock(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - gpix0 = get_genlock_transparency(dpf_lookup[pix0]); + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); } last_bpl_pix = pix0; } - shiftbpl4_64(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4_64(); + loaded_pix = getbpl4_64(); + } + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl4_64(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4_64(); + } + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; + gpix1 = get_genlock_transparency(pix1 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix1; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4_64(); + loaded_pix = getbpl4_64(); + } + if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { copybpl4_64(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4_64(); } - loaded_pix = getbpl4_64(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } - } - loaded_pixs[0] = loaded_pix; - shiftbpl4_64(); - internal_pixel_cnt += 2; - matchsprites_aga(cnt + 2); + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u8 gpix2 = 0xff; uae_u32 dpix_val2 = BLANK_COLOR; @@ -15627,53 +37842,60 @@ static void lts_aga_fm2_dpf0_p4_ishres_dhires_spr_genlock(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; - gpix2 = get_genlock_transparency(dpf_lookup[pix2]); + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + gpix2 = get_genlock_transparency(pix2 ^ bplcon4_denise_xor_val); } last_bpl_pix = pix2; } - shiftbpl4_64(); - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4_64(); + loaded_pix = getbpl4_64(); + } + if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { copybpl4_64(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4_64(); } - loaded_pix = getbpl4_64(); - uae_u32 sv2 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv2 = svt; + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; + gpix3 = get_genlock_transparency(pix3 ^ bplcon4_denise_xor_val); } + last_bpl_pix = pix3; } - loaded_pixs[2] = loaded_pix; - shiftbpl4_64(); - internal_pixel_cnt += 2; + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4_64(); + loaded_pix = getbpl4_64(); + } + if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { + copybpl4_64(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4_64(); + } + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - gpix0 = get_genlock_transparency(spix0); - - } - } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; - if (sv2) { - uae_u32 spix2 = denise_render_sprites2(pix2, sv2); - if (spix2) { - dpix_val2 = denise_colors.acolors[spix2]; - gpix2 = get_genlock_transparency(spix2); - - } - } + dtbuf[h][1] = dpix_val1; + dtgbuf[h][1] = gpix1; dtbuf[h][2] = dpix_val2; dtgbuf[h][2] = gpix2; + dtbuf[h][3] = dpix_val3; + dtgbuf[h][3] = gpix3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -15683,6 +37905,15 @@ static void lts_aga_fm2_dpf0_p4_ishres_dhires_spr_genlock(void) *buf1++ = t0; *buf2++ = t0; *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = dtgbuf[h ^ lol][1]; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -15692,6 +37923,15 @@ static void lts_aga_fm2_dpf0_p4_ishres_dhires_spr_genlock(void) *buf1++ = t2; *buf2++ = t2; *gbuf++ = dtgbuf[h ^ lol][2]; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + *gbuf++ = dtgbuf[h ^ lol][3]; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -15715,7 +37955,11 @@ static void lts_aga_fm2_dpf0_p4_ishres_dhires_spr_genlock(void) denise_cck++; } } -static void lts_aga_fm2_dpf0_p4_ishres_dhires_spr_filtered_genlock(void) +static void lts_aga_fm2_n0_p4_ihires_dshres_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm2_n1_p4_ihires_dshres_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -15728,7 +37972,6 @@ static void lts_aga_fm2_dpf0_p4_ishres_dhires_spr_filtered_genlock(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; @@ -15738,30 +37981,35 @@ static void lts_aga_fm2_dpf0_p4_ishres_dhires_spr_filtered_genlock(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - gpix0 = get_genlock_transparency(dpf_lookup[pix0]); + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); } last_bpl_pix = pix0; } - shiftbpl4_64(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4_64(); + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4e_64(); + loaded_pix = getbpl4_64(); } - loaded_pix = getbpl4_64(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl4o_64(); + loaded_pix = getbpl4_64(); + } + 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] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { + copybpl4o_64(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl4_64(); } loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 1; uae_u8 pix1 = 0; uae_u8 gpix1 = 0xff; uae_u32 dpix_val1 = BLANK_COLOR; @@ -15771,24 +38019,35 @@ static void lts_aga_fm2_dpf0_p4_ishres_dhires_spr_filtered_genlock(void) if (denise_hdiw && bpl1dat_trigger) { pix1 = loaded_pixs[1]; clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - if (dpf_lookup_no[pix1]) { - val1 += dblpfofs[bpldualpf2of]; - } - val1 ^= bplcon4_denise_xor_val; - dpix_val1 = denise_colors.acolors[val1]; - gpix1 = get_genlock_transparency(dpf_lookup[pix1]); + dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; + gpix1 = get_genlock_transparency(pix1 ^ bplcon4_denise_xor_val); } last_bpl_pix = pix1; } - shiftbpl4_64(); - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4_64(); + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4e_64(); + loaded_pix = getbpl4_64(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl4o_64(); + loaded_pix = getbpl4_64(); + } + 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] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) { + copybpl4o_64(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl4_64(); } - loaded_pix = getbpl4_64(); loaded_pixs[1] = loaded_pix; - internal_pixel_cnt += 2; - matchsprites_aga(cnt + 2); + internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u8 gpix2 = 0xff; uae_u32 dpix_val2 = BLANK_COLOR; @@ -15798,30 +38057,35 @@ static void lts_aga_fm2_dpf0_p4_ishres_dhires_spr_filtered_genlock(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; - gpix2 = get_genlock_transparency(dpf_lookup[pix2]); + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + gpix2 = get_genlock_transparency(pix2 ^ bplcon4_denise_xor_val); } last_bpl_pix = pix2; } - shiftbpl4_64(); - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4_64(); + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4e_64(); + loaded_pix = getbpl4_64(); } - loaded_pix = getbpl4_64(); - uae_u32 sv2 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv2 = svt; - } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl4o_64(); + loaded_pix = getbpl4_64(); + } + 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] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) { + copybpl4o_64(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl4_64(); } loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 1; uae_u8 pix3 = 0; uae_u8 gpix3 = 0xff; uae_u32 dpix_val3 = BLANK_COLOR; @@ -15831,50 +38095,44 @@ static void lts_aga_fm2_dpf0_p4_ishres_dhires_spr_filtered_genlock(void) if (denise_hdiw && bpl1dat_trigger) { pix3 = loaded_pixs[3]; clxdat |= bplcoltable[pix3]; - uae_u8 val3 = dpf_lookup[pix3]; - if (dpf_lookup_no[pix3]) { - val3 += dblpfofs[bpldualpf2of]; - } - val3 ^= bplcon4_denise_xor_val; - dpix_val3 = denise_colors.acolors[val3]; - gpix3 = get_genlock_transparency(dpf_lookup[pix3]); + dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; + gpix3 = get_genlock_transparency(pix3 ^ bplcon4_denise_xor_val); } last_bpl_pix = pix3; } - shiftbpl4_64(); - if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4_64(); + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4e_64(); + loaded_pix = getbpl4_64(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl4o_64(); + loaded_pix = getbpl4_64(); + } + 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] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[1]) { + copybpl4o_64(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl4_64(); } - loaded_pix = getbpl4_64(); loaded_pixs[3] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - gpix0 = get_genlock_transparency(spix0); - - dpix_val1 = dpix_val0; - } - } - dpix_val0 = filter_pixel(dpix_val0, dpix_val1); - gpix0 = filter_pixel_genlock(gpix0, gpix1); dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; - if (sv2) { - uae_u32 spix2 = denise_render_sprites2(pix2, sv2); - if (spix2) { - dpix_val2 = denise_colors.acolors[spix2]; - gpix2 = get_genlock_transparency(spix2); - - dpix_val3 = dpix_val2; - } - } - dpix_val2 = filter_pixel(dpix_val2, dpix_val3); - gpix2 = filter_pixel_genlock(gpix2, gpix3); + dtbuf[h][1] = dpix_val1; + dtgbuf[h][1] = gpix1; dtbuf[h][2] = dpix_val2; dtgbuf[h][2] = gpix2; + dtbuf[h][3] = dpix_val3; + dtgbuf[h][3] = gpix3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -15884,6 +38142,15 @@ static void lts_aga_fm2_dpf0_p4_ishres_dhires_spr_filtered_genlock(void) *buf1++ = t0; *buf2++ = t0; *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = dtgbuf[h ^ lol][1]; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -15893,6 +38160,15 @@ static void lts_aga_fm2_dpf0_p4_ishres_dhires_spr_filtered_genlock(void) *buf1++ = t2; *buf2++ = t2; *gbuf++ = dtgbuf[h ^ lol][2]; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + *gbuf++ = dtgbuf[h ^ lol][3]; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -15916,7 +38192,11 @@ static void lts_aga_fm2_dpf0_p4_ishres_dhires_spr_filtered_genlock(void) denise_cck++; } } -static void lts_aga_fm2_dpf1_p4_ishres_dhires_spr_genlock(void) +static void lts_aga_fm2_n1_p4_ihires_dshres_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm2_dpf0_p4_ihires_dshres_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -15929,7 +38209,6 @@ static void lts_aga_fm2_dpf1_p4_ishres_dhires_spr_genlock(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; @@ -15949,26 +38228,51 @@ static void lts_aga_fm2_dpf1_p4_ishres_dhires_spr_genlock(void) } last_bpl_pix = pix0; } - shiftbpl4_64(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4e_64(); + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4_64(); + loaded_pix = getbpl4_64(); } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl4o_64(); + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl4_64(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4_64(); } - loaded_pix = getbpl4_64(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + uae_u8 val1 = dpf_lookup[pix1]; + if (dpf_lookup_no[pix1]) { + val1 += dblpfofs[bpldualpf2of]; + } + val1 ^= bplcon4_denise_xor_val; + dpix_val1 = denise_colors.acolors[val1]; + gpix1 = get_genlock_transparency(dpf_lookup[pix1]); } + last_bpl_pix = pix1; } - loaded_pixs[0] = loaded_pix; - shiftbpl4_64(); - internal_pixel_cnt += 2; - matchsprites_aga(cnt + 2); + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4_64(); + loaded_pix = getbpl4_64(); + } + if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { + copybpl4_64(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4_64(); + } + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u8 gpix2 = 0xff; uae_u32 dpix_val2 = BLANK_COLOR; @@ -15988,46 +38292,60 @@ static void lts_aga_fm2_dpf1_p4_ishres_dhires_spr_genlock(void) } last_bpl_pix = pix2; } - shiftbpl4_64(); - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4e_64(); - } - if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { - copybpl4o_64(); + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4_64(); + loaded_pix = getbpl4_64(); } - loaded_pix = getbpl4_64(); - uae_u32 sv2 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv2 = svt; - } + if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { + copybpl4_64(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4_64(); } loaded_pixs[2] = loaded_pix; - shiftbpl4_64(); - internal_pixel_cnt += 2; - if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - gpix0 = get_genlock_transparency(spix0); - + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + uae_u8 val3 = dpf_lookup[pix3]; + if (dpf_lookup_no[pix3]) { + val3 += dblpfofs[bpldualpf2of]; } + val3 ^= bplcon4_denise_xor_val; + dpix_val3 = denise_colors.acolors[val3]; + gpix3 = get_genlock_transparency(dpf_lookup[pix3]); } + last_bpl_pix = pix3; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4_64(); + loaded_pix = getbpl4_64(); + } + if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { + copybpl4_64(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl4_64(); + } + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 1; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; - if (sv2) { - uae_u32 spix2 = denise_render_sprites2(pix2, sv2); - if (spix2) { - dpix_val2 = denise_colors.acolors[spix2]; - gpix2 = get_genlock_transparency(spix2); - - } - } + dtbuf[h][1] = dpix_val1; + dtgbuf[h][1] = gpix1; dtbuf[h][2] = dpix_val2; dtgbuf[h][2] = gpix2; + dtbuf[h][3] = dpix_val3; + dtgbuf[h][3] = gpix3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -16037,6 +38355,15 @@ static void lts_aga_fm2_dpf1_p4_ishres_dhires_spr_genlock(void) *buf1++ = t0; *buf2++ = t0; *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = dtgbuf[h ^ lol][1]; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -16046,6 +38373,15 @@ static void lts_aga_fm2_dpf1_p4_ishres_dhires_spr_genlock(void) *buf1++ = t2; *buf2++ = t2; *gbuf++ = dtgbuf[h ^ lol][2]; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + *gbuf++ = dtgbuf[h ^ lol][3]; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -16069,7 +38405,11 @@ static void lts_aga_fm2_dpf1_p4_ishres_dhires_spr_genlock(void) denise_cck++; } } -static void lts_aga_fm2_dpf1_p4_ishres_dhires_spr_filtered_genlock(void) +static void lts_aga_fm2_dpf0_p4_ihires_dshres_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm2_dpf1_p4_ihires_dshres_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -16082,7 +38422,6 @@ static void lts_aga_fm2_dpf1_p4_ishres_dhires_spr_filtered_genlock(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; @@ -16102,23 +38441,30 @@ static void lts_aga_fm2_dpf1_p4_ishres_dhires_spr_filtered_genlock(void) } last_bpl_pix = pix0; } - shiftbpl4_64(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4e_64(); + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4e_64(); + loaded_pix = getbpl4_64(); } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl4o_64(); + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl4o_64(); + loaded_pix = getbpl4_64(); } - loaded_pix = getbpl4_64(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } + 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] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { + copybpl4o_64(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl4_64(); } loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 1; uae_u8 pix1 = 0; uae_u8 gpix1 = 0xff; uae_u32 dpix_val1 = BLANK_COLOR; @@ -16138,17 +38484,30 @@ static void lts_aga_fm2_dpf1_p4_ishres_dhires_spr_filtered_genlock(void) } last_bpl_pix = pix1; } - shiftbpl4_64(); - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4e_64(); + loaded_pix = getbpl4_64(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl4o_64(); + loaded_pix = getbpl4_64(); + } + 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] && ((cmp | 1) & 63) == 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(); } - loaded_pix = getbpl4_64(); loaded_pixs[1] = loaded_pix; - internal_pixel_cnt += 2; - matchsprites_aga(cnt + 2); + internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u8 gpix2 = 0xff; uae_u32 dpix_val2 = BLANK_COLOR; @@ -16168,23 +38527,30 @@ static void lts_aga_fm2_dpf1_p4_ishres_dhires_spr_filtered_genlock(void) } last_bpl_pix = pix2; } - shiftbpl4_64(); - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4e_64(); + loaded_pix = getbpl4_64(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl4o_64(); + loaded_pix = getbpl4_64(); + } + 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] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { + if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) { copybpl4o_64(); - } - loaded_pix = getbpl4_64(); - uae_u32 sv2 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv2 = svt; - } + bplshiftcnt[1] = 0; + loaded_pix = getbpl4_64(); } loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 1; uae_u8 pix3 = 0; uae_u8 gpix3 = 0xff; uae_u32 dpix_val3 = BLANK_COLOR; @@ -16204,43 +38570,39 @@ static void lts_aga_fm2_dpf1_p4_ishres_dhires_spr_filtered_genlock(void) } last_bpl_pix = pix3; } - shiftbpl4_64(); - if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl4e_64(); + loaded_pix = getbpl4_64(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl4o_64(); + loaded_pix = getbpl4_64(); + } + 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] && ((cmp | 3) & 63) == 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(); } - loaded_pix = getbpl4_64(); loaded_pixs[3] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - gpix0 = get_genlock_transparency(spix0); - - dpix_val1 = dpix_val0; - } - } - dpix_val0 = filter_pixel(dpix_val0, dpix_val1); - gpix0 = filter_pixel_genlock(gpix0, gpix1); dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; - if (sv2) { - uae_u32 spix2 = denise_render_sprites2(pix2, sv2); - if (spix2) { - dpix_val2 = denise_colors.acolors[spix2]; - gpix2 = get_genlock_transparency(spix2); - - dpix_val3 = dpix_val2; - } - } - dpix_val2 = filter_pixel(dpix_val2, dpix_val3); - gpix2 = filter_pixel_genlock(gpix2, gpix3); + dtbuf[h][1] = dpix_val1; + dtgbuf[h][1] = gpix1; dtbuf[h][2] = dpix_val2; dtgbuf[h][2] = gpix2; + dtbuf[h][3] = dpix_val3; + dtgbuf[h][3] = gpix3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -16250,6 +38612,15 @@ static void lts_aga_fm2_dpf1_p4_ishres_dhires_spr_filtered_genlock(void) *buf1++ = t0; *buf2++ = t0; *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = dtgbuf[h ^ lol][1]; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -16259,6 +38630,15 @@ static void lts_aga_fm2_dpf1_p4_ishres_dhires_spr_filtered_genlock(void) *buf1++ = t2; *buf2++ = t2; *gbuf++ = dtgbuf[h ^ lol][2]; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + *gbuf++ = dtgbuf[h ^ lol][3]; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -16282,55 +38662,11 @@ static void lts_aga_fm2_dpf1_p4_ishres_dhires_spr_filtered_genlock(void) denise_cck++; } } -static void lts_aga_fm2_ehb0_p4_ishres_dhires_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb0_p4_ishres_dhires_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb1_p4_ishres_dhires_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb1_p4_ishres_dhires_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_ham0_p4_ishres_dhires_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_ham0_p4_ishres_dhires_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_ham1_p4_ishres_dhires_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_ham1_p4_ishres_dhires_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb0_p4_ishres_dhires_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb0_p4_ishres_dhires_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb1_p4_ishres_dhires_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb1_p4_ishres_dhires_spr_filtered_genlock(void) +static void lts_aga_fm2_dpf1_p4_ihires_dshres_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm2_n0_p8_ishres_dhires_spr_genlock(void) +static void lts_aga_fm2_ehb0_p4_ihires_dshres_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -16341,91 +38677,48 @@ 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; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); - } - last_bpl_pix = pix0; - } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); } - loaded_pix = getbpl8_64(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; } - loaded_pixs[0] = loaded_pix; - shiftbpl8_64(); - internal_pixel_cnt += 2; - matchsprites_aga(cnt + 2); + internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u8 gpix2 = 0xff; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { gpix2 = get_genlock_transparency_border(); dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; - gpix2 = get_genlock_transparency(pix2 ^ bplcon4_denise_xor_val); - } - last_bpl_pix = pix2; - } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); } - loaded_pix = getbpl8_64(); - uae_u32 sv2 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv2 = svt; - } + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; } - loaded_pixs[2] = loaded_pix; - shiftbpl8_64(); - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - gpix0 = get_genlock_transparency(spix0); - - } - } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; - if (sv2) { - uae_u32 spix2 = denise_render_sprites2(pix2, sv2); - if (spix2) { - dpix_val2 = denise_colors.acolors[spix2]; - gpix2 = get_genlock_transparency(spix2); - - } - } + dtbuf[h][1] = dpix_val1; + dtgbuf[h][1] = gpix1; dtbuf[h][2] = dpix_val2; dtgbuf[h][2] = gpix2; + dtbuf[h][3] = dpix_val3; + dtgbuf[h][3] = gpix3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -16435,6 +38728,15 @@ static void lts_aga_fm2_n0_p8_ishres_dhires_spr_genlock(void) *buf1++ = t0; *buf2++ = t0; *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = dtgbuf[h ^ lol][1]; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -16444,6 +38746,15 @@ static void lts_aga_fm2_n0_p8_ishres_dhires_spr_genlock(void) *buf1++ = t2; *buf2++ = t2; *gbuf++ = dtgbuf[h ^ lol][2]; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + *gbuf++ = dtgbuf[h ^ lol][3]; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -16467,7 +38778,11 @@ static void lts_aga_fm2_n0_p8_ishres_dhires_spr_genlock(void) denise_cck++; } } -static void lts_aga_fm2_n0_p8_ishres_dhires_spr_filtered_genlock(void) +static void lts_aga_fm2_ehb0_p4_ihires_dshres_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm2_ehb1_p4_ihires_dshres_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -16478,135 +38793,48 @@ 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; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); - } - last_bpl_pix = pix0; - } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); - } - loaded_pix = getbpl8_64(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } } - loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 1; uae_u8 pix1 = 0; uae_u8 gpix1 = 0xff; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { gpix1 = get_genlock_transparency_border(); dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; - gpix1 = get_genlock_transparency(pix1 ^ bplcon4_denise_xor_val); - } - last_bpl_pix = pix1; - } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); } - loaded_pix = getbpl8_64(); - loaded_pixs[1] = loaded_pix; - internal_pixel_cnt += 2; - matchsprites_aga(cnt + 2); + internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u8 gpix2 = 0xff; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { gpix2 = get_genlock_transparency_border(); dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; - gpix2 = get_genlock_transparency(pix2 ^ bplcon4_denise_xor_val); - } - last_bpl_pix = pix2; - } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); - } - loaded_pix = getbpl8_64(); - uae_u32 sv2 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv2 = svt; - } } - loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 1; uae_u8 pix3 = 0; uae_u8 gpix3 = 0xff; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { gpix3 = get_genlock_transparency_border(); dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; - gpix3 = get_genlock_transparency(pix3 ^ bplcon4_denise_xor_val); - } - last_bpl_pix = pix3; - } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); } - loaded_pix = getbpl8_64(); - loaded_pixs[3] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - gpix0 = get_genlock_transparency(spix0); - - dpix_val1 = dpix_val0; - } - } - dpix_val0 = filter_pixel(dpix_val0, dpix_val1); - gpix0 = filter_pixel_genlock(gpix0, gpix1); dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; - if (sv2) { - uae_u32 spix2 = denise_render_sprites2(pix2, sv2); - if (spix2) { - dpix_val2 = denise_colors.acolors[spix2]; - gpix2 = get_genlock_transparency(spix2); - - dpix_val3 = dpix_val2; - } - } - dpix_val2 = filter_pixel(dpix_val2, dpix_val3); - gpix2 = filter_pixel_genlock(gpix2, gpix3); + dtbuf[h][1] = dpix_val1; + dtgbuf[h][1] = gpix1; dtbuf[h][2] = dpix_val2; dtgbuf[h][2] = gpix2; + dtbuf[h][3] = dpix_val3; + dtgbuf[h][3] = gpix3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -16616,6 +38844,15 @@ static void lts_aga_fm2_n0_p8_ishres_dhires_spr_filtered_genlock(void) *buf1++ = t0; *buf2++ = t0; *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = dtgbuf[h ^ lol][1]; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -16625,6 +38862,15 @@ static void lts_aga_fm2_n0_p8_ishres_dhires_spr_filtered_genlock(void) *buf1++ = t2; *buf2++ = t2; *gbuf++ = dtgbuf[h ^ lol][2]; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + *gbuf++ = dtgbuf[h ^ lol][3]; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -16648,7 +38894,11 @@ static void lts_aga_fm2_n0_p8_ishres_dhires_spr_filtered_genlock(void) denise_cck++; } } -static void lts_aga_fm2_n1_p8_ishres_dhires_spr_genlock(void) +static void lts_aga_fm2_ehb1_p4_ihires_dshres_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm2_ham0_p4_ihires_dshres_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -16659,106 +38909,66 @@ 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; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); - } - last_bpl_pix = pix0; - } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e_64(); - } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); } - loaded_pix = getbpl8_64(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; } - loaded_pixs[0] = loaded_pix; - shiftbpl8_64(); - internal_pixel_cnt += 2; - matchsprites_aga(cnt + 2); + internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u8 gpix2 = 0xff; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { gpix2 = get_genlock_transparency_border(); dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; - gpix2 = get_genlock_transparency(pix2 ^ bplcon4_denise_xor_val); - } - last_bpl_pix = pix2; - } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e_64(); - } - if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); } - loaded_pix = getbpl8_64(); - uae_u32 sv2 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv2 = svt; - } + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; } - loaded_pixs[2] = loaded_pix; - shiftbpl8_64(); - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - gpix0 = get_genlock_transparency(spix0); - - } - } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; - if (sv2) { - uae_u32 spix2 = denise_render_sprites2(pix2, sv2); - if (spix2) { - dpix_val2 = denise_colors.acolors[spix2]; - gpix2 = get_genlock_transparency(spix2); - - } - } + dtbuf[h][1] = dpix_val1; + dtgbuf[h][1] = gpix1; dtbuf[h][2] = dpix_val2; dtgbuf[h][2] = gpix2; + dtbuf[h][3] = dpix_val3; + dtgbuf[h][3] = gpix3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { t0 = decode_denise_specials_debug(t0, cnt + 0); } #endif - *buf1++ = t0; - *buf2++ = t0; - *gbuf++ = dtgbuf[h ^ lol][0]; + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = dtgbuf[h ^ lol][1]; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -16768,6 +38978,15 @@ static void lts_aga_fm2_n1_p8_ishres_dhires_spr_genlock(void) *buf1++ = t2; *buf2++ = t2; *gbuf++ = dtgbuf[h ^ lol][2]; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + *gbuf++ = dtgbuf[h ^ lol][3]; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -16791,7 +39010,11 @@ static void lts_aga_fm2_n1_p8_ishres_dhires_spr_genlock(void) denise_cck++; } } -static void lts_aga_fm2_n1_p8_ishres_dhires_spr_filtered_genlock(void) +static void lts_aga_fm2_ham0_p4_ihires_dshres_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm2_ham1_p4_ihires_dshres_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -16802,147 +39025,48 @@ 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; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); - } - last_bpl_pix = pix0; - } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e_64(); - } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); - } - loaded_pix = getbpl8_64(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } } - loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 1; uae_u8 pix1 = 0; uae_u8 gpix1 = 0xff; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { gpix1 = get_genlock_transparency_border(); dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; - gpix1 = get_genlock_transparency(pix1 ^ bplcon4_denise_xor_val); - } - last_bpl_pix = pix1; - } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e_64(); - } - if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); } - loaded_pix = getbpl8_64(); - loaded_pixs[1] = loaded_pix; - internal_pixel_cnt += 2; - matchsprites_aga(cnt + 2); + internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u8 gpix2 = 0xff; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { gpix2 = get_genlock_transparency_border(); dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; - gpix2 = get_genlock_transparency(pix2 ^ bplcon4_denise_xor_val); - } - last_bpl_pix = pix2; - } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e_64(); - } - if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); - } - loaded_pix = getbpl8_64(); - uae_u32 sv2 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv2 = svt; - } } - loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 1; uae_u8 pix3 = 0; uae_u8 gpix3 = 0xff; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { gpix3 = get_genlock_transparency_border(); dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; - gpix3 = get_genlock_transparency(pix3 ^ bplcon4_denise_xor_val); - } - last_bpl_pix = pix3; - } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e_64(); - } - if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); } - loaded_pix = getbpl8_64(); - loaded_pixs[3] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - gpix0 = get_genlock_transparency(spix0); - - dpix_val1 = dpix_val0; - } - } - dpix_val0 = filter_pixel(dpix_val0, dpix_val1); - gpix0 = filter_pixel_genlock(gpix0, gpix1); dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; - if (sv2) { - uae_u32 spix2 = denise_render_sprites2(pix2, sv2); - if (spix2) { - dpix_val2 = denise_colors.acolors[spix2]; - gpix2 = get_genlock_transparency(spix2); - - dpix_val3 = dpix_val2; - } - } - dpix_val2 = filter_pixel(dpix_val2, dpix_val3); - gpix2 = filter_pixel_genlock(gpix2, gpix3); + dtbuf[h][1] = dpix_val1; + dtgbuf[h][1] = gpix1; dtbuf[h][2] = dpix_val2; dtgbuf[h][2] = gpix2; + dtbuf[h][3] = dpix_val3; + dtgbuf[h][3] = gpix3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -16952,6 +39076,15 @@ static void lts_aga_fm2_n1_p8_ishres_dhires_spr_filtered_genlock(void) *buf1++ = t0; *buf2++ = t0; *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = dtgbuf[h ^ lol][1]; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -16961,6 +39094,15 @@ static void lts_aga_fm2_n1_p8_ishres_dhires_spr_filtered_genlock(void) *buf1++ = t2; *buf2++ = t2; *gbuf++ = dtgbuf[h ^ lol][2]; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + *gbuf++ = dtgbuf[h ^ lol][3]; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -16984,7 +39126,11 @@ static void lts_aga_fm2_n1_p8_ishres_dhires_spr_filtered_genlock(void) denise_cck++; } } -static void lts_aga_fm2_dpf0_p8_ishres_dhires_spr_genlock(void) +static void lts_aga_fm2_ham1_p4_ihires_dshres_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm2_kehb0_p4_ihires_dshres_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -16995,101 +39141,48 @@ 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; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - gpix0 = get_genlock_transparency(dpf_lookup[pix0]); - } - last_bpl_pix = pix0; - } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); } - loaded_pix = getbpl8_64(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; } - loaded_pixs[0] = loaded_pix; - shiftbpl8_64(); - internal_pixel_cnt += 2; - matchsprites_aga(cnt + 2); + internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u8 gpix2 = 0xff; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { gpix2 = get_genlock_transparency_border(); dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; - gpix2 = get_genlock_transparency(dpf_lookup[pix2]); - } - last_bpl_pix = pix2; - } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); } - loaded_pix = getbpl8_64(); - uae_u32 sv2 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv2 = svt; - } + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; } - loaded_pixs[2] = loaded_pix; - shiftbpl8_64(); - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - gpix0 = get_genlock_transparency(spix0); - - } - } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; - if (sv2) { - uae_u32 spix2 = denise_render_sprites2(pix2, sv2); - if (spix2) { - dpix_val2 = denise_colors.acolors[spix2]; - gpix2 = get_genlock_transparency(spix2); - - } - } + dtbuf[h][1] = dpix_val1; + dtgbuf[h][1] = gpix1; dtbuf[h][2] = dpix_val2; dtgbuf[h][2] = gpix2; + dtbuf[h][3] = dpix_val3; + dtgbuf[h][3] = gpix3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -17099,6 +39192,15 @@ static void lts_aga_fm2_dpf0_p8_ishres_dhires_spr_genlock(void) *buf1++ = t0; *buf2++ = t0; *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = dtgbuf[h ^ lol][1]; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -17108,6 +39210,15 @@ static void lts_aga_fm2_dpf0_p8_ishres_dhires_spr_genlock(void) *buf1++ = t2; *buf2++ = t2; *gbuf++ = dtgbuf[h ^ lol][2]; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + *gbuf++ = dtgbuf[h ^ lol][3]; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -17131,7 +39242,11 @@ static void lts_aga_fm2_dpf0_p8_ishres_dhires_spr_genlock(void) denise_cck++; } } -static void lts_aga_fm2_dpf0_p8_ishres_dhires_spr_filtered_genlock(void) +static void lts_aga_fm2_kehb0_p4_ihires_dshres_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm2_kehb1_p4_ihires_dshres_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -17142,155 +39257,48 @@ 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; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - gpix0 = get_genlock_transparency(dpf_lookup[pix0]); - } - last_bpl_pix = pix0; - } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); - } - loaded_pix = getbpl8_64(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } } - loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 1; uae_u8 pix1 = 0; uae_u8 gpix1 = 0xff; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { gpix1 = get_genlock_transparency_border(); dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - if (dpf_lookup_no[pix1]) { - val1 += dblpfofs[bpldualpf2of]; - } - val1 ^= bplcon4_denise_xor_val; - dpix_val1 = denise_colors.acolors[val1]; - gpix1 = get_genlock_transparency(dpf_lookup[pix1]); - } - last_bpl_pix = pix1; - } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); } - loaded_pix = getbpl8_64(); - loaded_pixs[1] = loaded_pix; - internal_pixel_cnt += 2; - matchsprites_aga(cnt + 2); + internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u8 gpix2 = 0xff; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { gpix2 = get_genlock_transparency_border(); dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; - gpix2 = get_genlock_transparency(dpf_lookup[pix2]); - } - last_bpl_pix = pix2; - } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); - } - loaded_pix = getbpl8_64(); - uae_u32 sv2 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv2 = svt; - } } - loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 1; uae_u8 pix3 = 0; uae_u8 gpix3 = 0xff; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { gpix3 = get_genlock_transparency_border(); dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - uae_u8 val3 = dpf_lookup[pix3]; - if (dpf_lookup_no[pix3]) { - val3 += dblpfofs[bpldualpf2of]; - } - val3 ^= bplcon4_denise_xor_val; - dpix_val3 = denise_colors.acolors[val3]; - gpix3 = get_genlock_transparency(dpf_lookup[pix3]); - } - last_bpl_pix = pix3; - } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); } - loaded_pix = getbpl8_64(); - loaded_pixs[3] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - gpix0 = get_genlock_transparency(spix0); - - dpix_val1 = dpix_val0; - } - } - dpix_val0 = filter_pixel(dpix_val0, dpix_val1); - gpix0 = filter_pixel_genlock(gpix0, gpix1); dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; - if (sv2) { - uae_u32 spix2 = denise_render_sprites2(pix2, sv2); - if (spix2) { - dpix_val2 = denise_colors.acolors[spix2]; - gpix2 = get_genlock_transparency(spix2); - - dpix_val3 = dpix_val2; - } - } - dpix_val2 = filter_pixel(dpix_val2, dpix_val3); - gpix2 = filter_pixel_genlock(gpix2, gpix3); + dtbuf[h][1] = dpix_val1; + dtgbuf[h][1] = gpix1; dtbuf[h][2] = dpix_val2; dtgbuf[h][2] = gpix2; + dtbuf[h][3] = dpix_val3; + dtgbuf[h][3] = gpix3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -17300,6 +39308,15 @@ static void lts_aga_fm2_dpf0_p8_ishres_dhires_spr_filtered_genlock(void) *buf1++ = t0; *buf2++ = t0; *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = dtgbuf[h ^ lol][1]; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -17309,6 +39326,15 @@ static void lts_aga_fm2_dpf0_p8_ishres_dhires_spr_filtered_genlock(void) *buf1++ = t2; *buf2++ = t2; *gbuf++ = dtgbuf[h ^ lol][2]; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + *gbuf++ = dtgbuf[h ^ lol][3]; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -17332,7 +39358,11 @@ static void lts_aga_fm2_dpf0_p8_ishres_dhires_spr_filtered_genlock(void) denise_cck++; } } -static void lts_aga_fm2_dpf1_p8_ishres_dhires_spr_genlock(void) +static void lts_aga_fm2_kehb1_p4_ihires_dshres_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm2_n0_p8_ihires_dshres_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -17345,7 +39375,6 @@ static void lts_aga_fm2_dpf1_p8_ishres_dhires_spr_genlock(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; @@ -17355,36 +39384,51 @@ static void lts_aga_fm2_dpf1_p8_ishres_dhires_spr_genlock(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - gpix0 = get_genlock_transparency(dpf_lookup[pix0]); + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); } last_bpl_pix = pix0; } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e_64(); + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8_64(); + loaded_pix = getbpl8_64(); } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8_64(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8_64(); } - loaded_pix = getbpl8_64(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; + loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = loaded_pixs[1]; + clxdat |= bplcoltable[pix1]; + dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; + gpix1 = get_genlock_transparency(pix1 ^ bplcon4_denise_xor_val); } + last_bpl_pix = pix1; } - loaded_pixs[0] = loaded_pix; - shiftbpl8_64(); - internal_pixel_cnt += 2; - matchsprites_aga(cnt + 2); + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8_64(); + loaded_pix = getbpl8_64(); + } + if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8_64(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8_64(); + } + loaded_pixs[1] = loaded_pix; + internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u8 gpix2 = 0xff; uae_u32 dpix_val2 = BLANK_COLOR; @@ -17394,56 +39438,60 @@ static void lts_aga_fm2_dpf1_p8_ishres_dhires_spr_genlock(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; - gpix2 = get_genlock_transparency(dpf_lookup[pix2]); + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + gpix2 = get_genlock_transparency(pix2 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix2; + } + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8_64(); + loaded_pix = getbpl8_64(); + } + if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8_64(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8_64(); + } + loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; + gpix3 = get_genlock_transparency(pix3 ^ bplcon4_denise_xor_val); } - last_bpl_pix = pix2; - } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e_64(); + last_bpl_pix = pix3; } - if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8_64(); + loaded_pix = getbpl8_64(); } - loaded_pix = getbpl8_64(); - uae_u32 sv2 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv2 = svt; - } + if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8_64(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8_64(); } - loaded_pixs[2] = loaded_pix; - shiftbpl8_64(); - internal_pixel_cnt += 2; + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - gpix0 = get_genlock_transparency(spix0); - - } - } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; - if (sv2) { - uae_u32 spix2 = denise_render_sprites2(pix2, sv2); - if (spix2) { - dpix_val2 = denise_colors.acolors[spix2]; - gpix2 = get_genlock_transparency(spix2); - - } - } + dtbuf[h][1] = dpix_val1; + dtgbuf[h][1] = gpix1; dtbuf[h][2] = dpix_val2; dtgbuf[h][2] = gpix2; + dtbuf[h][3] = dpix_val3; + dtgbuf[h][3] = gpix3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -17453,6 +39501,15 @@ static void lts_aga_fm2_dpf1_p8_ishres_dhires_spr_genlock(void) *buf1++ = t0; *buf2++ = t0; *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = dtgbuf[h ^ lol][1]; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -17462,6 +39519,15 @@ static void lts_aga_fm2_dpf1_p8_ishres_dhires_spr_genlock(void) *buf1++ = t2; *buf2++ = t2; *gbuf++ = dtgbuf[h ^ lol][2]; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + *gbuf++ = dtgbuf[h ^ lol][3]; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -17485,7 +39551,11 @@ static void lts_aga_fm2_dpf1_p8_ishres_dhires_spr_genlock(void) denise_cck++; } } -static void lts_aga_fm2_dpf1_p8_ishres_dhires_spr_filtered_genlock(void) +static void lts_aga_fm2_n0_p8_ihires_dshres_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm2_n1_p8_ihires_dshres_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -17498,7 +39568,6 @@ static void lts_aga_fm2_dpf1_p8_ishres_dhires_spr_filtered_genlock(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; @@ -17508,33 +39577,35 @@ static void lts_aga_fm2_dpf1_p8_ishres_dhires_spr_filtered_genlock(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - gpix0 = get_genlock_transparency(dpf_lookup[pix0]); + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); } last_bpl_pix = pix0; } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8e_64(); + loaded_pix = getbpl8_64(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl8o_64(); + loaded_pix = getbpl8_64(); + } + 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] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { copybpl8o_64(); - } - loaded_pix = getbpl8_64(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } + bplshiftcnt[1] = 0; + loaded_pix = getbpl8_64(); } loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 1; uae_u8 pix1 = 0; uae_u8 gpix1 = 0xff; uae_u32 dpix_val1 = BLANK_COLOR; @@ -17544,27 +39615,35 @@ static void lts_aga_fm2_dpf1_p8_ishres_dhires_spr_filtered_genlock(void) if (denise_hdiw && bpl1dat_trigger) { pix1 = loaded_pixs[1]; clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - if (dpf_lookup_no[pix1]) { - val1 += dblpfofs[bpldualpf2of]; - } - val1 ^= bplcon4_denise_xor_val; - dpix_val1 = denise_colors.acolors[val1]; - gpix1 = get_genlock_transparency(dpf_lookup[pix1]); + dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; + gpix1 = get_genlock_transparency(pix1 ^ bplcon4_denise_xor_val); } last_bpl_pix = pix1; } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8e_64(); + loaded_pix = getbpl8_64(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl8o_64(); + loaded_pix = getbpl8_64(); + } + 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] && ((cmp | 1) & 63) == 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(); } - loaded_pix = getbpl8_64(); loaded_pixs[1] = loaded_pix; - internal_pixel_cnt += 2; - matchsprites_aga(cnt + 2); + internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u8 gpix2 = 0xff; uae_u32 dpix_val2 = BLANK_COLOR; @@ -17574,33 +39653,35 @@ static void lts_aga_fm2_dpf1_p8_ishres_dhires_spr_filtered_genlock(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; - gpix2 = get_genlock_transparency(dpf_lookup[pix2]); + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + gpix2 = get_genlock_transparency(pix2 ^ bplcon4_denise_xor_val); } last_bpl_pix = pix2; } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8e_64(); + loaded_pix = getbpl8_64(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl8o_64(); + loaded_pix = getbpl8_64(); + } + 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] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { + if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) { copybpl8o_64(); - } - loaded_pix = getbpl8_64(); - uae_u32 sv2 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv2 = svt; - } + bplshiftcnt[1] = 0; + loaded_pix = getbpl8_64(); } loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 1; uae_u8 pix3 = 0; uae_u8 gpix3 = 0xff; uae_u32 dpix_val3 = BLANK_COLOR; @@ -17610,53 +39691,44 @@ static void lts_aga_fm2_dpf1_p8_ishres_dhires_spr_filtered_genlock(void) if (denise_hdiw && bpl1dat_trigger) { pix3 = loaded_pixs[3]; clxdat |= bplcoltable[pix3]; - uae_u8 val3 = dpf_lookup[pix3]; - if (dpf_lookup_no[pix3]) { - val3 += dblpfofs[bpldualpf2of]; - } - val3 ^= bplcon4_denise_xor_val; - dpix_val3 = denise_colors.acolors[val3]; - gpix3 = get_genlock_transparency(dpf_lookup[pix3]); + dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; + gpix3 = get_genlock_transparency(pix3 ^ bplcon4_denise_xor_val); } last_bpl_pix = pix3; } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8e_64(); + loaded_pix = getbpl8_64(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl8o_64(); + loaded_pix = getbpl8_64(); + } + 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] && ((cmp | 3) & 63) == 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(); } - loaded_pix = getbpl8_64(); loaded_pixs[3] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - gpix0 = get_genlock_transparency(spix0); - - dpix_val1 = dpix_val0; - } - } - dpix_val0 = filter_pixel(dpix_val0, dpix_val1); - gpix0 = filter_pixel_genlock(gpix0, gpix1); dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; - if (sv2) { - uae_u32 spix2 = denise_render_sprites2(pix2, sv2); - if (spix2) { - dpix_val2 = denise_colors.acolors[spix2]; - gpix2 = get_genlock_transparency(spix2); - - dpix_val3 = dpix_val2; - } - } - dpix_val2 = filter_pixel(dpix_val2, dpix_val3); - gpix2 = filter_pixel_genlock(gpix2, gpix3); + dtbuf[h][1] = dpix_val1; + dtgbuf[h][1] = gpix1; dtbuf[h][2] = dpix_val2; dtgbuf[h][2] = gpix2; + dtbuf[h][3] = dpix_val3; + dtgbuf[h][3] = gpix3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -17666,6 +39738,15 @@ static void lts_aga_fm2_dpf1_p8_ishres_dhires_spr_filtered_genlock(void) *buf1++ = t0; *buf2++ = t0; *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = dtgbuf[h ^ lol][1]; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -17675,6 +39756,15 @@ static void lts_aga_fm2_dpf1_p8_ishres_dhires_spr_filtered_genlock(void) *buf1++ = t2; *buf2++ = t2; *gbuf++ = dtgbuf[h ^ lol][2]; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + *gbuf++ = dtgbuf[h ^ lol][3]; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -17698,23 +39788,11 @@ static void lts_aga_fm2_dpf1_p8_ishres_dhires_spr_filtered_genlock(void) denise_cck++; } } -static void lts_aga_fm2_ehb0_p8_ishres_dhires_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb0_p8_ishres_dhires_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb1_p8_ishres_dhires_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb1_p8_ishres_dhires_spr_filtered_genlock(void) +static void lts_aga_fm2_n1_p8_ihires_dshres_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm2_ham0_p8_ishres_dhires_spr_genlock(void) +static void lts_aga_fm2_dpf0_p8_ihires_dshres_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -17727,7 +39805,6 @@ static void lts_aga_fm2_ham0_p8_ishres_dhires_spr_genlock(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; @@ -17737,44 +39814,61 @@ static void lts_aga_fm2_ham0_p8_ishres_dhires_spr_genlock(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - dpix_val0 = decode_ham_pixel_aga(pix0); - gpix0 = get_genlock_transparency((pix0 >> 2) & 63); + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + gpix0 = get_genlock_transparency(dpf_lookup[pix0]); } last_bpl_pix = pix0; } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8_64(); + loaded_pix = getbpl8_64(); } - loaded_pix = getbpl8_64(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8_64(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8_64(); } loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 1; uae_u8 pix1 = 0; uae_u8 gpix1 = 0xff; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); dpix_val1 = bordercolor; if (denise_hdiw && bpl1dat_trigger) { pix1 = loaded_pixs[1]; - decode_ham_pixel_aga(pix1); + clxdat |= bplcoltable[pix1]; + uae_u8 val1 = dpf_lookup[pix1]; + if (dpf_lookup_no[pix1]) { + val1 += dblpfofs[bpldualpf2of]; + } + val1 ^= bplcon4_denise_xor_val; + dpix_val1 = denise_colors.acolors[val1]; + gpix1 = get_genlock_transparency(dpf_lookup[pix1]); } last_bpl_pix = pix1; } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8_64(); + loaded_pix = getbpl8_64(); + } + if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { copybpl8_64(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8_64(); } - loaded_pix = getbpl8_64(); loaded_pixs[1] = loaded_pix; - internal_pixel_cnt += 2; - matchsprites_aga(cnt + 2); + internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u8 gpix2 = 0xff; uae_u32 dpix_val2 = BLANK_COLOR; @@ -17784,64 +39878,70 @@ static void lts_aga_fm2_ham0_p8_ishres_dhires_spr_genlock(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - dpix_val2 = decode_ham_pixel_aga(pix2); - gpix2 = get_genlock_transparency((pix2 >> 2) & 63); + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; + gpix2 = get_genlock_transparency(dpf_lookup[pix2]); } last_bpl_pix = pix2; } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8_64(); + loaded_pix = getbpl8_64(); } - loaded_pix = getbpl8_64(); - uae_u32 sv2 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv2 = svt; - } + if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8_64(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8_64(); } loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 1; uae_u8 pix3 = 0; uae_u8 gpix3 = 0xff; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); dpix_val3 = bordercolor; if (denise_hdiw && bpl1dat_trigger) { pix3 = loaded_pixs[3]; - decode_ham_pixel_aga(pix3); + clxdat |= bplcoltable[pix3]; + uae_u8 val3 = dpf_lookup[pix3]; + if (dpf_lookup_no[pix3]) { + val3 += dblpfofs[bpldualpf2of]; + } + val3 ^= bplcon4_denise_xor_val; + dpix_val3 = denise_colors.acolors[val3]; + gpix3 = get_genlock_transparency(dpf_lookup[pix3]); } last_bpl_pix = pix3; } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8_64(); + loaded_pix = getbpl8_64(); + } + if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { copybpl8_64(); + bplshiftcnt[0] = 0; + loaded_pix = getbpl8_64(); } - loaded_pix = getbpl8_64(); loaded_pixs[3] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - gpix0 = get_genlock_transparency(spix0); - - } - } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; - if (sv2) { - uae_u32 spix2 = denise_render_sprites2(pix2, sv2); - if (spix2) { - dpix_val2 = denise_colors.acolors[spix2]; - gpix2 = get_genlock_transparency(spix2); - - } - } + dtbuf[h][1] = dpix_val1; + dtgbuf[h][1] = gpix1; dtbuf[h][2] = dpix_val2; dtgbuf[h][2] = gpix2; + dtbuf[h][3] = dpix_val3; + dtgbuf[h][3] = gpix3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -17851,6 +39951,15 @@ static void lts_aga_fm2_ham0_p8_ishres_dhires_spr_genlock(void) *buf1++ = t0; *buf2++ = t0; *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = dtgbuf[h ^ lol][1]; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -17860,6 +39969,15 @@ static void lts_aga_fm2_ham0_p8_ishres_dhires_spr_genlock(void) *buf1++ = t2; *buf2++ = t2; *gbuf++ = dtgbuf[h ^ lol][2]; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + *gbuf++ = dtgbuf[h ^ lol][3]; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -17883,7 +40001,11 @@ static void lts_aga_fm2_ham0_p8_ishres_dhires_spr_genlock(void) denise_cck++; } } -static void lts_aga_fm2_ham0_p8_ishres_dhires_spr_filtered_genlock(void) +static void lts_aga_fm2_dpf0_p8_ihires_dshres_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm2_dpf1_p8_ihires_dshres_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -17896,7 +40018,6 @@ static void lts_aga_fm2_ham0_p8_ishres_dhires_spr_filtered_genlock(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; @@ -17906,25 +40027,40 @@ static void lts_aga_fm2_ham0_p8_ishres_dhires_spr_filtered_genlock(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - dpix_val0 = decode_ham_pixel_aga(pix0); - gpix0 = get_genlock_transparency((pix0 >> 2) & 63); + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + gpix0 = get_genlock_transparency(dpf_lookup[pix0]); } last_bpl_pix = pix0; } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8e_64(); + loaded_pix = getbpl8_64(); } - loaded_pix = getbpl8_64(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl8o_64(); + loaded_pix = getbpl8_64(); + } + 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] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { + copybpl8o_64(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl8_64(); } loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 1; uae_u8 pix1 = 0; uae_u8 gpix1 = 0xff; uae_u32 dpix_val1 = BLANK_COLOR; @@ -17934,19 +40070,40 @@ static void lts_aga_fm2_ham0_p8_ishres_dhires_spr_filtered_genlock(void) if (denise_hdiw && bpl1dat_trigger) { pix1 = loaded_pixs[1]; clxdat |= bplcoltable[pix1]; - dpix_val1 = decode_ham_pixel_aga(pix1); - gpix1 = get_genlock_transparency((pix1 >> 2) & 63); + uae_u8 val1 = dpf_lookup[pix1]; + if (dpf_lookup_no[pix1]) { + val1 += dblpfofs[bpldualpf2of]; + } + val1 ^= bplcon4_denise_xor_val; + dpix_val1 = denise_colors.acolors[val1]; + gpix1 = get_genlock_transparency(dpf_lookup[pix1]); } last_bpl_pix = pix1; } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8e_64(); + loaded_pix = getbpl8_64(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl8o_64(); + loaded_pix = getbpl8_64(); + } + 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] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) { + copybpl8o_64(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl8_64(); } - loaded_pix = getbpl8_64(); loaded_pixs[1] = loaded_pix; - internal_pixel_cnt += 2; - matchsprites_aga(cnt + 2); + internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u8 gpix2 = 0xff; uae_u32 dpix_val2 = BLANK_COLOR; @@ -17956,25 +40113,40 @@ static void lts_aga_fm2_ham0_p8_ishres_dhires_spr_filtered_genlock(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - dpix_val2 = decode_ham_pixel_aga(pix2); - gpix2 = get_genlock_transparency((pix2 >> 2) & 63); + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; + gpix2 = get_genlock_transparency(dpf_lookup[pix2]); } last_bpl_pix = pix2; } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8e_64(); + loaded_pix = getbpl8_64(); } - loaded_pix = getbpl8_64(); - uae_u32 sv2 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv2 = svt; - } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl8o_64(); + loaded_pix = getbpl8_64(); + } + 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] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) { + copybpl8o_64(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl8_64(); } loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 1; uae_u8 pix3 = 0; uae_u8 gpix3 = 0xff; uae_u32 dpix_val3 = BLANK_COLOR; @@ -17984,45 +40156,49 @@ static void lts_aga_fm2_ham0_p8_ishres_dhires_spr_filtered_genlock(void) if (denise_hdiw && bpl1dat_trigger) { pix3 = loaded_pixs[3]; clxdat |= bplcoltable[pix3]; - dpix_val3 = decode_ham_pixel_aga(pix3); - gpix3 = get_genlock_transparency((pix3 >> 2) & 63); + uae_u8 val3 = dpf_lookup[pix3]; + if (dpf_lookup_no[pix3]) { + val3 += dblpfofs[bpldualpf2of]; + } + val3 ^= bplcon4_denise_xor_val; + dpix_val3 = denise_colors.acolors[val3]; + gpix3 = get_genlock_transparency(dpf_lookup[pix3]); } last_bpl_pix = pix3; } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); + bplshiftcnt[0] += 2; + if (bplshiftcnt[0] >= 4) { + bplshiftcnt[0] = 0; + shiftbpl8e_64(); + loaded_pix = getbpl8_64(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl8o_64(); + loaded_pix = getbpl8_64(); + } + 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] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[1]) { + copybpl8o_64(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl8_64(); } - loaded_pix = getbpl8_64(); loaded_pixs[3] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - gpix0 = get_genlock_transparency(spix0); - - dpix_val1 = dpix_val0; - } - } - dpix_val0 = filter_pixel(dpix_val0, dpix_val1); - gpix0 = filter_pixel_genlock(gpix0, gpix1); dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; - if (sv2) { - uae_u32 spix2 = denise_render_sprites2(pix2, sv2); - if (spix2) { - dpix_val2 = denise_colors.acolors[spix2]; - gpix2 = get_genlock_transparency(spix2); - - dpix_val3 = dpix_val2; - } - } - dpix_val2 = filter_pixel(dpix_val2, dpix_val3); - gpix2 = filter_pixel_genlock(gpix2, gpix3); + dtbuf[h][1] = dpix_val1; + dtgbuf[h][1] = gpix1; dtbuf[h][2] = dpix_val2; dtgbuf[h][2] = gpix2; + dtbuf[h][3] = dpix_val3; + dtgbuf[h][3] = gpix3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -18032,6 +40208,15 @@ static void lts_aga_fm2_ham0_p8_ishres_dhires_spr_filtered_genlock(void) *buf1++ = t0; *buf2++ = t0; *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = dtgbuf[h ^ lol][1]; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -18041,6 +40226,15 @@ static void lts_aga_fm2_ham0_p8_ishres_dhires_spr_filtered_genlock(void) *buf1++ = t2; *buf2++ = t2; *gbuf++ = dtgbuf[h ^ lol][2]; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + *gbuf++ = dtgbuf[h ^ lol][3]; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -18064,7 +40258,11 @@ static void lts_aga_fm2_ham0_p8_ishres_dhires_spr_filtered_genlock(void) denise_cck++; } } -static void lts_aga_fm2_ham1_p8_ishres_dhires_spr_genlock(void) +static void lts_aga_fm2_dpf1_p8_ihires_dshres_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm2_ehb0_p8_ihires_dshres_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -18075,135 +40273,48 @@ 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; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = decode_ham_pixel_aga(pix0); - gpix0 = get_genlock_transparency((pix0 >> 2) & 63); - } - last_bpl_pix = pix0; - } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e_64(); - } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); - } - loaded_pix = getbpl8_64(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } } - loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 1; uae_u8 pix1 = 0; uae_u8 gpix1 = 0xff; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - decode_ham_pixel_aga(pix1); - } - last_bpl_pix = pix1; - } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e_64(); - } - if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); } - loaded_pix = getbpl8_64(); - loaded_pixs[1] = loaded_pix; - internal_pixel_cnt += 2; - matchsprites_aga(cnt + 2); + internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u8 gpix2 = 0xff; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { gpix2 = get_genlock_transparency_border(); dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = decode_ham_pixel_aga(pix2); - gpix2 = get_genlock_transparency((pix2 >> 2) & 63); - } - last_bpl_pix = pix2; } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e_64(); - } - if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); - } - loaded_pix = getbpl8_64(); - uae_u32 sv2 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv2 = svt; - } - } - loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 1; uae_u8 pix3 = 0; uae_u8 gpix3 = 0xff; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - decode_ham_pixel_aga(pix3); - } - last_bpl_pix = pix3; } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e_64(); - } - if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); - } - loaded_pix = getbpl8_64(); - loaded_pixs[3] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - gpix0 = get_genlock_transparency(spix0); - - } - } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; - if (sv2) { - uae_u32 spix2 = denise_render_sprites2(pix2, sv2); - if (spix2) { - dpix_val2 = denise_colors.acolors[spix2]; - gpix2 = get_genlock_transparency(spix2); - - } - } + dtbuf[h][1] = dpix_val1; + dtgbuf[h][1] = gpix1; dtbuf[h][2] = dpix_val2; dtgbuf[h][2] = gpix2; + dtbuf[h][3] = dpix_val3; + dtgbuf[h][3] = gpix3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -18213,6 +40324,15 @@ static void lts_aga_fm2_ham1_p8_ishres_dhires_spr_genlock(void) *buf1++ = t0; *buf2++ = t0; *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = dtgbuf[h ^ lol][1]; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -18222,6 +40342,15 @@ static void lts_aga_fm2_ham1_p8_ishres_dhires_spr_genlock(void) *buf1++ = t2; *buf2++ = t2; *gbuf++ = dtgbuf[h ^ lol][2]; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + *gbuf++ = dtgbuf[h ^ lol][3]; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -18245,7 +40374,11 @@ static void lts_aga_fm2_ham1_p8_ishres_dhires_spr_genlock(void) denise_cck++; } } -static void lts_aga_fm2_ham1_p8_ishres_dhires_spr_filtered_genlock(void) +static void lts_aga_fm2_ehb0_p8_ihires_dshres_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm2_ehb1_p8_ihires_dshres_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -18256,147 +40389,48 @@ 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; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = decode_ham_pixel_aga(pix0); - gpix0 = get_genlock_transparency((pix0 >> 2) & 63); - } - last_bpl_pix = pix0; - } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e_64(); - } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); - } - loaded_pix = getbpl8_64(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } } - loaded_pixs[0] = loaded_pix; + internal_pixel_cnt += 1; uae_u8 pix1 = 0; uae_u8 gpix1 = 0xff; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { gpix1 = get_genlock_transparency_border(); dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - dpix_val1 = decode_ham_pixel_aga(pix1); - gpix1 = get_genlock_transparency((pix1 >> 2) & 63); - } - last_bpl_pix = pix1; - } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e_64(); - } - if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); } - loaded_pix = getbpl8_64(); - loaded_pixs[1] = loaded_pix; - internal_pixel_cnt += 2; - matchsprites_aga(cnt + 2); + internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u8 gpix2 = 0xff; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { gpix2 = get_genlock_transparency_border(); dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = decode_ham_pixel_aga(pix2); - gpix2 = get_genlock_transparency((pix2 >> 2) & 63); - } - last_bpl_pix = pix2; - } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e_64(); - } - if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); - } - loaded_pix = getbpl8_64(); - uae_u32 sv2 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv2 = svt; - } } - loaded_pixs[2] = loaded_pix; + internal_pixel_cnt += 1; uae_u8 pix3 = 0; uae_u8 gpix3 = 0xff; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { gpix3 = get_genlock_transparency_border(); dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - dpix_val3 = decode_ham_pixel_aga(pix3); - gpix3 = get_genlock_transparency((pix3 >> 2) & 63); - } - last_bpl_pix = pix3; - } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e_64(); - } - if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); } - loaded_pix = getbpl8_64(); - loaded_pixs[3] = loaded_pix; - internal_pixel_cnt += 2; + internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - gpix0 = get_genlock_transparency(spix0); - - dpix_val1 = dpix_val0; - } - } - dpix_val0 = filter_pixel(dpix_val0, dpix_val1); - gpix0 = filter_pixel_genlock(gpix0, gpix1); dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; - if (sv2) { - uae_u32 spix2 = denise_render_sprites2(pix2, sv2); - if (spix2) { - dpix_val2 = denise_colors.acolors[spix2]; - gpix2 = get_genlock_transparency(spix2); - - dpix_val3 = dpix_val2; - } - } - dpix_val2 = filter_pixel(dpix_val2, dpix_val3); - gpix2 = filter_pixel_genlock(gpix2, gpix3); + dtbuf[h][1] = dpix_val1; + dtgbuf[h][1] = gpix1; dtbuf[h][2] = dpix_val2; dtgbuf[h][2] = gpix2; + dtbuf[h][3] = dpix_val3; + dtgbuf[h][3] = gpix3; uae_u32 t0 = dtbuf[h ^ lol][0]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -18406,6 +40440,15 @@ static void lts_aga_fm2_ham1_p8_ishres_dhires_spr_filtered_genlock(void) *buf1++ = t0; *buf2++ = t0; *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = dtgbuf[h ^ lol][1]; uae_u32 t2 = dtbuf[h ^ lol][2]; #ifdef DEBUGGER if (decode_specials_debug) { @@ -18415,6 +40458,15 @@ static void lts_aga_fm2_ham1_p8_ishres_dhires_spr_filtered_genlock(void) *buf1++ = t2; *buf2++ = t2; *gbuf++ = dtgbuf[h ^ lol][2]; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + *gbuf++ = dtgbuf[h ^ lol][3]; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -18438,23 +40490,11 @@ static void lts_aga_fm2_ham1_p8_ishres_dhires_spr_filtered_genlock(void) denise_cck++; } } -static void lts_aga_fm2_kehb0_p8_ishres_dhires_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb0_p8_ishres_dhires_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb1_p8_ishres_dhires_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb1_p8_ishres_dhires_spr_filtered_genlock(void) +static void lts_aga_fm2_ehb1_p8_ihires_dshres_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm2_n0_p4_ilores_dshres_genlock(void) +static void lts_aga_fm2_ham0_p8_ihires_dshres_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -18476,21 +40516,21 @@ static void lts_aga_fm2_n0_p4_ilores_dshres_genlock(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); + dpix_val0 = decode_ham_pixel_aga(pix0); + gpix0 = get_genlock_transparency((pix0 >> 2) & 63); } last_bpl_pix = pix0; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl4_64(); - loaded_pix = getbpl4_64(); + shiftbpl8_64(); + loaded_pix = getbpl8_64(); } - if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { - copybpl4_64(); + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8_64(); bplshiftcnt[0] = 0; - loaded_pix = getbpl4_64(); + loaded_pix = getbpl8_64(); } loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; @@ -18503,21 +40543,21 @@ static void lts_aga_fm2_n0_p4_ilores_dshres_genlock(void) if (denise_hdiw && bpl1dat_trigger) { pix1 = loaded_pixs[1]; clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; - gpix1 = get_genlock_transparency(pix1 ^ bplcon4_denise_xor_val); + dpix_val1 = decode_ham_pixel_aga(pix1); + gpix1 = get_genlock_transparency((pix1 >> 2) & 63); } last_bpl_pix = pix1; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl4_64(); - loaded_pix = getbpl4_64(); + shiftbpl8_64(); + loaded_pix = getbpl8_64(); } - if (bpldat_copy[0] && ((cmp | 1) & 255) == bplcon1_shift_full_masked[0]) { - copybpl4_64(); + if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8_64(); bplshiftcnt[0] = 0; - loaded_pix = getbpl4_64(); + loaded_pix = getbpl8_64(); } loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; @@ -18530,21 +40570,21 @@ static void lts_aga_fm2_n0_p4_ilores_dshres_genlock(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; - gpix2 = get_genlock_transparency(pix2 ^ bplcon4_denise_xor_val); + dpix_val2 = decode_ham_pixel_aga(pix2); + gpix2 = get_genlock_transparency((pix2 >> 2) & 63); } last_bpl_pix = pix2; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl4_64(); - loaded_pix = getbpl4_64(); + shiftbpl8_64(); + loaded_pix = getbpl8_64(); } - if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { - copybpl4_64(); + if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8_64(); bplshiftcnt[0] = 0; - loaded_pix = getbpl4_64(); + loaded_pix = getbpl8_64(); } loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; @@ -18557,21 +40597,21 @@ static void lts_aga_fm2_n0_p4_ilores_dshres_genlock(void) if (denise_hdiw && bpl1dat_trigger) { pix3 = loaded_pixs[3]; clxdat |= bplcoltable[pix3]; - dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; - gpix3 = get_genlock_transparency(pix3 ^ bplcon4_denise_xor_val); + dpix_val3 = decode_ham_pixel_aga(pix3); + gpix3 = get_genlock_transparency((pix3 >> 2) & 63); } last_bpl_pix = pix3; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl4_64(); - loaded_pix = getbpl4_64(); + shiftbpl8_64(); + loaded_pix = getbpl8_64(); } - if (bpldat_copy[0] && ((cmp | 3) & 255) == bplcon1_shift_full_masked[0]) { - copybpl4_64(); + if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8_64(); bplshiftcnt[0] = 0; - loaded_pix = getbpl4_64(); + loaded_pix = getbpl8_64(); } loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; @@ -18643,11 +40683,11 @@ static void lts_aga_fm2_n0_p4_ilores_dshres_genlock(void) denise_cck++; } } -static void lts_aga_fm2_n0_p4_ilores_dshres_filtered_genlock(void) +static void lts_aga_fm2_ham0_p8_ihires_dshres_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm2_n1_p4_ilores_dshres_genlock(void) +static void lts_aga_fm2_ham1_p8_ihires_dshres_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -18669,32 +40709,32 @@ static void lts_aga_fm2_n1_p4_ilores_dshres_genlock(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); + dpix_val0 = decode_ham_pixel_aga(pix0); + gpix0 = get_genlock_transparency((pix0 >> 2) & 63); } last_bpl_pix = pix0; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl4e_64(); - loaded_pix = getbpl4_64(); + shiftbpl8e_64(); + loaded_pix = getbpl8_64(); } - bplshiftcnt[1] += 1; + bplshiftcnt[1] += 2; if (bplshiftcnt[1] >= 4) { bplshiftcnt[1] = 0; - shiftbpl4o_64(); - loaded_pix = getbpl4_64(); + shiftbpl8o_64(); + loaded_pix = getbpl8_64(); } - if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { - copybpl4e_64(); + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8e_64(); bplshiftcnt[0] = 0; - loaded_pix = getbpl4_64(); + loaded_pix = getbpl8_64(); } - if (bpldat_copy[1] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[1]) { - copybpl4o_64(); + if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { + copybpl8o_64(); bplshiftcnt[1] = 0; - loaded_pix = getbpl4_64(); + loaded_pix = getbpl8_64(); } loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; @@ -18707,32 +40747,32 @@ static void lts_aga_fm2_n1_p4_ilores_dshres_genlock(void) if (denise_hdiw && bpl1dat_trigger) { pix1 = loaded_pixs[1]; clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; - gpix1 = get_genlock_transparency(pix1 ^ bplcon4_denise_xor_val); + dpix_val1 = decode_ham_pixel_aga(pix1); + gpix1 = get_genlock_transparency((pix1 >> 2) & 63); } last_bpl_pix = pix1; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl4e_64(); - loaded_pix = getbpl4_64(); + shiftbpl8e_64(); + loaded_pix = getbpl8_64(); } - bplshiftcnt[1] += 1; + bplshiftcnt[1] += 2; if (bplshiftcnt[1] >= 4) { bplshiftcnt[1] = 0; - shiftbpl4o_64(); - loaded_pix = getbpl4_64(); + shiftbpl8o_64(); + loaded_pix = getbpl8_64(); } - if (bpldat_copy[0] && ((cmp | 1) & 255) == bplcon1_shift_full_masked[0]) { - copybpl4e_64(); + if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8e_64(); bplshiftcnt[0] = 0; - loaded_pix = getbpl4_64(); + loaded_pix = getbpl8_64(); } - if (bpldat_copy[1] && ((cmp | 1) & 255) == bplcon1_shift_full_masked[1]) { - copybpl4o_64(); + if (bpldat_copy[1] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) { + copybpl8o_64(); bplshiftcnt[1] = 0; - loaded_pix = getbpl4_64(); + loaded_pix = getbpl8_64(); } loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; @@ -18745,32 +40785,32 @@ static void lts_aga_fm2_n1_p4_ilores_dshres_genlock(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; - gpix2 = get_genlock_transparency(pix2 ^ bplcon4_denise_xor_val); + dpix_val2 = decode_ham_pixel_aga(pix2); + gpix2 = get_genlock_transparency((pix2 >> 2) & 63); } last_bpl_pix = pix2; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl4e_64(); - loaded_pix = getbpl4_64(); + shiftbpl8e_64(); + loaded_pix = getbpl8_64(); } - bplshiftcnt[1] += 1; + bplshiftcnt[1] += 2; if (bplshiftcnt[1] >= 4) { bplshiftcnt[1] = 0; - shiftbpl4o_64(); - loaded_pix = getbpl4_64(); + shiftbpl8o_64(); + loaded_pix = getbpl8_64(); } - if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { - copybpl4e_64(); + if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8e_64(); bplshiftcnt[0] = 0; - loaded_pix = getbpl4_64(); + loaded_pix = getbpl8_64(); } - if (bpldat_copy[1] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[1]) { - copybpl4o_64(); + if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) { + copybpl8o_64(); bplshiftcnt[1] = 0; - loaded_pix = getbpl4_64(); + loaded_pix = getbpl8_64(); } loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; @@ -18783,32 +40823,32 @@ static void lts_aga_fm2_n1_p4_ilores_dshres_genlock(void) if (denise_hdiw && bpl1dat_trigger) { pix3 = loaded_pixs[3]; clxdat |= bplcoltable[pix3]; - dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; - gpix3 = get_genlock_transparency(pix3 ^ bplcon4_denise_xor_val); + dpix_val3 = decode_ham_pixel_aga(pix3); + gpix3 = get_genlock_transparency((pix3 >> 2) & 63); } last_bpl_pix = pix3; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl4e_64(); - loaded_pix = getbpl4_64(); + shiftbpl8e_64(); + loaded_pix = getbpl8_64(); } - bplshiftcnt[1] += 1; + bplshiftcnt[1] += 2; if (bplshiftcnt[1] >= 4) { bplshiftcnt[1] = 0; - shiftbpl4o_64(); - loaded_pix = getbpl4_64(); + shiftbpl8o_64(); + loaded_pix = getbpl8_64(); } - if (bpldat_copy[0] && ((cmp | 3) & 255) == bplcon1_shift_full_masked[0]) { - copybpl4e_64(); + if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8e_64(); bplshiftcnt[0] = 0; - loaded_pix = getbpl4_64(); + loaded_pix = getbpl8_64(); } - if (bpldat_copy[1] && ((cmp | 3) & 255) == bplcon1_shift_full_masked[1]) { - copybpl4o_64(); + if (bpldat_copy[1] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[1]) { + copybpl8o_64(); bplshiftcnt[1] = 0; - loaded_pix = getbpl4_64(); + loaded_pix = getbpl8_64(); } loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; @@ -18880,11 +40920,11 @@ static void lts_aga_fm2_n1_p4_ilores_dshres_genlock(void) denise_cck++; } } -static void lts_aga_fm2_n1_p4_ilores_dshres_filtered_genlock(void) +static void lts_aga_fm2_ham1_p8_ihires_dshres_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm2_dpf0_p4_ilores_dshres_genlock(void) +static void lts_aga_fm2_kehb0_p8_ihires_dshres_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -18895,7 +40935,6 @@ 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; @@ -18903,31 +40942,7 @@ static void lts_aga_fm2_dpf0_p4_ilores_dshres_genlock(void) if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - gpix0 = get_genlock_transparency(dpf_lookup[pix0]); - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4_64(); - loaded_pix = getbpl4_64(); - } - if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { - copybpl4_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4_64(); } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; uae_u8 pix1 = 0; uae_u8 gpix1 = 0xff; @@ -18935,31 +40950,7 @@ static void lts_aga_fm2_dpf0_p4_ilores_dshres_genlock(void) if (!denise_blank_active) { gpix1 = get_genlock_transparency_border(); dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - if (dpf_lookup_no[pix1]) { - val1 += dblpfofs[bpldualpf2of]; - } - val1 ^= bplcon4_denise_xor_val; - dpix_val1 = denise_colors.acolors[val1]; - gpix1 = get_genlock_transparency(dpf_lookup[pix1]); - } - last_bpl_pix = pix1; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4_64(); - loaded_pix = getbpl4_64(); - } - if (bpldat_copy[0] && ((cmp | 1) & 255) == bplcon1_shift_full_masked[0]) { - copybpl4_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4_64(); } - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u8 gpix2 = 0xff; @@ -18967,31 +40958,7 @@ static void lts_aga_fm2_dpf0_p4_ilores_dshres_genlock(void) if (!denise_blank_active) { gpix2 = get_genlock_transparency_border(); dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; - gpix2 = get_genlock_transparency(dpf_lookup[pix2]); - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4_64(); - loaded_pix = getbpl4_64(); - } - if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { - copybpl4_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4_64(); } - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; uae_u8 pix3 = 0; uae_u8 gpix3 = 0xff; @@ -18999,31 +40966,7 @@ static void lts_aga_fm2_dpf0_p4_ilores_dshres_genlock(void) if (!denise_blank_active) { gpix3 = get_genlock_transparency_border(); dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - uae_u8 val3 = dpf_lookup[pix3]; - if (dpf_lookup_no[pix3]) { - val3 += dblpfofs[bpldualpf2of]; - } - val3 ^= bplcon4_denise_xor_val; - dpix_val3 = denise_colors.acolors[val3]; - gpix3 = get_genlock_transparency(dpf_lookup[pix3]); - } - last_bpl_pix = pix3; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4_64(); - loaded_pix = getbpl4_64(); - } - if (bpldat_copy[0] && ((cmp | 3) & 255) == bplcon1_shift_full_masked[0]) { - copybpl4_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4_64(); } - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; @@ -19093,11 +41036,11 @@ static void lts_aga_fm2_dpf0_p4_ilores_dshres_genlock(void) denise_cck++; } } -static void lts_aga_fm2_dpf0_p4_ilores_dshres_filtered_genlock(void) +static void lts_aga_fm2_kehb0_p8_ihires_dshres_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm2_dpf1_p4_ilores_dshres_genlock(void) +static void lts_aga_fm2_kehb1_p8_ihires_dshres_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -19108,7 +41051,6 @@ 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; @@ -19116,42 +41058,7 @@ static void lts_aga_fm2_dpf1_p4_ilores_dshres_genlock(void) if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - gpix0 = get_genlock_transparency(dpf_lookup[pix0]); - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4e_64(); - loaded_pix = getbpl4_64(); - } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl4o_64(); - loaded_pix = getbpl4_64(); - } - 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] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[1]) { - copybpl4o_64(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl4_64(); } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; uae_u8 pix1 = 0; uae_u8 gpix1 = 0xff; @@ -19159,42 +41066,7 @@ static void lts_aga_fm2_dpf1_p4_ilores_dshres_genlock(void) if (!denise_blank_active) { gpix1 = get_genlock_transparency_border(); dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - if (dpf_lookup_no[pix1]) { - val1 += dblpfofs[bpldualpf2of]; - } - val1 ^= bplcon4_denise_xor_val; - dpix_val1 = denise_colors.acolors[val1]; - gpix1 = get_genlock_transparency(dpf_lookup[pix1]); - } - last_bpl_pix = pix1; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4e_64(); - loaded_pix = getbpl4_64(); - } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl4o_64(); - loaded_pix = getbpl4_64(); - } - 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] && ((cmp | 1) & 255) == bplcon1_shift_full_masked[1]) { - copybpl4o_64(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl4_64(); } - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u8 gpix2 = 0xff; @@ -19202,42 +41074,7 @@ static void lts_aga_fm2_dpf1_p4_ilores_dshres_genlock(void) if (!denise_blank_active) { gpix2 = get_genlock_transparency_border(); dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; - gpix2 = get_genlock_transparency(dpf_lookup[pix2]); - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4e_64(); - loaded_pix = getbpl4_64(); - } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl4o_64(); - loaded_pix = getbpl4_64(); } - 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] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[1]) { - copybpl4o_64(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl4_64(); - } - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; uae_u8 pix3 = 0; uae_u8 gpix3 = 0xff; @@ -19245,42 +41082,7 @@ static void lts_aga_fm2_dpf1_p4_ilores_dshres_genlock(void) if (!denise_blank_active) { gpix3 = get_genlock_transparency_border(); dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - uae_u8 val3 = dpf_lookup[pix3]; - if (dpf_lookup_no[pix3]) { - val3 += dblpfofs[bpldualpf2of]; - } - val3 ^= bplcon4_denise_xor_val; - dpix_val3 = denise_colors.acolors[val3]; - gpix3 = get_genlock_transparency(dpf_lookup[pix3]); - } - last_bpl_pix = pix3; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4e_64(); - loaded_pix = getbpl4_64(); - } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl4o_64(); - loaded_pix = getbpl4_64(); - } - 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] && ((cmp | 3) & 255) == bplcon1_shift_full_masked[1]) { - copybpl4o_64(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl4_64(); - } - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; @@ -19350,59 +41152,11 @@ static void lts_aga_fm2_dpf1_p4_ilores_dshres_genlock(void) denise_cck++; } } -static void lts_aga_fm2_dpf1_p4_ilores_dshres_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb0_p4_ilores_dshres_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb0_p4_ilores_dshres_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb1_p4_ilores_dshres_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb1_p4_ilores_dshres_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_ham0_p4_ilores_dshres_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_ham0_p4_ilores_dshres_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_ham1_p4_ilores_dshres_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_ham1_p4_ilores_dshres_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb0_p4_ilores_dshres_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb0_p4_ilores_dshres_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb1_p4_ilores_dshres_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb1_p4_ilores_dshres_filtered_genlock(void) +static void lts_aga_fm2_kehb1_p8_ihires_dshres_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm2_n0_p8_ilores_dshres_genlock(void) +static void lts_aga_fm2_n0_p4_ihires_dshres_spr_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -19415,6 +41169,7 @@ static void lts_aga_fm2_n0_p8_ilores_dshres_genlock(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; @@ -19429,19 +41184,28 @@ static void lts_aga_fm2_n0_p8_ilores_dshres_genlock(void) } last_bpl_pix = pix0; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl8_64(); - loaded_pix = getbpl8_64(); + shiftbpl4_64(); + loaded_pix = getbpl4_64(); } - if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl4_64(); bplshiftcnt[0] = 0; - loaded_pix = getbpl8_64(); + loaded_pix = getbpl4_64(); + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } } loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u8 gpix1 = 0xff; uae_u32 dpix_val1 = BLANK_COLOR; @@ -19456,19 +41220,28 @@ static void lts_aga_fm2_n0_p8_ilores_dshres_genlock(void) } last_bpl_pix = pix1; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl8_64(); - loaded_pix = getbpl8_64(); + shiftbpl4_64(); + loaded_pix = getbpl4_64(); } - if (bpldat_copy[0] && ((cmp | 1) & 255) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); + if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { + copybpl4_64(); bplshiftcnt[0] = 0; - loaded_pix = getbpl8_64(); + loaded_pix = getbpl4_64(); + } + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } } loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u8 gpix2 = 0xff; uae_u32 dpix_val2 = BLANK_COLOR; @@ -19483,19 +41256,28 @@ static void lts_aga_fm2_n0_p8_ilores_dshres_genlock(void) } last_bpl_pix = pix2; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl8_64(); - loaded_pix = getbpl8_64(); + shiftbpl4_64(); + loaded_pix = getbpl4_64(); } - if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); + if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { + copybpl4_64(); bplshiftcnt[0] = 0; - loaded_pix = getbpl8_64(); + loaded_pix = getbpl4_64(); + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } } loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u8 gpix3 = 0xff; uae_u32 dpix_val3 = BLANK_COLOR; @@ -19510,26 +41292,66 @@ static void lts_aga_fm2_n0_p8_ilores_dshres_genlock(void) } last_bpl_pix = pix3; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl8_64(); - loaded_pix = getbpl8_64(); + shiftbpl4_64(); + loaded_pix = getbpl4_64(); } - if (bpldat_copy[0] && ((cmp | 3) & 255) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); + if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { + copybpl4_64(); bplshiftcnt[0] = 0; - loaded_pix = getbpl8_64(); + loaded_pix = getbpl4_64(); + } + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } } loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + gpix1 = get_genlock_transparency(spix1); + + } + } dtbuf[h][1] = dpix_val1; dtgbuf[h][1] = gpix1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } dtbuf[h][2] = dpix_val2; dtgbuf[h][2] = gpix2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + gpix3 = get_genlock_transparency(spix3); + + } + } dtbuf[h][3] = dpix_val3; dtgbuf[h][3] = gpix3; uae_u32 t0 = dtbuf[h ^ lol][0]; @@ -19591,11 +41413,11 @@ static void lts_aga_fm2_n0_p8_ilores_dshres_genlock(void) denise_cck++; } } -static void lts_aga_fm2_n0_p8_ilores_dshres_filtered_genlock(void) +static void lts_aga_fm2_n0_p4_ihires_dshres_spr_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm2_n1_p8_ilores_dshres_genlock(void) +static void lts_aga_fm2_n1_p4_ihires_dshres_spr_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -19608,6 +41430,7 @@ static void lts_aga_fm2_n1_p8_ilores_dshres_genlock(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; @@ -19622,30 +41445,39 @@ static void lts_aga_fm2_n1_p8_ilores_dshres_genlock(void) } last_bpl_pix = pix0; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl8e_64(); - loaded_pix = getbpl8_64(); + shiftbpl4e_64(); + loaded_pix = getbpl4_64(); } - bplshiftcnt[1] += 1; + bplshiftcnt[1] += 2; if (bplshiftcnt[1] >= 4) { bplshiftcnt[1] = 0; - shiftbpl8o_64(); - loaded_pix = getbpl8_64(); + shiftbpl4o_64(); + loaded_pix = getbpl4_64(); } - if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { - copybpl8e_64(); + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl4e_64(); bplshiftcnt[0] = 0; - loaded_pix = getbpl8_64(); + loaded_pix = getbpl4_64(); } - if (bpldat_copy[1] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); + if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { + copybpl4o_64(); bplshiftcnt[1] = 0; - loaded_pix = getbpl8_64(); + loaded_pix = getbpl4_64(); + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } } loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u8 gpix1 = 0xff; uae_u32 dpix_val1 = BLANK_COLOR; @@ -19660,30 +41492,39 @@ static void lts_aga_fm2_n1_p8_ilores_dshres_genlock(void) } last_bpl_pix = pix1; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl8e_64(); - loaded_pix = getbpl8_64(); + shiftbpl4e_64(); + loaded_pix = getbpl4_64(); } - bplshiftcnt[1] += 1; + bplshiftcnt[1] += 2; if (bplshiftcnt[1] >= 4) { bplshiftcnt[1] = 0; - shiftbpl8o_64(); - loaded_pix = getbpl8_64(); + shiftbpl4o_64(); + loaded_pix = getbpl4_64(); } - if (bpldat_copy[0] && ((cmp | 1) & 255) == bplcon1_shift_full_masked[0]) { - copybpl8e_64(); + if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { + copybpl4e_64(); bplshiftcnt[0] = 0; - loaded_pix = getbpl8_64(); + loaded_pix = getbpl4_64(); } - if (bpldat_copy[1] && ((cmp | 1) & 255) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); + if (bpldat_copy[1] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) { + copybpl4o_64(); bplshiftcnt[1] = 0; - loaded_pix = getbpl8_64(); + loaded_pix = getbpl4_64(); + } + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } } loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u8 gpix2 = 0xff; uae_u32 dpix_val2 = BLANK_COLOR; @@ -19698,30 +41539,39 @@ static void lts_aga_fm2_n1_p8_ilores_dshres_genlock(void) } last_bpl_pix = pix2; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl8e_64(); - loaded_pix = getbpl8_64(); + shiftbpl4e_64(); + loaded_pix = getbpl4_64(); } - bplshiftcnt[1] += 1; + bplshiftcnt[1] += 2; if (bplshiftcnt[1] >= 4) { bplshiftcnt[1] = 0; - shiftbpl8o_64(); - loaded_pix = getbpl8_64(); + shiftbpl4o_64(); + loaded_pix = getbpl4_64(); } - if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { - copybpl8e_64(); + if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { + copybpl4e_64(); bplshiftcnt[0] = 0; - loaded_pix = getbpl8_64(); + loaded_pix = getbpl4_64(); } - if (bpldat_copy[1] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); + if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) { + copybpl4o_64(); bplshiftcnt[1] = 0; - loaded_pix = getbpl8_64(); + loaded_pix = getbpl4_64(); + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } } loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u8 gpix3 = 0xff; uae_u32 dpix_val3 = BLANK_COLOR; @@ -19736,37 +41586,77 @@ static void lts_aga_fm2_n1_p8_ilores_dshres_genlock(void) } last_bpl_pix = pix3; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl8e_64(); - loaded_pix = getbpl8_64(); + shiftbpl4e_64(); + loaded_pix = getbpl4_64(); } - bplshiftcnt[1] += 1; + bplshiftcnt[1] += 2; if (bplshiftcnt[1] >= 4) { bplshiftcnt[1] = 0; - shiftbpl8o_64(); - loaded_pix = getbpl8_64(); + shiftbpl4o_64(); + loaded_pix = getbpl4_64(); } - if (bpldat_copy[0] && ((cmp | 3) & 255) == bplcon1_shift_full_masked[0]) { - copybpl8e_64(); + if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { + copybpl4e_64(); bplshiftcnt[0] = 0; - loaded_pix = getbpl8_64(); + loaded_pix = getbpl4_64(); } - if (bpldat_copy[1] && ((cmp | 3) & 255) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); + if (bpldat_copy[1] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[1]) { + copybpl4o_64(); bplshiftcnt[1] = 0; - loaded_pix = getbpl8_64(); + loaded_pix = getbpl4_64(); + } + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } } loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + gpix1 = get_genlock_transparency(spix1); + + } + } dtbuf[h][1] = dpix_val1; dtgbuf[h][1] = gpix1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } dtbuf[h][2] = dpix_val2; dtgbuf[h][2] = gpix2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + gpix3 = get_genlock_transparency(spix3); + + } + } dtbuf[h][3] = dpix_val3; dtgbuf[h][3] = gpix3; uae_u32 t0 = dtbuf[h ^ lol][0]; @@ -19828,11 +41718,11 @@ static void lts_aga_fm2_n1_p8_ilores_dshres_genlock(void) denise_cck++; } } -static void lts_aga_fm2_n1_p8_ilores_dshres_filtered_genlock(void) +static void lts_aga_fm2_n1_p4_ihires_dshres_spr_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm2_dpf0_p8_ilores_dshres_genlock(void) +static void lts_aga_fm2_dpf0_p4_ihires_dshres_spr_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -19845,6 +41735,7 @@ static void lts_aga_fm2_dpf0_p8_ilores_dshres_genlock(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; @@ -19864,19 +41755,28 @@ static void lts_aga_fm2_dpf0_p8_ilores_dshres_genlock(void) } last_bpl_pix = pix0; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl8_64(); - loaded_pix = getbpl8_64(); + shiftbpl4_64(); + loaded_pix = getbpl4_64(); } - if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl4_64(); bplshiftcnt[0] = 0; - loaded_pix = getbpl8_64(); + loaded_pix = getbpl4_64(); + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } } loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u8 gpix1 = 0xff; uae_u32 dpix_val1 = BLANK_COLOR; @@ -19896,19 +41796,28 @@ static void lts_aga_fm2_dpf0_p8_ilores_dshres_genlock(void) } last_bpl_pix = pix1; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl8_64(); - loaded_pix = getbpl8_64(); + shiftbpl4_64(); + loaded_pix = getbpl4_64(); } - if (bpldat_copy[0] && ((cmp | 1) & 255) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); + if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { + copybpl4_64(); bplshiftcnt[0] = 0; - loaded_pix = getbpl8_64(); + loaded_pix = getbpl4_64(); + } + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } } loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u8 gpix2 = 0xff; uae_u32 dpix_val2 = BLANK_COLOR; @@ -19928,19 +41837,28 @@ static void lts_aga_fm2_dpf0_p8_ilores_dshres_genlock(void) } last_bpl_pix = pix2; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl8_64(); - loaded_pix = getbpl8_64(); + shiftbpl4_64(); + loaded_pix = getbpl4_64(); } - if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); + if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { + copybpl4_64(); bplshiftcnt[0] = 0; - loaded_pix = getbpl8_64(); + loaded_pix = getbpl4_64(); + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } } loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u8 gpix3 = 0xff; uae_u32 dpix_val3 = BLANK_COLOR; @@ -19960,26 +41878,66 @@ static void lts_aga_fm2_dpf0_p8_ilores_dshres_genlock(void) } last_bpl_pix = pix3; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl8_64(); - loaded_pix = getbpl8_64(); + shiftbpl4_64(); + loaded_pix = getbpl4_64(); } - if (bpldat_copy[0] && ((cmp | 3) & 255) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); + if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { + copybpl4_64(); bplshiftcnt[0] = 0; - loaded_pix = getbpl8_64(); + loaded_pix = getbpl4_64(); + } + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } } loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + gpix1 = get_genlock_transparency(spix1); + + } + } dtbuf[h][1] = dpix_val1; dtgbuf[h][1] = gpix1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } dtbuf[h][2] = dpix_val2; dtgbuf[h][2] = gpix2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + gpix3 = get_genlock_transparency(spix3); + + } + } dtbuf[h][3] = dpix_val3; dtgbuf[h][3] = gpix3; uae_u32 t0 = dtbuf[h ^ lol][0]; @@ -20041,11 +41999,11 @@ static void lts_aga_fm2_dpf0_p8_ilores_dshres_genlock(void) denise_cck++; } } -static void lts_aga_fm2_dpf0_p8_ilores_dshres_filtered_genlock(void) +static void lts_aga_fm2_dpf0_p4_ihires_dshres_spr_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm2_dpf1_p8_ilores_dshres_genlock(void) +static void lts_aga_fm2_dpf1_p4_ihires_dshres_spr_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -20058,6 +42016,7 @@ static void lts_aga_fm2_dpf1_p8_ilores_dshres_genlock(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; @@ -20077,30 +42036,39 @@ static void lts_aga_fm2_dpf1_p8_ilores_dshres_genlock(void) } last_bpl_pix = pix0; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl8e_64(); - loaded_pix = getbpl8_64(); + shiftbpl4e_64(); + loaded_pix = getbpl4_64(); } - bplshiftcnt[1] += 1; + bplshiftcnt[1] += 2; if (bplshiftcnt[1] >= 4) { bplshiftcnt[1] = 0; - shiftbpl8o_64(); - loaded_pix = getbpl8_64(); + shiftbpl4o_64(); + loaded_pix = getbpl4_64(); } - if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { - copybpl8e_64(); + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl4e_64(); bplshiftcnt[0] = 0; - loaded_pix = getbpl8_64(); + loaded_pix = getbpl4_64(); } - if (bpldat_copy[1] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); + if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { + copybpl4o_64(); bplshiftcnt[1] = 0; - loaded_pix = getbpl8_64(); + loaded_pix = getbpl4_64(); + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } } loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u8 gpix1 = 0xff; uae_u32 dpix_val1 = BLANK_COLOR; @@ -20120,30 +42088,39 @@ static void lts_aga_fm2_dpf1_p8_ilores_dshres_genlock(void) } last_bpl_pix = pix1; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl8e_64(); - loaded_pix = getbpl8_64(); + shiftbpl4e_64(); + loaded_pix = getbpl4_64(); } - bplshiftcnt[1] += 1; + bplshiftcnt[1] += 2; if (bplshiftcnt[1] >= 4) { bplshiftcnt[1] = 0; - shiftbpl8o_64(); - loaded_pix = getbpl8_64(); + shiftbpl4o_64(); + loaded_pix = getbpl4_64(); } - if (bpldat_copy[0] && ((cmp | 1) & 255) == bplcon1_shift_full_masked[0]) { - copybpl8e_64(); + if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { + copybpl4e_64(); bplshiftcnt[0] = 0; - loaded_pix = getbpl8_64(); + loaded_pix = getbpl4_64(); } - if (bpldat_copy[1] && ((cmp | 1) & 255) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); + if (bpldat_copy[1] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) { + copybpl4o_64(); bplshiftcnt[1] = 0; - loaded_pix = getbpl8_64(); + loaded_pix = getbpl4_64(); + } + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } } loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u8 gpix2 = 0xff; uae_u32 dpix_val2 = BLANK_COLOR; @@ -20163,30 +42140,39 @@ static void lts_aga_fm2_dpf1_p8_ilores_dshres_genlock(void) } last_bpl_pix = pix2; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl8e_64(); - loaded_pix = getbpl8_64(); + shiftbpl4e_64(); + loaded_pix = getbpl4_64(); } - bplshiftcnt[1] += 1; + bplshiftcnt[1] += 2; if (bplshiftcnt[1] >= 4) { bplshiftcnt[1] = 0; - shiftbpl8o_64(); - loaded_pix = getbpl8_64(); + shiftbpl4o_64(); + loaded_pix = getbpl4_64(); } - if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { - copybpl8e_64(); + if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { + copybpl4e_64(); bplshiftcnt[0] = 0; - loaded_pix = getbpl8_64(); + loaded_pix = getbpl4_64(); } - if (bpldat_copy[1] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); + if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) { + copybpl4o_64(); bplshiftcnt[1] = 0; - loaded_pix = getbpl8_64(); + loaded_pix = getbpl4_64(); + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } } loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u8 gpix3 = 0xff; uae_u32 dpix_val3 = BLANK_COLOR; @@ -20206,37 +42192,77 @@ static void lts_aga_fm2_dpf1_p8_ilores_dshres_genlock(void) } last_bpl_pix = pix3; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl8e_64(); - loaded_pix = getbpl8_64(); + shiftbpl4e_64(); + loaded_pix = getbpl4_64(); } - bplshiftcnt[1] += 1; + bplshiftcnt[1] += 2; if (bplshiftcnt[1] >= 4) { bplshiftcnt[1] = 0; - shiftbpl8o_64(); - loaded_pix = getbpl8_64(); + shiftbpl4o_64(); + loaded_pix = getbpl4_64(); } - if (bpldat_copy[0] && ((cmp | 3) & 255) == bplcon1_shift_full_masked[0]) { - copybpl8e_64(); + if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { + copybpl4e_64(); bplshiftcnt[0] = 0; - loaded_pix = getbpl8_64(); + loaded_pix = getbpl4_64(); } - if (bpldat_copy[1] && ((cmp | 3) & 255) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); + if (bpldat_copy[1] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[1]) { + copybpl4o_64(); bplshiftcnt[1] = 0; - loaded_pix = getbpl8_64(); + loaded_pix = getbpl4_64(); + } + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } } loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + gpix1 = get_genlock_transparency(spix1); + + } + } dtbuf[h][1] = dpix_val1; dtgbuf[h][1] = gpix1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } dtbuf[h][2] = dpix_val2; dtgbuf[h][2] = gpix2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + gpix3 = get_genlock_transparency(spix3); + + } + } dtbuf[h][3] = dpix_val3; dtgbuf[h][3] = gpix3; uae_u32 t0 = dtbuf[h ^ lol][0]; @@ -20298,27 +42324,11 @@ static void lts_aga_fm2_dpf1_p8_ilores_dshres_genlock(void) denise_cck++; } } -static void lts_aga_fm2_dpf1_p8_ilores_dshres_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb0_p8_ilores_dshres_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb0_p8_ilores_dshres_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb1_p8_ilores_dshres_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb1_p8_ilores_dshres_filtered_genlock(void) +static void lts_aga_fm2_dpf1_p4_ihires_dshres_spr_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm2_ham0_p8_ilores_dshres_genlock(void) +static void lts_aga_fm2_ehb0_p4_ihires_dshres_spr_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -20329,123 +42339,114 @@ 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; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = decode_ham_pixel_aga(pix0); - gpix0 = get_genlock_transparency((pix0 >> 2) & 63); - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8_64(); - loaded_pix = getbpl8_64(); - } - if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_64(); } - loaded_pixs[0] = loaded_pix; - internal_pixel_cnt += 1; - uae_u8 pix1 = 0; - uae_u8 gpix1 = 0xff; - uae_u32 dpix_val1 = BLANK_COLOR; - if (!denise_blank_active) { - gpix1 = get_genlock_transparency_border(); - dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - dpix_val1 = decode_ham_pixel_aga(pix1); - gpix1 = get_genlock_transparency((pix1 >> 2) & 63); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; } - last_bpl_pix = pix1; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8_64(); - loaded_pix = getbpl8_64(); } - if (bpldat_copy[0] && ((cmp | 1) & 255) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_64(); + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } } - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u8 gpix2 = 0xff; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { gpix2 = get_genlock_transparency_border(); dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = decode_ham_pixel_aga(pix2); - gpix2 = get_genlock_transparency((pix2 >> 2) & 63); - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8_64(); - loaded_pix = getbpl8_64(); } - if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_64(); + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } } - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u8 gpix3 = 0xff; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { gpix3 = get_genlock_transparency_border(); dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - dpix_val3 = decode_ham_pixel_aga(pix3); - gpix3 = get_genlock_transparency((pix3 >> 2) & 63); - } - last_bpl_pix = pix3; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8_64(); - loaded_pix = getbpl8_64(); } - if (bpldat_copy[0] && ((cmp | 3) & 255) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_64(); + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } } - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + gpix1 = get_genlock_transparency(spix1); + + } + } dtbuf[h][1] = dpix_val1; dtgbuf[h][1] = gpix1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } dtbuf[h][2] = dpix_val2; dtgbuf[h][2] = gpix2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + gpix3 = get_genlock_transparency(spix3); + + } + } dtbuf[h][3] = dpix_val3; dtgbuf[h][3] = gpix3; uae_u32 t0 = dtbuf[h ^ lol][0]; @@ -20507,11 +42508,11 @@ static void lts_aga_fm2_ham0_p8_ilores_dshres_genlock(void) denise_cck++; } } -static void lts_aga_fm2_ham0_p8_ilores_dshres_filtered_genlock(void) +static void lts_aga_fm2_ehb0_p4_ihires_dshres_spr_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm2_ham1_p8_ilores_dshres_genlock(void) +static void lts_aga_fm2_ehb1_p4_ihires_dshres_spr_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -20522,167 +42523,114 @@ 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; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = decode_ham_pixel_aga(pix0); - gpix0 = get_genlock_transparency((pix0 >> 2) & 63); - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8e_64(); - loaded_pix = getbpl8_64(); - } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl8o_64(); - loaded_pix = getbpl8_64(); - } - 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] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl8_64(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u8 gpix1 = 0xff; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { gpix1 = get_genlock_transparency_border(); dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - dpix_val1 = decode_ham_pixel_aga(pix1); - gpix1 = get_genlock_transparency((pix1 >> 2) & 63); - } - last_bpl_pix = pix1; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8e_64(); - loaded_pix = getbpl8_64(); - } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl8o_64(); - loaded_pix = getbpl8_64(); - } - 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] && ((cmp | 1) & 255) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl8_64(); + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } } - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u8 gpix2 = 0xff; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { gpix2 = get_genlock_transparency_border(); dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = decode_ham_pixel_aga(pix2); - gpix2 = get_genlock_transparency((pix2 >> 2) & 63); - } - last_bpl_pix = pix2; } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8e_64(); - loaded_pix = getbpl8_64(); - } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl8o_64(); - loaded_pix = getbpl8_64(); - } - 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] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl8_64(); + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } } - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u8 gpix3 = 0xff; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { gpix3 = get_genlock_transparency_border(); dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - dpix_val3 = decode_ham_pixel_aga(pix3); - gpix3 = get_genlock_transparency((pix3 >> 2) & 63); - } - last_bpl_pix = pix3; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8e_64(); - loaded_pix = getbpl8_64(); - } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl8o_64(); - loaded_pix = getbpl8_64(); - } - 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] && ((cmp | 3) & 255) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl8_64(); + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } } - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + gpix1 = get_genlock_transparency(spix1); + + } + } dtbuf[h][1] = dpix_val1; dtgbuf[h][1] = gpix1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } dtbuf[h][2] = dpix_val2; dtgbuf[h][2] = gpix2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + gpix3 = get_genlock_transparency(spix3); + + } + } dtbuf[h][3] = dpix_val3; dtgbuf[h][3] = gpix3; uae_u32 t0 = dtbuf[h ^ lol][0]; @@ -20744,27 +42692,11 @@ static void lts_aga_fm2_ham1_p8_ilores_dshres_genlock(void) denise_cck++; } } -static void lts_aga_fm2_ham1_p8_ilores_dshres_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb0_p8_ilores_dshres_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb0_p8_ilores_dshres_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb1_p8_ilores_dshres_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb1_p8_ilores_dshres_filtered_genlock(void) +static void lts_aga_fm2_ehb1_p4_ihires_dshres_spr_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm2_n0_p4_ilores_dshres_spr_genlock(void) +static void lts_aga_fm2_ham0_p4_ihires_dshres_spr_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -20775,7 +42707,6 @@ 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; @@ -20784,24 +42715,6 @@ static void lts_aga_fm2_n0_p4_ilores_dshres_spr_genlock(void) if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4_64(); - loaded_pix = getbpl4_64(); - } - if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { - copybpl4_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4_64(); } uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { @@ -20811,7 +42724,6 @@ static void lts_aga_fm2_n0_p4_ilores_dshres_spr_genlock(void) sv0 = svt; } } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; @@ -20820,24 +42732,6 @@ static void lts_aga_fm2_n0_p4_ilores_dshres_spr_genlock(void) if (!denise_blank_active) { gpix1 = get_genlock_transparency_border(); dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; - gpix1 = get_genlock_transparency(pix1 ^ bplcon4_denise_xor_val); - } - last_bpl_pix = pix1; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4_64(); - loaded_pix = getbpl4_64(); - } - if (bpldat_copy[0] && ((cmp | 1) & 255) == bplcon1_shift_full_masked[0]) { - copybpl4_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4_64(); } uae_u32 sv1 = 0; if (denise_spr_nr_armeds) { @@ -20847,7 +42741,6 @@ static void lts_aga_fm2_n0_p4_ilores_dshres_spr_genlock(void) sv1 = svt; } } - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; @@ -20856,24 +42749,6 @@ static void lts_aga_fm2_n0_p4_ilores_dshres_spr_genlock(void) if (!denise_blank_active) { gpix2 = get_genlock_transparency_border(); dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; - gpix2 = get_genlock_transparency(pix2 ^ bplcon4_denise_xor_val); - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4_64(); - loaded_pix = getbpl4_64(); - } - if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { - copybpl4_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4_64(); } uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { @@ -20883,7 +42758,6 @@ static void lts_aga_fm2_n0_p4_ilores_dshres_spr_genlock(void) sv2 = svt; } } - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; @@ -20892,24 +42766,6 @@ static void lts_aga_fm2_n0_p4_ilores_dshres_spr_genlock(void) if (!denise_blank_active) { gpix3 = get_genlock_transparency_border(); dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; - gpix3 = get_genlock_transparency(pix3 ^ bplcon4_denise_xor_val); - } - last_bpl_pix = pix3; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4_64(); - loaded_pix = getbpl4_64(); - } - if (bpldat_copy[0] && ((cmp | 3) & 255) == bplcon1_shift_full_masked[0]) { - copybpl4_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4_64(); } uae_u32 sv3 = 0; if (denise_spr_nr_armeds) { @@ -20919,7 +42775,6 @@ static void lts_aga_fm2_n0_p4_ilores_dshres_spr_genlock(void) sv3 = svt; } } - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { @@ -21021,11 +42876,11 @@ static void lts_aga_fm2_n0_p4_ilores_dshres_spr_genlock(void) denise_cck++; } } -static void lts_aga_fm2_n0_p4_ilores_dshres_spr_filtered_genlock(void) +static void lts_aga_fm2_ham0_p4_ihires_dshres_spr_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm2_n1_p4_ilores_dshres_spr_genlock(void) +static void lts_aga_fm2_ham1_p4_ihires_dshres_spr_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -21036,7 +42891,6 @@ 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; @@ -21045,35 +42899,6 @@ static void lts_aga_fm2_n1_p4_ilores_dshres_spr_genlock(void) if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4e_64(); - loaded_pix = getbpl4_64(); - } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl4o_64(); - loaded_pix = getbpl4_64(); - } - 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] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[1]) { - copybpl4o_64(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl4_64(); } uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { @@ -21083,7 +42908,6 @@ static void lts_aga_fm2_n1_p4_ilores_dshres_spr_genlock(void) sv0 = svt; } } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; @@ -21092,35 +42916,6 @@ static void lts_aga_fm2_n1_p4_ilores_dshres_spr_genlock(void) if (!denise_blank_active) { gpix1 = get_genlock_transparency_border(); dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; - gpix1 = get_genlock_transparency(pix1 ^ bplcon4_denise_xor_val); - } - last_bpl_pix = pix1; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4e_64(); - loaded_pix = getbpl4_64(); - } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl4o_64(); - loaded_pix = getbpl4_64(); - } - 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] && ((cmp | 1) & 255) == bplcon1_shift_full_masked[1]) { - copybpl4o_64(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl4_64(); } uae_u32 sv1 = 0; if (denise_spr_nr_armeds) { @@ -21130,7 +42925,6 @@ static void lts_aga_fm2_n1_p4_ilores_dshres_spr_genlock(void) sv1 = svt; } } - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; @@ -21139,35 +42933,6 @@ static void lts_aga_fm2_n1_p4_ilores_dshres_spr_genlock(void) if (!denise_blank_active) { gpix2 = get_genlock_transparency_border(); dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; - gpix2 = get_genlock_transparency(pix2 ^ bplcon4_denise_xor_val); - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4e_64(); - loaded_pix = getbpl4_64(); - } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl4o_64(); - loaded_pix = getbpl4_64(); - } - 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] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[1]) { - copybpl4o_64(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl4_64(); } uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { @@ -21177,7 +42942,6 @@ static void lts_aga_fm2_n1_p4_ilores_dshres_spr_genlock(void) sv2 = svt; } } - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; @@ -21186,35 +42950,6 @@ static void lts_aga_fm2_n1_p4_ilores_dshres_spr_genlock(void) if (!denise_blank_active) { gpix3 = get_genlock_transparency_border(); dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; - gpix3 = get_genlock_transparency(pix3 ^ bplcon4_denise_xor_val); - } - last_bpl_pix = pix3; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4e_64(); - loaded_pix = getbpl4_64(); - } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl4o_64(); - loaded_pix = getbpl4_64(); - } - 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] && ((cmp | 3) & 255) == bplcon1_shift_full_masked[1]) { - copybpl4o_64(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl4_64(); } uae_u32 sv3 = 0; if (denise_spr_nr_armeds) { @@ -21224,7 +42959,6 @@ static void lts_aga_fm2_n1_p4_ilores_dshres_spr_genlock(void) sv3 = svt; } } - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { @@ -21326,11 +43060,11 @@ static void lts_aga_fm2_n1_p4_ilores_dshres_spr_genlock(void) denise_cck++; } } -static void lts_aga_fm2_n1_p4_ilores_dshres_spr_filtered_genlock(void) +static void lts_aga_fm2_ham1_p4_ihires_dshres_spr_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm2_dpf0_p4_ilores_dshres_spr_genlock(void) +static void lts_aga_fm2_kehb0_p4_ihires_dshres_spr_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -21341,7 +43075,6 @@ 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; @@ -21350,29 +43083,6 @@ static void lts_aga_fm2_dpf0_p4_ilores_dshres_spr_genlock(void) if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - gpix0 = get_genlock_transparency(dpf_lookup[pix0]); - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4_64(); - loaded_pix = getbpl4_64(); - } - if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { - copybpl4_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4_64(); } uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { @@ -21382,7 +43092,6 @@ static void lts_aga_fm2_dpf0_p4_ilores_dshres_spr_genlock(void) sv0 = svt; } } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; @@ -21391,29 +43100,6 @@ static void lts_aga_fm2_dpf0_p4_ilores_dshres_spr_genlock(void) if (!denise_blank_active) { gpix1 = get_genlock_transparency_border(); dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - if (dpf_lookup_no[pix1]) { - val1 += dblpfofs[bpldualpf2of]; - } - val1 ^= bplcon4_denise_xor_val; - dpix_val1 = denise_colors.acolors[val1]; - gpix1 = get_genlock_transparency(dpf_lookup[pix1]); - } - last_bpl_pix = pix1; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4_64(); - loaded_pix = getbpl4_64(); - } - if (bpldat_copy[0] && ((cmp | 1) & 255) == bplcon1_shift_full_masked[0]) { - copybpl4_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4_64(); } uae_u32 sv1 = 0; if (denise_spr_nr_armeds) { @@ -21423,7 +43109,6 @@ static void lts_aga_fm2_dpf0_p4_ilores_dshres_spr_genlock(void) sv1 = svt; } } - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; @@ -21432,29 +43117,6 @@ static void lts_aga_fm2_dpf0_p4_ilores_dshres_spr_genlock(void) if (!denise_blank_active) { gpix2 = get_genlock_transparency_border(); dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; - gpix2 = get_genlock_transparency(dpf_lookup[pix2]); - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4_64(); - loaded_pix = getbpl4_64(); - } - if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { - copybpl4_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4_64(); } uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { @@ -21464,7 +43126,6 @@ static void lts_aga_fm2_dpf0_p4_ilores_dshres_spr_genlock(void) sv2 = svt; } } - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; @@ -21473,29 +43134,6 @@ static void lts_aga_fm2_dpf0_p4_ilores_dshres_spr_genlock(void) if (!denise_blank_active) { gpix3 = get_genlock_transparency_border(); dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - uae_u8 val3 = dpf_lookup[pix3]; - if (dpf_lookup_no[pix3]) { - val3 += dblpfofs[bpldualpf2of]; - } - val3 ^= bplcon4_denise_xor_val; - dpix_val3 = denise_colors.acolors[val3]; - gpix3 = get_genlock_transparency(dpf_lookup[pix3]); - } - last_bpl_pix = pix3; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4_64(); - loaded_pix = getbpl4_64(); - } - if (bpldat_copy[0] && ((cmp | 3) & 255) == bplcon1_shift_full_masked[0]) { - copybpl4_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4_64(); } uae_u32 sv3 = 0; if (denise_spr_nr_armeds) { @@ -21505,7 +43143,6 @@ static void lts_aga_fm2_dpf0_p4_ilores_dshres_spr_genlock(void) sv3 = svt; } } - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { @@ -21607,11 +43244,11 @@ static void lts_aga_fm2_dpf0_p4_ilores_dshres_spr_genlock(void) denise_cck++; } } -static void lts_aga_fm2_dpf0_p4_ilores_dshres_spr_filtered_genlock(void) +static void lts_aga_fm2_kehb0_p4_ihires_dshres_spr_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm2_dpf1_p4_ilores_dshres_spr_genlock(void) +static void lts_aga_fm2_kehb1_p4_ihires_dshres_spr_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -21622,7 +43259,6 @@ 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; @@ -21631,40 +43267,6 @@ static void lts_aga_fm2_dpf1_p4_ilores_dshres_spr_genlock(void) if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - gpix0 = get_genlock_transparency(dpf_lookup[pix0]); - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4e_64(); - loaded_pix = getbpl4_64(); - } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl4o_64(); - loaded_pix = getbpl4_64(); - } - 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] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[1]) { - copybpl4o_64(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl4_64(); } uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { @@ -21674,7 +43276,6 @@ static void lts_aga_fm2_dpf1_p4_ilores_dshres_spr_genlock(void) sv0 = svt; } } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; @@ -21683,40 +43284,6 @@ static void lts_aga_fm2_dpf1_p4_ilores_dshres_spr_genlock(void) if (!denise_blank_active) { gpix1 = get_genlock_transparency_border(); dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - if (dpf_lookup_no[pix1]) { - val1 += dblpfofs[bpldualpf2of]; - } - val1 ^= bplcon4_denise_xor_val; - dpix_val1 = denise_colors.acolors[val1]; - gpix1 = get_genlock_transparency(dpf_lookup[pix1]); - } - last_bpl_pix = pix1; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4e_64(); - loaded_pix = getbpl4_64(); - } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl4o_64(); - loaded_pix = getbpl4_64(); - } - 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] && ((cmp | 1) & 255) == bplcon1_shift_full_masked[1]) { - copybpl4o_64(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl4_64(); } uae_u32 sv1 = 0; if (denise_spr_nr_armeds) { @@ -21726,7 +43293,6 @@ static void lts_aga_fm2_dpf1_p4_ilores_dshres_spr_genlock(void) sv1 = svt; } } - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; @@ -21735,40 +43301,6 @@ static void lts_aga_fm2_dpf1_p4_ilores_dshres_spr_genlock(void) if (!denise_blank_active) { gpix2 = get_genlock_transparency_border(); dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; - gpix2 = get_genlock_transparency(dpf_lookup[pix2]); - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4e_64(); - loaded_pix = getbpl4_64(); - } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl4o_64(); - loaded_pix = getbpl4_64(); - } - 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] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[1]) { - copybpl4o_64(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl4_64(); } uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { @@ -21778,7 +43310,6 @@ static void lts_aga_fm2_dpf1_p4_ilores_dshres_spr_genlock(void) sv2 = svt; } } - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; @@ -21787,40 +43318,6 @@ static void lts_aga_fm2_dpf1_p4_ilores_dshres_spr_genlock(void) if (!denise_blank_active) { gpix3 = get_genlock_transparency_border(); dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - uae_u8 val3 = dpf_lookup[pix3]; - if (dpf_lookup_no[pix3]) { - val3 += dblpfofs[bpldualpf2of]; - } - val3 ^= bplcon4_denise_xor_val; - dpix_val3 = denise_colors.acolors[val3]; - gpix3 = get_genlock_transparency(dpf_lookup[pix3]); - } - last_bpl_pix = pix3; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4e_64(); - loaded_pix = getbpl4_64(); - } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl4o_64(); - loaded_pix = getbpl4_64(); - } - 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] && ((cmp | 3) & 255) == bplcon1_shift_full_masked[1]) { - copybpl4o_64(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl4_64(); } uae_u32 sv3 = 0; if (denise_spr_nr_armeds) { @@ -21830,7 +43327,6 @@ static void lts_aga_fm2_dpf1_p4_ilores_dshres_spr_genlock(void) sv3 = svt; } } - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { @@ -21932,59 +43428,11 @@ static void lts_aga_fm2_dpf1_p4_ilores_dshres_spr_genlock(void) denise_cck++; } } -static void lts_aga_fm2_dpf1_p4_ilores_dshres_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb0_p4_ilores_dshres_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb0_p4_ilores_dshres_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb1_p4_ilores_dshres_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb1_p4_ilores_dshres_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_ham0_p4_ilores_dshres_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_ham0_p4_ilores_dshres_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_ham1_p4_ilores_dshres_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_ham1_p4_ilores_dshres_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb0_p4_ilores_dshres_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb0_p4_ilores_dshres_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb1_p4_ilores_dshres_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb1_p4_ilores_dshres_spr_filtered_genlock(void) +static void lts_aga_fm2_kehb1_p4_ihires_dshres_spr_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm2_n0_p8_ilores_dshres_spr_genlock(void) +static void lts_aga_fm2_n0_p8_ihires_dshres_spr_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -22012,13 +43460,13 @@ static void lts_aga_fm2_n0_p8_ilores_dshres_spr_genlock(void) } last_bpl_pix = pix0; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; shiftbpl8_64(); loaded_pix = getbpl8_64(); } - if (bpldat_copy[0] && ((cmp | 0) & 255) == 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(); @@ -22048,13 +43496,13 @@ static void lts_aga_fm2_n0_p8_ilores_dshres_spr_genlock(void) } last_bpl_pix = pix1; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; shiftbpl8_64(); loaded_pix = getbpl8_64(); } - if (bpldat_copy[0] && ((cmp | 1) & 255) == 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(); @@ -22084,13 +43532,13 @@ static void lts_aga_fm2_n0_p8_ilores_dshres_spr_genlock(void) } last_bpl_pix = pix2; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; shiftbpl8_64(); loaded_pix = getbpl8_64(); } - if (bpldat_copy[0] && ((cmp | 2) & 255) == 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(); @@ -22120,13 +43568,13 @@ static void lts_aga_fm2_n0_p8_ilores_dshres_spr_genlock(void) } last_bpl_pix = pix3; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; shiftbpl8_64(); loaded_pix = getbpl8_64(); } - if (bpldat_copy[0] && ((cmp | 3) & 255) == 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(); @@ -22241,11 +43689,11 @@ static void lts_aga_fm2_n0_p8_ilores_dshres_spr_genlock(void) denise_cck++; } } -static void lts_aga_fm2_n0_p8_ilores_dshres_spr_filtered_genlock(void) +static void lts_aga_fm2_n0_p8_ihires_dshres_spr_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm2_n1_p8_ilores_dshres_spr_genlock(void) +static void lts_aga_fm2_n1_p8_ihires_dshres_spr_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -22273,24 +43721,24 @@ static void lts_aga_fm2_n1_p8_ilores_dshres_spr_genlock(void) } last_bpl_pix = pix0; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; shiftbpl8e_64(); loaded_pix = getbpl8_64(); } - bplshiftcnt[1] += 1; + bplshiftcnt[1] += 2; if (bplshiftcnt[1] >= 4) { bplshiftcnt[1] = 0; shiftbpl8o_64(); loaded_pix = getbpl8_64(); } - if (bpldat_copy[0] && ((cmp | 0) & 255) == 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] && ((cmp | 0) & 255) == 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(); @@ -22320,24 +43768,24 @@ static void lts_aga_fm2_n1_p8_ilores_dshres_spr_genlock(void) } last_bpl_pix = pix1; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; shiftbpl8e_64(); loaded_pix = getbpl8_64(); } - bplshiftcnt[1] += 1; + bplshiftcnt[1] += 2; if (bplshiftcnt[1] >= 4) { bplshiftcnt[1] = 0; shiftbpl8o_64(); loaded_pix = getbpl8_64(); } - if (bpldat_copy[0] && ((cmp | 1) & 255) == 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] && ((cmp | 1) & 255) == 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(); @@ -22367,24 +43815,24 @@ static void lts_aga_fm2_n1_p8_ilores_dshres_spr_genlock(void) } last_bpl_pix = pix2; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; shiftbpl8e_64(); loaded_pix = getbpl8_64(); } - bplshiftcnt[1] += 1; + bplshiftcnt[1] += 2; if (bplshiftcnt[1] >= 4) { bplshiftcnt[1] = 0; shiftbpl8o_64(); loaded_pix = getbpl8_64(); } - if (bpldat_copy[0] && ((cmp | 2) & 255) == 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] && ((cmp | 2) & 255) == 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(); @@ -22414,24 +43862,24 @@ static void lts_aga_fm2_n1_p8_ilores_dshres_spr_genlock(void) } last_bpl_pix = pix3; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; shiftbpl8e_64(); loaded_pix = getbpl8_64(); } - bplshiftcnt[1] += 1; + bplshiftcnt[1] += 2; if (bplshiftcnt[1] >= 4) { bplshiftcnt[1] = 0; shiftbpl8o_64(); loaded_pix = getbpl8_64(); } - if (bpldat_copy[0] && ((cmp | 3) & 255) == 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] && ((cmp | 3) & 255) == 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(); @@ -22546,11 +43994,11 @@ static void lts_aga_fm2_n1_p8_ilores_dshres_spr_genlock(void) denise_cck++; } } -static void lts_aga_fm2_n1_p8_ilores_dshres_spr_filtered_genlock(void) +static void lts_aga_fm2_n1_p8_ihires_dshres_spr_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm2_dpf0_p8_ilores_dshres_spr_genlock(void) +static void lts_aga_fm2_dpf0_p8_ihires_dshres_spr_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -22583,13 +44031,13 @@ static void lts_aga_fm2_dpf0_p8_ilores_dshres_spr_genlock(void) } last_bpl_pix = pix0; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; shiftbpl8_64(); loaded_pix = getbpl8_64(); } - if (bpldat_copy[0] && ((cmp | 0) & 255) == 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(); @@ -22624,13 +44072,13 @@ static void lts_aga_fm2_dpf0_p8_ilores_dshres_spr_genlock(void) } last_bpl_pix = pix1; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; shiftbpl8_64(); loaded_pix = getbpl8_64(); } - if (bpldat_copy[0] && ((cmp | 1) & 255) == 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(); @@ -22665,13 +44113,13 @@ static void lts_aga_fm2_dpf0_p8_ilores_dshres_spr_genlock(void) } last_bpl_pix = pix2; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; shiftbpl8_64(); loaded_pix = getbpl8_64(); } - if (bpldat_copy[0] && ((cmp | 2) & 255) == 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(); @@ -22706,13 +44154,13 @@ static void lts_aga_fm2_dpf0_p8_ilores_dshres_spr_genlock(void) } last_bpl_pix = pix3; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; shiftbpl8_64(); loaded_pix = getbpl8_64(); } - if (bpldat_copy[0] && ((cmp | 3) & 255) == 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(); @@ -22827,11 +44275,11 @@ static void lts_aga_fm2_dpf0_p8_ilores_dshres_spr_genlock(void) denise_cck++; } } -static void lts_aga_fm2_dpf0_p8_ilores_dshres_spr_filtered_genlock(void) +static void lts_aga_fm2_dpf0_p8_ihires_dshres_spr_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm2_dpf1_p8_ilores_dshres_spr_genlock(void) +static void lts_aga_fm2_dpf1_p8_ihires_dshres_spr_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -22864,24 +44312,24 @@ static void lts_aga_fm2_dpf1_p8_ilores_dshres_spr_genlock(void) } last_bpl_pix = pix0; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; shiftbpl8e_64(); loaded_pix = getbpl8_64(); } - bplshiftcnt[1] += 1; + bplshiftcnt[1] += 2; if (bplshiftcnt[1] >= 4) { bplshiftcnt[1] = 0; shiftbpl8o_64(); loaded_pix = getbpl8_64(); } - if (bpldat_copy[0] && ((cmp | 0) & 255) == 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] && ((cmp | 0) & 255) == 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(); @@ -22916,24 +44364,24 @@ static void lts_aga_fm2_dpf1_p8_ilores_dshres_spr_genlock(void) } last_bpl_pix = pix1; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; shiftbpl8e_64(); loaded_pix = getbpl8_64(); } - bplshiftcnt[1] += 1; + bplshiftcnt[1] += 2; if (bplshiftcnt[1] >= 4) { bplshiftcnt[1] = 0; shiftbpl8o_64(); loaded_pix = getbpl8_64(); } - if (bpldat_copy[0] && ((cmp | 1) & 255) == 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] && ((cmp | 1) & 255) == 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(); @@ -22968,24 +44416,24 @@ static void lts_aga_fm2_dpf1_p8_ilores_dshres_spr_genlock(void) } last_bpl_pix = pix2; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; shiftbpl8e_64(); loaded_pix = getbpl8_64(); } - bplshiftcnt[1] += 1; + bplshiftcnt[1] += 2; if (bplshiftcnt[1] >= 4) { bplshiftcnt[1] = 0; shiftbpl8o_64(); loaded_pix = getbpl8_64(); } - if (bpldat_copy[0] && ((cmp | 2) & 255) == 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] && ((cmp | 2) & 255) == 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(); @@ -23020,24 +44468,24 @@ static void lts_aga_fm2_dpf1_p8_ilores_dshres_spr_genlock(void) } last_bpl_pix = pix3; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; shiftbpl8e_64(); loaded_pix = getbpl8_64(); } - bplshiftcnt[1] += 1; + bplshiftcnt[1] += 2; if (bplshiftcnt[1] >= 4) { bplshiftcnt[1] = 0; shiftbpl8o_64(); loaded_pix = getbpl8_64(); } - if (bpldat_copy[0] && ((cmp | 3) & 255) == 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] && ((cmp | 3) & 255) == 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(); @@ -23152,27 +44600,195 @@ static void lts_aga_fm2_dpf1_p8_ilores_dshres_spr_genlock(void) denise_cck++; } } -static void lts_aga_fm2_dpf1_p8_ilores_dshres_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb0_p8_ilores_dshres_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb0_p8_ilores_dshres_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb1_p8_ilores_dshres_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb1_p8_ilores_dshres_spr_filtered_genlock(void) +static void lts_aga_fm2_dpf1_p8_ihires_dshres_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm2_ehb0_p8_ihires_dshres_spr_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } + } + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + } + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } + } + internal_pixel_cnt += 1; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + gpix1 = get_genlock_transparency(spix1); + + } + } + dtbuf[h][1] = dpix_val1; + dtgbuf[h][1] = gpix1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + gpix3 = get_genlock_transparency(spix3); + + } + } + dtbuf[h][3] = dpix_val3; + dtgbuf[h][3] = gpix3; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = dtgbuf[h ^ lol][1]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + *gbuf++ = dtgbuf[h ^ lol][3]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_ehb0_p8_ihires_dshres_spr_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm2_ham0_p8_ilores_dshres_spr_genlock(void) +static void lts_aga_fm2_ehb1_p8_ihires_dshres_spr_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -23183,7 +44799,6 @@ 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; @@ -23192,24 +44807,6 @@ static void lts_aga_fm2_ham0_p8_ilores_dshres_spr_genlock(void) if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = decode_ham_pixel_aga(pix0); - gpix0 = get_genlock_transparency((pix0 >> 2) & 63); - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8_64(); - loaded_pix = getbpl8_64(); - } - if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_64(); } uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { @@ -23219,7 +44816,6 @@ static void lts_aga_fm2_ham0_p8_ilores_dshres_spr_genlock(void) sv0 = svt; } } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; @@ -23228,24 +44824,6 @@ static void lts_aga_fm2_ham0_p8_ilores_dshres_spr_genlock(void) if (!denise_blank_active) { gpix1 = get_genlock_transparency_border(); dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - dpix_val1 = decode_ham_pixel_aga(pix1); - gpix1 = get_genlock_transparency((pix1 >> 2) & 63); - } - last_bpl_pix = pix1; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8_64(); - loaded_pix = getbpl8_64(); - } - if (bpldat_copy[0] && ((cmp | 1) & 255) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_64(); } uae_u32 sv1 = 0; if (denise_spr_nr_armeds) { @@ -23255,7 +44833,6 @@ static void lts_aga_fm2_ham0_p8_ilores_dshres_spr_genlock(void) sv1 = svt; } } - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; @@ -23264,24 +44841,6 @@ static void lts_aga_fm2_ham0_p8_ilores_dshres_spr_genlock(void) if (!denise_blank_active) { gpix2 = get_genlock_transparency_border(); dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = decode_ham_pixel_aga(pix2); - gpix2 = get_genlock_transparency((pix2 >> 2) & 63); - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8_64(); - loaded_pix = getbpl8_64(); - } - if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_64(); } uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { @@ -23291,7 +44850,6 @@ static void lts_aga_fm2_ham0_p8_ilores_dshres_spr_genlock(void) sv2 = svt; } } - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; @@ -23300,24 +44858,6 @@ static void lts_aga_fm2_ham0_p8_ilores_dshres_spr_genlock(void) if (!denise_blank_active) { gpix3 = get_genlock_transparency_border(); dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - dpix_val3 = decode_ham_pixel_aga(pix3); - gpix3 = get_genlock_transparency((pix3 >> 2) & 63); - } - last_bpl_pix = pix3; - } - bplshiftcnt[0] += 1; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8_64(); - loaded_pix = getbpl8_64(); - } - if (bpldat_copy[0] && ((cmp | 3) & 255) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_64(); } uae_u32 sv3 = 0; if (denise_spr_nr_armeds) { @@ -23327,7 +44867,6 @@ static void lts_aga_fm2_ham0_p8_ilores_dshres_spr_genlock(void) sv3 = svt; } } - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { @@ -23429,11 +44968,11 @@ static void lts_aga_fm2_ham0_p8_ilores_dshres_spr_genlock(void) denise_cck++; } } -static void lts_aga_fm2_ham0_p8_ilores_dshres_spr_filtered_genlock(void) +static void lts_aga_fm2_ehb1_p8_ihires_dshres_spr_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm2_ham1_p8_ilores_dshres_spr_genlock(void) +static void lts_aga_fm2_ham0_p8_ihires_dshres_spr_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -23461,28 +45000,17 @@ static void lts_aga_fm2_ham1_p8_ilores_dshres_spr_genlock(void) } last_bpl_pix = pix0; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl8e_64(); - loaded_pix = getbpl8_64(); - } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl8o_64(); + shiftbpl8_64(); loaded_pix = getbpl8_64(); } - if (bpldat_copy[0] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[0]) { - copybpl8e_64(); + if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8_64(); bplshiftcnt[0] = 0; loaded_pix = getbpl8_64(); } - if (bpldat_copy[1] && ((cmp | 0) & 255) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl8_64(); - } uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -23508,28 +45036,17 @@ static void lts_aga_fm2_ham1_p8_ilores_dshres_spr_genlock(void) } last_bpl_pix = pix1; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl8e_64(); - loaded_pix = getbpl8_64(); - } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl8o_64(); + shiftbpl8_64(); loaded_pix = getbpl8_64(); } - if (bpldat_copy[0] && ((cmp | 1) & 255) == bplcon1_shift_full_masked[0]) { - copybpl8e_64(); + if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8_64(); bplshiftcnt[0] = 0; loaded_pix = getbpl8_64(); } - if (bpldat_copy[1] && ((cmp | 1) & 255) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl8_64(); - } uae_u32 sv1 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -23555,28 +45072,17 @@ static void lts_aga_fm2_ham1_p8_ilores_dshres_spr_genlock(void) } last_bpl_pix = pix2; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl8e_64(); - loaded_pix = getbpl8_64(); - } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl8o_64(); + shiftbpl8_64(); loaded_pix = getbpl8_64(); } - if (bpldat_copy[0] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[0]) { - copybpl8e_64(); + if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8_64(); bplshiftcnt[0] = 0; loaded_pix = getbpl8_64(); } - if (bpldat_copy[1] && ((cmp | 2) & 255) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl8_64(); - } uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -23602,28 +45108,17 @@ static void lts_aga_fm2_ham1_p8_ilores_dshres_spr_genlock(void) } last_bpl_pix = pix3; } - bplshiftcnt[0] += 1; + bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl8e_64(); - loaded_pix = getbpl8_64(); - } - bplshiftcnt[1] += 1; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl8o_64(); + shiftbpl8_64(); loaded_pix = getbpl8_64(); } - if (bpldat_copy[0] && ((cmp | 3) & 255) == bplcon1_shift_full_masked[0]) { - copybpl8e_64(); + if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { + copybpl8_64(); bplshiftcnt[0] = 0; loaded_pix = getbpl8_64(); } - if (bpldat_copy[1] && ((cmp | 3) & 255) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl8_64(); - } uae_u32 sv3 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -23734,27 +45229,11 @@ static void lts_aga_fm2_ham1_p8_ilores_dshres_spr_genlock(void) denise_cck++; } } -static void lts_aga_fm2_ham1_p8_ilores_dshres_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb0_p8_ilores_dshres_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb0_p8_ilores_dshres_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb1_p8_ilores_dshres_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb1_p8_ilores_dshres_spr_filtered_genlock(void) +static void lts_aga_fm2_ham0_p8_ihires_dshres_spr_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm2_n0_p4_ihires_dshres_genlock(void) +static void lts_aga_fm2_ham1_p8_ihires_dshres_spr_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -23767,6 +45246,7 @@ static void lts_aga_fm2_n0_p4_ihires_dshres_genlock(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; @@ -23776,24 +45256,44 @@ static void lts_aga_fm2_n0_p4_ihires_dshres_genlock(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); + dpix_val0 = decode_ham_pixel_aga(pix0); + gpix0 = get_genlock_transparency((pix0 >> 2) & 63); } last_bpl_pix = pix0; } bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl4_64(); - loaded_pix = getbpl4_64(); + shiftbpl8e_64(); + loaded_pix = getbpl8_64(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl8o_64(); + loaded_pix = getbpl8_64(); } if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl4_64(); + copybpl8e_64(); bplshiftcnt[0] = 0; - loaded_pix = getbpl4_64(); + loaded_pix = getbpl8_64(); + } + if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { + copybpl8o_64(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl8_64(); + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } } loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u8 gpix1 = 0xff; uae_u32 dpix_val1 = BLANK_COLOR; @@ -23803,24 +45303,44 @@ static void lts_aga_fm2_n0_p4_ihires_dshres_genlock(void) if (denise_hdiw && bpl1dat_trigger) { pix1 = loaded_pixs[1]; clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; - gpix1 = get_genlock_transparency(pix1 ^ bplcon4_denise_xor_val); + dpix_val1 = decode_ham_pixel_aga(pix1); + gpix1 = get_genlock_transparency((pix1 >> 2) & 63); } last_bpl_pix = pix1; } bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl4_64(); - loaded_pix = getbpl4_64(); + shiftbpl8e_64(); + loaded_pix = getbpl8_64(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl8o_64(); + loaded_pix = getbpl8_64(); } if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { - copybpl4_64(); + copybpl8e_64(); bplshiftcnt[0] = 0; - loaded_pix = getbpl4_64(); + loaded_pix = getbpl8_64(); + } + if (bpldat_copy[1] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) { + copybpl8o_64(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl8_64(); + } + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } } loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u8 gpix2 = 0xff; uae_u32 dpix_val2 = BLANK_COLOR; @@ -23830,24 +45350,44 @@ static void lts_aga_fm2_n0_p4_ihires_dshres_genlock(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; - gpix2 = get_genlock_transparency(pix2 ^ bplcon4_denise_xor_val); + dpix_val2 = decode_ham_pixel_aga(pix2); + gpix2 = get_genlock_transparency((pix2 >> 2) & 63); } last_bpl_pix = pix2; } bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl4_64(); - loaded_pix = getbpl4_64(); + shiftbpl8e_64(); + loaded_pix = getbpl8_64(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl8o_64(); + loaded_pix = getbpl8_64(); } if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { - copybpl4_64(); + copybpl8e_64(); bplshiftcnt[0] = 0; - loaded_pix = getbpl4_64(); + loaded_pix = getbpl8_64(); + } + if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) { + copybpl8o_64(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl8_64(); + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } } loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u8 gpix3 = 0xff; uae_u32 dpix_val3 = BLANK_COLOR; @@ -23857,31 +45397,82 @@ static void lts_aga_fm2_n0_p4_ihires_dshres_genlock(void) if (denise_hdiw && bpl1dat_trigger) { pix3 = loaded_pixs[3]; clxdat |= bplcoltable[pix3]; - dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; - gpix3 = get_genlock_transparency(pix3 ^ bplcon4_denise_xor_val); + dpix_val3 = decode_ham_pixel_aga(pix3); + gpix3 = get_genlock_transparency((pix3 >> 2) & 63); } last_bpl_pix = pix3; } bplshiftcnt[0] += 2; if (bplshiftcnt[0] >= 4) { bplshiftcnt[0] = 0; - shiftbpl4_64(); - loaded_pix = getbpl4_64(); + shiftbpl8e_64(); + loaded_pix = getbpl8_64(); + } + bplshiftcnt[1] += 2; + if (bplshiftcnt[1] >= 4) { + bplshiftcnt[1] = 0; + shiftbpl8o_64(); + loaded_pix = getbpl8_64(); } if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { - copybpl4_64(); + copybpl8e_64(); bplshiftcnt[0] = 0; - loaded_pix = getbpl4_64(); + loaded_pix = getbpl8_64(); + } + if (bpldat_copy[1] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[1]) { + copybpl8o_64(); + bplshiftcnt[1] = 0; + loaded_pix = getbpl8_64(); + } + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } } loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + gpix1 = get_genlock_transparency(spix1); + + } + } dtbuf[h][1] = dpix_val1; dtgbuf[h][1] = gpix1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } dtbuf[h][2] = dpix_val2; dtgbuf[h][2] = gpix2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + gpix3 = get_genlock_transparency(spix3); + + } + } dtbuf[h][3] = dpix_val3; dtgbuf[h][3] = gpix3; uae_u32 t0 = dtbuf[h ^ lol][0]; @@ -23943,11 +45534,11 @@ static void lts_aga_fm2_n0_p4_ihires_dshres_genlock(void) denise_cck++; } } -static void lts_aga_fm2_n0_p4_ihires_dshres_filtered_genlock(void) +static void lts_aga_fm2_ham1_p8_ihires_dshres_spr_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm2_n1_p4_ihires_dshres_genlock(void) +static void lts_aga_fm2_kehb0_p8_ihires_dshres_spr_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -23958,167 +45549,114 @@ 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; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4e_64(); - loaded_pix = getbpl4_64(); } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl4o_64(); - loaded_pix = getbpl4_64(); - } - 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] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { - copybpl4o_64(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl4_64(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u8 gpix1 = 0xff; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { gpix1 = get_genlock_transparency_border(); dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; - gpix1 = get_genlock_transparency(pix1 ^ bplcon4_denise_xor_val); - } - last_bpl_pix = pix1; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4e_64(); - loaded_pix = getbpl4_64(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl4o_64(); - loaded_pix = getbpl4_64(); - } - 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] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) { - copybpl4o_64(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl4_64(); + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } } - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u8 gpix2 = 0xff; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { gpix2 = get_genlock_transparency_border(); dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; - gpix2 = get_genlock_transparency(pix2 ^ bplcon4_denise_xor_val); - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4e_64(); - loaded_pix = getbpl4_64(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl4o_64(); - loaded_pix = getbpl4_64(); } - 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] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) { - copybpl4o_64(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl4_64(); + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } } - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u8 gpix3 = 0xff; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { gpix3 = get_genlock_transparency_border(); dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; - gpix3 = get_genlock_transparency(pix3 ^ bplcon4_denise_xor_val); - } - last_bpl_pix = pix3; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4e_64(); - loaded_pix = getbpl4_64(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl4o_64(); - loaded_pix = getbpl4_64(); - } - 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] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[1]) { - copybpl4o_64(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl4_64(); + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } } - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + gpix1 = get_genlock_transparency(spix1); + + } + } dtbuf[h][1] = dpix_val1; dtgbuf[h][1] = gpix1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } dtbuf[h][2] = dpix_val2; dtgbuf[h][2] = gpix2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + gpix3 = get_genlock_transparency(spix3); + + } + } dtbuf[h][3] = dpix_val3; dtgbuf[h][3] = gpix3; uae_u32 t0 = dtbuf[h ^ lol][0]; @@ -24180,11 +45718,11 @@ static void lts_aga_fm2_n1_p4_ihires_dshres_genlock(void) denise_cck++; } } -static void lts_aga_fm2_n1_p4_ihires_dshres_filtered_genlock(void) +static void lts_aga_fm2_kehb0_p8_ihires_dshres_spr_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm2_dpf0_p4_ihires_dshres_genlock(void) +static void lts_aga_fm2_kehb1_p8_ihires_dshres_spr_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -24195,143 +45733,114 @@ 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; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - gpix0 = get_genlock_transparency(dpf_lookup[pix0]); - } - last_bpl_pix = pix0; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4_64(); - loaded_pix = getbpl4_64(); - } - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl4_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4_64(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u8 gpix1 = 0xff; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { gpix1 = get_genlock_transparency_border(); dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - if (dpf_lookup_no[pix1]) { - val1 += dblpfofs[bpldualpf2of]; - } - val1 ^= bplcon4_denise_xor_val; - dpix_val1 = denise_colors.acolors[val1]; - gpix1 = get_genlock_transparency(dpf_lookup[pix1]); - } - last_bpl_pix = pix1; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4_64(); - loaded_pix = getbpl4_64(); } - if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { - copybpl4_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4_64(); + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } } - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u8 gpix2 = 0xff; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { gpix2 = get_genlock_transparency_border(); dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; - gpix2 = get_genlock_transparency(dpf_lookup[pix2]); - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4_64(); - loaded_pix = getbpl4_64(); } - if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { - copybpl4_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4_64(); + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } } - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u8 gpix3 = 0xff; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { gpix3 = get_genlock_transparency_border(); dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - uae_u8 val3 = dpf_lookup[pix3]; - if (dpf_lookup_no[pix3]) { - val3 += dblpfofs[bpldualpf2of]; - } - val3 ^= bplcon4_denise_xor_val; - dpix_val3 = denise_colors.acolors[val3]; - gpix3 = get_genlock_transparency(dpf_lookup[pix3]); - } - last_bpl_pix = pix3; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4_64(); - loaded_pix = getbpl4_64(); } - if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { - copybpl4_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4_64(); + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } } - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + gpix1 = get_genlock_transparency(spix1); + + } + } dtbuf[h][1] = dpix_val1; dtgbuf[h][1] = gpix1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } dtbuf[h][2] = dpix_val2; dtgbuf[h][2] = gpix2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + gpix3 = get_genlock_transparency(spix3); + + } + } dtbuf[h][3] = dpix_val3; dtgbuf[h][3] = gpix3; uae_u32 t0 = dtbuf[h ^ lol][0]; @@ -24393,11 +45902,11 @@ static void lts_aga_fm2_dpf0_p4_ihires_dshres_genlock(void) denise_cck++; } } -static void lts_aga_fm2_dpf0_p4_ihires_dshres_filtered_genlock(void) +static void lts_aga_fm2_kehb1_p8_ihires_dshres_spr_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm2_dpf1_p4_ihires_dshres_genlock(void) +static void lts_aga_fm2_n0_p4_ishres_dshres_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -24419,38 +45928,16 @@ static void lts_aga_fm2_dpf1_p4_ihires_dshres_genlock(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - gpix0 = get_genlock_transparency(dpf_lookup[pix0]); + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); } last_bpl_pix = pix0; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4e_64(); - loaded_pix = getbpl4_64(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl4o_64(); - loaded_pix = getbpl4_64(); - } - 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] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { - copybpl4o_64(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl4_64(); + shiftbpl4_64(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4_64(); } + loaded_pix = getbpl4_64(); loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; uae_u8 pix1 = 0; @@ -24462,38 +45949,16 @@ static void lts_aga_fm2_dpf1_p4_ihires_dshres_genlock(void) if (denise_hdiw && bpl1dat_trigger) { pix1 = loaded_pixs[1]; clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - if (dpf_lookup_no[pix1]) { - val1 += dblpfofs[bpldualpf2of]; - } - val1 ^= bplcon4_denise_xor_val; - dpix_val1 = denise_colors.acolors[val1]; - gpix1 = get_genlock_transparency(dpf_lookup[pix1]); + dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; + gpix1 = get_genlock_transparency(pix1 ^ bplcon4_denise_xor_val); } last_bpl_pix = pix1; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4e_64(); - loaded_pix = getbpl4_64(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl4o_64(); - loaded_pix = getbpl4_64(); - } - 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] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) { - copybpl4o_64(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl4_64(); + shiftbpl4_64(); + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4_64(); } + loaded_pix = getbpl4_64(); loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; uae_u8 pix2 = 0; @@ -24505,81 +45970,37 @@ static void lts_aga_fm2_dpf1_p4_ihires_dshres_genlock(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; - gpix2 = get_genlock_transparency(dpf_lookup[pix2]); + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + gpix2 = get_genlock_transparency(pix2 ^ bplcon4_denise_xor_val); } last_bpl_pix = pix2; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4e_64(); - loaded_pix = getbpl4_64(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl4o_64(); - loaded_pix = getbpl4_64(); - } - 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] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) { - copybpl4o_64(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl4_64(); + shiftbpl4_64(); + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4_64(); } + loaded_pix = getbpl4_64(); loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; uae_u8 pix3 = 0; uae_u8 gpix3 = 0xff; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { - gpix3 = get_genlock_transparency_border(); - dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - uae_u8 val3 = dpf_lookup[pix3]; - if (dpf_lookup_no[pix3]) { - val3 += dblpfofs[bpldualpf2of]; - } - val3 ^= bplcon4_denise_xor_val; - dpix_val3 = denise_colors.acolors[val3]; - gpix3 = get_genlock_transparency(dpf_lookup[pix3]); - } - last_bpl_pix = pix3; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4e_64(); - loaded_pix = getbpl4_64(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl4o_64(); - loaded_pix = getbpl4_64(); - } - if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { - copybpl4e_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4_64(); + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; + gpix3 = get_genlock_transparency(pix3 ^ bplcon4_denise_xor_val); + } + last_bpl_pix = pix3; } - if (bpldat_copy[1] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[1]) { - copybpl4o_64(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl4_64(); + shiftbpl4_64(); + if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4_64(); } + loaded_pix = getbpl4_64(); loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { @@ -24650,59 +46071,11 @@ static void lts_aga_fm2_dpf1_p4_ihires_dshres_genlock(void) denise_cck++; } } -static void lts_aga_fm2_dpf1_p4_ihires_dshres_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb0_p4_ihires_dshres_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb0_p4_ihires_dshres_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb1_p4_ihires_dshres_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb1_p4_ihires_dshres_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_ham0_p4_ihires_dshres_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_ham0_p4_ihires_dshres_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_ham1_p4_ihires_dshres_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_ham1_p4_ihires_dshres_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb0_p4_ihires_dshres_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb0_p4_ihires_dshres_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb1_p4_ihires_dshres_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb1_p4_ihires_dshres_filtered_genlock(void) +static void lts_aga_fm2_n0_p4_ishres_dshres_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm2_n0_p8_ihires_dshres_genlock(void) +static void lts_aga_fm2_n1_p4_ishres_dshres_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -24729,17 +46102,14 @@ static void lts_aga_fm2_n0_p8_ihires_dshres_genlock(void) } last_bpl_pix = pix0; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8_64(); - loaded_pix = getbpl8_64(); + shiftbpl4_64(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4e_64(); } - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_64(); + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl4o_64(); } + loaded_pix = getbpl4_64(); loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; uae_u8 pix1 = 0; @@ -24756,17 +46126,14 @@ static void lts_aga_fm2_n0_p8_ihires_dshres_genlock(void) } last_bpl_pix = pix1; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8_64(); - loaded_pix = getbpl8_64(); + shiftbpl4_64(); + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4e_64(); } - if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_64(); + if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { + copybpl4o_64(); } + loaded_pix = getbpl4_64(); loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; uae_u8 pix2 = 0; @@ -24783,17 +46150,14 @@ static void lts_aga_fm2_n0_p8_ihires_dshres_genlock(void) } last_bpl_pix = pix2; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8_64(); - loaded_pix = getbpl8_64(); + shiftbpl4_64(); + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4e_64(); } - if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_64(); + if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { + copybpl4o_64(); } + loaded_pix = getbpl4_64(); loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; uae_u8 pix3 = 0; @@ -24810,17 +46174,14 @@ static void lts_aga_fm2_n0_p8_ihires_dshres_genlock(void) } last_bpl_pix = pix3; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8_64(); - loaded_pix = getbpl8_64(); + shiftbpl4_64(); + if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4e_64(); } - if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_64(); + if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) { + copybpl4o_64(); } + loaded_pix = getbpl4_64(); loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { @@ -24891,11 +46252,11 @@ static void lts_aga_fm2_n0_p8_ihires_dshres_genlock(void) denise_cck++; } } -static void lts_aga_fm2_n0_p8_ihires_dshres_filtered_genlock(void) +static void lts_aga_fm2_n1_p4_ishres_dshres_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm2_n1_p8_ihires_dshres_genlock(void) +static void lts_aga_fm2_dpf0_p4_ishres_dshres_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -24917,33 +46278,21 @@ static void lts_aga_fm2_n1_p8_ihires_dshres_genlock(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + gpix0 = get_genlock_transparency(dpf_lookup[pix0]); } last_bpl_pix = pix0; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8e_64(); - loaded_pix = getbpl8_64(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl8o_64(); - loaded_pix = getbpl8_64(); - } - 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] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl8_64(); + shiftbpl4_64(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4_64(); } + loaded_pix = getbpl4_64(); loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; uae_u8 pix1 = 0; @@ -24955,33 +46304,21 @@ static void lts_aga_fm2_n1_p8_ihires_dshres_genlock(void) if (denise_hdiw && bpl1dat_trigger) { pix1 = loaded_pixs[1]; clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; - gpix1 = get_genlock_transparency(pix1 ^ bplcon4_denise_xor_val); + uae_u8 val1 = dpf_lookup[pix1]; + if (dpf_lookup_no[pix1]) { + val1 += dblpfofs[bpldualpf2of]; + } + val1 ^= bplcon4_denise_xor_val; + dpix_val1 = denise_colors.acolors[val1]; + gpix1 = get_genlock_transparency(dpf_lookup[pix1]); } last_bpl_pix = pix1; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8e_64(); - loaded_pix = getbpl8_64(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl8o_64(); - loaded_pix = getbpl8_64(); - } - 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] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl8_64(); + shiftbpl4_64(); + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4_64(); } + loaded_pix = getbpl4_64(); loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; uae_u8 pix2 = 0; @@ -24993,33 +46330,21 @@ static void lts_aga_fm2_n1_p8_ihires_dshres_genlock(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; - gpix2 = get_genlock_transparency(pix2 ^ bplcon4_denise_xor_val); + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; + gpix2 = get_genlock_transparency(dpf_lookup[pix2]); } last_bpl_pix = pix2; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8e_64(); - loaded_pix = getbpl8_64(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl8o_64(); - loaded_pix = getbpl8_64(); - } - 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] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl8_64(); + shiftbpl4_64(); + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4_64(); } + loaded_pix = getbpl4_64(); loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; uae_u8 pix3 = 0; @@ -25031,33 +46356,21 @@ static void lts_aga_fm2_n1_p8_ihires_dshres_genlock(void) if (denise_hdiw && bpl1dat_trigger) { pix3 = loaded_pixs[3]; clxdat |= bplcoltable[pix3]; - dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; - gpix3 = get_genlock_transparency(pix3 ^ bplcon4_denise_xor_val); + uae_u8 val3 = dpf_lookup[pix3]; + if (dpf_lookup_no[pix3]) { + val3 += dblpfofs[bpldualpf2of]; + } + val3 ^= bplcon4_denise_xor_val; + dpix_val3 = denise_colors.acolors[val3]; + gpix3 = get_genlock_transparency(dpf_lookup[pix3]); } last_bpl_pix = pix3; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8e_64(); - loaded_pix = getbpl8_64(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl8o_64(); - loaded_pix = getbpl8_64(); - } - 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] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl8_64(); + shiftbpl4_64(); + if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4_64(); } + loaded_pix = getbpl4_64(); loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { @@ -25128,11 +46441,11 @@ static void lts_aga_fm2_n1_p8_ihires_dshres_genlock(void) denise_cck++; } } -static void lts_aga_fm2_n1_p8_ihires_dshres_filtered_genlock(void) +static void lts_aga_fm2_dpf0_p4_ishres_dshres_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm2_dpf0_p8_ihires_dshres_genlock(void) +static void lts_aga_fm2_dpf1_p4_ishres_dshres_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -25164,17 +46477,14 @@ static void lts_aga_fm2_dpf0_p8_ihires_dshres_genlock(void) } last_bpl_pix = pix0; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8_64(); - loaded_pix = getbpl8_64(); + shiftbpl4_64(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4e_64(); } - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_64(); + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl4o_64(); } + loaded_pix = getbpl4_64(); loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; uae_u8 pix1 = 0; @@ -25196,17 +46506,14 @@ static void lts_aga_fm2_dpf0_p8_ihires_dshres_genlock(void) } last_bpl_pix = pix1; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8_64(); - loaded_pix = getbpl8_64(); + shiftbpl4_64(); + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4e_64(); } - if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_64(); + if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { + copybpl4o_64(); } + loaded_pix = getbpl4_64(); loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; uae_u8 pix2 = 0; @@ -25228,17 +46535,14 @@ static void lts_aga_fm2_dpf0_p8_ihires_dshres_genlock(void) } last_bpl_pix = pix2; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8_64(); - loaded_pix = getbpl8_64(); + shiftbpl4_64(); + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4e_64(); } - if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_64(); + if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { + copybpl4o_64(); } + loaded_pix = getbpl4_64(); loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; uae_u8 pix3 = 0; @@ -25260,17 +46564,14 @@ static void lts_aga_fm2_dpf0_p8_ihires_dshres_genlock(void) } last_bpl_pix = pix3; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8_64(); - loaded_pix = getbpl8_64(); + shiftbpl4_64(); + if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { + copybpl4e_64(); } - if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_64(); + if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) { + copybpl4o_64(); } + loaded_pix = getbpl4_64(); loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { @@ -25341,11 +46642,11 @@ static void lts_aga_fm2_dpf0_p8_ihires_dshres_genlock(void) denise_cck++; } } -static void lts_aga_fm2_dpf0_p8_ihires_dshres_filtered_genlock(void) +static void lts_aga_fm2_dpf1_p4_ishres_dshres_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm2_dpf1_p8_ihires_dshres_genlock(void) +static void lts_aga_fm2_ehb0_p4_ishres_dshres_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -25356,7 +46657,6 @@ 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; @@ -25364,42 +46664,7 @@ static void lts_aga_fm2_dpf1_p8_ihires_dshres_genlock(void) if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - gpix0 = get_genlock_transparency(dpf_lookup[pix0]); - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8e_64(); - loaded_pix = getbpl8_64(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl8o_64(); - loaded_pix = getbpl8_64(); - } - 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] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl8_64(); } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; uae_u8 pix1 = 0; uae_u8 gpix1 = 0xff; @@ -25407,42 +46672,123 @@ static void lts_aga_fm2_dpf1_p8_ihires_dshres_genlock(void) if (!denise_blank_active) { gpix1 = get_genlock_transparency_border(); dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - if (dpf_lookup_no[pix1]) { - val1 += dblpfofs[bpldualpf2of]; - } - val1 ^= bplcon4_denise_xor_val; - dpix_val1 = denise_colors.acolors[val1]; - gpix1 = get_genlock_transparency(dpf_lookup[pix1]); - } - last_bpl_pix = pix1; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8e_64(); - loaded_pix = getbpl8_64(); + internal_pixel_cnt += 1; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl8o_64(); - loaded_pix = getbpl8_64(); + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; } - if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8e_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_64(); + internal_pixel_cnt += 1; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][1] = dpix_val1; + dtgbuf[h][1] = gpix1; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + dtbuf[h][3] = dpix_val3; + dtgbuf[h][3] = gpix3; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = dtgbuf[h ^ lol][1]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + *gbuf++ = dtgbuf[h ^ lol][3]; } - if (bpldat_copy[1] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl8_64(); + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_ehb0_p4_ishres_dshres_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm2_ehb1_p4_ishres_dshres_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; } - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u8 gpix2 = 0xff; @@ -25450,42 +46796,7 @@ static void lts_aga_fm2_dpf1_p8_ihires_dshres_genlock(void) if (!denise_blank_active) { gpix2 = get_genlock_transparency_border(); dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; - gpix2 = get_genlock_transparency(dpf_lookup[pix2]); - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8e_64(); - loaded_pix = getbpl8_64(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl8o_64(); - loaded_pix = getbpl8_64(); - } - 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] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl8_64(); } - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; uae_u8 pix3 = 0; uae_u8 gpix3 = 0xff; @@ -25493,42 +46804,7 @@ static void lts_aga_fm2_dpf1_p8_ihires_dshres_genlock(void) if (!denise_blank_active) { gpix3 = get_genlock_transparency_border(); dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - uae_u8 val3 = dpf_lookup[pix3]; - if (dpf_lookup_no[pix3]) { - val3 += dblpfofs[bpldualpf2of]; - } - val3 ^= bplcon4_denise_xor_val; - dpix_val3 = denise_colors.acolors[val3]; - gpix3 = get_genlock_transparency(dpf_lookup[pix3]); - } - last_bpl_pix = pix3; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8e_64(); - loaded_pix = getbpl8_64(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl8o_64(); - loaded_pix = getbpl8_64(); - } - 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] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl8_64(); } - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; @@ -25598,27 +46874,11 @@ static void lts_aga_fm2_dpf1_p8_ihires_dshres_genlock(void) denise_cck++; } } -static void lts_aga_fm2_dpf1_p8_ihires_dshres_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb0_p8_ihires_dshres_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb0_p8_ihires_dshres_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb1_p8_ihires_dshres_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb1_p8_ihires_dshres_filtered_genlock(void) +static void lts_aga_fm2_ehb1_p4_ishres_dshres_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm2_ham0_p8_ihires_dshres_genlock(void) +static void lts_aga_fm2_ham0_p4_ishres_dshres_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -25629,7 +46889,6 @@ 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; @@ -25637,26 +46896,7 @@ static void lts_aga_fm2_ham0_p8_ihires_dshres_genlock(void) if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = decode_ham_pixel_aga(pix0); - gpix0 = get_genlock_transparency((pix0 >> 2) & 63); - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8_64(); - loaded_pix = getbpl8_64(); - } - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_64(); } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; uae_u8 pix1 = 0; uae_u8 gpix1 = 0xff; @@ -25664,26 +46904,7 @@ static void lts_aga_fm2_ham0_p8_ihires_dshres_genlock(void) if (!denise_blank_active) { gpix1 = get_genlock_transparency_border(); dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - dpix_val1 = decode_ham_pixel_aga(pix1); - gpix1 = get_genlock_transparency((pix1 >> 2) & 63); - } - last_bpl_pix = pix1; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8_64(); - loaded_pix = getbpl8_64(); - } - if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_64(); } - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u8 gpix2 = 0xff; @@ -25691,26 +46912,7 @@ static void lts_aga_fm2_ham0_p8_ihires_dshres_genlock(void) if (!denise_blank_active) { gpix2 = get_genlock_transparency_border(); dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = decode_ham_pixel_aga(pix2); - gpix2 = get_genlock_transparency((pix2 >> 2) & 63); - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8_64(); - loaded_pix = getbpl8_64(); - } - if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_64(); } - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; uae_u8 pix3 = 0; uae_u8 gpix3 = 0xff; @@ -25718,26 +46920,7 @@ static void lts_aga_fm2_ham0_p8_ihires_dshres_genlock(void) if (!denise_blank_active) { gpix3 = get_genlock_transparency_border(); dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - dpix_val3 = decode_ham_pixel_aga(pix3); - gpix3 = get_genlock_transparency((pix3 >> 2) & 63); - } - last_bpl_pix = pix3; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8_64(); - loaded_pix = getbpl8_64(); - } - if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_64(); } - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; @@ -25807,11 +46990,11 @@ static void lts_aga_fm2_ham0_p8_ihires_dshres_genlock(void) denise_cck++; } } -static void lts_aga_fm2_ham0_p8_ihires_dshres_filtered_genlock(void) +static void lts_aga_fm2_ham0_p4_ishres_dshres_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm2_ham1_p8_ihires_dshres_genlock(void) +static void lts_aga_fm2_ham1_p4_ishres_dshres_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -25822,7 +47005,6 @@ 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; @@ -25830,37 +47012,7 @@ static void lts_aga_fm2_ham1_p8_ihires_dshres_genlock(void) if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = decode_ham_pixel_aga(pix0); - gpix0 = get_genlock_transparency((pix0 >> 2) & 63); - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8e_64(); - loaded_pix = getbpl8_64(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl8o_64(); - loaded_pix = getbpl8_64(); - } - 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] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl8_64(); - } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; uae_u8 pix1 = 0; uae_u8 gpix1 = 0xff; @@ -25868,37 +47020,7 @@ static void lts_aga_fm2_ham1_p8_ihires_dshres_genlock(void) if (!denise_blank_active) { gpix1 = get_genlock_transparency_border(); dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - dpix_val1 = decode_ham_pixel_aga(pix1); - gpix1 = get_genlock_transparency((pix1 >> 2) & 63); - } - last_bpl_pix = pix1; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8e_64(); - loaded_pix = getbpl8_64(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl8o_64(); - loaded_pix = getbpl8_64(); - } - 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] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl8_64(); } - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u8 gpix2 = 0xff; @@ -25906,37 +47028,7 @@ static void lts_aga_fm2_ham1_p8_ihires_dshres_genlock(void) if (!denise_blank_active) { gpix2 = get_genlock_transparency_border(); dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = decode_ham_pixel_aga(pix2); - gpix2 = get_genlock_transparency((pix2 >> 2) & 63); - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8e_64(); - loaded_pix = getbpl8_64(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl8o_64(); - loaded_pix = getbpl8_64(); - } - 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] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl8_64(); } - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; uae_u8 pix3 = 0; uae_u8 gpix3 = 0xff; @@ -25944,37 +47036,7 @@ static void lts_aga_fm2_ham1_p8_ihires_dshres_genlock(void) if (!denise_blank_active) { gpix3 = get_genlock_transparency_border(); dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - dpix_val3 = decode_ham_pixel_aga(pix3); - gpix3 = get_genlock_transparency((pix3 >> 2) & 63); - } - last_bpl_pix = pix3; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8e_64(); - loaded_pix = getbpl8_64(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl8o_64(); - loaded_pix = getbpl8_64(); - } - 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] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl8_64(); } - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; @@ -26044,27 +47106,11 @@ static void lts_aga_fm2_ham1_p8_ihires_dshres_genlock(void) denise_cck++; } } -static void lts_aga_fm2_ham1_p8_ihires_dshres_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb0_p8_ihires_dshres_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb0_p8_ihires_dshres_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb1_p8_ihires_dshres_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb1_p8_ihires_dshres_filtered_genlock(void) +static void lts_aga_fm2_ham1_p4_ishres_dshres_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm2_n0_p4_ihires_dshres_spr_genlock(void) +static void lts_aga_fm2_kehb0_p4_ishres_dshres_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -26075,191 +47121,46 @@ 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; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4_64(); - loaded_pix = getbpl4_64(); - } - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl4_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4_64(); } - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } - } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; - matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u8 gpix1 = 0xff; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { gpix1 = get_genlock_transparency_border(); dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; - gpix1 = get_genlock_transparency(pix1 ^ bplcon4_denise_xor_val); - } - last_bpl_pix = pix1; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4_64(); - loaded_pix = getbpl4_64(); - } - if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { - copybpl4_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4_64(); - } - uae_u32 sv1 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv1 = svt; - } } - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; - matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u8 gpix2 = 0xff; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { gpix2 = get_genlock_transparency_border(); dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; - gpix2 = get_genlock_transparency(pix2 ^ bplcon4_denise_xor_val); - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4_64(); - loaded_pix = getbpl4_64(); - } - if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { - copybpl4_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4_64(); - } - uae_u32 sv2 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv2 = svt; - } } - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; - matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u8 gpix3 = 0xff; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { gpix3 = get_genlock_transparency_border(); dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; - gpix3 = get_genlock_transparency(pix3 ^ bplcon4_denise_xor_val); - } - last_bpl_pix = pix3; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4_64(); - loaded_pix = getbpl4_64(); - } - if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { - copybpl4_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4_64(); - } - uae_u32 sv3 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv3 = svt; - } } - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - gpix0 = get_genlock_transparency(spix0); - - } - } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; - if (sv1) { - uae_u32 spix1 = denise_render_sprites2(pix1, sv1); - if (spix1) { - dpix_val1 = denise_colors.acolors[spix1]; - gpix1 = get_genlock_transparency(spix1); - - } - } dtbuf[h][1] = dpix_val1; dtgbuf[h][1] = gpix1; - if (sv2) { - uae_u32 spix2 = denise_render_sprites2(pix2, sv2); - if (spix2) { - dpix_val2 = denise_colors.acolors[spix2]; - gpix2 = get_genlock_transparency(spix2); - - } - } dtbuf[h][2] = dpix_val2; dtgbuf[h][2] = gpix2; - if (sv3) { - uae_u32 spix3 = denise_render_sprites2(pix3, sv3); - if (spix3) { - dpix_val3 = denise_colors.acolors[spix3]; - gpix3 = get_genlock_transparency(spix3); - - } - } dtbuf[h][3] = dpix_val3; dtgbuf[h][3] = gpix3; uae_u32 t0 = dtbuf[h ^ lol][0]; @@ -26321,250 +47222,61 @@ static void lts_aga_fm2_n0_p4_ihires_dshres_spr_genlock(void) denise_cck++; } } -static void lts_aga_fm2_n0_p4_ihires_dshres_spr_filtered_genlock(void) +static void lts_aga_fm2_kehb0_p4_ishres_dshres_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm2_n1_p4_ihires_dshres_spr_genlock(void) +static void lts_aga_fm2_kehb1_p4_ishres_dshres_genlock(void) { - while (denise_cck < denise_endcycle) { - do_denise_cck(denise_linecnt, denise_startpos, denise_cck); - if (lts_changed) return; - for (int h = 0; h < 2; h++) { - if (h) { - denise_hcounter_next = denise_hcounter_new; - } - int cnt = denise_hcounter << 2; - int cnt_next = denise_hcounter_next << 2; - int cmp = denise_hcounter_cmp << 2; - if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites_aga(cnt + 0); - uae_u8 pix0 = 0; - uae_u8 gpix0 = 0xff; - uae_u32 dpix_val0 = BLANK_COLOR; - if (!denise_blank_active) { - gpix0 = get_genlock_transparency_border(); - dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4e_64(); - loaded_pix = getbpl4_64(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl4o_64(); - loaded_pix = getbpl4_64(); - } - 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] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { - copybpl4o_64(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl4_64(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; } - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; - matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u8 gpix1 = 0xff; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { gpix1 = get_genlock_transparency_border(); dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; - gpix1 = get_genlock_transparency(pix1 ^ bplcon4_denise_xor_val); - } - last_bpl_pix = pix1; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4e_64(); - loaded_pix = getbpl4_64(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl4o_64(); - loaded_pix = getbpl4_64(); - } - 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] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) { - copybpl4o_64(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl4_64(); - } - uae_u32 sv1 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv1 = svt; - } - } - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; - matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u8 gpix2 = 0xff; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { gpix2 = get_genlock_transparency_border(); dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; - gpix2 = get_genlock_transparency(pix2 ^ bplcon4_denise_xor_val); - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4e_64(); - loaded_pix = getbpl4_64(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl4o_64(); - loaded_pix = getbpl4_64(); - } - 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] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) { - copybpl4o_64(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl4_64(); - } - uae_u32 sv2 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv2 = svt; - } } - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; - matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u8 gpix3 = 0xff; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { gpix3 = get_genlock_transparency_border(); dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; - gpix3 = get_genlock_transparency(pix3 ^ bplcon4_denise_xor_val); - } - last_bpl_pix = pix3; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4e_64(); - loaded_pix = getbpl4_64(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl4o_64(); - loaded_pix = getbpl4_64(); - } - 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] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[1]) { - copybpl4o_64(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl4_64(); - } - uae_u32 sv3 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv3 = svt; - } } - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - gpix0 = get_genlock_transparency(spix0); - - } - } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; - if (sv1) { - uae_u32 spix1 = denise_render_sprites2(pix1, sv1); - if (spix1) { - dpix_val1 = denise_colors.acolors[spix1]; - gpix1 = get_genlock_transparency(spix1); - - } - } dtbuf[h][1] = dpix_val1; dtgbuf[h][1] = gpix1; - if (sv2) { - uae_u32 spix2 = denise_render_sprites2(pix2, sv2); - if (spix2) { - dpix_val2 = denise_colors.acolors[spix2]; - gpix2 = get_genlock_transparency(spix2); - - } - } dtbuf[h][2] = dpix_val2; dtgbuf[h][2] = gpix2; - if (sv3) { - uae_u32 spix3 = denise_render_sprites2(pix3, sv3); - if (spix3) { - dpix_val3 = denise_colors.acolors[spix3]; - gpix3 = get_genlock_transparency(spix3); - - } - } dtbuf[h][3] = dpix_val3; dtgbuf[h][3] = gpix3; uae_u32 t0 = dtbuf[h ^ lol][0]; @@ -26626,11 +47338,11 @@ static void lts_aga_fm2_n1_p4_ihires_dshres_spr_genlock(void) denise_cck++; } } -static void lts_aga_fm2_n1_p4_ihires_dshres_spr_filtered_genlock(void) +static void lts_aga_fm2_kehb1_p4_ishres_dshres_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm2_dpf0_p4_ihires_dshres_spr_genlock(void) +static void lts_aga_fm2_n0_p8_ishres_dshres_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -26643,7 +47355,6 @@ static void lts_aga_fm2_dpf0_p4_ihires_dshres_spr_genlock(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; @@ -26653,38 +47364,18 @@ static void lts_aga_fm2_dpf0_p4_ihires_dshres_spr_genlock(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - gpix0 = get_genlock_transparency(dpf_lookup[pix0]); + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); } last_bpl_pix = pix0; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4_64(); - loaded_pix = getbpl4_64(); - } - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl4_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4_64(); - } - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8_64(); } + loaded_pix = getbpl8_64(); loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; - matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u8 gpix1 = 0xff; uae_u32 dpix_val1 = BLANK_COLOR; @@ -26694,38 +47385,18 @@ static void lts_aga_fm2_dpf0_p4_ihires_dshres_spr_genlock(void) if (denise_hdiw && bpl1dat_trigger) { pix1 = loaded_pixs[1]; clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - if (dpf_lookup_no[pix1]) { - val1 += dblpfofs[bpldualpf2of]; - } - val1 ^= bplcon4_denise_xor_val; - dpix_val1 = denise_colors.acolors[val1]; - gpix1 = get_genlock_transparency(dpf_lookup[pix1]); + dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; + gpix1 = get_genlock_transparency(pix1 ^ bplcon4_denise_xor_val); } last_bpl_pix = pix1; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4_64(); - loaded_pix = getbpl4_64(); - } - if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { - copybpl4_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4_64(); - } - uae_u32 sv1 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv1 = svt; - } + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8_64(); } + loaded_pix = getbpl8_64(); loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; - matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u8 gpix2 = 0xff; uae_u32 dpix_val2 = BLANK_COLOR; @@ -26735,38 +47406,18 @@ static void lts_aga_fm2_dpf0_p4_ihires_dshres_spr_genlock(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; - gpix2 = get_genlock_transparency(dpf_lookup[pix2]); + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + gpix2 = get_genlock_transparency(pix2 ^ bplcon4_denise_xor_val); } last_bpl_pix = pix2; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4_64(); - loaded_pix = getbpl4_64(); - } - if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { - copybpl4_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4_64(); - } - uae_u32 sv2 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv2 = svt; - } + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8_64(); } + loaded_pix = getbpl8_64(); loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; - matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u8 gpix3 = 0xff; uae_u32 dpix_val3 = BLANK_COLOR; @@ -26776,76 +47427,25 @@ static void lts_aga_fm2_dpf0_p4_ihires_dshres_spr_genlock(void) if (denise_hdiw && bpl1dat_trigger) { pix3 = loaded_pixs[3]; clxdat |= bplcoltable[pix3]; - uae_u8 val3 = dpf_lookup[pix3]; - if (dpf_lookup_no[pix3]) { - val3 += dblpfofs[bpldualpf2of]; - } - val3 ^= bplcon4_denise_xor_val; - dpix_val3 = denise_colors.acolors[val3]; - gpix3 = get_genlock_transparency(dpf_lookup[pix3]); + dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; + gpix3 = get_genlock_transparency(pix3 ^ bplcon4_denise_xor_val); } last_bpl_pix = pix3; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4_64(); - loaded_pix = getbpl4_64(); - } - if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { - copybpl4_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl4_64(); - } - uae_u32 sv3 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv3 = svt; - } + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8_64(); } + loaded_pix = getbpl8_64(); loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - gpix0 = get_genlock_transparency(spix0); - - } - } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; - if (sv1) { - uae_u32 spix1 = denise_render_sprites2(pix1, sv1); - if (spix1) { - dpix_val1 = denise_colors.acolors[spix1]; - gpix1 = get_genlock_transparency(spix1); - - } - } dtbuf[h][1] = dpix_val1; dtgbuf[h][1] = gpix1; - if (sv2) { - uae_u32 spix2 = denise_render_sprites2(pix2, sv2); - if (spix2) { - dpix_val2 = denise_colors.acolors[spix2]; - gpix2 = get_genlock_transparency(spix2); - - } - } dtbuf[h][2] = dpix_val2; dtgbuf[h][2] = gpix2; - if (sv3) { - uae_u32 spix3 = denise_render_sprites2(pix3, sv3); - if (spix3) { - dpix_val3 = denise_colors.acolors[spix3]; - gpix3 = get_genlock_transparency(spix3); - - } - } dtbuf[h][3] = dpix_val3; dtgbuf[h][3] = gpix3; uae_u32 t0 = dtbuf[h ^ lol][0]; @@ -26907,11 +47507,11 @@ static void lts_aga_fm2_dpf0_p4_ihires_dshres_spr_genlock(void) denise_cck++; } } -static void lts_aga_fm2_dpf0_p4_ihires_dshres_spr_filtered_genlock(void) +static void lts_aga_fm2_n0_p8_ishres_dshres_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm2_dpf1_p4_ihires_dshres_spr_genlock(void) +static void lts_aga_fm2_n1_p8_ishres_dshres_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -26924,7 +47524,6 @@ static void lts_aga_fm2_dpf1_p4_ihires_dshres_spr_genlock(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; @@ -26934,49 +47533,21 @@ static void lts_aga_fm2_dpf1_p4_ihires_dshres_spr_genlock(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - gpix0 = get_genlock_transparency(dpf_lookup[pix0]); + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); } last_bpl_pix = pix0; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4e_64(); - loaded_pix = getbpl4_64(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl4o_64(); - loaded_pix = getbpl4_64(); - } - 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] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { - copybpl4o_64(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl4_64(); + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8e_64(); } - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o_64(); } + loaded_pix = getbpl8_64(); loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; - matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u8 gpix1 = 0xff; uae_u32 dpix_val1 = BLANK_COLOR; @@ -26986,49 +47557,21 @@ static void lts_aga_fm2_dpf1_p4_ihires_dshres_spr_genlock(void) if (denise_hdiw && bpl1dat_trigger) { pix1 = loaded_pixs[1]; clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - if (dpf_lookup_no[pix1]) { - val1 += dblpfofs[bpldualpf2of]; - } - val1 ^= bplcon4_denise_xor_val; - dpix_val1 = denise_colors.acolors[val1]; - gpix1 = get_genlock_transparency(dpf_lookup[pix1]); + dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; + gpix1 = get_genlock_transparency(pix1 ^ bplcon4_denise_xor_val); } last_bpl_pix = pix1; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4e_64(); - loaded_pix = getbpl4_64(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl4o_64(); - loaded_pix = getbpl4_64(); - } - 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] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) { - copybpl4o_64(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl4_64(); + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8e_64(); } - uae_u32 sv1 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv1 = svt; - } + if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o_64(); } + loaded_pix = getbpl8_64(); loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; - matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u8 gpix2 = 0xff; uae_u32 dpix_val2 = BLANK_COLOR; @@ -27038,49 +47581,21 @@ static void lts_aga_fm2_dpf1_p4_ihires_dshres_spr_genlock(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; - gpix2 = get_genlock_transparency(dpf_lookup[pix2]); + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + gpix2 = get_genlock_transparency(pix2 ^ bplcon4_denise_xor_val); } last_bpl_pix = pix2; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4e_64(); - loaded_pix = getbpl4_64(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl4o_64(); - loaded_pix = getbpl4_64(); - } - 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] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) { - copybpl4o_64(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl4_64(); + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8e_64(); } - uae_u32 sv2 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv2 = svt; - } + if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o_64(); } + loaded_pix = getbpl8_64(); loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; - matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u8 gpix3 = 0xff; uae_u32 dpix_val3 = BLANK_COLOR; @@ -27090,87 +47605,28 @@ static void lts_aga_fm2_dpf1_p4_ihires_dshres_spr_genlock(void) if (denise_hdiw && bpl1dat_trigger) { pix3 = loaded_pixs[3]; clxdat |= bplcoltable[pix3]; - uae_u8 val3 = dpf_lookup[pix3]; - if (dpf_lookup_no[pix3]) { - val3 += dblpfofs[bpldualpf2of]; - } - val3 ^= bplcon4_denise_xor_val; - dpix_val3 = denise_colors.acolors[val3]; - gpix3 = get_genlock_transparency(dpf_lookup[pix3]); + dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; + gpix3 = get_genlock_transparency(pix3 ^ bplcon4_denise_xor_val); } last_bpl_pix = pix3; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl4e_64(); - loaded_pix = getbpl4_64(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl4o_64(); - loaded_pix = getbpl4_64(); - } - 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] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[1]) { - copybpl4o_64(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl4_64(); - } - uae_u32 sv3 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv3 = svt; - } - } + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8e_64(); + } + if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o_64(); + } + loaded_pix = getbpl8_64(); loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - gpix0 = get_genlock_transparency(spix0); - - } - } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; - if (sv1) { - uae_u32 spix1 = denise_render_sprites2(pix1, sv1); - if (spix1) { - dpix_val1 = denise_colors.acolors[spix1]; - gpix1 = get_genlock_transparency(spix1); - - } - } dtbuf[h][1] = dpix_val1; dtgbuf[h][1] = gpix1; - if (sv2) { - uae_u32 spix2 = denise_render_sprites2(pix2, sv2); - if (spix2) { - dpix_val2 = denise_colors.acolors[spix2]; - gpix2 = get_genlock_transparency(spix2); - - } - } dtbuf[h][2] = dpix_val2; dtgbuf[h][2] = gpix2; - if (sv3) { - uae_u32 spix3 = denise_render_sprites2(pix3, sv3); - if (spix3) { - dpix_val3 = denise_colors.acolors[spix3]; - gpix3 = get_genlock_transparency(spix3); - - } - } dtbuf[h][3] = dpix_val3; dtgbuf[h][3] = gpix3; uae_u32 t0 = dtbuf[h ^ lol][0]; @@ -27232,59 +47688,11 @@ static void lts_aga_fm2_dpf1_p4_ihires_dshres_spr_genlock(void) denise_cck++; } } -static void lts_aga_fm2_dpf1_p4_ihires_dshres_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb0_p4_ihires_dshres_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb0_p4_ihires_dshres_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb1_p4_ihires_dshres_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb1_p4_ihires_dshres_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_ham0_p4_ihires_dshres_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_ham0_p4_ihires_dshres_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_ham1_p4_ihires_dshres_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_ham1_p4_ihires_dshres_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb0_p4_ihires_dshres_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb0_p4_ihires_dshres_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb1_p4_ihires_dshres_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb1_p4_ihires_dshres_spr_filtered_genlock(void) +static void lts_aga_fm2_n1_p8_ishres_dshres_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm2_n0_p8_ihires_dshres_spr_genlock(void) +static void lts_aga_fm2_dpf0_p8_ishres_dshres_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -27297,7 +47705,6 @@ static void lts_aga_fm2_n0_p8_ihires_dshres_spr_genlock(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; @@ -27307,33 +47714,23 @@ static void lts_aga_fm2_n0_p8_ihires_dshres_spr_genlock(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + gpix0 = get_genlock_transparency(dpf_lookup[pix0]); } last_bpl_pix = pix0; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8_64(); - loaded_pix = getbpl8_64(); - } - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { copybpl8_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_64(); - } - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } } + loaded_pix = getbpl8_64(); loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; - matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u8 gpix1 = 0xff; uae_u32 dpix_val1 = BLANK_COLOR; @@ -27343,33 +47740,23 @@ static void lts_aga_fm2_n0_p8_ihires_dshres_spr_genlock(void) if (denise_hdiw && bpl1dat_trigger) { pix1 = loaded_pixs[1]; clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; - gpix1 = get_genlock_transparency(pix1 ^ bplcon4_denise_xor_val); + uae_u8 val1 = dpf_lookup[pix1]; + if (dpf_lookup_no[pix1]) { + val1 += dblpfofs[bpldualpf2of]; + } + val1 ^= bplcon4_denise_xor_val; + dpix_val1 = denise_colors.acolors[val1]; + gpix1 = get_genlock_transparency(dpf_lookup[pix1]); } last_bpl_pix = pix1; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8_64(); - loaded_pix = getbpl8_64(); - } - if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { copybpl8_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_64(); - } - uae_u32 sv1 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv1 = svt; - } } + loaded_pix = getbpl8_64(); loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; - matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u8 gpix2 = 0xff; uae_u32 dpix_val2 = BLANK_COLOR; @@ -27379,33 +47766,23 @@ static void lts_aga_fm2_n0_p8_ihires_dshres_spr_genlock(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; - gpix2 = get_genlock_transparency(pix2 ^ bplcon4_denise_xor_val); + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; + gpix2 = get_genlock_transparency(dpf_lookup[pix2]); } last_bpl_pix = pix2; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8_64(); - loaded_pix = getbpl8_64(); - } - if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { copybpl8_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_64(); - } - uae_u32 sv2 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv2 = svt; - } } + loaded_pix = getbpl8_64(); loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; - matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u8 gpix3 = 0xff; uae_u32 dpix_val3 = BLANK_COLOR; @@ -27415,71 +47792,30 @@ static void lts_aga_fm2_n0_p8_ihires_dshres_spr_genlock(void) if (denise_hdiw && bpl1dat_trigger) { pix3 = loaded_pixs[3]; clxdat |= bplcoltable[pix3]; - dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; - gpix3 = get_genlock_transparency(pix3 ^ bplcon4_denise_xor_val); + uae_u8 val3 = dpf_lookup[pix3]; + if (dpf_lookup_no[pix3]) { + val3 += dblpfofs[bpldualpf2of]; + } + val3 ^= bplcon4_denise_xor_val; + dpix_val3 = denise_colors.acolors[val3]; + gpix3 = get_genlock_transparency(dpf_lookup[pix3]); } last_bpl_pix = pix3; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8_64(); - loaded_pix = getbpl8_64(); - } - if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { copybpl8_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_64(); - } - uae_u32 sv3 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv3 = svt; - } } + loaded_pix = getbpl8_64(); loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - gpix0 = get_genlock_transparency(spix0); - - } - } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; - if (sv1) { - uae_u32 spix1 = denise_render_sprites2(pix1, sv1); - if (spix1) { - dpix_val1 = denise_colors.acolors[spix1]; - gpix1 = get_genlock_transparency(spix1); - - } - } dtbuf[h][1] = dpix_val1; dtgbuf[h][1] = gpix1; - if (sv2) { - uae_u32 spix2 = denise_render_sprites2(pix2, sv2); - if (spix2) { - dpix_val2 = denise_colors.acolors[spix2]; - gpix2 = get_genlock_transparency(spix2); - - } - } dtbuf[h][2] = dpix_val2; dtgbuf[h][2] = gpix2; - if (sv3) { - uae_u32 spix3 = denise_render_sprites2(pix3, sv3); - if (spix3) { - dpix_val3 = denise_colors.acolors[spix3]; - gpix3 = get_genlock_transparency(spix3); - - } - } dtbuf[h][3] = dpix_val3; dtgbuf[h][3] = gpix3; uae_u32 t0 = dtbuf[h ^ lol][0]; @@ -27541,11 +47877,11 @@ static void lts_aga_fm2_n0_p8_ihires_dshres_spr_genlock(void) denise_cck++; } } -static void lts_aga_fm2_n0_p8_ihires_dshres_spr_filtered_genlock(void) +static void lts_aga_fm2_dpf0_p8_ishres_dshres_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm2_n1_p8_ihires_dshres_spr_genlock(void) +static void lts_aga_fm2_dpf1_p8_ishres_dshres_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -27558,7 +47894,6 @@ static void lts_aga_fm2_n1_p8_ihires_dshres_spr_genlock(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; @@ -27568,44 +47903,26 @@ static void lts_aga_fm2_n1_p8_ihires_dshres_spr_genlock(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + gpix0 = get_genlock_transparency(dpf_lookup[pix0]); } last_bpl_pix = pix0; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8e_64(); - loaded_pix = getbpl8_64(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl8o_64(); - loaded_pix = getbpl8_64(); - } - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { copybpl8e_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_64(); } - if (bpldat_copy[1] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { copybpl8o_64(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl8_64(); - } - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } } + loaded_pix = getbpl8_64(); loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; - matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u8 gpix1 = 0xff; uae_u32 dpix_val1 = BLANK_COLOR; @@ -27615,44 +47932,26 @@ static void lts_aga_fm2_n1_p8_ihires_dshres_spr_genlock(void) if (denise_hdiw && bpl1dat_trigger) { pix1 = loaded_pixs[1]; clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; - gpix1 = get_genlock_transparency(pix1 ^ bplcon4_denise_xor_val); + uae_u8 val1 = dpf_lookup[pix1]; + if (dpf_lookup_no[pix1]) { + val1 += dblpfofs[bpldualpf2of]; + } + val1 ^= bplcon4_denise_xor_val; + dpix_val1 = denise_colors.acolors[val1]; + gpix1 = get_genlock_transparency(dpf_lookup[pix1]); } last_bpl_pix = pix1; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8e_64(); - loaded_pix = getbpl8_64(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl8o_64(); - loaded_pix = getbpl8_64(); - } - if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { copybpl8e_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_64(); } - if (bpldat_copy[1] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) { + if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { copybpl8o_64(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl8_64(); - } - uae_u32 sv1 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv1 = svt; - } } + loaded_pix = getbpl8_64(); loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; - matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u8 gpix2 = 0xff; uae_u32 dpix_val2 = BLANK_COLOR; @@ -27662,44 +47961,26 @@ static void lts_aga_fm2_n1_p8_ihires_dshres_spr_genlock(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; - gpix2 = get_genlock_transparency(pix2 ^ bplcon4_denise_xor_val); + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; + gpix2 = get_genlock_transparency(dpf_lookup[pix2]); } last_bpl_pix = pix2; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8e_64(); - loaded_pix = getbpl8_64(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl8o_64(); - loaded_pix = getbpl8_64(); - } - if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { copybpl8e_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_64(); } - if (bpldat_copy[1] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) { + if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { copybpl8o_64(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl8_64(); - } - uae_u32 sv2 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv2 = svt; - } } + loaded_pix = getbpl8_64(); loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; - matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u8 gpix3 = 0xff; uae_u32 dpix_val3 = BLANK_COLOR; @@ -27709,82 +47990,149 @@ static void lts_aga_fm2_n1_p8_ihires_dshres_spr_genlock(void) if (denise_hdiw && bpl1dat_trigger) { pix3 = loaded_pixs[3]; clxdat |= bplcoltable[pix3]; - dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; - gpix3 = get_genlock_transparency(pix3 ^ bplcon4_denise_xor_val); + uae_u8 val3 = dpf_lookup[pix3]; + if (dpf_lookup_no[pix3]) { + val3 += dblpfofs[bpldualpf2of]; + } + val3 ^= bplcon4_denise_xor_val; + dpix_val3 = denise_colors.acolors[val3]; + gpix3 = get_genlock_transparency(dpf_lookup[pix3]); } last_bpl_pix = pix3; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8e_64(); - loaded_pix = getbpl8_64(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl8o_64(); - loaded_pix = getbpl8_64(); - } - if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { copybpl8e_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_64(); } - if (bpldat_copy[1] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[1]) { + if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) { copybpl8o_64(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl8_64(); } - uae_u32 sv3 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv3 = svt; + loaded_pix = getbpl8_64(); + loaded_pixs[3] = loaded_pix; + internal_pixel_cnt += 1; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][1] = dpix_val1; + dtgbuf[h][1] = gpix1; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + dtbuf[h][3] = dpix_val3; + dtgbuf[h][3] = gpix3; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = dtgbuf[h ^ lol][1]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); } + #endif + *buf1++ = t3; + *buf2++ = t3; + *gbuf++ = dtgbuf[h ^ lol][3]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_aga_fm2_dpf1_p8_ishres_dshres_filtered_genlock(void) +{ + lts_null(); +} +static void lts_aga_fm2_ehb0_p8_ishres_dshres_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 1; + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 1; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 1; + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; } - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - gpix0 = get_genlock_transparency(spix0); - - } - } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; - if (sv1) { - uae_u32 spix1 = denise_render_sprites2(pix1, sv1); - if (spix1) { - dpix_val1 = denise_colors.acolors[spix1]; - gpix1 = get_genlock_transparency(spix1); - - } - } dtbuf[h][1] = dpix_val1; dtgbuf[h][1] = gpix1; - if (sv2) { - uae_u32 spix2 = denise_render_sprites2(pix2, sv2); - if (spix2) { - dpix_val2 = denise_colors.acolors[spix2]; - gpix2 = get_genlock_transparency(spix2); - - } - } dtbuf[h][2] = dpix_val2; dtgbuf[h][2] = gpix2; - if (sv3) { - uae_u32 spix3 = denise_render_sprites2(pix3, sv3); - if (spix3) { - dpix_val3 = denise_colors.acolors[spix3]; - gpix3 = get_genlock_transparency(spix3); - - } - } dtbuf[h][3] = dpix_val3; dtgbuf[h][3] = gpix3; uae_u32 t0 = dtbuf[h ^ lol][0]; @@ -27846,11 +48194,11 @@ static void lts_aga_fm2_n1_p8_ihires_dshres_spr_genlock(void) denise_cck++; } } -static void lts_aga_fm2_n1_p8_ihires_dshres_spr_filtered_genlock(void) +static void lts_aga_fm2_ehb0_p8_ishres_dshres_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm2_dpf0_p8_ihires_dshres_spr_genlock(void) +static void lts_aga_fm2_ehb1_p8_ishres_dshres_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -27861,211 +48209,46 @@ 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; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - gpix0 = get_genlock_transparency(dpf_lookup[pix0]); - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8_64(); - loaded_pix = getbpl8_64(); - } - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_64(); - } - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; - matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u8 gpix1 = 0xff; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { gpix1 = get_genlock_transparency_border(); dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - if (dpf_lookup_no[pix1]) { - val1 += dblpfofs[bpldualpf2of]; - } - val1 ^= bplcon4_denise_xor_val; - dpix_val1 = denise_colors.acolors[val1]; - gpix1 = get_genlock_transparency(dpf_lookup[pix1]); - } - last_bpl_pix = pix1; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8_64(); - loaded_pix = getbpl8_64(); - } - if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_64(); - } - uae_u32 sv1 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv1 = svt; - } } - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; - matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u8 gpix2 = 0xff; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { gpix2 = get_genlock_transparency_border(); dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; - gpix2 = get_genlock_transparency(dpf_lookup[pix2]); - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8_64(); - loaded_pix = getbpl8_64(); - } - if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_64(); - } - uae_u32 sv2 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv2 = svt; - } } - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; - matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u8 gpix3 = 0xff; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { gpix3 = get_genlock_transparency_border(); dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - uae_u8 val3 = dpf_lookup[pix3]; - if (dpf_lookup_no[pix3]) { - val3 += dblpfofs[bpldualpf2of]; - } - val3 ^= bplcon4_denise_xor_val; - dpix_val3 = denise_colors.acolors[val3]; - gpix3 = get_genlock_transparency(dpf_lookup[pix3]); - } - last_bpl_pix = pix3; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8_64(); - loaded_pix = getbpl8_64(); - } - if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_64(); - } - uae_u32 sv3 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv3 = svt; - } } - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - gpix0 = get_genlock_transparency(spix0); - - } - } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; - if (sv1) { - uae_u32 spix1 = denise_render_sprites2(pix1, sv1); - if (spix1) { - dpix_val1 = denise_colors.acolors[spix1]; - gpix1 = get_genlock_transparency(spix1); - - } - } dtbuf[h][1] = dpix_val1; dtgbuf[h][1] = gpix1; - if (sv2) { - uae_u32 spix2 = denise_render_sprites2(pix2, sv2); - if (spix2) { - dpix_val2 = denise_colors.acolors[spix2]; - gpix2 = get_genlock_transparency(spix2); - - } - } dtbuf[h][2] = dpix_val2; dtgbuf[h][2] = gpix2; - if (sv3) { - uae_u32 spix3 = denise_render_sprites2(pix3, sv3); - if (spix3) { - dpix_val3 = denise_colors.acolors[spix3]; - gpix3 = get_genlock_transparency(spix3); - - } - } dtbuf[h][3] = dpix_val3; dtgbuf[h][3] = gpix3; uae_u32 t0 = dtbuf[h ^ lol][0]; @@ -28127,11 +48310,11 @@ static void lts_aga_fm2_dpf0_p8_ihires_dshres_spr_genlock(void) denise_cck++; } } -static void lts_aga_fm2_dpf0_p8_ihires_dshres_spr_filtered_genlock(void) +static void lts_aga_fm2_ehb1_p8_ishres_dshres_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm2_dpf1_p8_ihires_dshres_spr_genlock(void) +static void lts_aga_fm2_ham0_p8_ishres_dshres_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -28144,7 +48327,6 @@ static void lts_aga_fm2_dpf1_p8_ihires_dshres_spr_genlock(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; @@ -28154,49 +48336,18 @@ static void lts_aga_fm2_dpf1_p8_ihires_dshres_spr_genlock(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - gpix0 = get_genlock_transparency(dpf_lookup[pix0]); + dpix_val0 = decode_ham_pixel_aga(pix0); + gpix0 = get_genlock_transparency((pix0 >> 2) & 63); } last_bpl_pix = pix0; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8e_64(); - loaded_pix = getbpl8_64(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl8o_64(); - loaded_pix = getbpl8_64(); - } - 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] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl8_64(); - } - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8_64(); } + loaded_pix = getbpl8_64(); loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; - matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u8 gpix1 = 0xff; uae_u32 dpix_val1 = BLANK_COLOR; @@ -28206,49 +48357,18 @@ static void lts_aga_fm2_dpf1_p8_ihires_dshres_spr_genlock(void) if (denise_hdiw && bpl1dat_trigger) { pix1 = loaded_pixs[1]; clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - if (dpf_lookup_no[pix1]) { - val1 += dblpfofs[bpldualpf2of]; - } - val1 ^= bplcon4_denise_xor_val; - dpix_val1 = denise_colors.acolors[val1]; - gpix1 = get_genlock_transparency(dpf_lookup[pix1]); + dpix_val1 = decode_ham_pixel_aga(pix1); + gpix1 = get_genlock_transparency((pix1 >> 2) & 63); } last_bpl_pix = pix1; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8e_64(); - loaded_pix = getbpl8_64(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl8o_64(); - loaded_pix = getbpl8_64(); - } - 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] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl8_64(); - } - uae_u32 sv1 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv1 = svt; - } + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8_64(); } + loaded_pix = getbpl8_64(); loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; - matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u8 gpix2 = 0xff; uae_u32 dpix_val2 = BLANK_COLOR; @@ -28258,49 +48378,18 @@ static void lts_aga_fm2_dpf1_p8_ihires_dshres_spr_genlock(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; - gpix2 = get_genlock_transparency(dpf_lookup[pix2]); + dpix_val2 = decode_ham_pixel_aga(pix2); + gpix2 = get_genlock_transparency((pix2 >> 2) & 63); } last_bpl_pix = pix2; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8e_64(); - loaded_pix = getbpl8_64(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl8o_64(); - loaded_pix = getbpl8_64(); - } - 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] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl8_64(); - } - uae_u32 sv2 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv2 = svt; - } + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8_64(); } + loaded_pix = getbpl8_64(); loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; - matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u8 gpix3 = 0xff; uae_u32 dpix_val3 = BLANK_COLOR; @@ -28310,87 +48399,25 @@ static void lts_aga_fm2_dpf1_p8_ihires_dshres_spr_genlock(void) if (denise_hdiw && bpl1dat_trigger) { pix3 = loaded_pixs[3]; clxdat |= bplcoltable[pix3]; - uae_u8 val3 = dpf_lookup[pix3]; - if (dpf_lookup_no[pix3]) { - val3 += dblpfofs[bpldualpf2of]; - } - val3 ^= bplcon4_denise_xor_val; - dpix_val3 = denise_colors.acolors[val3]; - gpix3 = get_genlock_transparency(dpf_lookup[pix3]); + dpix_val3 = decode_ham_pixel_aga(pix3); + gpix3 = get_genlock_transparency((pix3 >> 2) & 63); } last_bpl_pix = pix3; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8e_64(); - loaded_pix = getbpl8_64(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl8o_64(); - loaded_pix = getbpl8_64(); - } - 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] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl8_64(); - } - uae_u32 sv3 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv3 = svt; - } + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8_64(); } + loaded_pix = getbpl8_64(); loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - gpix0 = get_genlock_transparency(spix0); - - } - } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; - if (sv1) { - uae_u32 spix1 = denise_render_sprites2(pix1, sv1); - if (spix1) { - dpix_val1 = denise_colors.acolors[spix1]; - gpix1 = get_genlock_transparency(spix1); - - } - } dtbuf[h][1] = dpix_val1; dtgbuf[h][1] = gpix1; - if (sv2) { - uae_u32 spix2 = denise_render_sprites2(pix2, sv2); - if (spix2) { - dpix_val2 = denise_colors.acolors[spix2]; - gpix2 = get_genlock_transparency(spix2); - - } - } dtbuf[h][2] = dpix_val2; dtgbuf[h][2] = gpix2; - if (sv3) { - uae_u32 spix3 = denise_render_sprites2(pix3, sv3); - if (spix3) { - dpix_val3 = denise_colors.acolors[spix3]; - gpix3 = get_genlock_transparency(spix3); - - } - } dtbuf[h][3] = dpix_val3; dtgbuf[h][3] = gpix3; uae_u32 t0 = dtbuf[h ^ lol][0]; @@ -28452,27 +48479,11 @@ static void lts_aga_fm2_dpf1_p8_ihires_dshres_spr_genlock(void) denise_cck++; } } -static void lts_aga_fm2_dpf1_p8_ihires_dshres_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb0_p8_ihires_dshres_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb0_p8_ihires_dshres_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb1_p8_ihires_dshres_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb1_p8_ihires_dshres_spr_filtered_genlock(void) +static void lts_aga_fm2_ham0_p8_ishres_dshres_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm2_ham0_p8_ihires_dshres_spr_genlock(void) +static void lts_aga_fm2_ham1_p8_ishres_dshres_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -28485,7 +48496,6 @@ static void lts_aga_fm2_ham0_p8_ihires_dshres_spr_genlock(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; @@ -28500,28 +48510,16 @@ static void lts_aga_fm2_ham0_p8_ihires_dshres_spr_genlock(void) } last_bpl_pix = pix0; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8_64(); - loaded_pix = getbpl8_64(); - } - if (bpldat_copy[0] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_64(); + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8e_64(); } - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o_64(); } + loaded_pix = getbpl8_64(); loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; - matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u8 gpix1 = 0xff; uae_u32 dpix_val1 = BLANK_COLOR; @@ -28536,28 +48534,16 @@ static void lts_aga_fm2_ham0_p8_ihires_dshres_spr_genlock(void) } last_bpl_pix = pix1; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8_64(); - loaded_pix = getbpl8_64(); - } - if (bpldat_copy[0] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_64(); + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8e_64(); } - uae_u32 sv1 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv1 = svt; - } + if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o_64(); } + loaded_pix = getbpl8_64(); loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; - matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u8 gpix2 = 0xff; uae_u32 dpix_val2 = BLANK_COLOR; @@ -28565,35 +48551,23 @@ static void lts_aga_fm2_ham0_p8_ihires_dshres_spr_genlock(void) gpix2 = get_genlock_transparency_border(); dpix_val2 = bordercolor; if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = decode_ham_pixel_aga(pix2); - gpix2 = get_genlock_transparency((pix2 >> 2) & 63); - } - last_bpl_pix = pix2; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8_64(); - loaded_pix = getbpl8_64(); - } - if (bpldat_copy[0] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_64(); - } - uae_u32 sv2 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv2 = svt; + pix2 = loaded_pixs[2]; + clxdat |= bplcoltable[pix2]; + dpix_val2 = decode_ham_pixel_aga(pix2); + gpix2 = get_genlock_transparency((pix2 >> 2) & 63); } + last_bpl_pix = pix2; + } + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8e_64(); + } + if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o_64(); } + loaded_pix = getbpl8_64(); loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; - matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u8 gpix3 = 0xff; uae_u32 dpix_val3 = BLANK_COLOR; @@ -28608,66 +48582,23 @@ static void lts_aga_fm2_ham0_p8_ihires_dshres_spr_genlock(void) } last_bpl_pix = pix3; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8_64(); - loaded_pix = getbpl8_64(); - } - if (bpldat_copy[0] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); - bplshiftcnt[0] = 0; - loaded_pix = getbpl8_64(); + shiftbpl8_64(); + if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { + copybpl8e_64(); } - uae_u32 sv3 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv3 = svt; - } + if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o_64(); } + loaded_pix = getbpl8_64(); loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - gpix0 = get_genlock_transparency(spix0); - - } - } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; - if (sv1) { - uae_u32 spix1 = denise_render_sprites2(pix1, sv1); - if (spix1) { - dpix_val1 = denise_colors.acolors[spix1]; - gpix1 = get_genlock_transparency(spix1); - - } - } dtbuf[h][1] = dpix_val1; dtgbuf[h][1] = gpix1; - if (sv2) { - uae_u32 spix2 = denise_render_sprites2(pix2, sv2); - if (spix2) { - dpix_val2 = denise_colors.acolors[spix2]; - gpix2 = get_genlock_transparency(spix2); - - } - } dtbuf[h][2] = dpix_val2; dtgbuf[h][2] = gpix2; - if (sv3) { - uae_u32 spix3 = denise_render_sprites2(pix3, sv3); - if (spix3) { - dpix_val3 = denise_colors.acolors[spix3]; - gpix3 = get_genlock_transparency(spix3); - - } - } dtbuf[h][3] = dpix_val3; dtgbuf[h][3] = gpix3; uae_u32 t0 = dtbuf[h ^ lol][0]; @@ -28729,11 +48660,11 @@ static void lts_aga_fm2_ham0_p8_ihires_dshres_spr_genlock(void) denise_cck++; } } -static void lts_aga_fm2_ham0_p8_ihires_dshres_spr_filtered_genlock(void) +static void lts_aga_fm2_ham1_p8_ishres_dshres_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm2_ham1_p8_ihires_dshres_spr_genlock(void) +static void lts_aga_fm2_kehb0_p8_ishres_dshres_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -28744,235 +48675,46 @@ 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; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = decode_ham_pixel_aga(pix0); - gpix0 = get_genlock_transparency((pix0 >> 2) & 63); - } - last_bpl_pix = pix0; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8e_64(); - loaded_pix = getbpl8_64(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl8o_64(); - loaded_pix = getbpl8_64(); - } - 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] && ((cmp | 0) & 127) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl8_64(); - } - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; - matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u8 gpix1 = 0xff; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { gpix1 = get_genlock_transparency_border(); dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - dpix_val1 = decode_ham_pixel_aga(pix1); - gpix1 = get_genlock_transparency((pix1 >> 2) & 63); - } - last_bpl_pix = pix1; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8e_64(); - loaded_pix = getbpl8_64(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl8o_64(); - loaded_pix = getbpl8_64(); - } - 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] && ((cmp | 1) & 127) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl8_64(); - } - uae_u32 sv1 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv1 = svt; - } } - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; - matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u8 gpix2 = 0xff; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { gpix2 = get_genlock_transparency_border(); dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = decode_ham_pixel_aga(pix2); - gpix2 = get_genlock_transparency((pix2 >> 2) & 63); - } - last_bpl_pix = pix2; } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8e_64(); - loaded_pix = getbpl8_64(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl8o_64(); - loaded_pix = getbpl8_64(); - } - 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] && ((cmp | 2) & 127) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl8_64(); - } - uae_u32 sv2 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv2 = svt; - } - } - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; - matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u8 gpix3 = 0xff; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { gpix3 = get_genlock_transparency_border(); dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - dpix_val3 = decode_ham_pixel_aga(pix3); - gpix3 = get_genlock_transparency((pix3 >> 2) & 63); - } - last_bpl_pix = pix3; - } - bplshiftcnt[0] += 2; - if (bplshiftcnt[0] >= 4) { - bplshiftcnt[0] = 0; - shiftbpl8e_64(); - loaded_pix = getbpl8_64(); - } - bplshiftcnt[1] += 2; - if (bplshiftcnt[1] >= 4) { - bplshiftcnt[1] = 0; - shiftbpl8o_64(); - loaded_pix = getbpl8_64(); - } - 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] && ((cmp | 3) & 127) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); - bplshiftcnt[1] = 0; - loaded_pix = getbpl8_64(); - } - uae_u32 sv3 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_aga(denise_spr_add); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv3 = svt; - } } - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - gpix0 = get_genlock_transparency(spix0); - - } - } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; - if (sv1) { - uae_u32 spix1 = denise_render_sprites2(pix1, sv1); - if (spix1) { - dpix_val1 = denise_colors.acolors[spix1]; - gpix1 = get_genlock_transparency(spix1); - - } - } dtbuf[h][1] = dpix_val1; dtgbuf[h][1] = gpix1; - if (sv2) { - uae_u32 spix2 = denise_render_sprites2(pix2, sv2); - if (spix2) { - dpix_val2 = denise_colors.acolors[spix2]; - gpix2 = get_genlock_transparency(spix2); - - } - } dtbuf[h][2] = dpix_val2; dtgbuf[h][2] = gpix2; - if (sv3) { - uae_u32 spix3 = denise_render_sprites2(pix3, sv3); - if (spix3) { - dpix_val3 = denise_colors.acolors[spix3]; - gpix3 = get_genlock_transparency(spix3); - - } - } dtbuf[h][3] = dpix_val3; dtgbuf[h][3] = gpix3; uae_u32 t0 = dtbuf[h ^ lol][0]; @@ -29034,27 +48776,11 @@ static void lts_aga_fm2_ham1_p8_ihires_dshres_spr_genlock(void) denise_cck++; } } -static void lts_aga_fm2_ham1_p8_ihires_dshres_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb0_p8_ihires_dshres_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb0_p8_ihires_dshres_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb1_p8_ihires_dshres_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb1_p8_ihires_dshres_spr_filtered_genlock(void) +static void lts_aga_fm2_kehb0_p8_ishres_dshres_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm2_n0_p4_ishres_dshres_genlock(void) +static void lts_aga_fm2_kehb1_p8_ishres_dshres_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -29065,7 +48791,6 @@ 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; @@ -29073,20 +48798,7 @@ static void lts_aga_fm2_n0_p4_ishres_dshres_genlock(void) if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); - } - last_bpl_pix = pix0; - } - shiftbpl4_64(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4_64(); } - loaded_pix = getbpl4_64(); - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; uae_u8 pix1 = 0; uae_u8 gpix1 = 0xff; @@ -29094,20 +48806,7 @@ static void lts_aga_fm2_n0_p4_ishres_dshres_genlock(void) if (!denise_blank_active) { gpix1 = get_genlock_transparency_border(); dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; - gpix1 = get_genlock_transparency(pix1 ^ bplcon4_denise_xor_val); - } - last_bpl_pix = pix1; - } - shiftbpl4_64(); - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4_64(); } - loaded_pix = getbpl4_64(); - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u8 gpix2 = 0xff; @@ -29115,20 +48814,7 @@ static void lts_aga_fm2_n0_p4_ishres_dshres_genlock(void) if (!denise_blank_active) { gpix2 = get_genlock_transparency_border(); dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; - gpix2 = get_genlock_transparency(pix2 ^ bplcon4_denise_xor_val); - } - last_bpl_pix = pix2; - } - shiftbpl4_64(); - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4_64(); } - loaded_pix = getbpl4_64(); - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; uae_u8 pix3 = 0; uae_u8 gpix3 = 0xff; @@ -29136,20 +48822,7 @@ static void lts_aga_fm2_n0_p4_ishres_dshres_genlock(void) if (!denise_blank_active) { gpix3 = get_genlock_transparency_border(); dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; - gpix3 = get_genlock_transparency(pix3 ^ bplcon4_denise_xor_val); - } - last_bpl_pix = pix3; - } - shiftbpl4_64(); - if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4_64(); } - loaded_pix = getbpl4_64(); - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; @@ -29219,11 +48892,11 @@ static void lts_aga_fm2_n0_p4_ishres_dshres_genlock(void) denise_cck++; } } -static void lts_aga_fm2_n0_p4_ishres_dshres_filtered_genlock(void) +static void lts_aga_fm2_kehb1_p8_ishres_dshres_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm2_n1_p4_ishres_dshres_genlock(void) +static void lts_aga_fm2_n0_p4_ishres_dshres_spr_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -29236,6 +48909,7 @@ static void lts_aga_fm2_n1_p4_ishres_dshres_genlock(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; @@ -29252,14 +48926,20 @@ static void lts_aga_fm2_n1_p4_ishres_dshres_genlock(void) } shiftbpl4_64(); if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4e_64(); - } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl4o_64(); + copybpl4_64(); } loaded_pix = getbpl4_64(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u8 gpix1 = 0xff; uae_u32 dpix_val1 = BLANK_COLOR; @@ -29276,14 +48956,20 @@ static void lts_aga_fm2_n1_p4_ishres_dshres_genlock(void) } shiftbpl4_64(); if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4e_64(); - } - if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { - copybpl4o_64(); + copybpl4_64(); } loaded_pix = getbpl4_64(); + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } + } loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u8 gpix2 = 0xff; uae_u32 dpix_val2 = BLANK_COLOR; @@ -29300,14 +48986,20 @@ static void lts_aga_fm2_n1_p4_ishres_dshres_genlock(void) } shiftbpl4_64(); if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4e_64(); - } - if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { - copybpl4o_64(); + copybpl4_64(); } loaded_pix = getbpl4_64(); + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u8 gpix3 = 0xff; uae_u32 dpix_val3 = BLANK_COLOR; @@ -29324,21 +49016,58 @@ static void lts_aga_fm2_n1_p4_ishres_dshres_genlock(void) } shiftbpl4_64(); if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4e_64(); - } - if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) { - copybpl4o_64(); + copybpl4_64(); } loaded_pix = getbpl4_64(); + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } + } loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + gpix1 = get_genlock_transparency(spix1); + + } + } dtbuf[h][1] = dpix_val1; dtgbuf[h][1] = gpix1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } dtbuf[h][2] = dpix_val2; dtgbuf[h][2] = gpix2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + gpix3 = get_genlock_transparency(spix3); + + } + } dtbuf[h][3] = dpix_val3; dtgbuf[h][3] = gpix3; uae_u32 t0 = dtbuf[h ^ lol][0]; @@ -29400,11 +49129,11 @@ static void lts_aga_fm2_n1_p4_ishres_dshres_genlock(void) denise_cck++; } } -static void lts_aga_fm2_n1_p4_ishres_dshres_filtered_genlock(void) +static void lts_aga_fm2_n0_p4_ishres_dshres_spr_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm2_dpf0_p4_ishres_dshres_genlock(void) +static void lts_aga_fm2_n1_p4_ishres_dshres_spr_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -29417,6 +49146,7 @@ static void lts_aga_fm2_dpf0_p4_ishres_dshres_genlock(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; @@ -29426,23 +49156,30 @@ static void lts_aga_fm2_dpf0_p4_ishres_dshres_genlock(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - gpix0 = get_genlock_transparency(dpf_lookup[pix0]); + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); } last_bpl_pix = pix0; } shiftbpl4_64(); if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4_64(); + copybpl4e_64(); + } + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl4o_64(); } loaded_pix = getbpl4_64(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u8 gpix1 = 0xff; uae_u32 dpix_val1 = BLANK_COLOR; @@ -29452,23 +49189,30 @@ static void lts_aga_fm2_dpf0_p4_ishres_dshres_genlock(void) if (denise_hdiw && bpl1dat_trigger) { pix1 = loaded_pixs[1]; clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - if (dpf_lookup_no[pix1]) { - val1 += dblpfofs[bpldualpf2of]; - } - val1 ^= bplcon4_denise_xor_val; - dpix_val1 = denise_colors.acolors[val1]; - gpix1 = get_genlock_transparency(dpf_lookup[pix1]); + dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; + gpix1 = get_genlock_transparency(pix1 ^ bplcon4_denise_xor_val); } last_bpl_pix = pix1; } shiftbpl4_64(); if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4_64(); + copybpl4e_64(); + } + if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { + copybpl4o_64(); } loaded_pix = getbpl4_64(); + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } + } loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u8 gpix2 = 0xff; uae_u32 dpix_val2 = BLANK_COLOR; @@ -29478,56 +49222,101 @@ static void lts_aga_fm2_dpf0_p4_ishres_dshres_genlock(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; - gpix2 = get_genlock_transparency(dpf_lookup[pix2]); + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + gpix2 = get_genlock_transparency(pix2 ^ bplcon4_denise_xor_val); } last_bpl_pix = pix2; } shiftbpl4_64(); if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4_64(); + copybpl4e_64(); + } + if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { + copybpl4o_64(); } loaded_pix = getbpl4_64(); + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u8 gpix3 = 0xff; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { gpix3 = get_genlock_transparency_border(); - dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - uae_u8 val3 = dpf_lookup[pix3]; - if (dpf_lookup_no[pix3]) { - val3 += dblpfofs[bpldualpf2of]; - } - val3 ^= bplcon4_denise_xor_val; - dpix_val3 = denise_colors.acolors[val3]; - gpix3 = get_genlock_transparency(dpf_lookup[pix3]); + dpix_val3 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix3 = loaded_pixs[3]; + clxdat |= bplcoltable[pix3]; + dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; + gpix3 = get_genlock_transparency(pix3 ^ bplcon4_denise_xor_val); } last_bpl_pix = pix3; } shiftbpl4_64(); if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4_64(); + copybpl4e_64(); + } + if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) { + copybpl4o_64(); } loaded_pix = getbpl4_64(); + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } + } loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + gpix1 = get_genlock_transparency(spix1); + + } + } dtbuf[h][1] = dpix_val1; dtgbuf[h][1] = gpix1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } dtbuf[h][2] = dpix_val2; dtgbuf[h][2] = gpix2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + gpix3 = get_genlock_transparency(spix3); + + } + } dtbuf[h][3] = dpix_val3; dtgbuf[h][3] = gpix3; uae_u32 t0 = dtbuf[h ^ lol][0]; @@ -29589,11 +49378,11 @@ static void lts_aga_fm2_dpf0_p4_ishres_dshres_genlock(void) denise_cck++; } } -static void lts_aga_fm2_dpf0_p4_ishres_dshres_filtered_genlock(void) +static void lts_aga_fm2_n1_p4_ishres_dshres_spr_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm2_dpf1_p4_ishres_dshres_genlock(void) +static void lts_aga_fm2_dpf0_p4_ishres_dshres_spr_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -29606,6 +49395,7 @@ static void lts_aga_fm2_dpf1_p4_ishres_dshres_genlock(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; @@ -29627,14 +49417,20 @@ static void lts_aga_fm2_dpf1_p4_ishres_dshres_genlock(void) } shiftbpl4_64(); if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4e_64(); - } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl4o_64(); + copybpl4_64(); } loaded_pix = getbpl4_64(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u8 gpix1 = 0xff; uae_u32 dpix_val1 = BLANK_COLOR; @@ -29656,14 +49452,20 @@ static void lts_aga_fm2_dpf1_p4_ishres_dshres_genlock(void) } shiftbpl4_64(); if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4e_64(); - } - if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { - copybpl4o_64(); + copybpl4_64(); } loaded_pix = getbpl4_64(); + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } + } loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u8 gpix2 = 0xff; uae_u32 dpix_val2 = BLANK_COLOR; @@ -29685,14 +49487,20 @@ static void lts_aga_fm2_dpf1_p4_ishres_dshres_genlock(void) } shiftbpl4_64(); if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4e_64(); - } - if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { - copybpl4o_64(); + copybpl4_64(); } loaded_pix = getbpl4_64(); + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u8 gpix3 = 0xff; uae_u32 dpix_val3 = BLANK_COLOR; @@ -29714,21 +49522,58 @@ static void lts_aga_fm2_dpf1_p4_ishres_dshres_genlock(void) } shiftbpl4_64(); if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4e_64(); - } - if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) { - copybpl4o_64(); + copybpl4_64(); } loaded_pix = getbpl4_64(); + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } + } loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + gpix1 = get_genlock_transparency(spix1); + + } + } dtbuf[h][1] = dpix_val1; dtgbuf[h][1] = gpix1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } dtbuf[h][2] = dpix_val2; dtgbuf[h][2] = gpix2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + gpix3 = get_genlock_transparency(spix3); + + } + } dtbuf[h][3] = dpix_val3; dtgbuf[h][3] = gpix3; uae_u32 t0 = dtbuf[h ^ lol][0]; @@ -29790,59 +49635,11 @@ static void lts_aga_fm2_dpf1_p4_ishres_dshres_genlock(void) denise_cck++; } } -static void lts_aga_fm2_dpf1_p4_ishres_dshres_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb0_p4_ishres_dshres_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb0_p4_ishres_dshres_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb1_p4_ishres_dshres_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb1_p4_ishres_dshres_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_ham0_p4_ishres_dshres_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_ham0_p4_ishres_dshres_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_ham1_p4_ishres_dshres_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_ham1_p4_ishres_dshres_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb0_p4_ishres_dshres_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb0_p4_ishres_dshres_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb1_p4_ishres_dshres_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb1_p4_ishres_dshres_filtered_genlock(void) +static void lts_aga_fm2_dpf0_p4_ishres_dshres_spr_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm2_n0_p8_ishres_dshres_genlock(void) +static void lts_aga_fm2_dpf1_p4_ishres_dshres_spr_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -29855,6 +49652,7 @@ static void lts_aga_fm2_n0_p8_ishres_dshres_genlock(void) int cnt_next = denise_hcounter_next << 2; int cmp = denise_hcounter_cmp << 2; if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; @@ -29864,18 +49662,35 @@ static void lts_aga_fm2_n0_p8_ishres_dshres_genlock(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + gpix0 = get_genlock_transparency(dpf_lookup[pix0]); } last_bpl_pix = pix0; } - shiftbpl8_64(); + shiftbpl4_64(); if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); + copybpl4e_64(); + } + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl4o_64(); + } + loaded_pix = getbpl4_64(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } } - loaded_pix = getbpl8_64(); loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u8 gpix1 = 0xff; uae_u32 dpix_val1 = BLANK_COLOR; @@ -29885,18 +49700,35 @@ static void lts_aga_fm2_n0_p8_ishres_dshres_genlock(void) if (denise_hdiw && bpl1dat_trigger) { pix1 = loaded_pixs[1]; clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; - gpix1 = get_genlock_transparency(pix1 ^ bplcon4_denise_xor_val); + uae_u8 val1 = dpf_lookup[pix1]; + if (dpf_lookup_no[pix1]) { + val1 += dblpfofs[bpldualpf2of]; + } + val1 ^= bplcon4_denise_xor_val; + dpix_val1 = denise_colors.acolors[val1]; + gpix1 = get_genlock_transparency(dpf_lookup[pix1]); } last_bpl_pix = pix1; } - shiftbpl8_64(); + shiftbpl4_64(); if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); + copybpl4e_64(); + } + if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { + copybpl4o_64(); + } + loaded_pix = getbpl4_64(); + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } } - loaded_pix = getbpl8_64(); loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u8 gpix2 = 0xff; uae_u32 dpix_val2 = BLANK_COLOR; @@ -29906,18 +49738,35 @@ static void lts_aga_fm2_n0_p8_ishres_dshres_genlock(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; - gpix2 = get_genlock_transparency(pix2 ^ bplcon4_denise_xor_val); + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; + gpix2 = get_genlock_transparency(dpf_lookup[pix2]); } last_bpl_pix = pix2; } - shiftbpl8_64(); + shiftbpl4_64(); if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); + copybpl4e_64(); + } + if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { + copybpl4o_64(); + } + loaded_pix = getbpl4_64(); + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } } - loaded_pix = getbpl8_64(); loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u8 gpix3 = 0xff; uae_u32 dpix_val3 = BLANK_COLOR; @@ -29927,25 +49776,73 @@ static void lts_aga_fm2_n0_p8_ishres_dshres_genlock(void) if (denise_hdiw && bpl1dat_trigger) { pix3 = loaded_pixs[3]; clxdat |= bplcoltable[pix3]; - dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; - gpix3 = get_genlock_transparency(pix3 ^ bplcon4_denise_xor_val); + uae_u8 val3 = dpf_lookup[pix3]; + if (dpf_lookup_no[pix3]) { + val3 += dblpfofs[bpldualpf2of]; + } + val3 ^= bplcon4_denise_xor_val; + dpix_val3 = denise_colors.acolors[val3]; + gpix3 = get_genlock_transparency(dpf_lookup[pix3]); } last_bpl_pix = pix3; } - shiftbpl8_64(); + shiftbpl4_64(); if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); + copybpl4e_64(); + } + if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) { + copybpl4o_64(); + } + loaded_pix = getbpl4_64(); + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } } - loaded_pix = getbpl8_64(); loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + gpix1 = get_genlock_transparency(spix1); + + } + } dtbuf[h][1] = dpix_val1; dtgbuf[h][1] = gpix1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } dtbuf[h][2] = dpix_val2; dtgbuf[h][2] = gpix2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + gpix3 = get_genlock_transparency(spix3); + + } + } dtbuf[h][3] = dpix_val3; dtgbuf[h][3] = gpix3; uae_u32 t0 = dtbuf[h ^ lol][0]; @@ -30007,11 +49904,11 @@ static void lts_aga_fm2_n0_p8_ishres_dshres_genlock(void) denise_cck++; } } -static void lts_aga_fm2_n0_p8_ishres_dshres_filtered_genlock(void) +static void lts_aga_fm2_dpf1_p4_ishres_dshres_spr_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm2_n1_p8_ishres_dshres_genlock(void) +static void lts_aga_fm2_ehb0_p4_ishres_dshres_spr_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -30022,111 +49919,114 @@ 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; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); - } - last_bpl_pix = pix0; - } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e_64(); } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } } - loaded_pix = getbpl8_64(); - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u8 gpix1 = 0xff; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { gpix1 = get_genlock_transparency_border(); dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; - gpix1 = get_genlock_transparency(pix1 ^ bplcon4_denise_xor_val); - } - last_bpl_pix = pix1; - } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e_64(); } - if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } } - loaded_pix = getbpl8_64(); - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u8 gpix2 = 0xff; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { gpix2 = get_genlock_transparency_border(); dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; - gpix2 = get_genlock_transparency(pix2 ^ bplcon4_denise_xor_val); - } - last_bpl_pix = pix2; - } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e_64(); } - if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } } - loaded_pix = getbpl8_64(); - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u8 gpix3 = 0xff; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { gpix3 = get_genlock_transparency_border(); dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; - gpix3 = get_genlock_transparency(pix3 ^ bplcon4_denise_xor_val); - } - last_bpl_pix = pix3; - } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e_64(); } - if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } } - loaded_pix = getbpl8_64(); - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + gpix1 = get_genlock_transparency(spix1); + + } + } dtbuf[h][1] = dpix_val1; dtgbuf[h][1] = gpix1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } dtbuf[h][2] = dpix_val2; dtgbuf[h][2] = gpix2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + gpix3 = get_genlock_transparency(spix3); + + } + } dtbuf[h][3] = dpix_val3; dtgbuf[h][3] = gpix3; uae_u32 t0 = dtbuf[h ^ lol][0]; @@ -30188,11 +50088,11 @@ static void lts_aga_fm2_n1_p8_ishres_dshres_genlock(void) denise_cck++; } } -static void lts_aga_fm2_n1_p8_ishres_dshres_filtered_genlock(void) +static void lts_aga_fm2_ehb0_p4_ishres_dshres_spr_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm2_dpf0_p8_ishres_dshres_genlock(void) +static void lts_aga_fm2_ehb1_p4_ishres_dshres_spr_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -30203,119 +50103,114 @@ 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; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - gpix0 = get_genlock_transparency(dpf_lookup[pix0]); - } - last_bpl_pix = pix0; } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } } - loaded_pix = getbpl8_64(); - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; - uae_u8 pix1 = 0; - uae_u8 gpix1 = 0xff; - uae_u32 dpix_val1 = BLANK_COLOR; - if (!denise_blank_active) { - gpix1 = get_genlock_transparency_border(); - dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - if (dpf_lookup_no[pix1]) { - val1 += dblpfofs[bpldualpf2of]; - } - val1 ^= bplcon4_denise_xor_val; - dpix_val1 = denise_colors.acolors[val1]; - gpix1 = get_genlock_transparency(dpf_lookup[pix1]); - } - last_bpl_pix = pix1; + matchsprites_aga(cnt + 1); + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } } - loaded_pix = getbpl8_64(); - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u8 gpix2 = 0xff; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { gpix2 = get_genlock_transparency_border(); dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; - gpix2 = get_genlock_transparency(dpf_lookup[pix2]); - } - last_bpl_pix = pix2; } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } } - loaded_pix = getbpl8_64(); - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u8 gpix3 = 0xff; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { gpix3 = get_genlock_transparency_border(); dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - uae_u8 val3 = dpf_lookup[pix3]; - if (dpf_lookup_no[pix3]) { - val3 += dblpfofs[bpldualpf2of]; - } - val3 ^= bplcon4_denise_xor_val; - dpix_val3 = denise_colors.acolors[val3]; - gpix3 = get_genlock_transparency(dpf_lookup[pix3]); - } - last_bpl_pix = pix3; } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } } - loaded_pix = getbpl8_64(); - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + gpix1 = get_genlock_transparency(spix1); + + } + } dtbuf[h][1] = dpix_val1; dtgbuf[h][1] = gpix1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } dtbuf[h][2] = dpix_val2; dtgbuf[h][2] = gpix2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + gpix3 = get_genlock_transparency(spix3); + + } + } dtbuf[h][3] = dpix_val3; dtgbuf[h][3] = gpix3; uae_u32 t0 = dtbuf[h ^ lol][0]; @@ -30377,11 +50272,11 @@ static void lts_aga_fm2_dpf0_p8_ishres_dshres_genlock(void) denise_cck++; } } -static void lts_aga_fm2_dpf0_p8_ishres_dshres_filtered_genlock(void) +static void lts_aga_fm2_ehb1_p4_ishres_dshres_spr_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm2_dpf1_p8_ishres_dshres_genlock(void) +static void lts_aga_fm2_ham0_p4_ishres_dshres_spr_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -30392,131 +50287,114 @@ 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; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - gpix0 = get_genlock_transparency(dpf_lookup[pix0]); - } - last_bpl_pix = pix0; - } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e_64(); } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } } - loaded_pix = getbpl8_64(); - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u8 gpix1 = 0xff; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { gpix1 = get_genlock_transparency_border(); dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - if (dpf_lookup_no[pix1]) { - val1 += dblpfofs[bpldualpf2of]; - } - val1 ^= bplcon4_denise_xor_val; - dpix_val1 = denise_colors.acolors[val1]; - gpix1 = get_genlock_transparency(dpf_lookup[pix1]); - } - last_bpl_pix = pix1; - } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e_64(); } - if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } } - loaded_pix = getbpl8_64(); - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u8 gpix2 = 0xff; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { gpix2 = get_genlock_transparency_border(); dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; - gpix2 = get_genlock_transparency(dpf_lookup[pix2]); - } - last_bpl_pix = pix2; - } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e_64(); } - if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } } - loaded_pix = getbpl8_64(); - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u8 gpix3 = 0xff; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { gpix3 = get_genlock_transparency_border(); dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - uae_u8 val3 = dpf_lookup[pix3]; - if (dpf_lookup_no[pix3]) { - val3 += dblpfofs[bpldualpf2of]; - } - val3 ^= bplcon4_denise_xor_val; - dpix_val3 = denise_colors.acolors[val3]; - gpix3 = get_genlock_transparency(dpf_lookup[pix3]); - } - last_bpl_pix = pix3; - } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e_64(); } - if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } } - loaded_pix = getbpl8_64(); - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + gpix1 = get_genlock_transparency(spix1); + + } + } dtbuf[h][1] = dpix_val1; dtgbuf[h][1] = gpix1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } dtbuf[h][2] = dpix_val2; dtgbuf[h][2] = gpix2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + gpix3 = get_genlock_transparency(spix3); + + } + } dtbuf[h][3] = dpix_val3; dtgbuf[h][3] = gpix3; uae_u32 t0 = dtbuf[h ^ lol][0]; @@ -30578,27 +50456,11 @@ static void lts_aga_fm2_dpf1_p8_ishres_dshres_genlock(void) denise_cck++; } } -static void lts_aga_fm2_dpf1_p8_ishres_dshres_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb0_p8_ishres_dshres_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb0_p8_ishres_dshres_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb1_p8_ishres_dshres_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb1_p8_ishres_dshres_filtered_genlock(void) +static void lts_aga_fm2_ham0_p4_ishres_dshres_spr_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm2_ham0_p8_ishres_dshres_genlock(void) +static void lts_aga_fm2_ham1_p4_ishres_dshres_spr_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -30609,99 +50471,114 @@ 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; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = decode_ham_pixel_aga(pix0); - gpix0 = get_genlock_transparency((pix0 >> 2) & 63); - } - last_bpl_pix = pix0; } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } } - loaded_pix = getbpl8_64(); - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u8 gpix1 = 0xff; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { gpix1 = get_genlock_transparency_border(); dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - dpix_val1 = decode_ham_pixel_aga(pix1); - gpix1 = get_genlock_transparency((pix1 >> 2) & 63); - } - last_bpl_pix = pix1; } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } } - loaded_pix = getbpl8_64(); - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u8 gpix2 = 0xff; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { gpix2 = get_genlock_transparency_border(); dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = decode_ham_pixel_aga(pix2); - gpix2 = get_genlock_transparency((pix2 >> 2) & 63); - } - last_bpl_pix = pix2; } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } } - loaded_pix = getbpl8_64(); - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u8 gpix3 = 0xff; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { gpix3 = get_genlock_transparency_border(); dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - dpix_val3 = decode_ham_pixel_aga(pix3); - gpix3 = get_genlock_transparency((pix3 >> 2) & 63); - } - last_bpl_pix = pix3; } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } } - loaded_pix = getbpl8_64(); - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + gpix1 = get_genlock_transparency(spix1); + + } + } dtbuf[h][1] = dpix_val1; dtgbuf[h][1] = gpix1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } dtbuf[h][2] = dpix_val2; dtgbuf[h][2] = gpix2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + gpix3 = get_genlock_transparency(spix3); + + } + } dtbuf[h][3] = dpix_val3; dtgbuf[h][3] = gpix3; uae_u32 t0 = dtbuf[h ^ lol][0]; @@ -30763,11 +50640,11 @@ static void lts_aga_fm2_ham0_p8_ishres_dshres_genlock(void) denise_cck++; } } -static void lts_aga_fm2_ham0_p8_ishres_dshres_filtered_genlock(void) +static void lts_aga_fm2_ham1_p4_ishres_dshres_spr_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm2_ham1_p8_ishres_dshres_genlock(void) +static void lts_aga_fm2_kehb0_p4_ishres_dshres_spr_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -30778,111 +50655,114 @@ 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; + matchsprites_aga(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = decode_ham_pixel_aga(pix0); - gpix0 = get_genlock_transparency((pix0 >> 2) & 63); - } - last_bpl_pix = pix0; - } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e_64(); } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } } - loaded_pix = getbpl8_64(); - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; uae_u8 gpix1 = 0xff; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { gpix1 = get_genlock_transparency_border(); dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - dpix_val1 = decode_ham_pixel_aga(pix1); - gpix1 = get_genlock_transparency((pix1 >> 2) & 63); - } - last_bpl_pix = pix1; - } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e_64(); } - if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } } - loaded_pix = getbpl8_64(); - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; uae_u8 gpix2 = 0xff; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { gpix2 = get_genlock_transparency_border(); dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = decode_ham_pixel_aga(pix2); - gpix2 = get_genlock_transparency((pix2 >> 2) & 63); - } - last_bpl_pix = pix2; - } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e_64(); } - if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } } - loaded_pix = getbpl8_64(); - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; uae_u8 gpix3 = 0xff; uae_u32 dpix_val3 = BLANK_COLOR; if (!denise_blank_active) { gpix3 = get_genlock_transparency_border(); dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - dpix_val3 = decode_ham_pixel_aga(pix3); - gpix3 = get_genlock_transparency((pix3 >> 2) & 63); - } - last_bpl_pix = pix3; - } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e_64(); } - if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } } - loaded_pix = getbpl8_64(); - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + gpix1 = get_genlock_transparency(spix1); + + } + } dtbuf[h][1] = dpix_val1; dtgbuf[h][1] = gpix1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } dtbuf[h][2] = dpix_val2; dtgbuf[h][2] = gpix2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + gpix3 = get_genlock_transparency(spix3); + + } + } dtbuf[h][3] = dpix_val3; dtgbuf[h][3] = gpix3; uae_u32 t0 = dtbuf[h ^ lol][0]; @@ -30944,27 +50824,11 @@ static void lts_aga_fm2_ham1_p8_ishres_dshres_genlock(void) denise_cck++; } } -static void lts_aga_fm2_ham1_p8_ishres_dshres_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb0_p8_ishres_dshres_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb0_p8_ishres_dshres_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb1_p8_ishres_dshres_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb1_p8_ishres_dshres_filtered_genlock(void) +static void lts_aga_fm2_kehb0_p4_ishres_dshres_spr_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm2_n0_p4_ishres_dshres_spr_genlock(void) +static void lts_aga_fm2_kehb1_p4_ishres_dshres_spr_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -30975,7 +50839,6 @@ 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; @@ -30984,19 +50847,7 @@ static void lts_aga_fm2_n0_p4_ishres_dshres_spr_genlock(void) if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); - } - last_bpl_pix = pix0; - } - shiftbpl4_64(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4_64(); } - loaded_pix = getbpl4_64(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -31005,7 +50856,6 @@ static void lts_aga_fm2_n0_p4_ishres_dshres_spr_genlock(void) sv0 = svt; } } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; @@ -31014,19 +50864,7 @@ static void lts_aga_fm2_n0_p4_ishres_dshres_spr_genlock(void) if (!denise_blank_active) { gpix1 = get_genlock_transparency_border(); dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; - gpix1 = get_genlock_transparency(pix1 ^ bplcon4_denise_xor_val); - } - last_bpl_pix = pix1; - } - shiftbpl4_64(); - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4_64(); } - loaded_pix = getbpl4_64(); uae_u32 sv1 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -31035,7 +50873,6 @@ static void lts_aga_fm2_n0_p4_ishres_dshres_spr_genlock(void) sv1 = svt; } } - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; @@ -31044,19 +50881,7 @@ static void lts_aga_fm2_n0_p4_ishres_dshres_spr_genlock(void) if (!denise_blank_active) { gpix2 = get_genlock_transparency_border(); dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; - gpix2 = get_genlock_transparency(pix2 ^ bplcon4_denise_xor_val); - } - last_bpl_pix = pix2; } - shiftbpl4_64(); - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4_64(); - } - loaded_pix = getbpl4_64(); uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -31065,7 +50890,6 @@ static void lts_aga_fm2_n0_p4_ishres_dshres_spr_genlock(void) sv2 = svt; } } - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; @@ -31074,19 +50898,7 @@ static void lts_aga_fm2_n0_p4_ishres_dshres_spr_genlock(void) if (!denise_blank_active) { gpix3 = get_genlock_transparency_border(); dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; - gpix3 = get_genlock_transparency(pix3 ^ bplcon4_denise_xor_val); - } - last_bpl_pix = pix3; - } - shiftbpl4_64(); - if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4_64(); } - loaded_pix = getbpl4_64(); uae_u32 sv3 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -31095,7 +50907,6 @@ static void lts_aga_fm2_n0_p4_ishres_dshres_spr_genlock(void) sv3 = svt; } } - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { @@ -31197,11 +51008,11 @@ static void lts_aga_fm2_n0_p4_ishres_dshres_spr_genlock(void) denise_cck++; } } -static void lts_aga_fm2_n0_p4_ishres_dshres_spr_filtered_genlock(void) +static void lts_aga_fm2_kehb1_p4_ishres_dshres_spr_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm2_n1_p4_ishres_dshres_spr_genlock(void) +static void lts_aga_fm2_n0_p8_ishres_dshres_spr_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -31229,14 +51040,11 @@ static void lts_aga_fm2_n1_p4_ishres_dshres_spr_genlock(void) } last_bpl_pix = pix0; } - shiftbpl4_64(); + shiftbpl8_64(); if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4e_64(); - } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl4o_64(); + copybpl8_64(); } - loaded_pix = getbpl4_64(); + loaded_pix = getbpl8_64(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -31262,14 +51070,11 @@ static void lts_aga_fm2_n1_p4_ishres_dshres_spr_genlock(void) } last_bpl_pix = pix1; } - shiftbpl4_64(); + shiftbpl8_64(); if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4e_64(); - } - if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { - copybpl4o_64(); + copybpl8_64(); } - loaded_pix = getbpl4_64(); + loaded_pix = getbpl8_64(); uae_u32 sv1 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -31295,14 +51100,11 @@ static void lts_aga_fm2_n1_p4_ishres_dshres_spr_genlock(void) } last_bpl_pix = pix2; } - shiftbpl4_64(); + shiftbpl8_64(); if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4e_64(); - } - if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { - copybpl4o_64(); + copybpl8_64(); } - loaded_pix = getbpl4_64(); + loaded_pix = getbpl8_64(); uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -31328,14 +51130,11 @@ static void lts_aga_fm2_n1_p4_ishres_dshres_spr_genlock(void) } last_bpl_pix = pix3; } - shiftbpl4_64(); + shiftbpl8_64(); if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4e_64(); - } - if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) { - copybpl4o_64(); + copybpl8_64(); } - loaded_pix = getbpl4_64(); + loaded_pix = getbpl8_64(); uae_u32 sv3 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -31446,11 +51245,11 @@ static void lts_aga_fm2_n1_p4_ishres_dshres_spr_genlock(void) denise_cck++; } } -static void lts_aga_fm2_n1_p4_ishres_dshres_spr_filtered_genlock(void) +static void lts_aga_fm2_n0_p8_ishres_dshres_spr_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm2_dpf0_p4_ishres_dshres_spr_genlock(void) +static void lts_aga_fm2_n1_p8_ishres_dshres_spr_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -31473,21 +51272,19 @@ static void lts_aga_fm2_dpf0_p4_ishres_dshres_spr_genlock(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - gpix0 = get_genlock_transparency(dpf_lookup[pix0]); + dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; + gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); } last_bpl_pix = pix0; } - shiftbpl4_64(); + shiftbpl8_64(); if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4_64(); + copybpl8e_64(); } - loaded_pix = getbpl4_64(); + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o_64(); + } + loaded_pix = getbpl8_64(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -31508,21 +51305,19 @@ static void lts_aga_fm2_dpf0_p4_ishres_dshres_spr_genlock(void) if (denise_hdiw && bpl1dat_trigger) { pix1 = loaded_pixs[1]; clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - if (dpf_lookup_no[pix1]) { - val1 += dblpfofs[bpldualpf2of]; - } - val1 ^= bplcon4_denise_xor_val; - dpix_val1 = denise_colors.acolors[val1]; - gpix1 = get_genlock_transparency(dpf_lookup[pix1]); + dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; + gpix1 = get_genlock_transparency(pix1 ^ bplcon4_denise_xor_val); } last_bpl_pix = pix1; } - shiftbpl4_64(); + shiftbpl8_64(); if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4_64(); + copybpl8e_64(); } - loaded_pix = getbpl4_64(); + if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o_64(); + } + loaded_pix = getbpl8_64(); uae_u32 sv1 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -31543,21 +51338,19 @@ static void lts_aga_fm2_dpf0_p4_ishres_dshres_spr_genlock(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; - gpix2 = get_genlock_transparency(dpf_lookup[pix2]); + dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; + gpix2 = get_genlock_transparency(pix2 ^ bplcon4_denise_xor_val); } last_bpl_pix = pix2; } - shiftbpl4_64(); + shiftbpl8_64(); if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4_64(); + copybpl8e_64(); } - loaded_pix = getbpl4_64(); + if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o_64(); + } + loaded_pix = getbpl8_64(); uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -31578,21 +51371,19 @@ static void lts_aga_fm2_dpf0_p4_ishres_dshres_spr_genlock(void) if (denise_hdiw && bpl1dat_trigger) { pix3 = loaded_pixs[3]; clxdat |= bplcoltable[pix3]; - uae_u8 val3 = dpf_lookup[pix3]; - if (dpf_lookup_no[pix3]) { - val3 += dblpfofs[bpldualpf2of]; - } - val3 ^= bplcon4_denise_xor_val; - dpix_val3 = denise_colors.acolors[val3]; - gpix3 = get_genlock_transparency(dpf_lookup[pix3]); + dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; + gpix3 = get_genlock_transparency(pix3 ^ bplcon4_denise_xor_val); } last_bpl_pix = pix3; } - shiftbpl4_64(); + shiftbpl8_64(); if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4_64(); + copybpl8e_64(); } - loaded_pix = getbpl4_64(); + if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o_64(); + } + loaded_pix = getbpl8_64(); uae_u32 sv3 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -31703,11 +51494,11 @@ static void lts_aga_fm2_dpf0_p4_ishres_dshres_spr_genlock(void) denise_cck++; } } -static void lts_aga_fm2_dpf0_p4_ishres_dshres_spr_filtered_genlock(void) +static void lts_aga_fm2_n1_p8_ishres_dshres_spr_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm2_dpf1_p4_ishres_dshres_spr_genlock(void) +static void lts_aga_fm2_dpf0_p8_ishres_dshres_spr_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -31740,14 +51531,11 @@ static void lts_aga_fm2_dpf1_p4_ishres_dshres_spr_genlock(void) } last_bpl_pix = pix0; } - shiftbpl4_64(); + shiftbpl8_64(); if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4e_64(); - } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl4o_64(); + copybpl8_64(); } - loaded_pix = getbpl4_64(); + loaded_pix = getbpl8_64(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -31778,14 +51566,11 @@ static void lts_aga_fm2_dpf1_p4_ishres_dshres_spr_genlock(void) } last_bpl_pix = pix1; } - shiftbpl4_64(); + shiftbpl8_64(); if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4e_64(); - } - if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { - copybpl4o_64(); + copybpl8_64(); } - loaded_pix = getbpl4_64(); + loaded_pix = getbpl8_64(); uae_u32 sv1 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -31816,14 +51601,11 @@ static void lts_aga_fm2_dpf1_p4_ishres_dshres_spr_genlock(void) } last_bpl_pix = pix2; } - shiftbpl4_64(); + shiftbpl8_64(); if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4e_64(); - } - if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { - copybpl4o_64(); + copybpl8_64(); } - loaded_pix = getbpl4_64(); + loaded_pix = getbpl8_64(); uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -31854,14 +51636,11 @@ static void lts_aga_fm2_dpf1_p4_ishres_dshres_spr_genlock(void) } last_bpl_pix = pix3; } - shiftbpl4_64(); + shiftbpl8_64(); if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { - copybpl4e_64(); - } - if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) { - copybpl4o_64(); + copybpl8_64(); } - loaded_pix = getbpl4_64(); + loaded_pix = getbpl8_64(); uae_u32 sv3 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -31972,59 +51751,11 @@ static void lts_aga_fm2_dpf1_p4_ishres_dshres_spr_genlock(void) denise_cck++; } } -static void lts_aga_fm2_dpf1_p4_ishres_dshres_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb0_p4_ishres_dshres_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb0_p4_ishres_dshres_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb1_p4_ishres_dshres_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb1_p4_ishres_dshres_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_ham0_p4_ishres_dshres_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_ham0_p4_ishres_dshres_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_ham1_p4_ishres_dshres_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_ham1_p4_ishres_dshres_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb0_p4_ishres_dshres_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb0_p4_ishres_dshres_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb1_p4_ishres_dshres_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb1_p4_ishres_dshres_spr_filtered_genlock(void) +static void lts_aga_fm2_dpf0_p8_ishres_dshres_spr_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm2_n0_p8_ishres_dshres_spr_genlock(void) +static void lts_aga_fm2_dpf1_p8_ishres_dshres_spr_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -32047,14 +51778,22 @@ static void lts_aga_fm2_n0_p8_ishres_dshres_spr_genlock(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); + uae_u8 val0 = dpf_lookup[pix0]; + if (dpf_lookup_no[pix0]) { + val0 += dblpfofs[bpldualpf2of]; + } + val0 ^= bplcon4_denise_xor_val; + dpix_val0 = denise_colors.acolors[val0]; + gpix0 = get_genlock_transparency(dpf_lookup[pix0]); } last_bpl_pix = pix0; } shiftbpl8_64(); if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); + copybpl8e_64(); + } + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o_64(); } loaded_pix = getbpl8_64(); uae_u32 sv0 = 0; @@ -32077,14 +51816,22 @@ static void lts_aga_fm2_n0_p8_ishres_dshres_spr_genlock(void) if (denise_hdiw && bpl1dat_trigger) { pix1 = loaded_pixs[1]; clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; - gpix1 = get_genlock_transparency(pix1 ^ bplcon4_denise_xor_val); + uae_u8 val1 = dpf_lookup[pix1]; + if (dpf_lookup_no[pix1]) { + val1 += dblpfofs[bpldualpf2of]; + } + val1 ^= bplcon4_denise_xor_val; + dpix_val1 = denise_colors.acolors[val1]; + gpix1 = get_genlock_transparency(dpf_lookup[pix1]); } last_bpl_pix = pix1; } shiftbpl8_64(); if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); + copybpl8e_64(); + } + if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o_64(); } loaded_pix = getbpl8_64(); uae_u32 sv1 = 0; @@ -32107,14 +51854,22 @@ static void lts_aga_fm2_n0_p8_ishres_dshres_spr_genlock(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; - gpix2 = get_genlock_transparency(pix2 ^ bplcon4_denise_xor_val); + uae_u8 val2 = dpf_lookup[pix2]; + if (dpf_lookup_no[pix2]) { + val2 += dblpfofs[bpldualpf2of]; + } + val2 ^= bplcon4_denise_xor_val; + dpix_val2 = denise_colors.acolors[val2]; + gpix2 = get_genlock_transparency(dpf_lookup[pix2]); } last_bpl_pix = pix2; } shiftbpl8_64(); if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); + copybpl8e_64(); + } + if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o_64(); } loaded_pix = getbpl8_64(); uae_u32 sv2 = 0; @@ -32137,14 +51892,22 @@ static void lts_aga_fm2_n0_p8_ishres_dshres_spr_genlock(void) if (denise_hdiw && bpl1dat_trigger) { pix3 = loaded_pixs[3]; clxdat |= bplcoltable[pix3]; - dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; - gpix3 = get_genlock_transparency(pix3 ^ bplcon4_denise_xor_val); + uae_u8 val3 = dpf_lookup[pix3]; + if (dpf_lookup_no[pix3]) { + val3 += dblpfofs[bpldualpf2of]; + } + val3 ^= bplcon4_denise_xor_val; + dpix_val3 = denise_colors.acolors[val3]; + gpix3 = get_genlock_transparency(dpf_lookup[pix3]); } last_bpl_pix = pix3; } shiftbpl8_64(); if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); + copybpl8e_64(); + } + if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o_64(); } loaded_pix = getbpl8_64(); uae_u32 sv3 = 0; @@ -32257,11 +52020,11 @@ static void lts_aga_fm2_n0_p8_ishres_dshres_spr_genlock(void) denise_cck++; } } -static void lts_aga_fm2_n0_p8_ishres_dshres_spr_filtered_genlock(void) +static void lts_aga_fm2_dpf1_p8_ishres_dshres_spr_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm2_n1_p8_ishres_dshres_spr_genlock(void) +static void lts_aga_fm2_ehb0_p8_ishres_dshres_spr_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -32272,7 +52035,6 @@ 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; @@ -32281,22 +52043,7 @@ static void lts_aga_fm2_n1_p8_ishres_dshres_spr_genlock(void) if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0 ^ bplcon4_denise_xor_val]; - gpix0 = get_genlock_transparency(pix0 ^ bplcon4_denise_xor_val); - } - last_bpl_pix = pix0; - } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e_64(); - } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); } - loaded_pix = getbpl8_64(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -32305,7 +52052,6 @@ static void lts_aga_fm2_n1_p8_ishres_dshres_spr_genlock(void) sv0 = svt; } } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; @@ -32314,22 +52060,7 @@ static void lts_aga_fm2_n1_p8_ishres_dshres_spr_genlock(void) if (!denise_blank_active) { gpix1 = get_genlock_transparency_border(); dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1 ^ bplcon4_denise_xor_val]; - gpix1 = get_genlock_transparency(pix1 ^ bplcon4_denise_xor_val); - } - last_bpl_pix = pix1; - } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e_64(); - } - if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); } - loaded_pix = getbpl8_64(); uae_u32 sv1 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -32338,7 +52069,6 @@ static void lts_aga_fm2_n1_p8_ishres_dshres_spr_genlock(void) sv1 = svt; } } - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; @@ -32347,22 +52077,7 @@ static void lts_aga_fm2_n1_p8_ishres_dshres_spr_genlock(void) if (!denise_blank_active) { gpix2 = get_genlock_transparency_border(); dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2 ^ bplcon4_denise_xor_val]; - gpix2 = get_genlock_transparency(pix2 ^ bplcon4_denise_xor_val); - } - last_bpl_pix = pix2; - } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e_64(); - } - if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); } - loaded_pix = getbpl8_64(); uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -32371,7 +52086,6 @@ static void lts_aga_fm2_n1_p8_ishres_dshres_spr_genlock(void) sv2 = svt; } } - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; @@ -32380,22 +52094,7 @@ static void lts_aga_fm2_n1_p8_ishres_dshres_spr_genlock(void) if (!denise_blank_active) { gpix3 = get_genlock_transparency_border(); dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - dpix_val3 = denise_colors.acolors[pix3 ^ bplcon4_denise_xor_val]; - gpix3 = get_genlock_transparency(pix3 ^ bplcon4_denise_xor_val); - } - last_bpl_pix = pix3; - } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e_64(); - } - if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); } - loaded_pix = getbpl8_64(); uae_u32 sv3 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -32404,7 +52103,6 @@ static void lts_aga_fm2_n1_p8_ishres_dshres_spr_genlock(void) sv3 = svt; } } - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { @@ -32506,11 +52204,11 @@ static void lts_aga_fm2_n1_p8_ishres_dshres_spr_genlock(void) denise_cck++; } } -static void lts_aga_fm2_n1_p8_ishres_dshres_spr_filtered_genlock(void) +static void lts_aga_fm2_ehb0_p8_ishres_dshres_spr_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm2_dpf0_p8_ishres_dshres_spr_genlock(void) +static void lts_aga_fm2_ehb1_p8_ishres_dshres_spr_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -32521,7 +52219,6 @@ 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; @@ -32530,24 +52227,7 @@ static void lts_aga_fm2_dpf0_p8_ishres_dshres_spr_genlock(void) if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - gpix0 = get_genlock_transparency(dpf_lookup[pix0]); - } - last_bpl_pix = pix0; - } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); } - loaded_pix = getbpl8_64(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -32556,7 +52236,6 @@ static void lts_aga_fm2_dpf0_p8_ishres_dshres_spr_genlock(void) sv0 = svt; } } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; @@ -32565,24 +52244,7 @@ static void lts_aga_fm2_dpf0_p8_ishres_dshres_spr_genlock(void) if (!denise_blank_active) { gpix1 = get_genlock_transparency_border(); dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - if (dpf_lookup_no[pix1]) { - val1 += dblpfofs[bpldualpf2of]; - } - val1 ^= bplcon4_denise_xor_val; - dpix_val1 = denise_colors.acolors[val1]; - gpix1 = get_genlock_transparency(dpf_lookup[pix1]); - } - last_bpl_pix = pix1; - } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); } - loaded_pix = getbpl8_64(); uae_u32 sv1 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -32591,7 +52253,6 @@ static void lts_aga_fm2_dpf0_p8_ishres_dshres_spr_genlock(void) sv1 = svt; } } - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; @@ -32600,24 +52261,7 @@ static void lts_aga_fm2_dpf0_p8_ishres_dshres_spr_genlock(void) if (!denise_blank_active) { gpix2 = get_genlock_transparency_border(); dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; - gpix2 = get_genlock_transparency(dpf_lookup[pix2]); - } - last_bpl_pix = pix2; } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); - } - loaded_pix = getbpl8_64(); uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -32626,7 +52270,6 @@ static void lts_aga_fm2_dpf0_p8_ishres_dshres_spr_genlock(void) sv2 = svt; } } - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; @@ -32635,24 +52278,7 @@ static void lts_aga_fm2_dpf0_p8_ishres_dshres_spr_genlock(void) if (!denise_blank_active) { gpix3 = get_genlock_transparency_border(); dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - uae_u8 val3 = dpf_lookup[pix3]; - if (dpf_lookup_no[pix3]) { - val3 += dblpfofs[bpldualpf2of]; - } - val3 ^= bplcon4_denise_xor_val; - dpix_val3 = denise_colors.acolors[val3]; - gpix3 = get_genlock_transparency(dpf_lookup[pix3]); - } - last_bpl_pix = pix3; } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); - } - loaded_pix = getbpl8_64(); uae_u32 sv3 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -32661,7 +52287,6 @@ static void lts_aga_fm2_dpf0_p8_ishres_dshres_spr_genlock(void) sv3 = svt; } } - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { @@ -32763,11 +52388,11 @@ static void lts_aga_fm2_dpf0_p8_ishres_dshres_spr_genlock(void) denise_cck++; } } -static void lts_aga_fm2_dpf0_p8_ishres_dshres_spr_filtered_genlock(void) +static void lts_aga_fm2_ehb1_p8_ishres_dshres_spr_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm2_dpf1_p8_ishres_dshres_spr_genlock(void) +static void lts_aga_fm2_ham0_p8_ishres_dshres_spr_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -32790,22 +52415,14 @@ static void lts_aga_fm2_dpf1_p8_ishres_dshres_spr_genlock(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = loaded_pixs[0]; clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - if (dpf_lookup_no[pix0]) { - val0 += dblpfofs[bpldualpf2of]; - } - val0 ^= bplcon4_denise_xor_val; - dpix_val0 = denise_colors.acolors[val0]; - gpix0 = get_genlock_transparency(dpf_lookup[pix0]); + dpix_val0 = decode_ham_pixel_aga(pix0); + gpix0 = get_genlock_transparency((pix0 >> 2) & 63); } last_bpl_pix = pix0; } shiftbpl8_64(); if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e_64(); - } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); + copybpl8_64(); } loaded_pix = getbpl8_64(); uae_u32 sv0 = 0; @@ -32828,22 +52445,14 @@ static void lts_aga_fm2_dpf1_p8_ishres_dshres_spr_genlock(void) if (denise_hdiw && bpl1dat_trigger) { pix1 = loaded_pixs[1]; clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - if (dpf_lookup_no[pix1]) { - val1 += dblpfofs[bpldualpf2of]; - } - val1 ^= bplcon4_denise_xor_val; - dpix_val1 = denise_colors.acolors[val1]; - gpix1 = get_genlock_transparency(dpf_lookup[pix1]); + dpix_val1 = decode_ham_pixel_aga(pix1); + gpix1 = get_genlock_transparency((pix1 >> 2) & 63); } last_bpl_pix = pix1; } shiftbpl8_64(); if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e_64(); - } - if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); + copybpl8_64(); } loaded_pix = getbpl8_64(); uae_u32 sv1 = 0; @@ -32866,22 +52475,14 @@ static void lts_aga_fm2_dpf1_p8_ishres_dshres_spr_genlock(void) if (denise_hdiw && bpl1dat_trigger) { pix2 = loaded_pixs[2]; clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - if (dpf_lookup_no[pix2]) { - val2 += dblpfofs[bpldualpf2of]; - } - val2 ^= bplcon4_denise_xor_val; - dpix_val2 = denise_colors.acolors[val2]; - gpix2 = get_genlock_transparency(dpf_lookup[pix2]); + dpix_val2 = decode_ham_pixel_aga(pix2); + gpix2 = get_genlock_transparency((pix2 >> 2) & 63); } last_bpl_pix = pix2; } shiftbpl8_64(); if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e_64(); - } - if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); + copybpl8_64(); } loaded_pix = getbpl8_64(); uae_u32 sv2 = 0; @@ -32904,22 +52505,14 @@ static void lts_aga_fm2_dpf1_p8_ishres_dshres_spr_genlock(void) if (denise_hdiw && bpl1dat_trigger) { pix3 = loaded_pixs[3]; clxdat |= bplcoltable[pix3]; - uae_u8 val3 = dpf_lookup[pix3]; - if (dpf_lookup_no[pix3]) { - val3 += dblpfofs[bpldualpf2of]; - } - val3 ^= bplcon4_denise_xor_val; - dpix_val3 = denise_colors.acolors[val3]; - gpix3 = get_genlock_transparency(dpf_lookup[pix3]); + dpix_val3 = decode_ham_pixel_aga(pix3); + gpix3 = get_genlock_transparency((pix3 >> 2) & 63); } last_bpl_pix = pix3; } shiftbpl8_64(); if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e_64(); - } - if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); + copybpl8_64(); } loaded_pix = getbpl8_64(); uae_u32 sv3 = 0; @@ -33032,27 +52625,11 @@ static void lts_aga_fm2_dpf1_p8_ishres_dshres_spr_genlock(void) denise_cck++; } } -static void lts_aga_fm2_dpf1_p8_ishres_dshres_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb0_p8_ishres_dshres_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb0_p8_ishres_dshres_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb1_p8_ishres_dshres_spr_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_ehb1_p8_ishres_dshres_spr_filtered_genlock(void) +static void lts_aga_fm2_ham0_p8_ishres_dshres_spr_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm2_ham0_p8_ishres_dshres_spr_genlock(void) +static void lts_aga_fm2_ham1_p8_ishres_dshres_spr_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -33082,7 +52659,10 @@ static void lts_aga_fm2_ham0_p8_ishres_dshres_spr_genlock(void) } shiftbpl8_64(); if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); + copybpl8e_64(); + } + if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o_64(); } loaded_pix = getbpl8_64(); uae_u32 sv0 = 0; @@ -33112,7 +52692,10 @@ static void lts_aga_fm2_ham0_p8_ishres_dshres_spr_genlock(void) } shiftbpl8_64(); if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); + copybpl8e_64(); + } + if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o_64(); } loaded_pix = getbpl8_64(); uae_u32 sv1 = 0; @@ -33142,7 +52725,10 @@ static void lts_aga_fm2_ham0_p8_ishres_dshres_spr_genlock(void) } shiftbpl8_64(); if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); + copybpl8e_64(); + } + if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o_64(); } loaded_pix = getbpl8_64(); uae_u32 sv2 = 0; @@ -33172,7 +52758,10 @@ static void lts_aga_fm2_ham0_p8_ishres_dshres_spr_genlock(void) } shiftbpl8_64(); if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8_64(); + copybpl8e_64(); + } + if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) { + copybpl8o_64(); } loaded_pix = getbpl8_64(); uae_u32 sv3 = 0; @@ -33285,11 +52874,11 @@ static void lts_aga_fm2_ham0_p8_ishres_dshres_spr_genlock(void) denise_cck++; } } -static void lts_aga_fm2_ham0_p8_ishres_dshres_spr_filtered_genlock(void) +static void lts_aga_fm2_ham1_p8_ishres_dshres_spr_filtered_genlock(void) { lts_null(); } -static void lts_aga_fm2_ham1_p8_ishres_dshres_spr_genlock(void) +static void lts_aga_fm2_kehb0_p8_ishres_dshres_spr_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -33300,7 +52889,6 @@ 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; @@ -33309,22 +52897,7 @@ static void lts_aga_fm2_ham1_p8_ishres_dshres_spr_genlock(void) if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = loaded_pixs[0]; - clxdat |= bplcoltable[pix0]; - dpix_val0 = decode_ham_pixel_aga(pix0); - gpix0 = get_genlock_transparency((pix0 >> 2) & 63); - } - last_bpl_pix = pix0; - } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e_64(); } - if (bpldat_copy[1] && ((cmp | 0) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); - } - loaded_pix = getbpl8_64(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -33333,7 +52906,6 @@ static void lts_aga_fm2_ham1_p8_ishres_dshres_spr_genlock(void) sv0 = svt; } } - loaded_pixs[0] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 1); uae_u8 pix1 = 0; @@ -33342,22 +52914,7 @@ static void lts_aga_fm2_ham1_p8_ishres_dshres_spr_genlock(void) if (!denise_blank_active) { gpix1 = get_genlock_transparency_border(); dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = loaded_pixs[1]; - clxdat |= bplcoltable[pix1]; - dpix_val1 = decode_ham_pixel_aga(pix1); - gpix1 = get_genlock_transparency((pix1 >> 2) & 63); - } - last_bpl_pix = pix1; - } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e_64(); - } - if (bpldat_copy[1] && ((cmp | 1) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); } - loaded_pix = getbpl8_64(); uae_u32 sv1 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -33366,7 +52923,6 @@ static void lts_aga_fm2_ham1_p8_ishres_dshres_spr_genlock(void) sv1 = svt; } } - loaded_pixs[1] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 2); uae_u8 pix2 = 0; @@ -33375,22 +52931,7 @@ static void lts_aga_fm2_ham1_p8_ishres_dshres_spr_genlock(void) if (!denise_blank_active) { gpix2 = get_genlock_transparency_border(); dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = loaded_pixs[2]; - clxdat |= bplcoltable[pix2]; - dpix_val2 = decode_ham_pixel_aga(pix2); - gpix2 = get_genlock_transparency((pix2 >> 2) & 63); - } - last_bpl_pix = pix2; } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e_64(); - } - if (bpldat_copy[1] && ((cmp | 2) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); - } - loaded_pix = getbpl8_64(); uae_u32 sv2 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -33399,7 +52940,6 @@ static void lts_aga_fm2_ham1_p8_ishres_dshres_spr_genlock(void) sv2 = svt; } } - loaded_pixs[2] = loaded_pix; internal_pixel_cnt += 1; matchsprites_aga(cnt + 3); uae_u8 pix3 = 0; @@ -33408,22 +52948,7 @@ static void lts_aga_fm2_ham1_p8_ishres_dshres_spr_genlock(void) if (!denise_blank_active) { gpix3 = get_genlock_transparency_border(); dpix_val3 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix3 = loaded_pixs[3]; - clxdat |= bplcoltable[pix3]; - dpix_val3 = decode_ham_pixel_aga(pix3); - gpix3 = get_genlock_transparency((pix3 >> 2) & 63); - } - last_bpl_pix = pix3; - } - shiftbpl8_64(); - if (bpldat_copy[0] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[0]) { - copybpl8e_64(); - } - if (bpldat_copy[1] && ((cmp | 3) & 63) == bplcon1_shift_full_masked[1]) { - copybpl8o_64(); } - loaded_pix = getbpl8_64(); uae_u32 sv3 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -33432,7 +52957,6 @@ static void lts_aga_fm2_ham1_p8_ishres_dshres_spr_genlock(void) sv3 = svt; } } - loaded_pixs[3] = loaded_pix; internal_pixel_cnt += 1; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { @@ -33534,21 +53058,189 @@ static void lts_aga_fm2_ham1_p8_ishres_dshres_spr_genlock(void) denise_cck++; } } -static void lts_aga_fm2_ham1_p8_ishres_dshres_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_aga_fm2_kehb0_p8_ishres_dshres_spr_genlock(void) -{ - lts_null(); -} static void lts_aga_fm2_kehb0_p8_ishres_dshres_spr_filtered_genlock(void) { lts_null(); } static void lts_aga_fm2_kehb1_p8_ishres_dshres_spr_genlock(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + int cnt_next = denise_hcounter_next << 2; + if (checkhorizontal1_aga(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites_aga(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 1); + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } + uae_u32 sv1 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv1 = svt; + } + } + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 2); + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } + uae_u32 sv2 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv2 = svt; + } + } + internal_pixel_cnt += 1; + matchsprites_aga(cnt + 3); + uae_u8 pix3 = 0; + uae_u8 gpix3 = 0xff; + uae_u32 dpix_val3 = BLANK_COLOR; + if (!denise_blank_active) { + gpix3 = get_genlock_transparency_border(); + dpix_val3 = bordercolor; + } + uae_u32 sv3 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_aga(denise_spr_add); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv3 = svt; + } + } + internal_pixel_cnt += 1; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + gpix1 = get_genlock_transparency(spix1); + + } + } + dtbuf[h][1] = dpix_val1; + dtgbuf[h][1] = gpix1; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + gpix3 = get_genlock_transparency(spix3); + + } + } + dtbuf[h][3] = dpix_val3; + dtgbuf[h][3] = gpix3; + uae_u32 t0 = dtbuf[h ^ lol][0]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t1 = dtbuf[h ^ lol][1]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = dtgbuf[h ^ lol][1]; + uae_u32 t2 = dtbuf[h ^ lol][2]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + uae_u32 t3 = dtbuf[h ^ lol][3]; + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + *gbuf++ = dtgbuf[h ^ lol][3]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } static void lts_aga_fm2_kehb1_p8_ishres_dshres_spr_filtered_genlock(void) { diff --git a/linetoscr_ecs_shres.cpp b/linetoscr_ecs_shres.cpp index 988a354c..b55633a6 100644 --- a/linetoscr_ecs_shres.cpp +++ b/linetoscr_ecs_shres.cpp @@ -51,7 +51,6 @@ static void lts_ecs_shres_dhires(void) sv0 = svt; } } - matchsprites_ecs_shres(cnt + 0); uae_u32 sv1 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -60,7 +59,6 @@ static void lts_ecs_shres_dhires(void) sv1 = svt; } } - matchsprites_ecs_shres(cnt + 2); if (sv0 || sv1) { get_shres_spr_pix(sv0, sv1, &dpix_val0, &dpix_val2); if (sv0) { @@ -92,9 +90,6 @@ static void lts_ecs_shres_dhires(void) shiftbpl2(); shiftbpl2(); } - if (bpldat_copy[0] && (denise_hcounter_cmp & 3) == bplcon1_shift[0]) { - copybpl2(); - } internal_pixel_cnt += 4; sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -165,7 +160,6 @@ static void lts_ecs_shres_dhires_filtered(void) sv0 = svt; } } - matchsprites_ecs_shres(cnt + 0); uae_u32 sv1 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -174,7 +168,6 @@ static void lts_ecs_shres_dhires_filtered(void) sv1 = svt; } } - matchsprites_ecs_shres(cnt + 2); if (sv0 || sv1) { get_shres_spr_pix(sv0, sv1, &dpix_val0, &dpix_val2); if (sv0) { @@ -208,9 +201,6 @@ static void lts_ecs_shres_dhires_filtered(void) shiftbpl2(); shiftbpl2(); } - if (bpldat_copy[0] && (denise_hcounter_cmp & 3) == bplcon1_shift[0]) { - copybpl2(); - } internal_pixel_cnt += 4; sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -281,7 +271,6 @@ static void lts_ecs_shres_dshres(void) sv0 = svt; } } - matchsprites_ecs_shres(cnt + 0); uae_u32 sv1 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -290,7 +279,6 @@ static void lts_ecs_shres_dshres(void) sv1 = svt; } } - matchsprites_ecs_shres(cnt + 2); if (sv0 || sv1) { get_shres_spr_pix(sv0, sv1, &dpix_val0, &dpix_val2); if (sv0) { @@ -336,9 +324,6 @@ static void lts_ecs_shres_dshres(void) shiftbpl2(); shiftbpl2(); } - if (bpldat_copy[0] && (denise_hcounter_cmp & 3) == bplcon1_shift[0]) { - copybpl2(); - } internal_pixel_cnt += 4; sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -422,7 +407,6 @@ static void lts_ecs_shres_dhires_genlock(void) sv0 = svt; } } - matchsprites_ecs_shres(cnt + 0); uae_u32 sv1 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -431,7 +415,6 @@ static void lts_ecs_shres_dhires_genlock(void) sv1 = svt; } } - matchsprites_ecs_shres(cnt + 2); if (sv0 || sv1) { get_shres_spr_pix(sv0, sv1, &dpix_val0, &dpix_val2); if (sv0) { @@ -465,9 +448,6 @@ static void lts_ecs_shres_dhires_genlock(void) shiftbpl2(); shiftbpl2(); } - if (bpldat_copy[0] && (denise_hcounter_cmp & 3) == bplcon1_shift[0]) { - copybpl2(); - } internal_pixel_cnt += 4; sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -542,7 +522,6 @@ static void lts_ecs_shres_dhires_genlock_filtered(void) sv0 = svt; } } - matchsprites_ecs_shres(cnt + 0); uae_u32 sv1 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -551,7 +530,6 @@ static void lts_ecs_shres_dhires_genlock_filtered(void) sv1 = svt; } } - matchsprites_ecs_shres(cnt + 2); if (sv0 || sv1) { get_shres_spr_pix(sv0, sv1, &dpix_val0, &dpix_val2); if (sv0) { @@ -589,9 +567,6 @@ static void lts_ecs_shres_dhires_genlock_filtered(void) shiftbpl2(); shiftbpl2(); } - if (bpldat_copy[0] && (denise_hcounter_cmp & 3) == bplcon1_shift[0]) { - copybpl2(); - } internal_pixel_cnt += 4; sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -666,7 +641,6 @@ static void lts_ecs_shres_dshres_genlock(void) sv0 = svt; } } - matchsprites_ecs_shres(cnt + 0); uae_u32 sv1 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -675,7 +649,6 @@ static void lts_ecs_shres_dshres_genlock(void) sv1 = svt; } } - matchsprites_ecs_shres(cnt + 2); if (sv0 || sv1) { get_shres_spr_pix(sv0, sv1, &dpix_val0, &dpix_val2); if (sv0) { @@ -725,9 +698,6 @@ static void lts_ecs_shres_dshres_genlock(void) shiftbpl2(); shiftbpl2(); } - if (bpldat_copy[0] && (denise_hcounter_cmp & 3) == bplcon1_shift[0]) { - copybpl2(); - } internal_pixel_cnt += 4; sprites_hidden = sprites_hidden2; #ifdef DEBUGGER diff --git a/linetoscr_ocs_ecs.cpp b/linetoscr_ocs_ecs.cpp index a585e9b1..30c8ca82 100644 --- a/linetoscr_ocs_ecs.cpp +++ b/linetoscr_ocs_ecs.cpp @@ -277,38 +277,6 @@ static void lts_ecs_fm0_dpf1_p2_ilores_dlores_filtered(void) lts_null(); } static void lts_ecs_fm0_ehb0_p2_ilores_dlores(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb0_p2_ilores_dlores_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb1_p2_ilores_dlores(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb1_p2_ilores_dlores_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham0_p2_ilores_dlores(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham0_p2_ilores_dlores_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham1_p2_ilores_dlores(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham1_p2_ilores_dlores_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_n0_p4_ilores_dlores(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -323,14 +291,7 @@ static void lts_ecs_fm0_n0_p4_ilores_dlores(void) uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl4(); - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0]; - } - last_bpl_pix = pix0; } - shiftbpl4(); internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { uae_u32 t0 = 0; @@ -345,9 +306,6 @@ static void lts_ecs_fm0_n0_p4_ilores_dlores(void) *buf1++ = t0; *buf2++ = t0; } - if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl4(); - } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER *debug_dma_dhpos_odd = denise_hcounter; @@ -370,11 +328,11 @@ static void lts_ecs_fm0_n0_p4_ilores_dlores(void) denise_cck++; } } -static void lts_ecs_fm0_n0_p4_ilores_dlores_filtered(void) +static void lts_ecs_fm0_ehb0_p2_ilores_dlores_filtered(void) { lts_null(); } -static void lts_ecs_fm0_n1_p4_ilores_dlores(void) +static void lts_ecs_fm0_ehb1_p2_ilores_dlores(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -389,14 +347,7 @@ static void lts_ecs_fm0_n1_p4_ilores_dlores(void) uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl4(); - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0]; - } - last_bpl_pix = pix0; } - shiftbpl4(); internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { uae_u32 t0 = 0; @@ -411,12 +362,6 @@ static void lts_ecs_fm0_n1_p4_ilores_dlores(void) *buf1++ = t0; *buf2++ = t0; } - if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl4e(); - } - if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) { - copybpl4o(); - } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER *debug_dma_dhpos_odd = denise_hcounter; @@ -439,11 +384,11 @@ static void lts_ecs_fm0_n1_p4_ilores_dlores(void) denise_cck++; } } -static void lts_ecs_fm0_n1_p4_ilores_dlores_filtered(void) +static void lts_ecs_fm0_ehb1_p2_ilores_dlores_filtered(void) { lts_null(); } -static void lts_ecs_fm0_dpf0_p4_ilores_dlores(void) +static void lts_ecs_fm0_ham0_p2_ilores_dlores(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -458,15 +403,7 @@ static void lts_ecs_fm0_dpf0_p4_ilores_dlores(void) uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl4(); - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; } - shiftbpl4(); internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { uae_u32 t0 = 0; @@ -481,9 +418,6 @@ static void lts_ecs_fm0_dpf0_p4_ilores_dlores(void) *buf1++ = t0; *buf2++ = t0; } - if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl4(); - } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER *debug_dma_dhpos_odd = denise_hcounter; @@ -506,11 +440,11 @@ static void lts_ecs_fm0_dpf0_p4_ilores_dlores(void) denise_cck++; } } -static void lts_ecs_fm0_dpf0_p4_ilores_dlores_filtered(void) +static void lts_ecs_fm0_ham0_p2_ilores_dlores_filtered(void) { lts_null(); } -static void lts_ecs_fm0_dpf1_p4_ilores_dlores(void) +static void lts_ecs_fm0_ham1_p2_ilores_dlores(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -525,15 +459,7 @@ static void lts_ecs_fm0_dpf1_p4_ilores_dlores(void) uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl4(); - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; } - shiftbpl4(); internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { uae_u32 t0 = 0; @@ -548,12 +474,6 @@ static void lts_ecs_fm0_dpf1_p4_ilores_dlores(void) *buf1++ = t0; *buf2++ = t0; } - if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl4e(); - } - if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) { - copybpl4o(); - } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER *debug_dma_dhpos_odd = denise_hcounter; @@ -576,43 +496,11 @@ static void lts_ecs_fm0_dpf1_p4_ilores_dlores(void) denise_cck++; } } -static void lts_ecs_fm0_dpf1_p4_ilores_dlores_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb0_p4_ilores_dlores(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb0_p4_ilores_dlores_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb1_p4_ilores_dlores(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb1_p4_ilores_dlores_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham0_p4_ilores_dlores(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham0_p4_ilores_dlores_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham1_p4_ilores_dlores(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham1_p4_ilores_dlores_filtered(void) +static void lts_ecs_fm0_ham1_p2_ilores_dlores_filtered(void) { lts_null(); } -static void lts_ecs_fm0_n0_p5_ilores_dlores(void) +static void lts_ecs_fm0_n0_p4_ilores_dlores(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -628,16 +516,13 @@ static void lts_ecs_fm0_n0_p5_ilores_dlores(void) if (!denise_blank_active) { dpix_val0 = bordercolor; if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl5(); + pix0 = getbpl4(); clxdat |= bplcoltable[pix0]; - if (decode_specials) { - pix0 = decode_denise_specials(pix0); - } dpix_val0 = denise_colors.acolors[pix0]; } last_bpl_pix = pix0; } - shiftbpl5(); + shiftbpl4(); internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { uae_u32 t0 = 0; @@ -653,7 +538,7 @@ static void lts_ecs_fm0_n0_p5_ilores_dlores(void) *buf2++ = t0; } if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl5(); + copybpl4(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -677,11 +562,11 @@ static void lts_ecs_fm0_n0_p5_ilores_dlores(void) denise_cck++; } } -static void lts_ecs_fm0_n0_p5_ilores_dlores_filtered(void) +static void lts_ecs_fm0_n0_p4_ilores_dlores_filtered(void) { lts_null(); } -static void lts_ecs_fm0_n1_p5_ilores_dlores(void) +static void lts_ecs_fm0_n1_p4_ilores_dlores(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -697,16 +582,13 @@ static void lts_ecs_fm0_n1_p5_ilores_dlores(void) if (!denise_blank_active) { dpix_val0 = bordercolor; if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl5(); + pix0 = getbpl4(); clxdat |= bplcoltable[pix0]; - if (decode_specials) { - pix0 = decode_denise_specials(pix0); - } dpix_val0 = denise_colors.acolors[pix0]; } last_bpl_pix = pix0; } - shiftbpl5(); + shiftbpl4(); internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { uae_u32 t0 = 0; @@ -722,10 +604,10 @@ static void lts_ecs_fm0_n1_p5_ilores_dlores(void) *buf2++ = t0; } if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl5e(); + copybpl4e(); } if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) { - copybpl5o(); + copybpl4o(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -749,11 +631,11 @@ static void lts_ecs_fm0_n1_p5_ilores_dlores(void) denise_cck++; } } -static void lts_ecs_fm0_n1_p5_ilores_dlores_filtered(void) +static void lts_ecs_fm0_n1_p4_ilores_dlores_filtered(void) { lts_null(); } -static void lts_ecs_fm0_dpf0_p5_ilores_dlores(void) +static void lts_ecs_fm0_dpf0_p4_ilores_dlores(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -769,17 +651,14 @@ static void lts_ecs_fm0_dpf0_p5_ilores_dlores(void) if (!denise_blank_active) { dpix_val0 = bordercolor; if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl5(); + pix0 = getbpl4(); clxdat |= bplcoltable[pix0]; - if (decode_specials) { - pix0 = decode_denise_specials(pix0); - } uae_u8 val0 = dpf_lookup[pix0]; dpix_val0 = denise_colors.acolors[val0]; } last_bpl_pix = pix0; } - shiftbpl5(); + shiftbpl4(); internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { uae_u32 t0 = 0; @@ -795,7 +674,7 @@ static void lts_ecs_fm0_dpf0_p5_ilores_dlores(void) *buf2++ = t0; } if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl5(); + copybpl4(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -819,11 +698,11 @@ static void lts_ecs_fm0_dpf0_p5_ilores_dlores(void) denise_cck++; } } -static void lts_ecs_fm0_dpf0_p5_ilores_dlores_filtered(void) +static void lts_ecs_fm0_dpf0_p4_ilores_dlores_filtered(void) { lts_null(); } -static void lts_ecs_fm0_dpf1_p5_ilores_dlores(void) +static void lts_ecs_fm0_dpf1_p4_ilores_dlores(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -839,17 +718,14 @@ static void lts_ecs_fm0_dpf1_p5_ilores_dlores(void) if (!denise_blank_active) { dpix_val0 = bordercolor; if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl5(); + pix0 = getbpl4(); clxdat |= bplcoltable[pix0]; - if (decode_specials) { - pix0 = decode_denise_specials(pix0); - } uae_u8 val0 = dpf_lookup[pix0]; dpix_val0 = denise_colors.acolors[val0]; } last_bpl_pix = pix0; } - shiftbpl5(); + shiftbpl4(); internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { uae_u32 t0 = 0; @@ -865,10 +741,10 @@ static void lts_ecs_fm0_dpf1_p5_ilores_dlores(void) *buf2++ = t0; } if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl5e(); + copybpl4e(); } if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) { - copybpl5o(); + copybpl4o(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -892,27 +768,11 @@ static void lts_ecs_fm0_dpf1_p5_ilores_dlores(void) denise_cck++; } } -static void lts_ecs_fm0_dpf1_p5_ilores_dlores_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb0_p5_ilores_dlores(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb0_p5_ilores_dlores_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb1_p5_ilores_dlores(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb1_p5_ilores_dlores_filtered(void) +static void lts_ecs_fm0_dpf1_p4_ilores_dlores_filtered(void) { lts_null(); } -static void lts_ecs_fm0_ham0_p5_ilores_dlores(void) +static void lts_ecs_fm0_ehb0_p4_ilores_dlores(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -927,17 +787,7 @@ static void lts_ecs_fm0_ham0_p5_ilores_dlores(void) uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl5(); - clxdat |= bplcoltable[pix0]; - if (decode_specials) { - pix0 = decode_denise_specials(pix0); - } - dpix_val0 = decode_ham_pixel(pix0); - } - last_bpl_pix = pix0; } - shiftbpl5(); internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { uae_u32 t0 = 0; @@ -952,9 +802,6 @@ static void lts_ecs_fm0_ham0_p5_ilores_dlores(void) *buf1++ = t0; *buf2++ = t0; } - if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl5(); - } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER *debug_dma_dhpos_odd = denise_hcounter; @@ -977,11 +824,11 @@ static void lts_ecs_fm0_ham0_p5_ilores_dlores(void) denise_cck++; } } -static void lts_ecs_fm0_ham0_p5_ilores_dlores_filtered(void) +static void lts_ecs_fm0_ehb0_p4_ilores_dlores_filtered(void) { lts_null(); } -static void lts_ecs_fm0_ham1_p5_ilores_dlores(void) +static void lts_ecs_fm0_ehb1_p4_ilores_dlores(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -996,17 +843,7 @@ static void lts_ecs_fm0_ham1_p5_ilores_dlores(void) uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl5(); - clxdat |= bplcoltable[pix0]; - if (decode_specials) { - pix0 = decode_denise_specials(pix0); - } - dpix_val0 = decode_ham_pixel(pix0); - } - last_bpl_pix = pix0; } - shiftbpl5(); internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { uae_u32 t0 = 0; @@ -1021,12 +858,6 @@ static void lts_ecs_fm0_ham1_p5_ilores_dlores(void) *buf1++ = t0; *buf2++ = t0; } - if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl5e(); - } - if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) { - copybpl5o(); - } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER *debug_dma_dhpos_odd = denise_hcounter; @@ -1049,11 +880,11 @@ static void lts_ecs_fm0_ham1_p5_ilores_dlores(void) denise_cck++; } } -static void lts_ecs_fm0_ham1_p5_ilores_dlores_filtered(void) +static void lts_ecs_fm0_ehb1_p4_ilores_dlores_filtered(void) { lts_null(); } -static void lts_ecs_fm0_n0_p6_ilores_dlores(void) +static void lts_ecs_fm0_ham0_p4_ilores_dlores(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -1068,17 +899,7 @@ static void lts_ecs_fm0_n0_p6_ilores_dlores(void) uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl6(); - clxdat |= bplcoltable[pix0]; - if (decode_specials) { - pix0 = decode_denise_specials(pix0); - } - dpix_val0 = denise_colors.acolors[pix0]; - } - last_bpl_pix = pix0; } - shiftbpl6(); internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { uae_u32 t0 = 0; @@ -1093,9 +914,6 @@ static void lts_ecs_fm0_n0_p6_ilores_dlores(void) *buf1++ = t0; *buf2++ = t0; } - if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl6(); - } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER *debug_dma_dhpos_odd = denise_hcounter; @@ -1118,11 +936,11 @@ static void lts_ecs_fm0_n0_p6_ilores_dlores(void) denise_cck++; } } -static void lts_ecs_fm0_n0_p6_ilores_dlores_filtered(void) +static void lts_ecs_fm0_ham0_p4_ilores_dlores_filtered(void) { lts_null(); } -static void lts_ecs_fm0_n1_p6_ilores_dlores(void) +static void lts_ecs_fm0_ham1_p4_ilores_dlores(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -1137,17 +955,7 @@ static void lts_ecs_fm0_n1_p6_ilores_dlores(void) uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl6(); - clxdat |= bplcoltable[pix0]; - if (decode_specials) { - pix0 = decode_denise_specials(pix0); - } - dpix_val0 = denise_colors.acolors[pix0]; - } - last_bpl_pix = pix0; } - shiftbpl6(); internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { uae_u32 t0 = 0; @@ -1162,12 +970,6 @@ static void lts_ecs_fm0_n1_p6_ilores_dlores(void) *buf1++ = t0; *buf2++ = t0; } - if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl6e(); - } - if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) { - copybpl6o(); - } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER *debug_dma_dhpos_odd = denise_hcounter; @@ -1190,11 +992,11 @@ static void lts_ecs_fm0_n1_p6_ilores_dlores(void) denise_cck++; } } -static void lts_ecs_fm0_n1_p6_ilores_dlores_filtered(void) +static void lts_ecs_fm0_ham1_p4_ilores_dlores_filtered(void) { lts_null(); } -static void lts_ecs_fm0_dpf0_p6_ilores_dlores(void) +static void lts_ecs_fm0_n0_p5_ilores_dlores(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -1210,17 +1012,16 @@ static void lts_ecs_fm0_dpf0_p6_ilores_dlores(void) if (!denise_blank_active) { dpix_val0 = bordercolor; if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl6(); + pix0 = getbpl5(); clxdat |= bplcoltable[pix0]; if (decode_specials) { pix0 = decode_denise_specials(pix0); } - uae_u8 val0 = dpf_lookup[pix0]; - dpix_val0 = denise_colors.acolors[val0]; + dpix_val0 = denise_colors.acolors[pix0]; } last_bpl_pix = pix0; } - shiftbpl6(); + shiftbpl5(); internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { uae_u32 t0 = 0; @@ -1236,7 +1037,7 @@ static void lts_ecs_fm0_dpf0_p6_ilores_dlores(void) *buf2++ = t0; } if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl6(); + copybpl5(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -1260,11 +1061,11 @@ static void lts_ecs_fm0_dpf0_p6_ilores_dlores(void) denise_cck++; } } -static void lts_ecs_fm0_dpf0_p6_ilores_dlores_filtered(void) +static void lts_ecs_fm0_n0_p5_ilores_dlores_filtered(void) { lts_null(); } -static void lts_ecs_fm0_dpf1_p6_ilores_dlores(void) +static void lts_ecs_fm0_n1_p5_ilores_dlores(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -1280,17 +1081,16 @@ static void lts_ecs_fm0_dpf1_p6_ilores_dlores(void) if (!denise_blank_active) { dpix_val0 = bordercolor; if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl6(); + pix0 = getbpl5(); clxdat |= bplcoltable[pix0]; if (decode_specials) { pix0 = decode_denise_specials(pix0); } - uae_u8 val0 = dpf_lookup[pix0]; - dpix_val0 = denise_colors.acolors[val0]; + dpix_val0 = denise_colors.acolors[pix0]; } last_bpl_pix = pix0; } - shiftbpl6(); + shiftbpl5(); internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { uae_u32 t0 = 0; @@ -1306,10 +1106,10 @@ static void lts_ecs_fm0_dpf1_p6_ilores_dlores(void) *buf2++ = t0; } if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl6e(); + copybpl5e(); } if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) { - copybpl6o(); + copybpl5o(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -1333,11 +1133,11 @@ static void lts_ecs_fm0_dpf1_p6_ilores_dlores(void) denise_cck++; } } -static void lts_ecs_fm0_dpf1_p6_ilores_dlores_filtered(void) +static void lts_ecs_fm0_n1_p5_ilores_dlores_filtered(void) { lts_null(); } -static void lts_ecs_fm0_ehb0_p6_ilores_dlores(void) +static void lts_ecs_fm0_dpf0_p5_ilores_dlores(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -1353,21 +1153,17 @@ static void lts_ecs_fm0_ehb0_p6_ilores_dlores(void) if (!denise_blank_active) { dpix_val0 = bordercolor; if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl6(); + pix0 = getbpl5(); clxdat |= bplcoltable[pix0]; if (decode_specials) { pix0 = decode_denise_specials(pix0); } - pix0 &= bplehb_mask; - if (pix0 <= 31) { - dpix_val0 = denise_colors.acolors[pix0]; - } else { - dpix_val0 = p_xcolors[(denise_colors.color_regs_ecs[pix0 - 32] >> 1) & 0x777]; - } + uae_u8 val0 = dpf_lookup[pix0]; + dpix_val0 = denise_colors.acolors[val0]; } last_bpl_pix = pix0; } - shiftbpl6(); + shiftbpl5(); internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { uae_u32 t0 = 0; @@ -1383,7 +1179,7 @@ static void lts_ecs_fm0_ehb0_p6_ilores_dlores(void) *buf2++ = t0; } if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl6(); + copybpl5(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -1407,11 +1203,11 @@ static void lts_ecs_fm0_ehb0_p6_ilores_dlores(void) denise_cck++; } } -static void lts_ecs_fm0_ehb0_p6_ilores_dlores_filtered(void) +static void lts_ecs_fm0_dpf0_p5_ilores_dlores_filtered(void) { lts_null(); } -static void lts_ecs_fm0_ehb1_p6_ilores_dlores(void) +static void lts_ecs_fm0_dpf1_p5_ilores_dlores(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -1427,21 +1223,17 @@ static void lts_ecs_fm0_ehb1_p6_ilores_dlores(void) if (!denise_blank_active) { dpix_val0 = bordercolor; if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl6(); + pix0 = getbpl5(); clxdat |= bplcoltable[pix0]; if (decode_specials) { pix0 = decode_denise_specials(pix0); } - pix0 &= bplehb_mask; - if (pix0 <= 31) { - dpix_val0 = denise_colors.acolors[pix0]; - } else { - dpix_val0 = p_xcolors[(denise_colors.color_regs_ecs[pix0 - 32] >> 1) & 0x777]; - } + uae_u8 val0 = dpf_lookup[pix0]; + dpix_val0 = denise_colors.acolors[val0]; } last_bpl_pix = pix0; } - shiftbpl6(); + shiftbpl5(); internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { uae_u32 t0 = 0; @@ -1457,10 +1249,10 @@ static void lts_ecs_fm0_ehb1_p6_ilores_dlores(void) *buf2++ = t0; } if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl6e(); + copybpl5e(); } if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) { - copybpl6o(); + copybpl5o(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -1484,11 +1276,11 @@ static void lts_ecs_fm0_ehb1_p6_ilores_dlores(void) denise_cck++; } } -static void lts_ecs_fm0_ehb1_p6_ilores_dlores_filtered(void) +static void lts_ecs_fm0_dpf1_p5_ilores_dlores_filtered(void) { lts_null(); } -static void lts_ecs_fm0_ham0_p6_ilores_dlores(void) +static void lts_ecs_fm0_ehb0_p5_ilores_dlores(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -1503,17 +1295,7 @@ static void lts_ecs_fm0_ham0_p6_ilores_dlores(void) uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl6(); - clxdat |= bplcoltable[pix0]; - if (decode_specials) { - pix0 = decode_denise_specials(pix0); - } - dpix_val0 = decode_ham_pixel(pix0); - } - last_bpl_pix = pix0; } - shiftbpl6(); internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { uae_u32 t0 = 0; @@ -1528,9 +1310,6 @@ static void lts_ecs_fm0_ham0_p6_ilores_dlores(void) *buf1++ = t0; *buf2++ = t0; } - if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl6(); - } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER *debug_dma_dhpos_odd = denise_hcounter; @@ -1553,11 +1332,11 @@ static void lts_ecs_fm0_ham0_p6_ilores_dlores(void) denise_cck++; } } -static void lts_ecs_fm0_ham0_p6_ilores_dlores_filtered(void) +static void lts_ecs_fm0_ehb0_p5_ilores_dlores_filtered(void) { lts_null(); } -static void lts_ecs_fm0_ham1_p6_ilores_dlores(void) +static void lts_ecs_fm0_ehb1_p5_ilores_dlores(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -1572,17 +1351,7 @@ static void lts_ecs_fm0_ham1_p6_ilores_dlores(void) uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl6(); - clxdat |= bplcoltable[pix0]; - if (decode_specials) { - pix0 = decode_denise_specials(pix0); - } - dpix_val0 = decode_ham_pixel(pix0); - } - last_bpl_pix = pix0; } - shiftbpl6(); internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { uae_u32 t0 = 0; @@ -1597,12 +1366,6 @@ static void lts_ecs_fm0_ham1_p6_ilores_dlores(void) *buf1++ = t0; *buf2++ = t0; } - if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl6e(); - } - if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) { - copybpl6o(); - } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER *debug_dma_dhpos_odd = denise_hcounter; @@ -1625,11 +1388,11 @@ static void lts_ecs_fm0_ham1_p6_ilores_dlores(void) denise_cck++; } } -static void lts_ecs_fm0_ham1_p6_ilores_dlores_filtered(void) +static void lts_ecs_fm0_ehb1_p5_ilores_dlores_filtered(void) { lts_null(); } -static void lts_ecs_fm0_n0_p2_ilores_dlores_spr(void) +static void lts_ecs_fm0_ham0_p5_ilores_dlores(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -1640,35 +1403,23 @@ static void lts_ecs_fm0_n0_p2_ilores_dlores_spr(void) } int cnt = denise_hcounter << 2; if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl2(); + pix0 = getbpl5(); clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0]; + if (decode_specials) { + pix0 = decode_denise_specials(pix0); + } + dpix_val0 = decode_ham_pixel(pix0); } last_bpl_pix = pix0; } - shiftbpl2(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_lores(); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } - } + shiftbpl5(); internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - } - } uae_u32 t0 = 0; if (!extblank) { t0 = dpix_val0; @@ -1682,7 +1433,7 @@ static void lts_ecs_fm0_n0_p2_ilores_dlores_spr(void) *buf2++ = t0; } if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl2(); + copybpl5(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -1706,11 +1457,11 @@ static void lts_ecs_fm0_n0_p2_ilores_dlores_spr(void) denise_cck++; } } -static void lts_ecs_fm0_n0_p2_ilores_dlores_spr_filtered(void) +static void lts_ecs_fm0_ham0_p5_ilores_dlores_filtered(void) { lts_null(); } -static void lts_ecs_fm0_n1_p2_ilores_dlores_spr(void) +static void lts_ecs_fm0_ham1_p5_ilores_dlores(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -1721,35 +1472,23 @@ static void lts_ecs_fm0_n1_p2_ilores_dlores_spr(void) } int cnt = denise_hcounter << 2; if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl2(); + pix0 = getbpl5(); clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0]; + if (decode_specials) { + pix0 = decode_denise_specials(pix0); + } + dpix_val0 = decode_ham_pixel(pix0); } last_bpl_pix = pix0; } - shiftbpl2(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_lores(); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } - } + shiftbpl5(); internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - } - } uae_u32 t0 = 0; if (!extblank) { t0 = dpix_val0; @@ -1763,10 +1502,10 @@ static void lts_ecs_fm0_n1_p2_ilores_dlores_spr(void) *buf2++ = t0; } if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl2e(); + copybpl5e(); } if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) { - copybpl2o(); + copybpl5o(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -1790,11 +1529,11 @@ static void lts_ecs_fm0_n1_p2_ilores_dlores_spr(void) denise_cck++; } } -static void lts_ecs_fm0_n1_p2_ilores_dlores_spr_filtered(void) +static void lts_ecs_fm0_ham1_p5_ilores_dlores_filtered(void) { lts_null(); } -static void lts_ecs_fm0_dpf0_p2_ilores_dlores_spr(void) +static void lts_ecs_fm0_n0_p6_ilores_dlores(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -1805,36 +1544,23 @@ static void lts_ecs_fm0_dpf0_p2_ilores_dlores_spr(void) } int cnt = denise_hcounter << 2; if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl2(); + pix0 = getbpl6(); clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - dpix_val0 = denise_colors.acolors[val0]; + if (decode_specials) { + pix0 = decode_denise_specials(pix0); + } + dpix_val0 = denise_colors.acolors[pix0]; } last_bpl_pix = pix0; } - shiftbpl2(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_lores(); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } - } + shiftbpl6(); internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - } - } uae_u32 t0 = 0; if (!extblank) { t0 = dpix_val0; @@ -1848,7 +1574,7 @@ static void lts_ecs_fm0_dpf0_p2_ilores_dlores_spr(void) *buf2++ = t0; } if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl2(); + copybpl6(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -1872,11 +1598,11 @@ static void lts_ecs_fm0_dpf0_p2_ilores_dlores_spr(void) denise_cck++; } } -static void lts_ecs_fm0_dpf0_p2_ilores_dlores_spr_filtered(void) +static void lts_ecs_fm0_n0_p6_ilores_dlores_filtered(void) { lts_null(); } -static void lts_ecs_fm0_dpf1_p2_ilores_dlores_spr(void) +static void lts_ecs_fm0_n1_p6_ilores_dlores(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -1887,36 +1613,23 @@ static void lts_ecs_fm0_dpf1_p2_ilores_dlores_spr(void) } int cnt = denise_hcounter << 2; if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl2(); + pix0 = getbpl6(); clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - dpix_val0 = denise_colors.acolors[val0]; + if (decode_specials) { + pix0 = decode_denise_specials(pix0); + } + dpix_val0 = denise_colors.acolors[pix0]; } last_bpl_pix = pix0; } - shiftbpl2(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_lores(); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } - } + shiftbpl6(); internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - } - } uae_u32 t0 = 0; if (!extblank) { t0 = dpix_val0; @@ -1930,10 +1643,10 @@ static void lts_ecs_fm0_dpf1_p2_ilores_dlores_spr(void) *buf2++ = t0; } if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl2e(); + copybpl6e(); } if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) { - copybpl2o(); + copybpl6o(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -1957,43 +1670,11 @@ static void lts_ecs_fm0_dpf1_p2_ilores_dlores_spr(void) denise_cck++; } } -static void lts_ecs_fm0_dpf1_p2_ilores_dlores_spr_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb0_p2_ilores_dlores_spr(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb0_p2_ilores_dlores_spr_filtered(void) +static void lts_ecs_fm0_n1_p6_ilores_dlores_filtered(void) { lts_null(); } -static void lts_ecs_fm0_ehb1_p2_ilores_dlores_spr(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb1_p2_ilores_dlores_spr_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham0_p2_ilores_dlores_spr(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham0_p2_ilores_dlores_spr_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham1_p2_ilores_dlores_spr(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham1_p2_ilores_dlores_spr_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_n0_p4_ilores_dlores_spr(void) +static void lts_ecs_fm0_dpf0_p6_ilores_dlores(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -2004,35 +1685,24 @@ static void lts_ecs_fm0_n0_p4_ilores_dlores_spr(void) } int cnt = denise_hcounter << 2; if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl4(); + pix0 = getbpl6(); clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0]; + if (decode_specials) { + pix0 = decode_denise_specials(pix0); + } + uae_u8 val0 = dpf_lookup[pix0]; + dpix_val0 = denise_colors.acolors[val0]; } last_bpl_pix = pix0; } - shiftbpl4(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_lores(); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } - } + shiftbpl6(); internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - } - } uae_u32 t0 = 0; if (!extblank) { t0 = dpix_val0; @@ -2046,7 +1716,7 @@ static void lts_ecs_fm0_n0_p4_ilores_dlores_spr(void) *buf2++ = t0; } if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl4(); + copybpl6(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -2070,11 +1740,11 @@ static void lts_ecs_fm0_n0_p4_ilores_dlores_spr(void) denise_cck++; } } -static void lts_ecs_fm0_n0_p4_ilores_dlores_spr_filtered(void) +static void lts_ecs_fm0_dpf0_p6_ilores_dlores_filtered(void) { lts_null(); } -static void lts_ecs_fm0_n1_p4_ilores_dlores_spr(void) +static void lts_ecs_fm0_dpf1_p6_ilores_dlores(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -2085,35 +1755,24 @@ static void lts_ecs_fm0_n1_p4_ilores_dlores_spr(void) } int cnt = denise_hcounter << 2; if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl4(); + pix0 = getbpl6(); clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0]; + if (decode_specials) { + pix0 = decode_denise_specials(pix0); + } + uae_u8 val0 = dpf_lookup[pix0]; + dpix_val0 = denise_colors.acolors[val0]; } last_bpl_pix = pix0; } - shiftbpl4(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_lores(); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } - } + shiftbpl6(); internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - } - } uae_u32 t0 = 0; if (!extblank) { t0 = dpix_val0; @@ -2127,10 +1786,10 @@ static void lts_ecs_fm0_n1_p4_ilores_dlores_spr(void) *buf2++ = t0; } if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl4e(); + copybpl6e(); } if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) { - copybpl4o(); + copybpl6o(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -2154,11 +1813,11 @@ static void lts_ecs_fm0_n1_p4_ilores_dlores_spr(void) denise_cck++; } } -static void lts_ecs_fm0_n1_p4_ilores_dlores_spr_filtered(void) +static void lts_ecs_fm0_dpf1_p6_ilores_dlores_filtered(void) { lts_null(); } -static void lts_ecs_fm0_dpf0_p4_ilores_dlores_spr(void) +static void lts_ecs_fm0_ehb0_p6_ilores_dlores(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -2169,36 +1828,28 @@ static void lts_ecs_fm0_dpf0_p4_ilores_dlores_spr(void) } int cnt = denise_hcounter << 2; if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl4(); + pix0 = getbpl6(); clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - dpix_val0 = denise_colors.acolors[val0]; + if (decode_specials) { + pix0 = decode_denise_specials(pix0); + } + pix0 &= bplehb_mask; + if (pix0 <= 31) { + dpix_val0 = denise_colors.acolors[pix0]; + } else { + dpix_val0 = p_xcolors[(denise_colors.color_regs_ecs[pix0 - 32] >> 1) & 0x777]; + } } last_bpl_pix = pix0; } - shiftbpl4(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_lores(); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } - } + shiftbpl6(); internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - } - } uae_u32 t0 = 0; if (!extblank) { t0 = dpix_val0; @@ -2212,7 +1863,7 @@ static void lts_ecs_fm0_dpf0_p4_ilores_dlores_spr(void) *buf2++ = t0; } if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl4(); + copybpl6(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -2236,11 +1887,11 @@ static void lts_ecs_fm0_dpf0_p4_ilores_dlores_spr(void) denise_cck++; } } -static void lts_ecs_fm0_dpf0_p4_ilores_dlores_spr_filtered(void) +static void lts_ecs_fm0_ehb0_p6_ilores_dlores_filtered(void) { lts_null(); } -static void lts_ecs_fm0_dpf1_p4_ilores_dlores_spr(void) +static void lts_ecs_fm0_ehb1_p6_ilores_dlores(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -2251,36 +1902,28 @@ static void lts_ecs_fm0_dpf1_p4_ilores_dlores_spr(void) } int cnt = denise_hcounter << 2; if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl4(); + pix0 = getbpl6(); clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - dpix_val0 = denise_colors.acolors[val0]; + if (decode_specials) { + pix0 = decode_denise_specials(pix0); + } + pix0 &= bplehb_mask; + if (pix0 <= 31) { + dpix_val0 = denise_colors.acolors[pix0]; + } else { + dpix_val0 = p_xcolors[(denise_colors.color_regs_ecs[pix0 - 32] >> 1) & 0x777]; + } } last_bpl_pix = pix0; } - shiftbpl4(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_lores(); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } - } + shiftbpl6(); internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - } - } uae_u32 t0 = 0; if (!extblank) { t0 = dpix_val0; @@ -2294,10 +1937,10 @@ static void lts_ecs_fm0_dpf1_p4_ilores_dlores_spr(void) *buf2++ = t0; } if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl4e(); + copybpl6e(); } if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) { - copybpl4o(); + copybpl6o(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -2321,43 +1964,11 @@ static void lts_ecs_fm0_dpf1_p4_ilores_dlores_spr(void) denise_cck++; } } -static void lts_ecs_fm0_dpf1_p4_ilores_dlores_spr_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb0_p4_ilores_dlores_spr(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb0_p4_ilores_dlores_spr_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb1_p4_ilores_dlores_spr(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb1_p4_ilores_dlores_spr_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham0_p4_ilores_dlores_spr(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham0_p4_ilores_dlores_spr_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham1_p4_ilores_dlores_spr(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham1_p4_ilores_dlores_spr_filtered(void) +static void lts_ecs_fm0_ehb1_p6_ilores_dlores_filtered(void) { lts_null(); } -static void lts_ecs_fm0_n0_p5_ilores_dlores_spr(void) +static void lts_ecs_fm0_ham0_p6_ilores_dlores(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -2368,38 +1979,23 @@ static void lts_ecs_fm0_n0_p5_ilores_dlores_spr(void) } int cnt = denise_hcounter << 2; if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl5(); + pix0 = getbpl6(); clxdat |= bplcoltable[pix0]; if (decode_specials) { pix0 = decode_denise_specials(pix0); } - dpix_val0 = denise_colors.acolors[pix0]; + dpix_val0 = decode_ham_pixel(pix0); } last_bpl_pix = pix0; } - shiftbpl5(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_lores(); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } - } + shiftbpl6(); internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - } - } uae_u32 t0 = 0; if (!extblank) { t0 = dpix_val0; @@ -2413,7 +2009,7 @@ static void lts_ecs_fm0_n0_p5_ilores_dlores_spr(void) *buf2++ = t0; } if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl5(); + copybpl6(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -2437,11 +2033,11 @@ static void lts_ecs_fm0_n0_p5_ilores_dlores_spr(void) denise_cck++; } } -static void lts_ecs_fm0_n0_p5_ilores_dlores_spr_filtered(void) +static void lts_ecs_fm0_ham0_p6_ilores_dlores_filtered(void) { lts_null(); } -static void lts_ecs_fm0_n1_p5_ilores_dlores_spr(void) +static void lts_ecs_fm0_ham1_p6_ilores_dlores(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -2452,38 +2048,23 @@ static void lts_ecs_fm0_n1_p5_ilores_dlores_spr(void) } int cnt = denise_hcounter << 2; if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl5(); + pix0 = getbpl6(); clxdat |= bplcoltable[pix0]; if (decode_specials) { pix0 = decode_denise_specials(pix0); } - dpix_val0 = denise_colors.acolors[pix0]; + dpix_val0 = decode_ham_pixel(pix0); } last_bpl_pix = pix0; } - shiftbpl5(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_lores(); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } - } + shiftbpl6(); internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - } - } uae_u32 t0 = 0; if (!extblank) { t0 = dpix_val0; @@ -2497,10 +2078,10 @@ static void lts_ecs_fm0_n1_p5_ilores_dlores_spr(void) *buf2++ = t0; } if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl5e(); + copybpl6e(); } if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) { - copybpl5o(); + copybpl6o(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -2524,11 +2105,11 @@ static void lts_ecs_fm0_n1_p5_ilores_dlores_spr(void) denise_cck++; } } -static void lts_ecs_fm0_n1_p5_ilores_dlores_spr_filtered(void) +static void lts_ecs_fm0_ham1_p6_ilores_dlores_filtered(void) { lts_null(); } -static void lts_ecs_fm0_dpf0_p5_ilores_dlores_spr(void) +static void lts_ecs_fm0_n0_p2_ilores_dlores_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -2545,17 +2126,13 @@ static void lts_ecs_fm0_dpf0_p5_ilores_dlores_spr(void) if (!denise_blank_active) { dpix_val0 = bordercolor; if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl5(); + pix0 = getbpl2(); clxdat |= bplcoltable[pix0]; - if (decode_specials) { - pix0 = decode_denise_specials(pix0); - } - uae_u8 val0 = dpf_lookup[pix0]; - dpix_val0 = denise_colors.acolors[val0]; + dpix_val0 = denise_colors.acolors[pix0]; } last_bpl_pix = pix0; } - shiftbpl5(); + shiftbpl2(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -2585,7 +2162,7 @@ static void lts_ecs_fm0_dpf0_p5_ilores_dlores_spr(void) *buf2++ = t0; } if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl5(); + copybpl2(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -2609,11 +2186,11 @@ static void lts_ecs_fm0_dpf0_p5_ilores_dlores_spr(void) denise_cck++; } } -static void lts_ecs_fm0_dpf0_p5_ilores_dlores_spr_filtered(void) +static void lts_ecs_fm0_n0_p2_ilores_dlores_spr_filtered(void) { lts_null(); } -static void lts_ecs_fm0_dpf1_p5_ilores_dlores_spr(void) +static void lts_ecs_fm0_n1_p2_ilores_dlores_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -2630,17 +2207,13 @@ static void lts_ecs_fm0_dpf1_p5_ilores_dlores_spr(void) if (!denise_blank_active) { dpix_val0 = bordercolor; if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl5(); + pix0 = getbpl2(); clxdat |= bplcoltable[pix0]; - if (decode_specials) { - pix0 = decode_denise_specials(pix0); - } - uae_u8 val0 = dpf_lookup[pix0]; - dpix_val0 = denise_colors.acolors[val0]; + dpix_val0 = denise_colors.acolors[pix0]; } last_bpl_pix = pix0; } - shiftbpl5(); + shiftbpl2(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -2670,10 +2243,10 @@ static void lts_ecs_fm0_dpf1_p5_ilores_dlores_spr(void) *buf2++ = t0; } if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl5e(); + copybpl2e(); } if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) { - copybpl5o(); + copybpl2o(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -2697,27 +2270,11 @@ static void lts_ecs_fm0_dpf1_p5_ilores_dlores_spr(void) denise_cck++; } } -static void lts_ecs_fm0_dpf1_p5_ilores_dlores_spr_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb0_p5_ilores_dlores_spr(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb0_p5_ilores_dlores_spr_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb1_p5_ilores_dlores_spr(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb1_p5_ilores_dlores_spr_filtered(void) +static void lts_ecs_fm0_n1_p2_ilores_dlores_spr_filtered(void) { lts_null(); } -static void lts_ecs_fm0_ham0_p5_ilores_dlores_spr(void) +static void lts_ecs_fm0_dpf0_p2_ilores_dlores_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -2734,16 +2291,14 @@ static void lts_ecs_fm0_ham0_p5_ilores_dlores_spr(void) if (!denise_blank_active) { dpix_val0 = bordercolor; if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl5(); + pix0 = getbpl2(); clxdat |= bplcoltable[pix0]; - if (decode_specials) { - pix0 = decode_denise_specials(pix0); - } - dpix_val0 = decode_ham_pixel(pix0); + uae_u8 val0 = dpf_lookup[pix0]; + dpix_val0 = denise_colors.acolors[val0]; } last_bpl_pix = pix0; } - shiftbpl5(); + shiftbpl2(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -2773,7 +2328,7 @@ static void lts_ecs_fm0_ham0_p5_ilores_dlores_spr(void) *buf2++ = t0; } if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl5(); + copybpl2(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -2797,11 +2352,11 @@ static void lts_ecs_fm0_ham0_p5_ilores_dlores_spr(void) denise_cck++; } } -static void lts_ecs_fm0_ham0_p5_ilores_dlores_spr_filtered(void) +static void lts_ecs_fm0_dpf0_p2_ilores_dlores_spr_filtered(void) { lts_null(); } -static void lts_ecs_fm0_ham1_p5_ilores_dlores_spr(void) +static void lts_ecs_fm0_dpf1_p2_ilores_dlores_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -2818,16 +2373,14 @@ static void lts_ecs_fm0_ham1_p5_ilores_dlores_spr(void) if (!denise_blank_active) { dpix_val0 = bordercolor; if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl5(); + pix0 = getbpl2(); clxdat |= bplcoltable[pix0]; - if (decode_specials) { - pix0 = decode_denise_specials(pix0); - } - dpix_val0 = decode_ham_pixel(pix0); + uae_u8 val0 = dpf_lookup[pix0]; + dpix_val0 = denise_colors.acolors[val0]; } last_bpl_pix = pix0; } - shiftbpl5(); + shiftbpl2(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -2857,10 +2410,10 @@ static void lts_ecs_fm0_ham1_p5_ilores_dlores_spr(void) *buf2++ = t0; } if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl5e(); + copybpl2e(); } if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) { - copybpl5o(); + copybpl2o(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -2884,11 +2437,11 @@ static void lts_ecs_fm0_ham1_p5_ilores_dlores_spr(void) denise_cck++; } } -static void lts_ecs_fm0_ham1_p5_ilores_dlores_spr_filtered(void) +static void lts_ecs_fm0_dpf1_p2_ilores_dlores_spr_filtered(void) { lts_null(); } -static void lts_ecs_fm0_n0_p6_ilores_dlores_spr(void) +static void lts_ecs_fm0_ehb0_p2_ilores_dlores_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -2899,38 +2452,13 @@ static void lts_ecs_fm0_n0_p6_ilores_dlores_spr(void) } int cnt = denise_hcounter << 2; if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl6(); - clxdat |= bplcoltable[pix0]; - if (decode_specials) { - pix0 = decode_denise_specials(pix0); - } - dpix_val0 = denise_colors.acolors[pix0]; - } - last_bpl_pix = pix0; - } - shiftbpl6(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_lores(); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } } internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - } - } uae_u32 t0 = 0; if (!extblank) { t0 = dpix_val0; @@ -2943,9 +2471,6 @@ static void lts_ecs_fm0_n0_p6_ilores_dlores_spr(void) *buf1++ = t0; *buf2++ = t0; } - if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl6(); - } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER *debug_dma_dhpos_odd = denise_hcounter; @@ -2968,11 +2493,11 @@ static void lts_ecs_fm0_n0_p6_ilores_dlores_spr(void) denise_cck++; } } -static void lts_ecs_fm0_n0_p6_ilores_dlores_spr_filtered(void) +static void lts_ecs_fm0_ehb0_p2_ilores_dlores_spr_filtered(void) { lts_null(); } -static void lts_ecs_fm0_n1_p6_ilores_dlores_spr(void) +static void lts_ecs_fm0_ehb1_p2_ilores_dlores_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -2983,38 +2508,13 @@ static void lts_ecs_fm0_n1_p6_ilores_dlores_spr(void) } int cnt = denise_hcounter << 2; if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl6(); - clxdat |= bplcoltable[pix0]; - if (decode_specials) { - pix0 = decode_denise_specials(pix0); - } - dpix_val0 = denise_colors.acolors[pix0]; - } - last_bpl_pix = pix0; - } - shiftbpl6(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_lores(); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } } internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - } - } uae_u32 t0 = 0; if (!extblank) { t0 = dpix_val0; @@ -3027,12 +2527,6 @@ static void lts_ecs_fm0_n1_p6_ilores_dlores_spr(void) *buf1++ = t0; *buf2++ = t0; } - if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl6e(); - } - if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) { - copybpl6o(); - } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER *debug_dma_dhpos_odd = denise_hcounter; @@ -3055,11 +2549,11 @@ static void lts_ecs_fm0_n1_p6_ilores_dlores_spr(void) denise_cck++; } } -static void lts_ecs_fm0_n1_p6_ilores_dlores_spr_filtered(void) +static void lts_ecs_fm0_ehb1_p2_ilores_dlores_spr_filtered(void) { lts_null(); } -static void lts_ecs_fm0_dpf0_p6_ilores_dlores_spr(void) +static void lts_ecs_fm0_ham0_p2_ilores_dlores_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -3070,39 +2564,13 @@ static void lts_ecs_fm0_dpf0_p6_ilores_dlores_spr(void) } int cnt = denise_hcounter << 2; if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl6(); - clxdat |= bplcoltable[pix0]; - if (decode_specials) { - pix0 = decode_denise_specials(pix0); - } - uae_u8 val0 = dpf_lookup[pix0]; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; - } - shiftbpl6(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_lores(); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } } internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - } - } uae_u32 t0 = 0; if (!extblank) { t0 = dpix_val0; @@ -3115,9 +2583,6 @@ static void lts_ecs_fm0_dpf0_p6_ilores_dlores_spr(void) *buf1++ = t0; *buf2++ = t0; } - if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl6(); - } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER *debug_dma_dhpos_odd = denise_hcounter; @@ -3140,11 +2605,11 @@ static void lts_ecs_fm0_dpf0_p6_ilores_dlores_spr(void) denise_cck++; } } -static void lts_ecs_fm0_dpf0_p6_ilores_dlores_spr_filtered(void) +static void lts_ecs_fm0_ham0_p2_ilores_dlores_spr_filtered(void) { lts_null(); } -static void lts_ecs_fm0_dpf1_p6_ilores_dlores_spr(void) +static void lts_ecs_fm0_ham1_p2_ilores_dlores_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -3155,39 +2620,13 @@ static void lts_ecs_fm0_dpf1_p6_ilores_dlores_spr(void) } int cnt = denise_hcounter << 2; if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl6(); - clxdat |= bplcoltable[pix0]; - if (decode_specials) { - pix0 = decode_denise_specials(pix0); - } - uae_u8 val0 = dpf_lookup[pix0]; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; - } - shiftbpl6(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_lores(); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } } internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - } - } uae_u32 t0 = 0; if (!extblank) { t0 = dpix_val0; @@ -3200,12 +2639,6 @@ static void lts_ecs_fm0_dpf1_p6_ilores_dlores_spr(void) *buf1++ = t0; *buf2++ = t0; } - if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl6e(); - } - if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) { - copybpl6o(); - } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER *debug_dma_dhpos_odd = denise_hcounter; @@ -3228,11 +2661,11 @@ static void lts_ecs_fm0_dpf1_p6_ilores_dlores_spr(void) denise_cck++; } } -static void lts_ecs_fm0_dpf1_p6_ilores_dlores_spr_filtered(void) +static void lts_ecs_fm0_ham1_p2_ilores_dlores_spr_filtered(void) { lts_null(); } -static void lts_ecs_fm0_ehb0_p6_ilores_dlores_spr(void) +static void lts_ecs_fm0_n0_p4_ilores_dlores_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -3249,21 +2682,13 @@ static void lts_ecs_fm0_ehb0_p6_ilores_dlores_spr(void) if (!denise_blank_active) { dpix_val0 = bordercolor; if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl6(); + pix0 = getbpl4(); clxdat |= bplcoltable[pix0]; - if (decode_specials) { - pix0 = decode_denise_specials(pix0); - } - pix0 &= bplehb_mask; - if (pix0 <= 31) { - dpix_val0 = denise_colors.acolors[pix0]; - } else { - dpix_val0 = p_xcolors[(denise_colors.color_regs_ecs[pix0 - 32] >> 1) & 0x777]; - } + dpix_val0 = denise_colors.acolors[pix0]; } last_bpl_pix = pix0; } - shiftbpl6(); + shiftbpl4(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -3293,7 +2718,7 @@ static void lts_ecs_fm0_ehb0_p6_ilores_dlores_spr(void) *buf2++ = t0; } if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl6(); + copybpl4(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -3317,11 +2742,11 @@ static void lts_ecs_fm0_ehb0_p6_ilores_dlores_spr(void) denise_cck++; } } -static void lts_ecs_fm0_ehb0_p6_ilores_dlores_spr_filtered(void) +static void lts_ecs_fm0_n0_p4_ilores_dlores_spr_filtered(void) { lts_null(); } -static void lts_ecs_fm0_ehb1_p6_ilores_dlores_spr(void) +static void lts_ecs_fm0_n1_p4_ilores_dlores_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -3338,21 +2763,13 @@ static void lts_ecs_fm0_ehb1_p6_ilores_dlores_spr(void) if (!denise_blank_active) { dpix_val0 = bordercolor; if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl6(); + pix0 = getbpl4(); clxdat |= bplcoltable[pix0]; - if (decode_specials) { - pix0 = decode_denise_specials(pix0); - } - pix0 &= bplehb_mask; - if (pix0 <= 31) { - dpix_val0 = denise_colors.acolors[pix0]; - } else { - dpix_val0 = p_xcolors[(denise_colors.color_regs_ecs[pix0 - 32] >> 1) & 0x777]; - } + dpix_val0 = denise_colors.acolors[pix0]; } last_bpl_pix = pix0; } - shiftbpl6(); + shiftbpl4(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -3382,10 +2799,10 @@ static void lts_ecs_fm0_ehb1_p6_ilores_dlores_spr(void) *buf2++ = t0; } if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl6e(); + copybpl4e(); } if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) { - copybpl6o(); + copybpl4o(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -3409,11 +2826,11 @@ static void lts_ecs_fm0_ehb1_p6_ilores_dlores_spr(void) denise_cck++; } } -static void lts_ecs_fm0_ehb1_p6_ilores_dlores_spr_filtered(void) +static void lts_ecs_fm0_n1_p4_ilores_dlores_spr_filtered(void) { lts_null(); } -static void lts_ecs_fm0_ham0_p6_ilores_dlores_spr(void) +static void lts_ecs_fm0_dpf0_p4_ilores_dlores_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -3430,16 +2847,14 @@ static void lts_ecs_fm0_ham0_p6_ilores_dlores_spr(void) if (!denise_blank_active) { dpix_val0 = bordercolor; if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl6(); + pix0 = getbpl4(); clxdat |= bplcoltable[pix0]; - if (decode_specials) { - pix0 = decode_denise_specials(pix0); - } - dpix_val0 = decode_ham_pixel(pix0); + uae_u8 val0 = dpf_lookup[pix0]; + dpix_val0 = denise_colors.acolors[val0]; } last_bpl_pix = pix0; } - shiftbpl6(); + shiftbpl4(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -3469,7 +2884,7 @@ static void lts_ecs_fm0_ham0_p6_ilores_dlores_spr(void) *buf2++ = t0; } if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl6(); + copybpl4(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -3493,11 +2908,11 @@ static void lts_ecs_fm0_ham0_p6_ilores_dlores_spr(void) denise_cck++; } } -static void lts_ecs_fm0_ham0_p6_ilores_dlores_spr_filtered(void) +static void lts_ecs_fm0_dpf0_p4_ilores_dlores_spr_filtered(void) { lts_null(); } -static void lts_ecs_fm0_ham1_p6_ilores_dlores_spr(void) +static void lts_ecs_fm0_dpf1_p4_ilores_dlores_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -3514,16 +2929,14 @@ static void lts_ecs_fm0_ham1_p6_ilores_dlores_spr(void) if (!denise_blank_active) { dpix_val0 = bordercolor; if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl6(); + pix0 = getbpl4(); clxdat |= bplcoltable[pix0]; - if (decode_specials) { - pix0 = decode_denise_specials(pix0); - } - dpix_val0 = decode_ham_pixel(pix0); + uae_u8 val0 = dpf_lookup[pix0]; + dpix_val0 = denise_colors.acolors[val0]; } last_bpl_pix = pix0; } - shiftbpl6(); + shiftbpl4(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -3553,10 +2966,10 @@ static void lts_ecs_fm0_ham1_p6_ilores_dlores_spr(void) *buf2++ = t0; } if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl6e(); + copybpl4e(); } if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) { - copybpl6o(); + copybpl4o(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -3580,11 +2993,11 @@ static void lts_ecs_fm0_ham1_p6_ilores_dlores_spr(void) denise_cck++; } } -static void lts_ecs_fm0_ham1_p6_ilores_dlores_spr_filtered(void) +static void lts_ecs_fm0_dpf1_p4_ilores_dlores_spr_filtered(void) { lts_null(); } -static void lts_ecs_fm0_n0_p2_ihires_dlores(void) +static void lts_ecs_fm0_ehb0_p4_ilores_dlores_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -3599,28 +3012,8 @@ static void lts_ecs_fm0_n0_p2_ihires_dlores(void) uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl2(); - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0]; - } - last_bpl_pix = pix0; - } - shiftbpl2(); - internal_pixel_cnt += 2; - uae_u8 pix1 = 0; - uae_u32 dpix_val1 = BLANK_COLOR; - if (!denise_blank_active) { - dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = getbpl2(); - clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1]; - } - last_bpl_pix = pix1; } - shiftbpl2(); - internal_pixel_cnt += 2; + internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { uae_u32 t0 = 0; if (!extblank) { @@ -3634,9 +3027,6 @@ static void lts_ecs_fm0_n0_p2_ihires_dlores(void) *buf1++ = t0; *buf2++ = t0; } - if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { - copybpl2(); - } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER *debug_dma_dhpos_odd = denise_hcounter; @@ -3659,7 +3049,11 @@ static void lts_ecs_fm0_n0_p2_ihires_dlores(void) denise_cck++; } } -static void lts_ecs_fm0_n0_p2_ihires_dlores_filtered(void) +static void lts_ecs_fm0_ehb0_p4_ilores_dlores_spr_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_ehb1_p4_ilores_dlores_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -3674,30 +3068,9 @@ static void lts_ecs_fm0_n0_p2_ihires_dlores_filtered(void) uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl2(); - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0]; - } - last_bpl_pix = pix0; - } - shiftbpl2(); - internal_pixel_cnt += 2; - uae_u8 pix1 = 0; - uae_u32 dpix_val1 = BLANK_COLOR; - if (!denise_blank_active) { - dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = getbpl2(); - clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1]; - } - last_bpl_pix = pix1; } - shiftbpl2(); - internal_pixel_cnt += 2; + internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - dpix_val0 = filter_pixel(dpix_val0, dpix_val1); uae_u32 t0 = 0; if (!extblank) { t0 = dpix_val0; @@ -3710,9 +3083,6 @@ static void lts_ecs_fm0_n0_p2_ihires_dlores_filtered(void) *buf1++ = t0; *buf2++ = t0; } - if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { - copybpl2(); - } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER *debug_dma_dhpos_odd = denise_hcounter; @@ -3735,7 +3105,11 @@ static void lts_ecs_fm0_n0_p2_ihires_dlores_filtered(void) denise_cck++; } } -static void lts_ecs_fm0_n1_p2_ihires_dlores(void) +static void lts_ecs_fm0_ehb1_p4_ilores_dlores_spr_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_ham0_p4_ilores_dlores_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -3750,28 +3124,8 @@ static void lts_ecs_fm0_n1_p2_ihires_dlores(void) uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl2(); - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0]; - } - last_bpl_pix = pix0; - } - shiftbpl2(); - internal_pixel_cnt += 2; - uae_u8 pix1 = 0; - uae_u32 dpix_val1 = BLANK_COLOR; - if (!denise_blank_active) { - dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = getbpl2(); - clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1]; - } - last_bpl_pix = pix1; } - shiftbpl2(); - internal_pixel_cnt += 2; + internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { uae_u32 t0 = 0; if (!extblank) { @@ -3785,12 +3139,6 @@ static void lts_ecs_fm0_n1_p2_ihires_dlores(void) *buf1++ = t0; *buf2++ = t0; } - if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { - copybpl2e(); - } - if (bpldat_copy[1] && (denise_hcounter_cmp & 7) == bplcon1_shift[1]) { - copybpl2o(); - } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER *debug_dma_dhpos_odd = denise_hcounter; @@ -3813,7 +3161,11 @@ static void lts_ecs_fm0_n1_p2_ihires_dlores(void) denise_cck++; } } -static void lts_ecs_fm0_n1_p2_ihires_dlores_filtered(void) +static void lts_ecs_fm0_ham0_p4_ilores_dlores_spr_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_ham1_p4_ilores_dlores_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -3828,30 +3180,9 @@ static void lts_ecs_fm0_n1_p2_ihires_dlores_filtered(void) uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl2(); - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0]; - } - last_bpl_pix = pix0; - } - shiftbpl2(); - internal_pixel_cnt += 2; - uae_u8 pix1 = 0; - uae_u32 dpix_val1 = BLANK_COLOR; - if (!denise_blank_active) { - dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = getbpl2(); - clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1]; - } - last_bpl_pix = pix1; } - shiftbpl2(); - internal_pixel_cnt += 2; + internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - dpix_val0 = filter_pixel(dpix_val0, dpix_val1); uae_u32 t0 = 0; if (!extblank) { t0 = dpix_val0; @@ -3864,12 +3195,6 @@ static void lts_ecs_fm0_n1_p2_ihires_dlores_filtered(void) *buf1++ = t0; *buf2++ = t0; } - if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { - copybpl2e(); - } - if (bpldat_copy[1] && (denise_hcounter_cmp & 7) == bplcon1_shift[1]) { - copybpl2o(); - } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER *debug_dma_dhpos_odd = denise_hcounter; @@ -3892,7 +3217,11 @@ static void lts_ecs_fm0_n1_p2_ihires_dlores_filtered(void) denise_cck++; } } -static void lts_ecs_fm0_dpf0_p2_ihires_dlores(void) +static void lts_ecs_fm0_ham1_p4_ilores_dlores_spr_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_n0_p5_ilores_dlores_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -3903,35 +3232,38 @@ static void lts_ecs_fm0_dpf0_p2_ihires_dlores(void) } int cnt = denise_hcounter << 2; if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl2(); + pix0 = getbpl5(); clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - dpix_val0 = denise_colors.acolors[val0]; + if (decode_specials) { + pix0 = decode_denise_specials(pix0); + } + dpix_val0 = denise_colors.acolors[pix0]; } last_bpl_pix = pix0; } - shiftbpl2(); - internal_pixel_cnt += 2; - uae_u8 pix1 = 0; - uae_u32 dpix_val1 = BLANK_COLOR; - if (!denise_blank_active) { - dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = getbpl2(); - clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - dpix_val1 = denise_colors.acolors[val1]; + shiftbpl5(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_lores(); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; } - last_bpl_pix = pix1; } - shiftbpl2(); - internal_pixel_cnt += 2; + internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } uae_u32 t0 = 0; if (!extblank) { t0 = dpix_val0; @@ -3944,8 +3276,8 @@ static void lts_ecs_fm0_dpf0_p2_ihires_dlores(void) *buf1++ = t0; *buf2++ = t0; } - if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { - copybpl2(); + if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { + copybpl5(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -3969,7 +3301,11 @@ static void lts_ecs_fm0_dpf0_p2_ihires_dlores(void) denise_cck++; } } -static void lts_ecs_fm0_dpf0_p2_ihires_dlores_filtered(void) +static void lts_ecs_fm0_n0_p5_ilores_dlores_spr_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_n1_p5_ilores_dlores_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -3980,36 +3316,38 @@ static void lts_ecs_fm0_dpf0_p2_ihires_dlores_filtered(void) } int cnt = denise_hcounter << 2; if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl2(); + pix0 = getbpl5(); clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - dpix_val0 = denise_colors.acolors[val0]; + if (decode_specials) { + pix0 = decode_denise_specials(pix0); + } + dpix_val0 = denise_colors.acolors[pix0]; } last_bpl_pix = pix0; } - shiftbpl2(); - internal_pixel_cnt += 2; - uae_u8 pix1 = 0; - uae_u32 dpix_val1 = BLANK_COLOR; - if (!denise_blank_active) { - dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = getbpl2(); - clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - dpix_val1 = denise_colors.acolors[val1]; + shiftbpl5(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_lores(); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; } - last_bpl_pix = pix1; } - shiftbpl2(); - internal_pixel_cnt += 2; + internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } uae_u32 t0 = 0; if (!extblank) { t0 = dpix_val0; @@ -4022,11 +3360,14 @@ static void lts_ecs_fm0_dpf0_p2_ihires_dlores_filtered(void) *buf1++ = t0; *buf2++ = t0; } - if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { - copybpl2(); + if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { + copybpl5e(); } - sprites_hidden = sprites_hidden2; - #ifdef DEBUGGER + 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++; @@ -4047,7 +3388,11 @@ static void lts_ecs_fm0_dpf0_p2_ihires_dlores_filtered(void) denise_cck++; } } -static void lts_ecs_fm0_dpf1_p2_ihires_dlores(void) +static void lts_ecs_fm0_n1_p5_ilores_dlores_spr_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_dpf0_p5_ilores_dlores_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -4058,35 +3403,39 @@ static void lts_ecs_fm0_dpf1_p2_ihires_dlores(void) } int cnt = denise_hcounter << 2; if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl2(); + pix0 = getbpl5(); clxdat |= bplcoltable[pix0]; + if (decode_specials) { + pix0 = decode_denise_specials(pix0); + } uae_u8 val0 = dpf_lookup[pix0]; dpix_val0 = denise_colors.acolors[val0]; } last_bpl_pix = pix0; } - shiftbpl2(); - internal_pixel_cnt += 2; - uae_u8 pix1 = 0; - uae_u32 dpix_val1 = BLANK_COLOR; - if (!denise_blank_active) { - dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = getbpl2(); - clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - dpix_val1 = denise_colors.acolors[val1]; + shiftbpl5(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_lores(); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; } - last_bpl_pix = pix1; } - shiftbpl2(); - internal_pixel_cnt += 2; + internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } uae_u32 t0 = 0; if (!extblank) { t0 = dpix_val0; @@ -4099,11 +3448,8 @@ static void lts_ecs_fm0_dpf1_p2_ihires_dlores(void) *buf1++ = t0; *buf2++ = t0; } - if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { - copybpl2e(); - } - if (bpldat_copy[1] && (denise_hcounter_cmp & 7) == bplcon1_shift[1]) { - copybpl2o(); + if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { + copybpl5(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -4127,7 +3473,11 @@ static void lts_ecs_fm0_dpf1_p2_ihires_dlores(void) denise_cck++; } } -static void lts_ecs_fm0_dpf1_p2_ihires_dlores_filtered(void) +static void lts_ecs_fm0_dpf0_p5_ilores_dlores_spr_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_dpf1_p5_ilores_dlores_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -4138,36 +3488,39 @@ static void lts_ecs_fm0_dpf1_p2_ihires_dlores_filtered(void) } int cnt = denise_hcounter << 2; if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl2(); + pix0 = getbpl5(); clxdat |= bplcoltable[pix0]; + if (decode_specials) { + pix0 = decode_denise_specials(pix0); + } uae_u8 val0 = dpf_lookup[pix0]; dpix_val0 = denise_colors.acolors[val0]; } last_bpl_pix = pix0; } - shiftbpl2(); - internal_pixel_cnt += 2; - uae_u8 pix1 = 0; - uae_u32 dpix_val1 = BLANK_COLOR; - if (!denise_blank_active) { - dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = getbpl2(); - clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - dpix_val1 = denise_colors.acolors[val1]; + shiftbpl5(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_lores(); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; } - last_bpl_pix = pix1; } - shiftbpl2(); - internal_pixel_cnt += 2; + internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } uae_u32 t0 = 0; if (!extblank) { t0 = dpix_val0; @@ -4180,11 +3533,11 @@ static void lts_ecs_fm0_dpf1_p2_ihires_dlores_filtered(void) *buf1++ = t0; *buf2++ = t0; } - if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { - copybpl2e(); + if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { + copybpl5e(); } - if (bpldat_copy[1] && (denise_hcounter_cmp & 7) == bplcon1_shift[1]) { - copybpl2o(); + if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) { + copybpl5o(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -4208,39 +3561,11 @@ static void lts_ecs_fm0_dpf1_p2_ihires_dlores_filtered(void) denise_cck++; } } -static void lts_ecs_fm0_ehb0_p2_ihires_dlores(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb0_p2_ihires_dlores_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb1_p2_ihires_dlores(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb1_p2_ihires_dlores_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham0_p2_ihires_dlores(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham0_p2_ihires_dlores_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham1_p2_ihires_dlores(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham1_p2_ihires_dlores_filtered(void) +static void lts_ecs_fm0_dpf1_p5_ilores_dlores_spr_filtered(void) { lts_null(); } -static void lts_ecs_fm0_n0_p4_ihires_dlores(void) +static void lts_ecs_fm0_ehb0_p5_ilores_dlores_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -4255,28 +3580,8 @@ static void lts_ecs_fm0_n0_p4_ihires_dlores(void) uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl4(); - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0]; - } - last_bpl_pix = pix0; - } - shiftbpl4(); - internal_pixel_cnt += 2; - uae_u8 pix1 = 0; - uae_u32 dpix_val1 = BLANK_COLOR; - if (!denise_blank_active) { - dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = getbpl4(); - clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1]; - } - last_bpl_pix = pix1; } - shiftbpl4(); - internal_pixel_cnt += 2; + internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { uae_u32 t0 = 0; if (!extblank) { @@ -4290,9 +3595,6 @@ static void lts_ecs_fm0_n0_p4_ihires_dlores(void) *buf1++ = t0; *buf2++ = t0; } - if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { - copybpl4(); - } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER *debug_dma_dhpos_odd = denise_hcounter; @@ -4315,7 +3617,11 @@ static void lts_ecs_fm0_n0_p4_ihires_dlores(void) denise_cck++; } } -static void lts_ecs_fm0_n0_p4_ihires_dlores_filtered(void) +static void lts_ecs_fm0_ehb0_p5_ilores_dlores_spr_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_ehb1_p5_ilores_dlores_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -4330,30 +3636,9 @@ static void lts_ecs_fm0_n0_p4_ihires_dlores_filtered(void) uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl4(); - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0]; - } - last_bpl_pix = pix0; - } - shiftbpl4(); - internal_pixel_cnt += 2; - uae_u8 pix1 = 0; - uae_u32 dpix_val1 = BLANK_COLOR; - if (!denise_blank_active) { - dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = getbpl4(); - clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1]; - } - last_bpl_pix = pix1; } - shiftbpl4(); - internal_pixel_cnt += 2; + internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - dpix_val0 = filter_pixel(dpix_val0, dpix_val1); uae_u32 t0 = 0; if (!extblank) { t0 = dpix_val0; @@ -4366,9 +3651,6 @@ static void lts_ecs_fm0_n0_p4_ihires_dlores_filtered(void) *buf1++ = t0; *buf2++ = t0; } - if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { - copybpl4(); - } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER *debug_dma_dhpos_odd = denise_hcounter; @@ -4391,7 +3673,11 @@ static void lts_ecs_fm0_n0_p4_ihires_dlores_filtered(void) denise_cck++; } } -static void lts_ecs_fm0_n1_p4_ihires_dlores(void) +static void lts_ecs_fm0_ehb1_p5_ilores_dlores_spr_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_ham0_p5_ilores_dlores_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -4402,33 +3688,38 @@ static void lts_ecs_fm0_n1_p4_ihires_dlores(void) } int cnt = denise_hcounter << 2; if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl4(); + pix0 = getbpl5(); clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0]; + if (decode_specials) { + pix0 = decode_denise_specials(pix0); + } + dpix_val0 = decode_ham_pixel(pix0); } last_bpl_pix = pix0; } - shiftbpl4(); - internal_pixel_cnt += 2; - uae_u8 pix1 = 0; - uae_u32 dpix_val1 = BLANK_COLOR; - if (!denise_blank_active) { - dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = getbpl4(); - clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1]; + shiftbpl5(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_lores(); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; } - last_bpl_pix = pix1; } - shiftbpl4(); - internal_pixel_cnt += 2; + internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } uae_u32 t0 = 0; if (!extblank) { t0 = dpix_val0; @@ -4441,11 +3732,8 @@ static void lts_ecs_fm0_n1_p4_ihires_dlores(void) *buf1++ = t0; *buf2++ = t0; } - if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { - copybpl4e(); - } - if (bpldat_copy[1] && (denise_hcounter_cmp & 7) == bplcon1_shift[1]) { - copybpl4o(); + if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { + copybpl5(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -4469,7 +3757,11 @@ static void lts_ecs_fm0_n1_p4_ihires_dlores(void) denise_cck++; } } -static void lts_ecs_fm0_n1_p4_ihires_dlores_filtered(void) +static void lts_ecs_fm0_ham0_p5_ilores_dlores_spr_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_ham1_p5_ilores_dlores_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -4480,34 +3772,38 @@ static void lts_ecs_fm0_n1_p4_ihires_dlores_filtered(void) } int cnt = denise_hcounter << 2; if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl4(); + pix0 = getbpl5(); clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0]; + if (decode_specials) { + pix0 = decode_denise_specials(pix0); + } + dpix_val0 = decode_ham_pixel(pix0); } last_bpl_pix = pix0; } - shiftbpl4(); - internal_pixel_cnt += 2; - uae_u8 pix1 = 0; - uae_u32 dpix_val1 = BLANK_COLOR; - if (!denise_blank_active) { - dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = getbpl4(); - clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1]; + shiftbpl5(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_lores(); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; } - last_bpl_pix = pix1; } - shiftbpl4(); - internal_pixel_cnt += 2; + internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } uae_u32 t0 = 0; if (!extblank) { t0 = dpix_val0; @@ -4520,11 +3816,11 @@ static void lts_ecs_fm0_n1_p4_ihires_dlores_filtered(void) *buf1++ = t0; *buf2++ = t0; } - if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { - copybpl4e(); + if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { + copybpl5e(); } - if (bpldat_copy[1] && (denise_hcounter_cmp & 7) == bplcon1_shift[1]) { - copybpl4o(); + if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) { + copybpl5o(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -4548,7 +3844,11 @@ static void lts_ecs_fm0_n1_p4_ihires_dlores_filtered(void) denise_cck++; } } -static void lts_ecs_fm0_dpf0_p4_ihires_dlores(void) +static void lts_ecs_fm0_ham1_p5_ilores_dlores_spr_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_n0_p6_ilores_dlores_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -4559,35 +3859,38 @@ static void lts_ecs_fm0_dpf0_p4_ihires_dlores(void) } int cnt = denise_hcounter << 2; if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl4(); + pix0 = getbpl6(); clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - dpix_val0 = denise_colors.acolors[val0]; + if (decode_specials) { + pix0 = decode_denise_specials(pix0); + } + dpix_val0 = denise_colors.acolors[pix0]; } last_bpl_pix = pix0; } - shiftbpl4(); - internal_pixel_cnt += 2; - uae_u8 pix1 = 0; - uae_u32 dpix_val1 = BLANK_COLOR; - if (!denise_blank_active) { - dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = getbpl4(); - clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - dpix_val1 = denise_colors.acolors[val1]; + shiftbpl6(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_lores(); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; } - last_bpl_pix = pix1; } - shiftbpl4(); - internal_pixel_cnt += 2; + internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } uae_u32 t0 = 0; if (!extblank) { t0 = dpix_val0; @@ -4600,8 +3903,8 @@ static void lts_ecs_fm0_dpf0_p4_ihires_dlores(void) *buf1++ = t0; *buf2++ = t0; } - if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { - copybpl4(); + if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { + copybpl6(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -4625,7 +3928,11 @@ static void lts_ecs_fm0_dpf0_p4_ihires_dlores(void) denise_cck++; } } -static void lts_ecs_fm0_dpf0_p4_ihires_dlores_filtered(void) +static void lts_ecs_fm0_n0_p6_ilores_dlores_spr_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_n1_p6_ilores_dlores_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -4636,36 +3943,38 @@ static void lts_ecs_fm0_dpf0_p4_ihires_dlores_filtered(void) } int cnt = denise_hcounter << 2; if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl4(); + pix0 = getbpl6(); clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - dpix_val0 = denise_colors.acolors[val0]; + if (decode_specials) { + pix0 = decode_denise_specials(pix0); + } + dpix_val0 = denise_colors.acolors[pix0]; } last_bpl_pix = pix0; } - shiftbpl4(); - internal_pixel_cnt += 2; - uae_u8 pix1 = 0; - uae_u32 dpix_val1 = BLANK_COLOR; - if (!denise_blank_active) { - dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = getbpl4(); - clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - dpix_val1 = denise_colors.acolors[val1]; + shiftbpl6(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_lores(); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; } - last_bpl_pix = pix1; } - shiftbpl4(); - internal_pixel_cnt += 2; + internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } uae_u32 t0 = 0; if (!extblank) { t0 = dpix_val0; @@ -4678,8 +3987,11 @@ static void lts_ecs_fm0_dpf0_p4_ihires_dlores_filtered(void) *buf1++ = t0; *buf2++ = t0; } - if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { - copybpl4(); + if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { + copybpl6e(); + } + if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) { + copybpl6o(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -4703,7 +4015,11 @@ static void lts_ecs_fm0_dpf0_p4_ihires_dlores_filtered(void) denise_cck++; } } -static void lts_ecs_fm0_dpf1_p4_ihires_dlores(void) +static void lts_ecs_fm0_n1_p6_ilores_dlores_spr_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_dpf0_p6_ilores_dlores_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -4714,35 +4030,39 @@ static void lts_ecs_fm0_dpf1_p4_ihires_dlores(void) } int cnt = denise_hcounter << 2; if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl4(); + pix0 = getbpl6(); clxdat |= bplcoltable[pix0]; + if (decode_specials) { + pix0 = decode_denise_specials(pix0); + } uae_u8 val0 = dpf_lookup[pix0]; dpix_val0 = denise_colors.acolors[val0]; } last_bpl_pix = pix0; } - shiftbpl4(); - internal_pixel_cnt += 2; - uae_u8 pix1 = 0; - uae_u32 dpix_val1 = BLANK_COLOR; - if (!denise_blank_active) { - dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = getbpl4(); - clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - dpix_val1 = denise_colors.acolors[val1]; + shiftbpl6(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_lores(); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; } - last_bpl_pix = pix1; } - shiftbpl4(); - internal_pixel_cnt += 2; + internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } uae_u32 t0 = 0; if (!extblank) { t0 = dpix_val0; @@ -4755,11 +4075,8 @@ static void lts_ecs_fm0_dpf1_p4_ihires_dlores(void) *buf1++ = t0; *buf2++ = t0; } - if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { - copybpl4e(); - } - if (bpldat_copy[1] && (denise_hcounter_cmp & 7) == bplcon1_shift[1]) { - copybpl4o(); + if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { + copybpl6(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -4783,7 +4100,11 @@ static void lts_ecs_fm0_dpf1_p4_ihires_dlores(void) denise_cck++; } } -static void lts_ecs_fm0_dpf1_p4_ihires_dlores_filtered(void) +static void lts_ecs_fm0_dpf0_p6_ilores_dlores_spr_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_dpf1_p6_ilores_dlores_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -4794,36 +4115,39 @@ static void lts_ecs_fm0_dpf1_p4_ihires_dlores_filtered(void) } int cnt = denise_hcounter << 2; if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl4(); + pix0 = getbpl6(); clxdat |= bplcoltable[pix0]; + if (decode_specials) { + pix0 = decode_denise_specials(pix0); + } uae_u8 val0 = dpf_lookup[pix0]; dpix_val0 = denise_colors.acolors[val0]; } last_bpl_pix = pix0; } - shiftbpl4(); - internal_pixel_cnt += 2; - uae_u8 pix1 = 0; - uae_u32 dpix_val1 = BLANK_COLOR; - if (!denise_blank_active) { - dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = getbpl4(); - clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - dpix_val1 = denise_colors.acolors[val1]; + shiftbpl6(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_lores(); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; } - last_bpl_pix = pix1; } - shiftbpl4(); - internal_pixel_cnt += 2; + internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } uae_u32 t0 = 0; if (!extblank) { t0 = dpix_val0; @@ -4836,11 +4160,11 @@ static void lts_ecs_fm0_dpf1_p4_ihires_dlores_filtered(void) *buf1++ = t0; *buf2++ = t0; } - if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { - copybpl4e(); + if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { + copybpl6e(); } - if (bpldat_copy[1] && (denise_hcounter_cmp & 7) == bplcon1_shift[1]) { - copybpl4o(); + if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) { + copybpl6o(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -4864,167 +4188,11 @@ static void lts_ecs_fm0_dpf1_p4_ihires_dlores_filtered(void) denise_cck++; } } -static void lts_ecs_fm0_ehb0_p4_ihires_dlores(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb0_p4_ihires_dlores_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb1_p4_ihires_dlores(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb1_p4_ihires_dlores_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham0_p4_ihires_dlores(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham0_p4_ihires_dlores_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham1_p4_ihires_dlores(void) +static void lts_ecs_fm0_dpf1_p6_ilores_dlores_spr_filtered(void) { lts_null(); } -static void lts_ecs_fm0_ham1_p4_ihires_dlores_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_n0_p5_ihires_dlores(void) -{ - lts_null(); -} -static void lts_ecs_fm0_n0_p5_ihires_dlores_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_n1_p5_ihires_dlores(void) -{ - lts_null(); -} -static void lts_ecs_fm0_n1_p5_ihires_dlores_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_dpf0_p5_ihires_dlores(void) -{ - lts_null(); -} -static void lts_ecs_fm0_dpf0_p5_ihires_dlores_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_dpf1_p5_ihires_dlores(void) -{ - lts_null(); -} -static void lts_ecs_fm0_dpf1_p5_ihires_dlores_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb0_p5_ihires_dlores(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb0_p5_ihires_dlores_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb1_p5_ihires_dlores(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb1_p5_ihires_dlores_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham0_p5_ihires_dlores(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham0_p5_ihires_dlores_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham1_p5_ihires_dlores(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham1_p5_ihires_dlores_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_n0_p6_ihires_dlores(void) -{ - lts_null(); -} -static void lts_ecs_fm0_n0_p6_ihires_dlores_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_n1_p6_ihires_dlores(void) -{ - lts_null(); -} -static void lts_ecs_fm0_n1_p6_ihires_dlores_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_dpf0_p6_ihires_dlores(void) -{ - lts_null(); -} -static void lts_ecs_fm0_dpf0_p6_ihires_dlores_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_dpf1_p6_ihires_dlores(void) -{ - lts_null(); -} -static void lts_ecs_fm0_dpf1_p6_ihires_dlores_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb0_p6_ihires_dlores(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb0_p6_ihires_dlores_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb1_p6_ihires_dlores(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb1_p6_ihires_dlores_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham0_p6_ihires_dlores(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham0_p6_ihires_dlores_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham1_p6_ihires_dlores(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham1_p6_ihires_dlores_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_n0_p2_ihires_dlores_spr(void) +static void lts_ecs_fm0_ehb0_p6_ilores_dlores_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -5041,13 +4209,21 @@ static void lts_ecs_fm0_n0_p2_ihires_dlores_spr(void) if (!denise_blank_active) { dpix_val0 = bordercolor; if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl2(); + pix0 = getbpl6(); clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0]; + if (decode_specials) { + pix0 = decode_denise_specials(pix0); + } + pix0 &= bplehb_mask; + if (pix0 <= 31) { + dpix_val0 = denise_colors.acolors[pix0]; + } else { + dpix_val0 = p_xcolors[(denise_colors.color_regs_ecs[pix0 - 32] >> 1) & 0x777]; + } } last_bpl_pix = pix0; } - shiftbpl2(); + shiftbpl6(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -5056,20 +4232,7 @@ static void lts_ecs_fm0_n0_p2_ihires_dlores_spr(void) sv0 = svt; } } - internal_pixel_cnt += 2; - uae_u8 pix1 = 0; - uae_u32 dpix_val1 = BLANK_COLOR; - if (!denise_blank_active) { - dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = getbpl2(); - clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1]; - } - last_bpl_pix = pix1; - } - shiftbpl2(); - internal_pixel_cnt += 2; + internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { uae_u32 spix0 = denise_render_sprites2(pix0, sv0); @@ -5089,8 +4252,8 @@ static void lts_ecs_fm0_n0_p2_ihires_dlores_spr(void) *buf1++ = t0; *buf2++ = t0; } - if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { - copybpl2(); + if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { + copybpl6(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -5114,7 +4277,11 @@ static void lts_ecs_fm0_n0_p2_ihires_dlores_spr(void) denise_cck++; } } -static void lts_ecs_fm0_n0_p2_ihires_dlores_spr_filtered(void) +static void lts_ecs_fm0_ehb0_p6_ilores_dlores_spr_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_ehb1_p6_ilores_dlores_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -5131,13 +4298,21 @@ static void lts_ecs_fm0_n0_p2_ihires_dlores_spr_filtered(void) if (!denise_blank_active) { dpix_val0 = bordercolor; if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl2(); + pix0 = getbpl6(); clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0]; + if (decode_specials) { + pix0 = decode_denise_specials(pix0); + } + pix0 &= bplehb_mask; + if (pix0 <= 31) { + dpix_val0 = denise_colors.acolors[pix0]; + } else { + dpix_val0 = p_xcolors[(denise_colors.color_regs_ecs[pix0 - 32] >> 1) & 0x777]; + } } last_bpl_pix = pix0; } - shiftbpl2(); + shiftbpl6(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -5146,27 +4321,12 @@ static void lts_ecs_fm0_n0_p2_ihires_dlores_spr_filtered(void) sv0 = svt; } } - internal_pixel_cnt += 2; - uae_u8 pix1 = 0; - uae_u32 dpix_val1 = BLANK_COLOR; - if (!denise_blank_active) { - dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = getbpl2(); - clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1]; - } - last_bpl_pix = pix1; - } - shiftbpl2(); - internal_pixel_cnt += 2; + internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - dpix_val0 = filter_pixel(dpix_val0, dpix_val1); if (sv0) { uae_u32 spix0 = denise_render_sprites2(pix0, sv0); if (spix0) { dpix_val0 = denise_colors.acolors[spix0]; - dpix_val1 = dpix_val0; } } uae_u32 t0 = 0; @@ -5181,8 +4341,11 @@ static void lts_ecs_fm0_n0_p2_ihires_dlores_spr_filtered(void) *buf1++ = t0; *buf2++ = t0; } - if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { - copybpl2(); + if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { + copybpl6e(); + } + if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) { + copybpl6o(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -5206,7 +4369,11 @@ static void lts_ecs_fm0_n0_p2_ihires_dlores_spr_filtered(void) denise_cck++; } } -static void lts_ecs_fm0_n1_p2_ihires_dlores_spr(void) +static void lts_ecs_fm0_ehb1_p6_ilores_dlores_spr_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_ham0_p6_ilores_dlores_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -5223,13 +4390,16 @@ static void lts_ecs_fm0_n1_p2_ihires_dlores_spr(void) if (!denise_blank_active) { dpix_val0 = bordercolor; if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl2(); + pix0 = getbpl6(); clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0]; + if (decode_specials) { + pix0 = decode_denise_specials(pix0); + } + dpix_val0 = decode_ham_pixel(pix0); } last_bpl_pix = pix0; } - shiftbpl2(); + shiftbpl6(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -5238,20 +4408,7 @@ static void lts_ecs_fm0_n1_p2_ihires_dlores_spr(void) sv0 = svt; } } - internal_pixel_cnt += 2; - uae_u8 pix1 = 0; - uae_u32 dpix_val1 = BLANK_COLOR; - if (!denise_blank_active) { - dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = getbpl2(); - clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1]; - } - last_bpl_pix = pix1; - } - shiftbpl2(); - internal_pixel_cnt += 2; + internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { uae_u32 spix0 = denise_render_sprites2(pix0, sv0); @@ -5271,11 +4428,8 @@ static void lts_ecs_fm0_n1_p2_ihires_dlores_spr(void) *buf1++ = t0; *buf2++ = t0; } - if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { - copybpl2e(); - } - if (bpldat_copy[1] && (denise_hcounter_cmp & 7) == bplcon1_shift[1]) { - copybpl2o(); + if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { + copybpl6(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -5299,7 +4453,11 @@ static void lts_ecs_fm0_n1_p2_ihires_dlores_spr(void) denise_cck++; } } -static void lts_ecs_fm0_n1_p2_ihires_dlores_spr_filtered(void) +static void lts_ecs_fm0_ham0_p6_ilores_dlores_spr_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_ham1_p6_ilores_dlores_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -5316,13 +4474,16 @@ static void lts_ecs_fm0_n1_p2_ihires_dlores_spr_filtered(void) if (!denise_blank_active) { dpix_val0 = bordercolor; if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl2(); + pix0 = getbpl6(); clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0]; - } - last_bpl_pix = pix0; - } - shiftbpl2(); + if (decode_specials) { + pix0 = decode_denise_specials(pix0); + } + dpix_val0 = decode_ham_pixel(pix0); + } + last_bpl_pix = pix0; + } + shiftbpl6(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -5331,27 +4492,12 @@ static void lts_ecs_fm0_n1_p2_ihires_dlores_spr_filtered(void) sv0 = svt; } } - internal_pixel_cnt += 2; - uae_u8 pix1 = 0; - uae_u32 dpix_val1 = BLANK_COLOR; - if (!denise_blank_active) { - dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = getbpl2(); - clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1]; - } - last_bpl_pix = pix1; - } - shiftbpl2(); - internal_pixel_cnt += 2; + internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - dpix_val0 = filter_pixel(dpix_val0, dpix_val1); if (sv0) { uae_u32 spix0 = denise_render_sprites2(pix0, sv0); if (spix0) { dpix_val0 = denise_colors.acolors[spix0]; - dpix_val1 = dpix_val0; } } uae_u32 t0 = 0; @@ -5366,11 +4512,11 @@ static void lts_ecs_fm0_n1_p2_ihires_dlores_spr_filtered(void) *buf1++ = t0; *buf2++ = t0; } - if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { - copybpl2e(); + if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { + copybpl6e(); } - if (bpldat_copy[1] && (denise_hcounter_cmp & 7) == bplcon1_shift[1]) { - copybpl2o(); + if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) { + copybpl6o(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -5394,7 +4540,11 @@ static void lts_ecs_fm0_n1_p2_ihires_dlores_spr_filtered(void) denise_cck++; } } -static void lts_ecs_fm0_dpf0_p2_ihires_dlores_spr(void) +static void lts_ecs_fm0_ham1_p6_ilores_dlores_spr_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_n0_p2_ihires_dlores(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -5405,7 +4555,6 @@ static void lts_ecs_fm0_dpf0_p2_ihires_dlores_spr(void) } int cnt = denise_hcounter << 2; if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -5413,20 +4562,11 @@ static void lts_ecs_fm0_dpf0_p2_ihires_dlores_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = getbpl2(); clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - dpix_val0 = denise_colors.acolors[val0]; + dpix_val0 = denise_colors.acolors[pix0]; } last_bpl_pix = pix0; } shiftbpl2(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_lores(); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } - } internal_pixel_cnt += 2; uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; @@ -5435,20 +4575,13 @@ static void lts_ecs_fm0_dpf0_p2_ihires_dlores_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix1 = getbpl2(); clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - dpix_val1 = denise_colors.acolors[val1]; + dpix_val1 = denise_colors.acolors[pix1]; } last_bpl_pix = pix1; } shiftbpl2(); internal_pixel_cnt += 2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - } - } uae_u32 t0 = 0; if (!extblank) { t0 = dpix_val0; @@ -5486,7 +4619,7 @@ static void lts_ecs_fm0_dpf0_p2_ihires_dlores_spr(void) denise_cck++; } } -static void lts_ecs_fm0_dpf0_p2_ihires_dlores_spr_filtered(void) +static void lts_ecs_fm0_n0_p2_ihires_dlores_filtered(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -5497,7 +4630,6 @@ static void lts_ecs_fm0_dpf0_p2_ihires_dlores_spr_filtered(void) } int cnt = denise_hcounter << 2; if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -5505,20 +4637,11 @@ static void lts_ecs_fm0_dpf0_p2_ihires_dlores_spr_filtered(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = getbpl2(); clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - dpix_val0 = denise_colors.acolors[val0]; + dpix_val0 = denise_colors.acolors[pix0]; } last_bpl_pix = pix0; } shiftbpl2(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_lores(); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } - } internal_pixel_cnt += 2; uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; @@ -5527,8 +4650,7 @@ static void lts_ecs_fm0_dpf0_p2_ihires_dlores_spr_filtered(void) if (denise_hdiw && bpl1dat_trigger) { pix1 = getbpl2(); clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - dpix_val1 = denise_colors.acolors[val1]; + dpix_val1 = denise_colors.acolors[pix1]; } last_bpl_pix = pix1; } @@ -5536,13 +4658,6 @@ static void lts_ecs_fm0_dpf0_p2_ihires_dlores_spr_filtered(void) internal_pixel_cnt += 2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dpix_val0 = filter_pixel(dpix_val0, dpix_val1); - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - dpix_val1 = dpix_val0; - } - } uae_u32 t0 = 0; if (!extblank) { t0 = dpix_val0; @@ -5580,7 +4695,7 @@ static void lts_ecs_fm0_dpf0_p2_ihires_dlores_spr_filtered(void) denise_cck++; } } -static void lts_ecs_fm0_dpf1_p2_ihires_dlores_spr(void) +static void lts_ecs_fm0_n1_p2_ihires_dlores(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -5591,7 +4706,6 @@ static void lts_ecs_fm0_dpf1_p2_ihires_dlores_spr(void) } int cnt = denise_hcounter << 2; if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -5599,20 +4713,11 @@ static void lts_ecs_fm0_dpf1_p2_ihires_dlores_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = getbpl2(); clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - dpix_val0 = denise_colors.acolors[val0]; + dpix_val0 = denise_colors.acolors[pix0]; } last_bpl_pix = pix0; } shiftbpl2(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_lores(); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } - } internal_pixel_cnt += 2; uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; @@ -5621,20 +4726,13 @@ static void lts_ecs_fm0_dpf1_p2_ihires_dlores_spr(void) if (denise_hdiw && bpl1dat_trigger) { pix1 = getbpl2(); clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - dpix_val1 = denise_colors.acolors[val1]; + dpix_val1 = denise_colors.acolors[pix1]; } last_bpl_pix = pix1; } shiftbpl2(); internal_pixel_cnt += 2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - } - } uae_u32 t0 = 0; if (!extblank) { t0 = dpix_val0; @@ -5675,7 +4773,7 @@ static void lts_ecs_fm0_dpf1_p2_ihires_dlores_spr(void) denise_cck++; } } -static void lts_ecs_fm0_dpf1_p2_ihires_dlores_spr_filtered(void) +static void lts_ecs_fm0_n1_p2_ihires_dlores_filtered(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -5686,7 +4784,6 @@ static void lts_ecs_fm0_dpf1_p2_ihires_dlores_spr_filtered(void) } int cnt = denise_hcounter << 2; if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -5694,20 +4791,11 @@ static void lts_ecs_fm0_dpf1_p2_ihires_dlores_spr_filtered(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = getbpl2(); clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - dpix_val0 = denise_colors.acolors[val0]; + dpix_val0 = denise_colors.acolors[pix0]; } last_bpl_pix = pix0; } shiftbpl2(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_lores(); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } - } internal_pixel_cnt += 2; uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; @@ -5716,8 +4804,7 @@ static void lts_ecs_fm0_dpf1_p2_ihires_dlores_spr_filtered(void) if (denise_hdiw && bpl1dat_trigger) { pix1 = getbpl2(); clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - dpix_val1 = denise_colors.acolors[val1]; + dpix_val1 = denise_colors.acolors[pix1]; } last_bpl_pix = pix1; } @@ -5725,13 +4812,6 @@ static void lts_ecs_fm0_dpf1_p2_ihires_dlores_spr_filtered(void) internal_pixel_cnt += 2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dpix_val0 = filter_pixel(dpix_val0, dpix_val1); - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - dpix_val1 = dpix_val0; - } - } uae_u32 t0 = 0; if (!extblank) { t0 = dpix_val0; @@ -5772,39 +4852,7 @@ static void lts_ecs_fm0_dpf1_p2_ihires_dlores_spr_filtered(void) denise_cck++; } } -static void lts_ecs_fm0_ehb0_p2_ihires_dlores_spr(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb0_p2_ihires_dlores_spr_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb1_p2_ihires_dlores_spr(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb1_p2_ihires_dlores_spr_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham0_p2_ihires_dlores_spr(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham0_p2_ihires_dlores_spr_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham1_p2_ihires_dlores_spr(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham1_p2_ihires_dlores_spr_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_n0_p4_ihires_dlores_spr(void) +static void lts_ecs_fm0_dpf0_p2_ihires_dlores(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -5815,48 +4863,35 @@ static void lts_ecs_fm0_n0_p4_ihires_dlores_spr(void) } int cnt = denise_hcounter << 2; if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl4(); + pix0 = getbpl2(); clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + dpix_val0 = denise_colors.acolors[val0]; } last_bpl_pix = pix0; } - shiftbpl4(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_lores(); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } - } + shiftbpl2(); internal_pixel_cnt += 2; uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; if (denise_hdiw && bpl1dat_trigger) { - pix1 = getbpl4(); + pix1 = getbpl2(); clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1]; + uae_u8 val1 = dpf_lookup[pix1]; + dpix_val1 = denise_colors.acolors[val1]; } last_bpl_pix = pix1; } - shiftbpl4(); + shiftbpl2(); internal_pixel_cnt += 2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - } - } uae_u32 t0 = 0; if (!extblank) { t0 = dpix_val0; @@ -5870,7 +4905,7 @@ static void lts_ecs_fm0_n0_p4_ihires_dlores_spr(void) *buf2++ = t0; } if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { - copybpl4(); + copybpl2(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -5894,7 +4929,7 @@ static void lts_ecs_fm0_n0_p4_ihires_dlores_spr(void) denise_cck++; } } -static void lts_ecs_fm0_n0_p4_ihires_dlores_spr_filtered(void) +static void lts_ecs_fm0_dpf0_p2_ihires_dlores_filtered(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -5905,50 +4940,36 @@ static void lts_ecs_fm0_n0_p4_ihires_dlores_spr_filtered(void) } int cnt = denise_hcounter << 2; if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl4(); + pix0 = getbpl2(); clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + dpix_val0 = denise_colors.acolors[val0]; } last_bpl_pix = pix0; } - shiftbpl4(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_lores(); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } - } + shiftbpl2(); internal_pixel_cnt += 2; uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; if (denise_hdiw && bpl1dat_trigger) { - pix1 = getbpl4(); + pix1 = getbpl2(); clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1]; + uae_u8 val1 = dpf_lookup[pix1]; + dpix_val1 = denise_colors.acolors[val1]; } last_bpl_pix = pix1; } - shiftbpl4(); + shiftbpl2(); internal_pixel_cnt += 2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dpix_val0 = filter_pixel(dpix_val0, dpix_val1); - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - dpix_val1 = dpix_val0; - } - } uae_u32 t0 = 0; if (!extblank) { t0 = dpix_val0; @@ -5962,7 +4983,7 @@ static void lts_ecs_fm0_n0_p4_ihires_dlores_spr_filtered(void) *buf2++ = t0; } if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { - copybpl4(); + copybpl2(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -5986,7 +5007,7 @@ static void lts_ecs_fm0_n0_p4_ihires_dlores_spr_filtered(void) denise_cck++; } } -static void lts_ecs_fm0_n1_p4_ihires_dlores_spr(void) +static void lts_ecs_fm0_dpf1_p2_ihires_dlores(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -5997,48 +5018,35 @@ static void lts_ecs_fm0_n1_p4_ihires_dlores_spr(void) } int cnt = denise_hcounter << 2; if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl4(); + pix0 = getbpl2(); clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + dpix_val0 = denise_colors.acolors[val0]; } last_bpl_pix = pix0; } - shiftbpl4(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_lores(); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } - } + shiftbpl2(); internal_pixel_cnt += 2; uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; if (denise_hdiw && bpl1dat_trigger) { - pix1 = getbpl4(); + pix1 = getbpl2(); clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1]; + uae_u8 val1 = dpf_lookup[pix1]; + dpix_val1 = denise_colors.acolors[val1]; } last_bpl_pix = pix1; } - shiftbpl4(); + shiftbpl2(); internal_pixel_cnt += 2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - } - } uae_u32 t0 = 0; if (!extblank) { t0 = dpix_val0; @@ -6052,10 +5060,10 @@ static void lts_ecs_fm0_n1_p4_ihires_dlores_spr(void) *buf2++ = t0; } if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { - copybpl4e(); + copybpl2e(); } if (bpldat_copy[1] && (denise_hcounter_cmp & 7) == bplcon1_shift[1]) { - copybpl4o(); + copybpl2o(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -6079,7 +5087,7 @@ static void lts_ecs_fm0_n1_p4_ihires_dlores_spr(void) denise_cck++; } } -static void lts_ecs_fm0_n1_p4_ihires_dlores_spr_filtered(void) +static void lts_ecs_fm0_dpf1_p2_ihires_dlores_filtered(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -6090,50 +5098,36 @@ static void lts_ecs_fm0_n1_p4_ihires_dlores_spr_filtered(void) } int cnt = denise_hcounter << 2; if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl4(); + pix0 = getbpl2(); clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + dpix_val0 = denise_colors.acolors[val0]; } last_bpl_pix = pix0; } - shiftbpl4(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_lores(); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } - } + shiftbpl2(); internal_pixel_cnt += 2; uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; if (denise_hdiw && bpl1dat_trigger) { - pix1 = getbpl4(); + pix1 = getbpl2(); clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1]; + uae_u8 val1 = dpf_lookup[pix1]; + dpix_val1 = denise_colors.acolors[val1]; } last_bpl_pix = pix1; } - shiftbpl4(); + shiftbpl2(); internal_pixel_cnt += 2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dpix_val0 = filter_pixel(dpix_val0, dpix_val1); - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - dpix_val1 = dpix_val0; - } - } uae_u32 t0 = 0; if (!extblank) { t0 = dpix_val0; @@ -6147,10 +5141,10 @@ static void lts_ecs_fm0_n1_p4_ihires_dlores_spr_filtered(void) *buf2++ = t0; } if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { - copybpl4e(); + copybpl2e(); } if (bpldat_copy[1] && (denise_hcounter_cmp & 7) == bplcon1_shift[1]) { - copybpl4o(); + copybpl2o(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -6174,7 +5168,7 @@ static void lts_ecs_fm0_n1_p4_ihires_dlores_spr_filtered(void) denise_cck++; } } -static void lts_ecs_fm0_dpf0_p4_ihires_dlores_spr(void) +static void lts_ecs_fm0_ehb0_p2_ihires_dlores(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -6185,50 +5179,19 @@ static void lts_ecs_fm0_dpf0_p4_ihires_dlores_spr(void) } int cnt = denise_hcounter << 2; if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl4(); - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; - } - shiftbpl4(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_lores(); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } } internal_pixel_cnt += 2; uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = getbpl4(); - clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - dpix_val1 = denise_colors.acolors[val1]; - } - last_bpl_pix = pix1; } - shiftbpl4(); internal_pixel_cnt += 2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - } - } uae_u32 t0 = 0; if (!extblank) { t0 = dpix_val0; @@ -6241,9 +5204,6 @@ static void lts_ecs_fm0_dpf0_p4_ihires_dlores_spr(void) *buf1++ = t0; *buf2++ = t0; } - if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { - copybpl4(); - } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER *debug_dma_dhpos_odd = denise_hcounter; @@ -6266,7 +5226,7 @@ static void lts_ecs_fm0_dpf0_p4_ihires_dlores_spr(void) denise_cck++; } } -static void lts_ecs_fm0_dpf0_p4_ihires_dlores_spr_filtered(void) +static void lts_ecs_fm0_ehb0_p2_ihires_dlores_filtered(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -6277,52 +5237,20 @@ static void lts_ecs_fm0_dpf0_p4_ihires_dlores_spr_filtered(void) } int cnt = denise_hcounter << 2; if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl4(); - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; - } - shiftbpl4(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_lores(); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } } internal_pixel_cnt += 2; uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = getbpl4(); - clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - dpix_val1 = denise_colors.acolors[val1]; - } - last_bpl_pix = pix1; } - shiftbpl4(); internal_pixel_cnt += 2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dpix_val0 = filter_pixel(dpix_val0, dpix_val1); - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - dpix_val1 = dpix_val0; - } - } uae_u32 t0 = 0; if (!extblank) { t0 = dpix_val0; @@ -6335,9 +5263,6 @@ static void lts_ecs_fm0_dpf0_p4_ihires_dlores_spr_filtered(void) *buf1++ = t0; *buf2++ = t0; } - if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { - copybpl4(); - } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER *debug_dma_dhpos_odd = denise_hcounter; @@ -6360,7 +5285,7 @@ static void lts_ecs_fm0_dpf0_p4_ihires_dlores_spr_filtered(void) denise_cck++; } } -static void lts_ecs_fm0_dpf1_p4_ihires_dlores_spr(void) +static void lts_ecs_fm0_ehb1_p2_ihires_dlores(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -6371,50 +5296,19 @@ static void lts_ecs_fm0_dpf1_p4_ihires_dlores_spr(void) } int cnt = denise_hcounter << 2; if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl4(); - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; - } - shiftbpl4(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_lores(); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } } internal_pixel_cnt += 2; uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = getbpl4(); - clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - dpix_val1 = denise_colors.acolors[val1]; - } - last_bpl_pix = pix1; } - shiftbpl4(); internal_pixel_cnt += 2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - } - } uae_u32 t0 = 0; if (!extblank) { t0 = dpix_val0; @@ -6427,12 +5321,6 @@ static void lts_ecs_fm0_dpf1_p4_ihires_dlores_spr(void) *buf1++ = t0; *buf2++ = t0; } - if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { - copybpl4e(); - } - if (bpldat_copy[1] && (denise_hcounter_cmp & 7) == bplcon1_shift[1]) { - copybpl4o(); - } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER *debug_dma_dhpos_odd = denise_hcounter; @@ -6455,7 +5343,7 @@ static void lts_ecs_fm0_dpf1_p4_ihires_dlores_spr(void) denise_cck++; } } -static void lts_ecs_fm0_dpf1_p4_ihires_dlores_spr_filtered(void) +static void lts_ecs_fm0_ehb1_p2_ihires_dlores_filtered(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -6466,52 +5354,20 @@ static void lts_ecs_fm0_dpf1_p4_ihires_dlores_spr_filtered(void) } int cnt = denise_hcounter << 2; if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl4(); - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; - } - shiftbpl4(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_lores(); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } } internal_pixel_cnt += 2; uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = getbpl4(); - clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - dpix_val1 = denise_colors.acolors[val1]; - } - last_bpl_pix = pix1; } - shiftbpl4(); internal_pixel_cnt += 2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dpix_val0 = filter_pixel(dpix_val0, dpix_val1); - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - dpix_val1 = dpix_val0; - } - } uae_u32 t0 = 0; if (!extblank) { t0 = dpix_val0; @@ -6524,11 +5380,63 @@ static void lts_ecs_fm0_dpf1_p4_ihires_dlores_spr_filtered(void) *buf1++ = t0; *buf2++ = t0; } - if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { - copybpl4e(); + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ham0_p2_ihires_dlores(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; } - if (bpldat_copy[1] && (denise_hcounter_cmp & 7) == bplcon1_shift[1]) { - copybpl4o(); + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -6552,167 +5460,7 @@ static void lts_ecs_fm0_dpf1_p4_ihires_dlores_spr_filtered(void) denise_cck++; } } -static void lts_ecs_fm0_ehb0_p4_ihires_dlores_spr(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb0_p4_ihires_dlores_spr_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb1_p4_ihires_dlores_spr(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb1_p4_ihires_dlores_spr_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham0_p4_ihires_dlores_spr(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham0_p4_ihires_dlores_spr_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham1_p4_ihires_dlores_spr(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham1_p4_ihires_dlores_spr_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_n0_p5_ihires_dlores_spr(void) -{ - lts_null(); -} -static void lts_ecs_fm0_n0_p5_ihires_dlores_spr_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_n1_p5_ihires_dlores_spr(void) -{ - lts_null(); -} -static void lts_ecs_fm0_n1_p5_ihires_dlores_spr_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_dpf0_p5_ihires_dlores_spr(void) -{ - lts_null(); -} -static void lts_ecs_fm0_dpf0_p5_ihires_dlores_spr_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_dpf1_p5_ihires_dlores_spr(void) -{ - lts_null(); -} -static void lts_ecs_fm0_dpf1_p5_ihires_dlores_spr_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb0_p5_ihires_dlores_spr(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb0_p5_ihires_dlores_spr_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb1_p5_ihires_dlores_spr(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb1_p5_ihires_dlores_spr_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham0_p5_ihires_dlores_spr(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham0_p5_ihires_dlores_spr_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham1_p5_ihires_dlores_spr(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham1_p5_ihires_dlores_spr_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_n0_p6_ihires_dlores_spr(void) -{ - lts_null(); -} -static void lts_ecs_fm0_n0_p6_ihires_dlores_spr_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_n1_p6_ihires_dlores_spr(void) -{ - lts_null(); -} -static void lts_ecs_fm0_n1_p6_ihires_dlores_spr_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_dpf0_p6_ihires_dlores_spr(void) -{ - lts_null(); -} -static void lts_ecs_fm0_dpf0_p6_ihires_dlores_spr_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_dpf1_p6_ihires_dlores_spr(void) -{ - lts_null(); -} -static void lts_ecs_fm0_dpf1_p6_ihires_dlores_spr_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb0_p6_ihires_dlores_spr(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb0_p6_ihires_dlores_spr_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb1_p6_ihires_dlores_spr(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb1_p6_ihires_dlores_spr_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham0_p6_ihires_dlores_spr(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham0_p6_ihires_dlores_spr_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham1_p6_ihires_dlores_spr(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham1_p6_ihires_dlores_spr_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_n0_p2_ilores_dhires(void) +static void lts_ecs_fm0_ham0_p2_ihires_dlores_filtered(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -6727,19 +5475,16 @@ static void lts_ecs_fm0_n0_p2_ilores_dhires(void) uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl2(); - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0]; - } - last_bpl_pix = pix0; } - shiftbpl2(); internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } internal_pixel_cnt += 2; - uae_u32 dpix_val1 = dpix_val0; - uae_u8 pix1 = pix0; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); uae_u32 t0 = 0; if (!extblank) { t0 = dpix_val0; @@ -6751,20 +5496,6 @@ static void lts_ecs_fm0_n0_p2_ilores_dhires(void) #endif *buf1++ = t0; *buf2++ = t0; - uae_u32 t1 = 0; - if (!extblank) { - t1 = dpix_val1; - } - #ifdef DEBUGGER - if (decode_specials_debug) { - t1 = decode_denise_specials_debug(t1, cnt + 2); - } - #endif - *buf1++ = t1; - *buf2++ = t1; - } - if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl2(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -6788,11 +5519,7 @@ static void lts_ecs_fm0_n0_p2_ilores_dhires(void) denise_cck++; } } -static void lts_ecs_fm0_n0_p2_ilores_dhires_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_n1_p2_ilores_dhires(void) +static void lts_ecs_fm0_ham1_p2_ihires_dlores(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -6807,18 +5534,14 @@ static void lts_ecs_fm0_n1_p2_ilores_dhires(void) uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl2(); - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0]; - } - last_bpl_pix = pix0; } - shiftbpl2(); internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } internal_pixel_cnt += 2; - uae_u32 dpix_val1 = dpix_val0; - uae_u8 pix1 = pix0; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { uae_u32 t0 = 0; if (!extblank) { @@ -6831,23 +5554,6 @@ static void lts_ecs_fm0_n1_p2_ilores_dhires(void) #endif *buf1++ = t0; *buf2++ = t0; - uae_u32 t1 = 0; - if (!extblank) { - t1 = dpix_val1; - } - #ifdef DEBUGGER - if (decode_specials_debug) { - t1 = decode_denise_specials_debug(t1, cnt + 2); - } - #endif - *buf1++ = t1; - *buf2++ = t1; - } - if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl2e(); - } - if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) { - copybpl2o(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -6871,11 +5577,7 @@ static void lts_ecs_fm0_n1_p2_ilores_dhires(void) denise_cck++; } } -static void lts_ecs_fm0_n1_p2_ilores_dhires_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_dpf0_p2_ilores_dhires(void) +static void lts_ecs_fm0_ham1_p2_ihires_dlores_filtered(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -6890,20 +5592,16 @@ static void lts_ecs_fm0_dpf0_p2_ilores_dhires(void) uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl2(); - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; } - shiftbpl2(); internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } internal_pixel_cnt += 2; - uae_u32 dpix_val1 = dpix_val0; - uae_u8 pix1 = pix0; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); uae_u32 t0 = 0; if (!extblank) { t0 = dpix_val0; @@ -6915,20 +5613,6 @@ static void lts_ecs_fm0_dpf0_p2_ilores_dhires(void) #endif *buf1++ = t0; *buf2++ = t0; - uae_u32 t1 = 0; - if (!extblank) { - t1 = dpix_val1; - } - #ifdef DEBUGGER - if (decode_specials_debug) { - t1 = decode_denise_specials_debug(t1, cnt + 2); - } - #endif - *buf1++ = t1; - *buf2++ = t1; - } - if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl2(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -6952,11 +5636,7 @@ static void lts_ecs_fm0_dpf0_p2_ilores_dhires(void) denise_cck++; } } -static void lts_ecs_fm0_dpf0_p2_ilores_dhires_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_dpf1_p2_ilores_dhires(void) +static void lts_ecs_fm0_n0_p4_ihires_dlores(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -6972,18 +5652,27 @@ static void lts_ecs_fm0_dpf1_p2_ilores_dhires(void) if (!denise_blank_active) { dpix_val0 = bordercolor; if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl2(); + pix0 = getbpl4(); clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - dpix_val0 = denise_colors.acolors[val0]; + dpix_val0 = denise_colors.acolors[pix0]; } last_bpl_pix = pix0; } - shiftbpl2(); + shiftbpl4(); internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = getbpl4(); + clxdat |= bplcoltable[pix1]; + dpix_val1 = denise_colors.acolors[pix1]; + } + last_bpl_pix = pix1; + } + shiftbpl4(); internal_pixel_cnt += 2; - uae_u32 dpix_val1 = dpix_val0; - uae_u8 pix1 = pix0; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { uae_u32 t0 = 0; if (!extblank) { @@ -6996,23 +5685,9 @@ static void lts_ecs_fm0_dpf1_p2_ilores_dhires(void) #endif *buf1++ = t0; *buf2++ = t0; - uae_u32 t1 = 0; - if (!extblank) { - t1 = dpix_val1; - } - #ifdef DEBUGGER - if (decode_specials_debug) { - t1 = decode_denise_specials_debug(t1, cnt + 2); - } - #endif - *buf1++ = t1; - *buf2++ = t1; - } - if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl2e(); } - if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) { - copybpl2o(); + if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { + copybpl4(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -7036,43 +5711,7 @@ static void lts_ecs_fm0_dpf1_p2_ilores_dhires(void) denise_cck++; } } -static void lts_ecs_fm0_dpf1_p2_ilores_dhires_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb0_p2_ilores_dhires(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb0_p2_ilores_dhires_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb1_p2_ilores_dhires(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb1_p2_ilores_dhires_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham0_p2_ilores_dhires(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham0_p2_ilores_dhires_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham1_p2_ilores_dhires(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham1_p2_ilores_dhires_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_n0_p4_ilores_dhires(void) +static void lts_ecs_fm0_n0_p4_ihires_dlores_filtered(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -7096,10 +5735,21 @@ static void lts_ecs_fm0_n0_p4_ilores_dhires(void) } shiftbpl4(); internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = getbpl4(); + clxdat |= bplcoltable[pix1]; + dpix_val1 = denise_colors.acolors[pix1]; + } + last_bpl_pix = pix1; + } + shiftbpl4(); internal_pixel_cnt += 2; - uae_u32 dpix_val1 = dpix_val0; - uae_u8 pix1 = pix0; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); uae_u32 t0 = 0; if (!extblank) { t0 = dpix_val0; @@ -7111,19 +5761,8 @@ static void lts_ecs_fm0_n0_p4_ilores_dhires(void) #endif *buf1++ = t0; *buf2++ = t0; - uae_u32 t1 = 0; - if (!extblank) { - t1 = dpix_val1; - } - #ifdef DEBUGGER - if (decode_specials_debug) { - t1 = decode_denise_specials_debug(t1, cnt + 2); - } - #endif - *buf1++ = t1; - *buf2++ = t1; } - if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { + if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { copybpl4(); } sprites_hidden = sprites_hidden2; @@ -7148,11 +5787,7 @@ static void lts_ecs_fm0_n0_p4_ilores_dhires(void) denise_cck++; } } -static void lts_ecs_fm0_n0_p4_ilores_dhires_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_n1_p4_ilores_dhires(void) +static void lts_ecs_fm0_n1_p4_ihires_dlores(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -7176,9 +5811,19 @@ static void lts_ecs_fm0_n1_p4_ilores_dhires(void) } shiftbpl4(); internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = getbpl4(); + clxdat |= bplcoltable[pix1]; + dpix_val1 = denise_colors.acolors[pix1]; + } + last_bpl_pix = pix1; + } + shiftbpl4(); internal_pixel_cnt += 2; - uae_u32 dpix_val1 = dpix_val0; - uae_u8 pix1 = pix0; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { uae_u32 t0 = 0; if (!extblank) { @@ -7191,22 +5836,11 @@ static void lts_ecs_fm0_n1_p4_ilores_dhires(void) #endif *buf1++ = t0; *buf2++ = t0; - uae_u32 t1 = 0; - if (!extblank) { - t1 = dpix_val1; - } - #ifdef DEBUGGER - if (decode_specials_debug) { - t1 = decode_denise_specials_debug(t1, cnt + 2); - } - #endif - *buf1++ = t1; - *buf2++ = t1; } - if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { + if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { copybpl4e(); } - if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) { + if (bpldat_copy[1] && (denise_hcounter_cmp & 7) == bplcon1_shift[1]) { copybpl4o(); } sprites_hidden = sprites_hidden2; @@ -7231,11 +5865,7 @@ static void lts_ecs_fm0_n1_p4_ilores_dhires(void) denise_cck++; } } -static void lts_ecs_fm0_n1_p4_ilores_dhires_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_dpf0_p4_ilores_dhires(void) +static void lts_ecs_fm0_n1_p4_ihires_dlores_filtered(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -7253,17 +5883,27 @@ static void lts_ecs_fm0_dpf0_p4_ilores_dhires(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = getbpl4(); clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - dpix_val0 = denise_colors.acolors[val0]; + dpix_val0 = denise_colors.acolors[pix0]; } last_bpl_pix = pix0; } shiftbpl4(); internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = getbpl4(); + clxdat |= bplcoltable[pix1]; + dpix_val1 = denise_colors.acolors[pix1]; + } + last_bpl_pix = pix1; + } + shiftbpl4(); internal_pixel_cnt += 2; - uae_u32 dpix_val1 = dpix_val0; - uae_u8 pix1 = pix0; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); uae_u32 t0 = 0; if (!extblank) { t0 = dpix_val0; @@ -7275,20 +5915,12 @@ static void lts_ecs_fm0_dpf0_p4_ilores_dhires(void) #endif *buf1++ = t0; *buf2++ = t0; - uae_u32 t1 = 0; - if (!extblank) { - t1 = dpix_val1; - } - #ifdef DEBUGGER - if (decode_specials_debug) { - t1 = decode_denise_specials_debug(t1, cnt + 2); - } - #endif - *buf1++ = t1; - *buf2++ = t1; } - if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl4(); + if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { + copybpl4e(); + } + if (bpldat_copy[1] && (denise_hcounter_cmp & 7) == bplcon1_shift[1]) { + copybpl4o(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -7312,11 +5944,7 @@ static void lts_ecs_fm0_dpf0_p4_ilores_dhires(void) denise_cck++; } } -static void lts_ecs_fm0_dpf0_p4_ilores_dhires_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_dpf1_p4_ilores_dhires(void) +static void lts_ecs_fm0_dpf0_p4_ihires_dlores(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -7341,9 +5969,20 @@ static void lts_ecs_fm0_dpf1_p4_ilores_dhires(void) } shiftbpl4(); internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = getbpl4(); + clxdat |= bplcoltable[pix1]; + uae_u8 val1 = dpf_lookup[pix1]; + dpix_val1 = denise_colors.acolors[val1]; + } + last_bpl_pix = pix1; + } + shiftbpl4(); internal_pixel_cnt += 2; - uae_u32 dpix_val1 = dpix_val0; - uae_u8 pix1 = pix0; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { uae_u32 t0 = 0; if (!extblank) { @@ -7356,23 +5995,9 @@ static void lts_ecs_fm0_dpf1_p4_ilores_dhires(void) #endif *buf1++ = t0; *buf2++ = t0; - uae_u32 t1 = 0; - if (!extblank) { - t1 = dpix_val1; - } - #ifdef DEBUGGER - if (decode_specials_debug) { - t1 = decode_denise_specials_debug(t1, cnt + 2); - } - #endif - *buf1++ = t1; - *buf2++ = t1; } - if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl4e(); - } - if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) { - copybpl4o(); + if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { + copybpl4(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -7396,43 +6021,7 @@ static void lts_ecs_fm0_dpf1_p4_ilores_dhires(void) denise_cck++; } } -static void lts_ecs_fm0_dpf1_p4_ilores_dhires_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb0_p4_ilores_dhires(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb0_p4_ilores_dhires_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb1_p4_ilores_dhires(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb1_p4_ilores_dhires_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham0_p4_ilores_dhires(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham0_p4_ilores_dhires_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham1_p4_ilores_dhires(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham1_p4_ilores_dhires_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_n0_p5_ilores_dhires(void) +static void lts_ecs_fm0_dpf0_p4_ihires_dlores_filtered(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -7448,21 +6037,31 @@ static void lts_ecs_fm0_n0_p5_ilores_dhires(void) if (!denise_blank_active) { dpix_val0 = bordercolor; if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl5(); + pix0 = getbpl4(); clxdat |= bplcoltable[pix0]; - if (decode_specials) { - pix0 = decode_denise_specials(pix0); - } - dpix_val0 = denise_colors.acolors[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + dpix_val0 = denise_colors.acolors[val0]; } last_bpl_pix = pix0; } - shiftbpl5(); + shiftbpl4(); internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = getbpl4(); + clxdat |= bplcoltable[pix1]; + uae_u8 val1 = dpf_lookup[pix1]; + dpix_val1 = denise_colors.acolors[val1]; + } + last_bpl_pix = pix1; + } + shiftbpl4(); internal_pixel_cnt += 2; - uae_u32 dpix_val1 = dpix_val0; - uae_u8 pix1 = pix0; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); uae_u32 t0 = 0; if (!extblank) { t0 = dpix_val0; @@ -7474,20 +6073,9 @@ static void lts_ecs_fm0_n0_p5_ilores_dhires(void) #endif *buf1++ = t0; *buf2++ = t0; - uae_u32 t1 = 0; - if (!extblank) { - t1 = dpix_val1; - } - #ifdef DEBUGGER - if (decode_specials_debug) { - t1 = decode_denise_specials_debug(t1, cnt + 2); - } - #endif - *buf1++ = t1; - *buf2++ = t1; } - if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl5(); + if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { + copybpl4(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -7511,11 +6099,7 @@ static void lts_ecs_fm0_n0_p5_ilores_dhires(void) denise_cck++; } } -static void lts_ecs_fm0_n0_p5_ilores_dhires_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_n1_p5_ilores_dhires(void) +static void lts_ecs_fm0_dpf1_p4_ihires_dlores(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -7531,20 +6115,29 @@ static void lts_ecs_fm0_n1_p5_ilores_dhires(void) if (!denise_blank_active) { dpix_val0 = bordercolor; if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl5(); + pix0 = getbpl4(); clxdat |= bplcoltable[pix0]; - if (decode_specials) { - pix0 = decode_denise_specials(pix0); - } - dpix_val0 = denise_colors.acolors[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + dpix_val0 = denise_colors.acolors[val0]; } last_bpl_pix = pix0; } - shiftbpl5(); + shiftbpl4(); internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = getbpl4(); + clxdat |= bplcoltable[pix1]; + uae_u8 val1 = dpf_lookup[pix1]; + dpix_val1 = denise_colors.acolors[val1]; + } + last_bpl_pix = pix1; + } + shiftbpl4(); internal_pixel_cnt += 2; - uae_u32 dpix_val1 = dpix_val0; - uae_u8 pix1 = pix0; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { uae_u32 t0 = 0; if (!extblank) { @@ -7557,23 +6150,12 @@ static void lts_ecs_fm0_n1_p5_ilores_dhires(void) #endif *buf1++ = t0; *buf2++ = t0; - uae_u32 t1 = 0; - if (!extblank) { - t1 = dpix_val1; - } - #ifdef DEBUGGER - if (decode_specials_debug) { - t1 = decode_denise_specials_debug(t1, cnt + 2); - } - #endif - *buf1++ = t1; - *buf2++ = t1; } - if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl5e(); + if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { + copybpl4e(); } - if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) { - copybpl5o(); + if (bpldat_copy[1] && (denise_hcounter_cmp & 7) == bplcon1_shift[1]) { + copybpl4o(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -7597,11 +6179,7 @@ static void lts_ecs_fm0_n1_p5_ilores_dhires(void) denise_cck++; } } -static void lts_ecs_fm0_n1_p5_ilores_dhires_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_dpf0_p5_ilores_dhires(void) +static void lts_ecs_fm0_dpf1_p4_ihires_dlores_filtered(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -7617,22 +6195,31 @@ static void lts_ecs_fm0_dpf0_p5_ilores_dhires(void) if (!denise_blank_active) { dpix_val0 = bordercolor; if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl5(); + pix0 = getbpl4(); clxdat |= bplcoltable[pix0]; - if (decode_specials) { - pix0 = decode_denise_specials(pix0); - } uae_u8 val0 = dpf_lookup[pix0]; dpix_val0 = denise_colors.acolors[val0]; } last_bpl_pix = pix0; } - shiftbpl5(); + shiftbpl4(); internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = getbpl4(); + clxdat |= bplcoltable[pix1]; + uae_u8 val1 = dpf_lookup[pix1]; + dpix_val1 = denise_colors.acolors[val1]; + } + last_bpl_pix = pix1; + } + shiftbpl4(); internal_pixel_cnt += 2; - uae_u32 dpix_val1 = dpix_val0; - uae_u8 pix1 = pix0; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); uae_u32 t0 = 0; if (!extblank) { t0 = dpix_val0; @@ -7644,20 +6231,12 @@ static void lts_ecs_fm0_dpf0_p5_ilores_dhires(void) #endif *buf1++ = t0; *buf2++ = t0; - uae_u32 t1 = 0; - if (!extblank) { - t1 = dpix_val1; - } - #ifdef DEBUGGER - if (decode_specials_debug) { - t1 = decode_denise_specials_debug(t1, cnt + 2); - } - #endif - *buf1++ = t1; - *buf2++ = t1; } - if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl5(); + if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { + copybpl4e(); + } + if (bpldat_copy[1] && (denise_hcounter_cmp & 7) == bplcon1_shift[1]) { + copybpl4o(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -7681,11 +6260,7 @@ static void lts_ecs_fm0_dpf0_p5_ilores_dhires(void) denise_cck++; } } -static void lts_ecs_fm0_dpf0_p5_ilores_dhires_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_dpf1_p5_ilores_dhires(void) +static void lts_ecs_fm0_ehb0_p4_ihires_dlores(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -7700,22 +6275,14 @@ static void lts_ecs_fm0_dpf1_p5_ilores_dhires(void) uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl5(); - clxdat |= bplcoltable[pix0]; - if (decode_specials) { - pix0 = decode_denise_specials(pix0); - } - uae_u8 val0 = dpf_lookup[pix0]; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; } - shiftbpl5(); internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } internal_pixel_cnt += 2; - uae_u32 dpix_val1 = dpix_val0; - uae_u8 pix1 = pix0; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { uae_u32 t0 = 0; if (!extblank) { @@ -7728,23 +6295,6 @@ static void lts_ecs_fm0_dpf1_p5_ilores_dhires(void) #endif *buf1++ = t0; *buf2++ = t0; - uae_u32 t1 = 0; - if (!extblank) { - t1 = dpix_val1; - } - #ifdef DEBUGGER - if (decode_specials_debug) { - t1 = decode_denise_specials_debug(t1, cnt + 2); - } - #endif - *buf1++ = t1; - *buf2++ = t1; - } - if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl5e(); - } - if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) { - copybpl5o(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -7768,27 +6318,7 @@ static void lts_ecs_fm0_dpf1_p5_ilores_dhires(void) denise_cck++; } } -static void lts_ecs_fm0_dpf1_p5_ilores_dhires_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb0_p5_ilores_dhires(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb0_p5_ilores_dhires_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb1_p5_ilores_dhires(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb1_p5_ilores_dhires_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham0_p5_ilores_dhires(void) +static void lts_ecs_fm0_ehb0_p4_ihires_dlores_filtered(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -7803,22 +6333,16 @@ static void lts_ecs_fm0_ham0_p5_ilores_dhires(void) uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl5(); - clxdat |= bplcoltable[pix0]; - if (decode_specials) { - pix0 = decode_denise_specials(pix0); - } - dpix_val0 = decode_ham_pixel(pix0); - } - last_bpl_pix = pix0; } - shiftbpl5(); internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } internal_pixel_cnt += 2; - uae_u32 dpix_val1 = dpix_val0; - uae_u8 pix1 = pix0; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); uae_u32 t0 = 0; if (!extblank) { t0 = dpix_val0; @@ -7830,20 +6354,6 @@ static void lts_ecs_fm0_ham0_p5_ilores_dhires(void) #endif *buf1++ = t0; *buf2++ = t0; - uae_u32 t1 = 0; - if (!extblank) { - t1 = dpix_val1; - } - #ifdef DEBUGGER - if (decode_specials_debug) { - t1 = decode_denise_specials_debug(t1, cnt + 2); - } - #endif - *buf1++ = t1; - *buf2++ = t1; - } - if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl5(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -7867,11 +6377,7 @@ static void lts_ecs_fm0_ham0_p5_ilores_dhires(void) denise_cck++; } } -static void lts_ecs_fm0_ham0_p5_ilores_dhires_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham1_p5_ilores_dhires(void) +static void lts_ecs_fm0_ehb1_p4_ihires_dlores(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -7886,21 +6392,14 @@ static void lts_ecs_fm0_ham1_p5_ilores_dhires(void) uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl5(); - clxdat |= bplcoltable[pix0]; - if (decode_specials) { - pix0 = decode_denise_specials(pix0); - } - dpix_val0 = decode_ham_pixel(pix0); - } - last_bpl_pix = pix0; } - shiftbpl5(); internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } internal_pixel_cnt += 2; - uae_u32 dpix_val1 = dpix_val0; - uae_u8 pix1 = pix0; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { uae_u32 t0 = 0; if (!extblank) { @@ -7913,23 +6412,6 @@ static void lts_ecs_fm0_ham1_p5_ilores_dhires(void) #endif *buf1++ = t0; *buf2++ = t0; - uae_u32 t1 = 0; - if (!extblank) { - t1 = dpix_val1; - } - #ifdef DEBUGGER - if (decode_specials_debug) { - t1 = decode_denise_specials_debug(t1, cnt + 2); - } - #endif - *buf1++ = t1; - *buf2++ = t1; - } - if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl5e(); - } - if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) { - copybpl5o(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -7953,11 +6435,7 @@ static void lts_ecs_fm0_ham1_p5_ilores_dhires(void) denise_cck++; } } -static void lts_ecs_fm0_ham1_p5_ilores_dhires_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_n0_p6_ilores_dhires(void) +static void lts_ecs_fm0_ehb1_p4_ihires_dlores_filtered(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -7972,22 +6450,16 @@ static void lts_ecs_fm0_n0_p6_ilores_dhires(void) uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl6(); - clxdat |= bplcoltable[pix0]; - if (decode_specials) { - pix0 = decode_denise_specials(pix0); - } - dpix_val0 = denise_colors.acolors[pix0]; - } - last_bpl_pix = pix0; } - shiftbpl6(); internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } internal_pixel_cnt += 2; - uae_u32 dpix_val1 = dpix_val0; - uae_u8 pix1 = pix0; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); uae_u32 t0 = 0; if (!extblank) { t0 = dpix_val0; @@ -7999,20 +6471,6 @@ static void lts_ecs_fm0_n0_p6_ilores_dhires(void) #endif *buf1++ = t0; *buf2++ = t0; - uae_u32 t1 = 0; - if (!extblank) { - t1 = dpix_val1; - } - #ifdef DEBUGGER - if (decode_specials_debug) { - t1 = decode_denise_specials_debug(t1, cnt + 2); - } - #endif - *buf1++ = t1; - *buf2++ = t1; - } - if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl6(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -8036,11 +6494,7 @@ static void lts_ecs_fm0_n0_p6_ilores_dhires(void) denise_cck++; } } -static void lts_ecs_fm0_n0_p6_ilores_dhires_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_n1_p6_ilores_dhires(void) +static void lts_ecs_fm0_ham0_p4_ihires_dlores(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -8055,21 +6509,14 @@ static void lts_ecs_fm0_n1_p6_ilores_dhires(void) uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl6(); - clxdat |= bplcoltable[pix0]; - if (decode_specials) { - pix0 = decode_denise_specials(pix0); - } - dpix_val0 = denise_colors.acolors[pix0]; - } - last_bpl_pix = pix0; } - shiftbpl6(); internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } internal_pixel_cnt += 2; - uae_u32 dpix_val1 = dpix_val0; - uae_u8 pix1 = pix0; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { uae_u32 t0 = 0; if (!extblank) { @@ -8082,23 +6529,6 @@ static void lts_ecs_fm0_n1_p6_ilores_dhires(void) #endif *buf1++ = t0; *buf2++ = t0; - uae_u32 t1 = 0; - if (!extblank) { - t1 = dpix_val1; - } - #ifdef DEBUGGER - if (decode_specials_debug) { - t1 = decode_denise_specials_debug(t1, cnt + 2); - } - #endif - *buf1++ = t1; - *buf2++ = t1; - } - if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl6e(); - } - if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) { - copybpl6o(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -8122,11 +6552,7 @@ static void lts_ecs_fm0_n1_p6_ilores_dhires(void) denise_cck++; } } -static void lts_ecs_fm0_n1_p6_ilores_dhires_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_dpf0_p6_ilores_dhires(void) +static void lts_ecs_fm0_ham0_p4_ihires_dlores_filtered(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -8141,23 +6567,16 @@ static void lts_ecs_fm0_dpf0_p6_ilores_dhires(void) uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl6(); - clxdat |= bplcoltable[pix0]; - if (decode_specials) { - pix0 = decode_denise_specials(pix0); - } - uae_u8 val0 = dpf_lookup[pix0]; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; } - shiftbpl6(); internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } internal_pixel_cnt += 2; - uae_u32 dpix_val1 = dpix_val0; - uae_u8 pix1 = pix0; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); uae_u32 t0 = 0; if (!extblank) { t0 = dpix_val0; @@ -8169,20 +6588,6 @@ static void lts_ecs_fm0_dpf0_p6_ilores_dhires(void) #endif *buf1++ = t0; *buf2++ = t0; - uae_u32 t1 = 0; - if (!extblank) { - t1 = dpix_val1; - } - #ifdef DEBUGGER - if (decode_specials_debug) { - t1 = decode_denise_specials_debug(t1, cnt + 2); - } - #endif - *buf1++ = t1; - *buf2++ = t1; - } - if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl6(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -8206,11 +6611,7 @@ static void lts_ecs_fm0_dpf0_p6_ilores_dhires(void) denise_cck++; } } -static void lts_ecs_fm0_dpf0_p6_ilores_dhires_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_dpf1_p6_ilores_dhires(void) +static void lts_ecs_fm0_ham1_p4_ihires_dlores(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -8225,22 +6626,14 @@ static void lts_ecs_fm0_dpf1_p6_ilores_dhires(void) uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl6(); - clxdat |= bplcoltable[pix0]; - if (decode_specials) { - pix0 = decode_denise_specials(pix0); - } - uae_u8 val0 = dpf_lookup[pix0]; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; } - shiftbpl6(); internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } internal_pixel_cnt += 2; - uae_u32 dpix_val1 = dpix_val0; - uae_u8 pix1 = pix0; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { uae_u32 t0 = 0; if (!extblank) { @@ -8253,23 +6646,6 @@ static void lts_ecs_fm0_dpf1_p6_ilores_dhires(void) #endif *buf1++ = t0; *buf2++ = t0; - uae_u32 t1 = 0; - if (!extblank) { - t1 = dpix_val1; - } - #ifdef DEBUGGER - if (decode_specials_debug) { - t1 = decode_denise_specials_debug(t1, cnt + 2); - } - #endif - *buf1++ = t1; - *buf2++ = t1; - } - if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl6e(); - } - if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) { - copybpl6o(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -8293,11 +6669,7 @@ static void lts_ecs_fm0_dpf1_p6_ilores_dhires(void) denise_cck++; } } -static void lts_ecs_fm0_dpf1_p6_ilores_dhires_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb0_p6_ilores_dhires(void) +static void lts_ecs_fm0_ham1_p4_ihires_dlores_filtered(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -8312,27 +6684,16 @@ static void lts_ecs_fm0_ehb0_p6_ilores_dhires(void) uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl6(); - clxdat |= bplcoltable[pix0]; - if (decode_specials) { - pix0 = decode_denise_specials(pix0); - } - pix0 &= bplehb_mask; - if (pix0 <= 31) { - dpix_val0 = denise_colors.acolors[pix0]; - } else { - dpix_val0 = p_xcolors[(denise_colors.color_regs_ecs[pix0 - 32] >> 1) & 0x777]; - } - } - last_bpl_pix = pix0; } - shiftbpl6(); internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } internal_pixel_cnt += 2; - uae_u32 dpix_val1 = dpix_val0; - uae_u8 pix1 = pix0; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); uae_u32 t0 = 0; if (!extblank) { t0 = dpix_val0; @@ -8344,20 +6705,6 @@ static void lts_ecs_fm0_ehb0_p6_ilores_dhires(void) #endif *buf1++ = t0; *buf2++ = t0; - uae_u32 t1 = 0; - if (!extblank) { - t1 = dpix_val1; - } - #ifdef DEBUGGER - if (decode_specials_debug) { - t1 = decode_denise_specials_debug(t1, cnt + 2); - } - #endif - *buf1++ = t1; - *buf2++ = t1; - } - if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl6(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -8381,11 +6728,7 @@ static void lts_ecs_fm0_ehb0_p6_ilores_dhires(void) denise_cck++; } } -static void lts_ecs_fm0_ehb0_p6_ilores_dhires_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb1_p6_ilores_dhires(void) +static void lts_ecs_fm0_n0_p5_ihires_dlores(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -8400,27 +6743,15 @@ static void lts_ecs_fm0_ehb1_p6_ilores_dhires(void) uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl6(); - clxdat |= bplcoltable[pix0]; - if (decode_specials) { - pix0 = decode_denise_specials(pix0); - } - pix0 &= bplehb_mask; - if (pix0 <= 31) { - dpix_val0 = denise_colors.acolors[pix0]; - } else { - dpix_val0 = p_xcolors[(denise_colors.color_regs_ecs[pix0 - 32] >> 1) & 0x777]; - } - } - last_bpl_pix = pix0; } - shiftbpl6(); internal_pixel_cnt += 2; - internal_pixel_cnt += 2; - uae_u32 dpix_val1 = dpix_val0; - uae_u8 pix1 = pix0; - if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { uae_u32 t0 = 0; if (!extblank) { t0 = dpix_val0; @@ -8432,23 +6763,6 @@ static void lts_ecs_fm0_ehb1_p6_ilores_dhires(void) #endif *buf1++ = t0; *buf2++ = t0; - uae_u32 t1 = 0; - if (!extblank) { - t1 = dpix_val1; - } - #ifdef DEBUGGER - if (decode_specials_debug) { - t1 = decode_denise_specials_debug(t1, cnt + 2); - } - #endif - *buf1++ = t1; - *buf2++ = t1; - } - if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl6e(); - } - if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) { - copybpl6o(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -8472,11 +6786,7 @@ static void lts_ecs_fm0_ehb1_p6_ilores_dhires(void) denise_cck++; } } -static void lts_ecs_fm0_ehb1_p6_ilores_dhires_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham0_p6_ilores_dhires(void) +static void lts_ecs_fm0_n0_p5_ihires_dlores_filtered(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -8491,22 +6801,16 @@ static void lts_ecs_fm0_ham0_p6_ilores_dhires(void) uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl6(); - clxdat |= bplcoltable[pix0]; - if (decode_specials) { - pix0 = decode_denise_specials(pix0); - } - dpix_val0 = decode_ham_pixel(pix0); - } - last_bpl_pix = pix0; } - shiftbpl6(); internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } internal_pixel_cnt += 2; - uae_u32 dpix_val1 = dpix_val0; - uae_u8 pix1 = pix0; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); uae_u32 t0 = 0; if (!extblank) { t0 = dpix_val0; @@ -8518,20 +6822,6 @@ static void lts_ecs_fm0_ham0_p6_ilores_dhires(void) #endif *buf1++ = t0; *buf2++ = t0; - uae_u32 t1 = 0; - if (!extblank) { - t1 = dpix_val1; - } - #ifdef DEBUGGER - if (decode_specials_debug) { - t1 = decode_denise_specials_debug(t1, cnt + 2); - } - #endif - *buf1++ = t1; - *buf2++ = t1; - } - if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl6(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -8555,11 +6845,7 @@ static void lts_ecs_fm0_ham0_p6_ilores_dhires(void) denise_cck++; } } -static void lts_ecs_fm0_ham0_p6_ilores_dhires_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham1_p6_ilores_dhires(void) +static void lts_ecs_fm0_n1_p5_ihires_dlores(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -8574,21 +6860,14 @@ static void lts_ecs_fm0_ham1_p6_ilores_dhires(void) uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl6(); - clxdat |= bplcoltable[pix0]; - if (decode_specials) { - pix0 = decode_denise_specials(pix0); - } - dpix_val0 = decode_ham_pixel(pix0); - } - last_bpl_pix = pix0; } - shiftbpl6(); internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } internal_pixel_cnt += 2; - uae_u32 dpix_val1 = dpix_val0; - uae_u8 pix1 = pix0; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { uae_u32 t0 = 0; if (!extblank) { @@ -8601,23 +6880,6 @@ static void lts_ecs_fm0_ham1_p6_ilores_dhires(void) #endif *buf1++ = t0; *buf2++ = t0; - uae_u32 t1 = 0; - if (!extblank) { - t1 = dpix_val1; - } - #ifdef DEBUGGER - if (decode_specials_debug) { - t1 = decode_denise_specials_debug(t1, cnt + 2); - } - #endif - *buf1++ = t1; - *buf2++ = t1; - } - if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl6e(); - } - if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) { - copybpl6o(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -8641,11 +6903,7 @@ static void lts_ecs_fm0_ham1_p6_ilores_dhires(void) denise_cck++; } } -static void lts_ecs_fm0_ham1_p6_ilores_dhires_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_n0_p2_ilores_dhires_spr(void) +static void lts_ecs_fm0_n1_p5_ihires_dlores_filtered(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -8656,39 +6914,20 @@ static void lts_ecs_fm0_n0_p2_ilores_dhires_spr(void) } int cnt = denise_hcounter << 2; if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl2(); - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0]; - } - last_bpl_pix = pix0; - } - shiftbpl2(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_lores(); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } } internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } internal_pixel_cnt += 2; - uae_u32 dpix_val1 = dpix_val0; - uae_u8 pix1 = pix0; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - dpix_val1 = dpix_val0; - } - } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); uae_u32 t0 = 0; if (!extblank) { t0 = dpix_val0; @@ -8700,20 +6939,6 @@ static void lts_ecs_fm0_n0_p2_ilores_dhires_spr(void) #endif *buf1++ = t0; *buf2++ = t0; - uae_u32 t1 = 0; - if (!extblank) { - t1 = dpix_val1; - } - #ifdef DEBUGGER - if (decode_specials_debug) { - t1 = decode_denise_specials_debug(t1, cnt + 2); - } - #endif - *buf1++ = t1; - *buf2++ = t1; - } - if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl2(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -8737,11 +6962,7 @@ static void lts_ecs_fm0_n0_p2_ilores_dhires_spr(void) denise_cck++; } } -static void lts_ecs_fm0_n0_p2_ilores_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_n1_p2_ilores_dhires_spr(void) +static void lts_ecs_fm0_dpf0_p5_ihires_dlores(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -8752,39 +6973,19 @@ static void lts_ecs_fm0_n1_p2_ilores_dhires_spr(void) } int cnt = denise_hcounter << 2; if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl2(); - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0]; - } - last_bpl_pix = pix0; - } - shiftbpl2(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_lores(); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } } internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } internal_pixel_cnt += 2; - uae_u32 dpix_val1 = dpix_val0; - uae_u8 pix1 = pix0; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - dpix_val1 = dpix_val0; - } - } uae_u32 t0 = 0; if (!extblank) { t0 = dpix_val0; @@ -8796,23 +6997,6 @@ static void lts_ecs_fm0_n1_p2_ilores_dhires_spr(void) #endif *buf1++ = t0; *buf2++ = t0; - uae_u32 t1 = 0; - if (!extblank) { - t1 = dpix_val1; - } - #ifdef DEBUGGER - if (decode_specials_debug) { - t1 = decode_denise_specials_debug(t1, cnt + 2); - } - #endif - *buf1++ = t1; - *buf2++ = t1; - } - if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl2e(); - } - if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) { - copybpl2o(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -8836,11 +7020,7 @@ static void lts_ecs_fm0_n1_p2_ilores_dhires_spr(void) denise_cck++; } } -static void lts_ecs_fm0_n1_p2_ilores_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_dpf0_p2_ilores_dhires_spr(void) +static void lts_ecs_fm0_dpf0_p5_ihires_dlores_filtered(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -8851,40 +7031,20 @@ static void lts_ecs_fm0_dpf0_p2_ilores_dhires_spr(void) } int cnt = denise_hcounter << 2; if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl2(); - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; - } - shiftbpl2(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_lores(); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } } internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } internal_pixel_cnt += 2; - uae_u32 dpix_val1 = dpix_val0; - uae_u8 pix1 = pix0; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - dpix_val1 = dpix_val0; - } - } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); uae_u32 t0 = 0; if (!extblank) { t0 = dpix_val0; @@ -8896,20 +7056,6 @@ static void lts_ecs_fm0_dpf0_p2_ilores_dhires_spr(void) #endif *buf1++ = t0; *buf2++ = t0; - uae_u32 t1 = 0; - if (!extblank) { - t1 = dpix_val1; - } - #ifdef DEBUGGER - if (decode_specials_debug) { - t1 = decode_denise_specials_debug(t1, cnt + 2); - } - #endif - *buf1++ = t1; - *buf2++ = t1; - } - if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl2(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -8933,11 +7079,7 @@ static void lts_ecs_fm0_dpf0_p2_ilores_dhires_spr(void) denise_cck++; } } -static void lts_ecs_fm0_dpf0_p2_ilores_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_dpf1_p2_ilores_dhires_spr(void) +static void lts_ecs_fm0_dpf1_p5_ihires_dlores(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -8948,40 +7090,19 @@ static void lts_ecs_fm0_dpf1_p2_ilores_dhires_spr(void) } int cnt = denise_hcounter << 2; if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl2(); - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; - } - shiftbpl2(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_lores(); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } } internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } internal_pixel_cnt += 2; - uae_u32 dpix_val1 = dpix_val0; - uae_u8 pix1 = pix0; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - dpix_val1 = dpix_val0; - } - } uae_u32 t0 = 0; if (!extblank) { t0 = dpix_val0; @@ -8993,23 +7114,6 @@ static void lts_ecs_fm0_dpf1_p2_ilores_dhires_spr(void) #endif *buf1++ = t0; *buf2++ = t0; - uae_u32 t1 = 0; - if (!extblank) { - t1 = dpix_val1; - } - #ifdef DEBUGGER - if (decode_specials_debug) { - t1 = decode_denise_specials_debug(t1, cnt + 2); - } - #endif - *buf1++ = t1; - *buf2++ = t1; - } - if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl2e(); - } - if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) { - copybpl2o(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -9033,43 +7137,7 @@ static void lts_ecs_fm0_dpf1_p2_ilores_dhires_spr(void) denise_cck++; } } -static void lts_ecs_fm0_dpf1_p2_ilores_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb0_p2_ilores_dhires_spr(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb0_p2_ilores_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb1_p2_ilores_dhires_spr(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb1_p2_ilores_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham0_p2_ilores_dhires_spr(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham0_p2_ilores_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham1_p2_ilores_dhires_spr(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham1_p2_ilores_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_n0_p4_ilores_dhires_spr(void) +static void lts_ecs_fm0_dpf1_p5_ihires_dlores_filtered(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -9080,39 +7148,20 @@ static void lts_ecs_fm0_n0_p4_ilores_dhires_spr(void) } int cnt = denise_hcounter << 2; if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl4(); - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0]; - } - last_bpl_pix = pix0; - } - shiftbpl4(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_lores(); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } } internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } internal_pixel_cnt += 2; - uae_u32 dpix_val1 = dpix_val0; - uae_u8 pix1 = pix0; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - dpix_val1 = dpix_val0; - } - } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); uae_u32 t0 = 0; if (!extblank) { t0 = dpix_val0; @@ -9124,20 +7173,6 @@ static void lts_ecs_fm0_n0_p4_ilores_dhires_spr(void) #endif *buf1++ = t0; *buf2++ = t0; - uae_u32 t1 = 0; - if (!extblank) { - t1 = dpix_val1; - } - #ifdef DEBUGGER - if (decode_specials_debug) { - t1 = decode_denise_specials_debug(t1, cnt + 2); - } - #endif - *buf1++ = t1; - *buf2++ = t1; - } - if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl4(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -9161,11 +7196,7 @@ static void lts_ecs_fm0_n0_p4_ilores_dhires_spr(void) denise_cck++; } } -static void lts_ecs_fm0_n0_p4_ilores_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_n1_p4_ilores_dhires_spr(void) +static void lts_ecs_fm0_ehb0_p5_ihires_dlores(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -9176,39 +7207,19 @@ static void lts_ecs_fm0_n1_p4_ilores_dhires_spr(void) } int cnt = denise_hcounter << 2; if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl4(); - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0]; - } - last_bpl_pix = pix0; - } - shiftbpl4(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_lores(); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } } internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } internal_pixel_cnt += 2; - uae_u32 dpix_val1 = dpix_val0; - uae_u8 pix1 = pix0; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - dpix_val1 = dpix_val0; - } - } uae_u32 t0 = 0; if (!extblank) { t0 = dpix_val0; @@ -9220,23 +7231,6 @@ static void lts_ecs_fm0_n1_p4_ilores_dhires_spr(void) #endif *buf1++ = t0; *buf2++ = t0; - uae_u32 t1 = 0; - if (!extblank) { - t1 = dpix_val1; - } - #ifdef DEBUGGER - if (decode_specials_debug) { - t1 = decode_denise_specials_debug(t1, cnt + 2); - } - #endif - *buf1++ = t1; - *buf2++ = t1; - } - if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl4e(); - } - if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) { - copybpl4o(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -9260,11 +7254,7 @@ static void lts_ecs_fm0_n1_p4_ilores_dhires_spr(void) denise_cck++; } } -static void lts_ecs_fm0_n1_p4_ilores_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_dpf0_p4_ilores_dhires_spr(void) +static void lts_ecs_fm0_ehb0_p5_ihires_dlores_filtered(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -9275,40 +7265,20 @@ static void lts_ecs_fm0_dpf0_p4_ilores_dhires_spr(void) } int cnt = denise_hcounter << 2; if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl4(); - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; - } - shiftbpl4(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_lores(); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } } internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } internal_pixel_cnt += 2; - uae_u32 dpix_val1 = dpix_val0; - uae_u8 pix1 = pix0; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - dpix_val1 = dpix_val0; - } - } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); uae_u32 t0 = 0; if (!extblank) { t0 = dpix_val0; @@ -9320,20 +7290,6 @@ static void lts_ecs_fm0_dpf0_p4_ilores_dhires_spr(void) #endif *buf1++ = t0; *buf2++ = t0; - uae_u32 t1 = 0; - if (!extblank) { - t1 = dpix_val1; - } - #ifdef DEBUGGER - if (decode_specials_debug) { - t1 = decode_denise_specials_debug(t1, cnt + 2); - } - #endif - *buf1++ = t1; - *buf2++ = t1; - } - if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl4(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -9357,11 +7313,7 @@ static void lts_ecs_fm0_dpf0_p4_ilores_dhires_spr(void) denise_cck++; } } -static void lts_ecs_fm0_dpf0_p4_ilores_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_dpf1_p4_ilores_dhires_spr(void) +static void lts_ecs_fm0_ehb1_p5_ihires_dlores(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -9372,40 +7324,19 @@ static void lts_ecs_fm0_dpf1_p4_ilores_dhires_spr(void) } int cnt = denise_hcounter << 2; if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl4(); - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; - } - shiftbpl4(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_lores(); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } } internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } internal_pixel_cnt += 2; - uae_u32 dpix_val1 = dpix_val0; - uae_u8 pix1 = pix0; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - dpix_val1 = dpix_val0; - } - } uae_u32 t0 = 0; if (!extblank) { t0 = dpix_val0; @@ -9417,23 +7348,6 @@ static void lts_ecs_fm0_dpf1_p4_ilores_dhires_spr(void) #endif *buf1++ = t0; *buf2++ = t0; - uae_u32 t1 = 0; - if (!extblank) { - t1 = dpix_val1; - } - #ifdef DEBUGGER - if (decode_specials_debug) { - t1 = decode_denise_specials_debug(t1, cnt + 2); - } - #endif - *buf1++ = t1; - *buf2++ = t1; - } - if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl4e(); - } - if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) { - copybpl4o(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -9457,43 +7371,7 @@ static void lts_ecs_fm0_dpf1_p4_ilores_dhires_spr(void) denise_cck++; } } -static void lts_ecs_fm0_dpf1_p4_ilores_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb0_p4_ilores_dhires_spr(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb0_p4_ilores_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb1_p4_ilores_dhires_spr(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb1_p4_ilores_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham0_p4_ilores_dhires_spr(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham0_p4_ilores_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham1_p4_ilores_dhires_spr(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham1_p4_ilores_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_n0_p5_ilores_dhires_spr(void) +static void lts_ecs_fm0_ehb1_p5_ihires_dlores_filtered(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -9504,42 +7382,20 @@ static void lts_ecs_fm0_n0_p5_ilores_dhires_spr(void) } int cnt = denise_hcounter << 2; if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl5(); - clxdat |= bplcoltable[pix0]; - if (decode_specials) { - pix0 = decode_denise_specials(pix0); - } - dpix_val0 = denise_colors.acolors[pix0]; - } - last_bpl_pix = pix0; - } - shiftbpl5(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_lores(); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } } internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } internal_pixel_cnt += 2; - uae_u32 dpix_val1 = dpix_val0; - uae_u8 pix1 = pix0; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - dpix_val1 = dpix_val0; - } - } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); uae_u32 t0 = 0; if (!extblank) { t0 = dpix_val0; @@ -9551,20 +7407,6 @@ static void lts_ecs_fm0_n0_p5_ilores_dhires_spr(void) #endif *buf1++ = t0; *buf2++ = t0; - uae_u32 t1 = 0; - if (!extblank) { - t1 = dpix_val1; - } - #ifdef DEBUGGER - if (decode_specials_debug) { - t1 = decode_denise_specials_debug(t1, cnt + 2); - } - #endif - *buf1++ = t1; - *buf2++ = t1; - } - if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl5(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -9588,11 +7430,7 @@ static void lts_ecs_fm0_n0_p5_ilores_dhires_spr(void) denise_cck++; } } -static void lts_ecs_fm0_n0_p5_ilores_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_n1_p5_ilores_dhires_spr(void) +static void lts_ecs_fm0_ham0_p5_ihires_dlores(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -9603,42 +7441,19 @@ static void lts_ecs_fm0_n1_p5_ilores_dhires_spr(void) } int cnt = denise_hcounter << 2; if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl5(); - clxdat |= bplcoltable[pix0]; - if (decode_specials) { - pix0 = decode_denise_specials(pix0); - } - dpix_val0 = denise_colors.acolors[pix0]; - } - last_bpl_pix = pix0; - } - shiftbpl5(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_lores(); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } } internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } internal_pixel_cnt += 2; - uae_u32 dpix_val1 = dpix_val0; - uae_u8 pix1 = pix0; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - dpix_val1 = dpix_val0; - } - } uae_u32 t0 = 0; if (!extblank) { t0 = dpix_val0; @@ -9650,23 +7465,6 @@ static void lts_ecs_fm0_n1_p5_ilores_dhires_spr(void) #endif *buf1++ = t0; *buf2++ = t0; - uae_u32 t1 = 0; - if (!extblank) { - t1 = dpix_val1; - } - #ifdef DEBUGGER - if (decode_specials_debug) { - t1 = decode_denise_specials_debug(t1, cnt + 2); - } - #endif - *buf1++ = t1; - *buf2++ = t1; - } - if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl5e(); - } - if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) { - copybpl5o(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -9690,11 +7488,7 @@ static void lts_ecs_fm0_n1_p5_ilores_dhires_spr(void) denise_cck++; } } -static void lts_ecs_fm0_n1_p5_ilores_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_dpf0_p5_ilores_dhires_spr(void) +static void lts_ecs_fm0_ham0_p5_ihires_dlores_filtered(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -9705,43 +7499,20 @@ static void lts_ecs_fm0_dpf0_p5_ilores_dhires_spr(void) } int cnt = denise_hcounter << 2; if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl5(); - clxdat |= bplcoltable[pix0]; - if (decode_specials) { - pix0 = decode_denise_specials(pix0); - } - uae_u8 val0 = dpf_lookup[pix0]; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; - } - shiftbpl5(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_lores(); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } } internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } internal_pixel_cnt += 2; - uae_u32 dpix_val1 = dpix_val0; - uae_u8 pix1 = pix0; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - dpix_val1 = dpix_val0; - } - } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); uae_u32 t0 = 0; if (!extblank) { t0 = dpix_val0; @@ -9753,20 +7524,6 @@ static void lts_ecs_fm0_dpf0_p5_ilores_dhires_spr(void) #endif *buf1++ = t0; *buf2++ = t0; - uae_u32 t1 = 0; - if (!extblank) { - t1 = dpix_val1; - } - #ifdef DEBUGGER - if (decode_specials_debug) { - t1 = decode_denise_specials_debug(t1, cnt + 2); - } - #endif - *buf1++ = t1; - *buf2++ = t1; - } - if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl5(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -9790,11 +7547,7 @@ static void lts_ecs_fm0_dpf0_p5_ilores_dhires_spr(void) denise_cck++; } } -static void lts_ecs_fm0_dpf0_p5_ilores_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_dpf1_p5_ilores_dhires_spr(void) +static void lts_ecs_fm0_ham1_p5_ihires_dlores(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -9805,43 +7558,19 @@ static void lts_ecs_fm0_dpf1_p5_ilores_dhires_spr(void) } int cnt = denise_hcounter << 2; if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl5(); - clxdat |= bplcoltable[pix0]; - if (decode_specials) { - pix0 = decode_denise_specials(pix0); - } - uae_u8 val0 = dpf_lookup[pix0]; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; - } - shiftbpl5(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_lores(); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } } internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } internal_pixel_cnt += 2; - uae_u32 dpix_val1 = dpix_val0; - uae_u8 pix1 = pix0; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - dpix_val1 = dpix_val0; - } - } uae_u32 t0 = 0; if (!extblank) { t0 = dpix_val0; @@ -9853,23 +7582,6 @@ static void lts_ecs_fm0_dpf1_p5_ilores_dhires_spr(void) #endif *buf1++ = t0; *buf2++ = t0; - uae_u32 t1 = 0; - if (!extblank) { - t1 = dpix_val1; - } - #ifdef DEBUGGER - if (decode_specials_debug) { - t1 = decode_denise_specials_debug(t1, cnt + 2); - } - #endif - *buf1++ = t1; - *buf2++ = t1; - } - if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl5e(); - } - if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) { - copybpl5o(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -9893,27 +7605,7 @@ static void lts_ecs_fm0_dpf1_p5_ilores_dhires_spr(void) denise_cck++; } } -static void lts_ecs_fm0_dpf1_p5_ilores_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb0_p5_ilores_dhires_spr(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb0_p5_ilores_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb1_p5_ilores_dhires_spr(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb1_p5_ilores_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham0_p5_ilores_dhires_spr(void) +static void lts_ecs_fm0_ham1_p5_ihires_dlores_filtered(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -9924,42 +7616,20 @@ static void lts_ecs_fm0_ham0_p5_ilores_dhires_spr(void) } int cnt = denise_hcounter << 2; if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl5(); - clxdat |= bplcoltable[pix0]; - if (decode_specials) { - pix0 = decode_denise_specials(pix0); - } - dpix_val0 = decode_ham_pixel(pix0); - } - last_bpl_pix = pix0; - } - shiftbpl5(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_lores(); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } } internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } internal_pixel_cnt += 2; - uae_u32 dpix_val1 = dpix_val0; - uae_u8 pix1 = pix0; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - dpix_val1 = dpix_val0; - } - } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); uae_u32 t0 = 0; if (!extblank) { t0 = dpix_val0; @@ -9971,20 +7641,6 @@ static void lts_ecs_fm0_ham0_p5_ilores_dhires_spr(void) #endif *buf1++ = t0; *buf2++ = t0; - uae_u32 t1 = 0; - if (!extblank) { - t1 = dpix_val1; - } - #ifdef DEBUGGER - if (decode_specials_debug) { - t1 = decode_denise_specials_debug(t1, cnt + 2); - } - #endif - *buf1++ = t1; - *buf2++ = t1; - } - if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl5(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -10008,11 +7664,7 @@ static void lts_ecs_fm0_ham0_p5_ilores_dhires_spr(void) denise_cck++; } } -static void lts_ecs_fm0_ham0_p5_ilores_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham1_p5_ilores_dhires_spr(void) +static void lts_ecs_fm0_n0_p6_ihires_dlores(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -10023,42 +7675,19 @@ static void lts_ecs_fm0_ham1_p5_ilores_dhires_spr(void) } int cnt = denise_hcounter << 2; if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl5(); - clxdat |= bplcoltable[pix0]; - if (decode_specials) { - pix0 = decode_denise_specials(pix0); - } - dpix_val0 = decode_ham_pixel(pix0); - } - last_bpl_pix = pix0; - } - shiftbpl5(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_lores(); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } } internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } internal_pixel_cnt += 2; - uae_u32 dpix_val1 = dpix_val0; - uae_u8 pix1 = pix0; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - dpix_val1 = dpix_val0; - } - } uae_u32 t0 = 0; if (!extblank) { t0 = dpix_val0; @@ -10070,23 +7699,6 @@ static void lts_ecs_fm0_ham1_p5_ilores_dhires_spr(void) #endif *buf1++ = t0; *buf2++ = t0; - uae_u32 t1 = 0; - if (!extblank) { - t1 = dpix_val1; - } - #ifdef DEBUGGER - if (decode_specials_debug) { - t1 = decode_denise_specials_debug(t1, cnt + 2); - } - #endif - *buf1++ = t1; - *buf2++ = t1; - } - if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl5e(); - } - if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) { - copybpl5o(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -10110,11 +7722,7 @@ static void lts_ecs_fm0_ham1_p5_ilores_dhires_spr(void) denise_cck++; } } -static void lts_ecs_fm0_ham1_p5_ilores_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_n0_p6_ilores_dhires_spr(void) +static void lts_ecs_fm0_n0_p6_ihires_dlores_filtered(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -10125,42 +7733,20 @@ static void lts_ecs_fm0_n0_p6_ilores_dhires_spr(void) } int cnt = denise_hcounter << 2; if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl6(); - clxdat |= bplcoltable[pix0]; - if (decode_specials) { - pix0 = decode_denise_specials(pix0); - } - dpix_val0 = denise_colors.acolors[pix0]; - } - last_bpl_pix = pix0; - } - shiftbpl6(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_lores(); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } } internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } internal_pixel_cnt += 2; - uae_u32 dpix_val1 = dpix_val0; - uae_u8 pix1 = pix0; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - dpix_val1 = dpix_val0; - } - } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); uae_u32 t0 = 0; if (!extblank) { t0 = dpix_val0; @@ -10172,20 +7758,6 @@ static void lts_ecs_fm0_n0_p6_ilores_dhires_spr(void) #endif *buf1++ = t0; *buf2++ = t0; - uae_u32 t1 = 0; - if (!extblank) { - t1 = dpix_val1; - } - #ifdef DEBUGGER - if (decode_specials_debug) { - t1 = decode_denise_specials_debug(t1, cnt + 2); - } - #endif - *buf1++ = t1; - *buf2++ = t1; - } - if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl6(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -10209,11 +7781,7 @@ static void lts_ecs_fm0_n0_p6_ilores_dhires_spr(void) denise_cck++; } } -static void lts_ecs_fm0_n0_p6_ilores_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_n1_p6_ilores_dhires_spr(void) +static void lts_ecs_fm0_n1_p6_ihires_dlores(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -10224,42 +7792,19 @@ static void lts_ecs_fm0_n1_p6_ilores_dhires_spr(void) } int cnt = denise_hcounter << 2; if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl6(); - clxdat |= bplcoltable[pix0]; - if (decode_specials) { - pix0 = decode_denise_specials(pix0); - } - dpix_val0 = denise_colors.acolors[pix0]; - } - last_bpl_pix = pix0; - } - shiftbpl6(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_lores(); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } } internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } internal_pixel_cnt += 2; - uae_u32 dpix_val1 = dpix_val0; - uae_u8 pix1 = pix0; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - dpix_val1 = dpix_val0; - } - } uae_u32 t0 = 0; if (!extblank) { t0 = dpix_val0; @@ -10271,23 +7816,6 @@ static void lts_ecs_fm0_n1_p6_ilores_dhires_spr(void) #endif *buf1++ = t0; *buf2++ = t0; - uae_u32 t1 = 0; - if (!extblank) { - t1 = dpix_val1; - } - #ifdef DEBUGGER - if (decode_specials_debug) { - t1 = decode_denise_specials_debug(t1, cnt + 2); - } - #endif - *buf1++ = t1; - *buf2++ = t1; - } - if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl6e(); - } - if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) { - copybpl6o(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -10311,11 +7839,7 @@ static void lts_ecs_fm0_n1_p6_ilores_dhires_spr(void) denise_cck++; } } -static void lts_ecs_fm0_n1_p6_ilores_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_dpf0_p6_ilores_dhires_spr(void) +static void lts_ecs_fm0_n1_p6_ihires_dlores_filtered(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -10326,43 +7850,20 @@ static void lts_ecs_fm0_dpf0_p6_ilores_dhires_spr(void) } int cnt = denise_hcounter << 2; if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl6(); - clxdat |= bplcoltable[pix0]; - if (decode_specials) { - pix0 = decode_denise_specials(pix0); - } - uae_u8 val0 = dpf_lookup[pix0]; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; - } - shiftbpl6(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_lores(); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } } internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } internal_pixel_cnt += 2; - uae_u32 dpix_val1 = dpix_val0; - uae_u8 pix1 = pix0; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - dpix_val1 = dpix_val0; - } - } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); uae_u32 t0 = 0; if (!extblank) { t0 = dpix_val0; @@ -10374,20 +7875,6 @@ static void lts_ecs_fm0_dpf0_p6_ilores_dhires_spr(void) #endif *buf1++ = t0; *buf2++ = t0; - uae_u32 t1 = 0; - if (!extblank) { - t1 = dpix_val1; - } - #ifdef DEBUGGER - if (decode_specials_debug) { - t1 = decode_denise_specials_debug(t1, cnt + 2); - } - #endif - *buf1++ = t1; - *buf2++ = t1; - } - if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl6(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -10411,11 +7898,7 @@ static void lts_ecs_fm0_dpf0_p6_ilores_dhires_spr(void) denise_cck++; } } -static void lts_ecs_fm0_dpf0_p6_ilores_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_dpf1_p6_ilores_dhires_spr(void) +static void lts_ecs_fm0_dpf0_p6_ihires_dlores(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -10426,43 +7909,19 @@ static void lts_ecs_fm0_dpf1_p6_ilores_dhires_spr(void) } int cnt = denise_hcounter << 2; if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl6(); - clxdat |= bplcoltable[pix0]; - if (decode_specials) { - pix0 = decode_denise_specials(pix0); - } - uae_u8 val0 = dpf_lookup[pix0]; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; - } - shiftbpl6(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_lores(); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } } internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } internal_pixel_cnt += 2; - uae_u32 dpix_val1 = dpix_val0; - uae_u8 pix1 = pix0; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - dpix_val1 = dpix_val0; - } - } uae_u32 t0 = 0; if (!extblank) { t0 = dpix_val0; @@ -10474,23 +7933,6 @@ static void lts_ecs_fm0_dpf1_p6_ilores_dhires_spr(void) #endif *buf1++ = t0; *buf2++ = t0; - uae_u32 t1 = 0; - if (!extblank) { - t1 = dpix_val1; - } - #ifdef DEBUGGER - if (decode_specials_debug) { - t1 = decode_denise_specials_debug(t1, cnt + 2); - } - #endif - *buf1++ = t1; - *buf2++ = t1; - } - if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl6e(); - } - if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) { - copybpl6o(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -10514,11 +7956,7 @@ static void lts_ecs_fm0_dpf1_p6_ilores_dhires_spr(void) denise_cck++; } } -static void lts_ecs_fm0_dpf1_p6_ilores_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb0_p6_ilores_dhires_spr(void) +static void lts_ecs_fm0_dpf0_p6_ihires_dlores_filtered(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -10529,47 +7967,20 @@ static void lts_ecs_fm0_ehb0_p6_ilores_dhires_spr(void) } int cnt = denise_hcounter << 2; if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl6(); - clxdat |= bplcoltable[pix0]; - if (decode_specials) { - pix0 = decode_denise_specials(pix0); - } - pix0 &= bplehb_mask; - if (pix0 <= 31) { - dpix_val0 = denise_colors.acolors[pix0]; - } else { - dpix_val0 = p_xcolors[(denise_colors.color_regs_ecs[pix0 - 32] >> 1) & 0x777]; - } - } - last_bpl_pix = pix0; - } - shiftbpl6(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_lores(); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } } internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } internal_pixel_cnt += 2; - uae_u32 dpix_val1 = dpix_val0; - uae_u8 pix1 = pix0; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - dpix_val1 = dpix_val0; - } - } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); uae_u32 t0 = 0; if (!extblank) { t0 = dpix_val0; @@ -10581,20 +7992,6 @@ static void lts_ecs_fm0_ehb0_p6_ilores_dhires_spr(void) #endif *buf1++ = t0; *buf2++ = t0; - uae_u32 t1 = 0; - if (!extblank) { - t1 = dpix_val1; - } - #ifdef DEBUGGER - if (decode_specials_debug) { - t1 = decode_denise_specials_debug(t1, cnt + 2); - } - #endif - *buf1++ = t1; - *buf2++ = t1; - } - if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl6(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -10618,11 +8015,7 @@ static void lts_ecs_fm0_ehb0_p6_ilores_dhires_spr(void) denise_cck++; } } -static void lts_ecs_fm0_ehb0_p6_ilores_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb1_p6_ilores_dhires_spr(void) +static void lts_ecs_fm0_dpf1_p6_ihires_dlores(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -10633,47 +8026,19 @@ static void lts_ecs_fm0_ehb1_p6_ilores_dhires_spr(void) } int cnt = denise_hcounter << 2; if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl6(); - clxdat |= bplcoltable[pix0]; - if (decode_specials) { - pix0 = decode_denise_specials(pix0); - } - pix0 &= bplehb_mask; - if (pix0 <= 31) { - dpix_val0 = denise_colors.acolors[pix0]; - } else { - dpix_val0 = p_xcolors[(denise_colors.color_regs_ecs[pix0 - 32] >> 1) & 0x777]; - } - } - last_bpl_pix = pix0; - } - shiftbpl6(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_lores(); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } } internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } internal_pixel_cnt += 2; - uae_u32 dpix_val1 = dpix_val0; - uae_u8 pix1 = pix0; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - dpix_val1 = dpix_val0; - } - } uae_u32 t0 = 0; if (!extblank) { t0 = dpix_val0; @@ -10685,23 +8050,6 @@ static void lts_ecs_fm0_ehb1_p6_ilores_dhires_spr(void) #endif *buf1++ = t0; *buf2++ = t0; - uae_u32 t1 = 0; - if (!extblank) { - t1 = dpix_val1; - } - #ifdef DEBUGGER - if (decode_specials_debug) { - t1 = decode_denise_specials_debug(t1, cnt + 2); - } - #endif - *buf1++ = t1; - *buf2++ = t1; - } - if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl6e(); - } - if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) { - copybpl6o(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -10725,11 +8073,7 @@ static void lts_ecs_fm0_ehb1_p6_ilores_dhires_spr(void) denise_cck++; } } -static void lts_ecs_fm0_ehb1_p6_ilores_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham0_p6_ilores_dhires_spr(void) +static void lts_ecs_fm0_dpf1_p6_ihires_dlores_filtered(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -10740,42 +8084,20 @@ static void lts_ecs_fm0_ham0_p6_ilores_dhires_spr(void) } int cnt = denise_hcounter << 2; if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl6(); - clxdat |= bplcoltable[pix0]; - if (decode_specials) { - pix0 = decode_denise_specials(pix0); - } - dpix_val0 = decode_ham_pixel(pix0); - } - last_bpl_pix = pix0; - } - shiftbpl6(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_lores(); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } } internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } internal_pixel_cnt += 2; - uae_u32 dpix_val1 = dpix_val0; - uae_u8 pix1 = pix0; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - dpix_val1 = dpix_val0; - } - } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); uae_u32 t0 = 0; if (!extblank) { t0 = dpix_val0; @@ -10787,20 +8109,6 @@ static void lts_ecs_fm0_ham0_p6_ilores_dhires_spr(void) #endif *buf1++ = t0; *buf2++ = t0; - uae_u32 t1 = 0; - if (!extblank) { - t1 = dpix_val1; - } - #ifdef DEBUGGER - if (decode_specials_debug) { - t1 = decode_denise_specials_debug(t1, cnt + 2); - } - #endif - *buf1++ = t1; - *buf2++ = t1; - } - if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl6(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -10824,11 +8132,7 @@ static void lts_ecs_fm0_ham0_p6_ilores_dhires_spr(void) denise_cck++; } } -static void lts_ecs_fm0_ham0_p6_ilores_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham1_p6_ilores_dhires_spr(void) +static void lts_ecs_fm0_ehb0_p6_ihires_dlores(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -10839,42 +8143,19 @@ static void lts_ecs_fm0_ham1_p6_ilores_dhires_spr(void) } int cnt = denise_hcounter << 2; if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl6(); - clxdat |= bplcoltable[pix0]; - if (decode_specials) { - pix0 = decode_denise_specials(pix0); - } - dpix_val0 = decode_ham_pixel(pix0); - } - last_bpl_pix = pix0; - } - shiftbpl6(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_lores(); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } } internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } internal_pixel_cnt += 2; - uae_u32 dpix_val1 = dpix_val0; - uae_u8 pix1 = pix0; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - dpix_val1 = dpix_val0; - } - } uae_u32 t0 = 0; if (!extblank) { t0 = dpix_val0; @@ -10886,23 +8167,6 @@ static void lts_ecs_fm0_ham1_p6_ilores_dhires_spr(void) #endif *buf1++ = t0; *buf2++ = t0; - uae_u32 t1 = 0; - if (!extblank) { - t1 = dpix_val1; - } - #ifdef DEBUGGER - if (decode_specials_debug) { - t1 = decode_denise_specials_debug(t1, cnt + 2); - } - #endif - *buf1++ = t1; - *buf2++ = t1; - } - if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl6e(); - } - if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) { - copybpl6o(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -10926,11 +8190,7 @@ static void lts_ecs_fm0_ham1_p6_ilores_dhires_spr(void) denise_cck++; } } -static void lts_ecs_fm0_ham1_p6_ilores_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_n0_p2_ihires_dhires(void) +static void lts_ecs_fm0_ehb0_p6_ihires_dlores_filtered(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -10945,29 +8205,16 @@ static void lts_ecs_fm0_n0_p2_ihires_dhires(void) uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl2(); - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0]; - } - last_bpl_pix = pix0; } - shiftbpl2(); internal_pixel_cnt += 2; uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = getbpl2(); - clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1]; - } - last_bpl_pix = pix1; } - shiftbpl2(); internal_pixel_cnt += 2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); uae_u32 t0 = 0; if (!extblank) { t0 = dpix_val0; @@ -10979,20 +8226,6 @@ static void lts_ecs_fm0_n0_p2_ihires_dhires(void) #endif *buf1++ = t0; *buf2++ = t0; - uae_u32 t1 = 0; - if (!extblank) { - t1 = dpix_val1; - } - #ifdef DEBUGGER - if (decode_specials_debug) { - t1 = decode_denise_specials_debug(t1, cnt + 2); - } - #endif - *buf1++ = t1; - *buf2++ = t1; - } - if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { - copybpl2(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -11016,11 +8249,7 @@ static void lts_ecs_fm0_n0_p2_ihires_dhires(void) denise_cck++; } } -static void lts_ecs_fm0_n0_p2_ihires_dhires_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_n1_p2_ihires_dhires(void) +static void lts_ecs_fm0_ehb1_p6_ihires_dlores(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -11035,27 +8264,13 @@ static void lts_ecs_fm0_n1_p2_ihires_dhires(void) uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl2(); - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0]; - } - last_bpl_pix = pix0; } - shiftbpl2(); internal_pixel_cnt += 2; uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = getbpl2(); - clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1]; - } - last_bpl_pix = pix1; } - shiftbpl2(); internal_pixel_cnt += 2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { uae_u32 t0 = 0; @@ -11069,23 +8284,6 @@ static void lts_ecs_fm0_n1_p2_ihires_dhires(void) #endif *buf1++ = t0; *buf2++ = t0; - uae_u32 t1 = 0; - if (!extblank) { - t1 = dpix_val1; - } - #ifdef DEBUGGER - if (decode_specials_debug) { - t1 = decode_denise_specials_debug(t1, cnt + 2); - } - #endif - *buf1++ = t1; - *buf2++ = t1; - } - if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { - copybpl2e(); - } - if (bpldat_copy[1] && (denise_hcounter_cmp & 7) == bplcon1_shift[1]) { - copybpl2o(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -11109,11 +8307,7 @@ static void lts_ecs_fm0_n1_p2_ihires_dhires(void) denise_cck++; } } -static void lts_ecs_fm0_n1_p2_ihires_dhires_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_dpf0_p2_ihires_dhires(void) +static void lts_ecs_fm0_ehb1_p6_ihires_dlores_filtered(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -11128,31 +8322,16 @@ static void lts_ecs_fm0_dpf0_p2_ihires_dhires(void) uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl2(); - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; } - shiftbpl2(); internal_pixel_cnt += 2; uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = getbpl2(); - clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - dpix_val1 = denise_colors.acolors[val1]; - } - last_bpl_pix = pix1; } - shiftbpl2(); internal_pixel_cnt += 2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); uae_u32 t0 = 0; if (!extblank) { t0 = dpix_val0; @@ -11164,20 +8343,6 @@ static void lts_ecs_fm0_dpf0_p2_ihires_dhires(void) #endif *buf1++ = t0; *buf2++ = t0; - uae_u32 t1 = 0; - if (!extblank) { - t1 = dpix_val1; - } - #ifdef DEBUGGER - if (decode_specials_debug) { - t1 = decode_denise_specials_debug(t1, cnt + 2); - } - #endif - *buf1++ = t1; - *buf2++ = t1; - } - if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { - copybpl2(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -11201,11 +8366,7 @@ static void lts_ecs_fm0_dpf0_p2_ihires_dhires(void) denise_cck++; } } -static void lts_ecs_fm0_dpf0_p2_ihires_dhires_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_dpf1_p2_ihires_dhires(void) +static void lts_ecs_fm0_ham0_p6_ihires_dlores(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -11220,29 +8381,13 @@ static void lts_ecs_fm0_dpf1_p2_ihires_dhires(void) uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl2(); - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; } - shiftbpl2(); internal_pixel_cnt += 2; uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = getbpl2(); - clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - dpix_val1 = denise_colors.acolors[val1]; - } - last_bpl_pix = pix1; } - shiftbpl2(); internal_pixel_cnt += 2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { uae_u32 t0 = 0; @@ -11256,23 +8401,6 @@ static void lts_ecs_fm0_dpf1_p2_ihires_dhires(void) #endif *buf1++ = t0; *buf2++ = t0; - uae_u32 t1 = 0; - if (!extblank) { - t1 = dpix_val1; - } - #ifdef DEBUGGER - if (decode_specials_debug) { - t1 = decode_denise_specials_debug(t1, cnt + 2); - } - #endif - *buf1++ = t1; - *buf2++ = t1; - } - if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { - copybpl2e(); - } - if (bpldat_copy[1] && (denise_hcounter_cmp & 7) == bplcon1_shift[1]) { - copybpl2o(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -11296,43 +8424,7 @@ static void lts_ecs_fm0_dpf1_p2_ihires_dhires(void) denise_cck++; } } -static void lts_ecs_fm0_dpf1_p2_ihires_dhires_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb0_p2_ihires_dhires(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb0_p2_ihires_dhires_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb1_p2_ihires_dhires(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb1_p2_ihires_dhires_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham0_p2_ihires_dhires(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham0_p2_ihires_dhires_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham1_p2_ihires_dhires(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham1_p2_ihires_dhires_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_n0_p4_ihires_dhires(void) +static void lts_ecs_fm0_ham0_p6_ihires_dlores_filtered(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -11347,29 +8439,16 @@ static void lts_ecs_fm0_n0_p4_ihires_dhires(void) uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl4(); - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0]; - } - last_bpl_pix = pix0; } - shiftbpl4(); internal_pixel_cnt += 2; uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = getbpl4(); - clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1]; - } - last_bpl_pix = pix1; } - shiftbpl4(); internal_pixel_cnt += 2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); uae_u32 t0 = 0; if (!extblank) { t0 = dpix_val0; @@ -11381,20 +8460,6 @@ static void lts_ecs_fm0_n0_p4_ihires_dhires(void) #endif *buf1++ = t0; *buf2++ = t0; - uae_u32 t1 = 0; - if (!extblank) { - t1 = dpix_val1; - } - #ifdef DEBUGGER - if (decode_specials_debug) { - t1 = decode_denise_specials_debug(t1, cnt + 2); - } - #endif - *buf1++ = t1; - *buf2++ = t1; - } - if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { - copybpl4(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -11418,11 +8483,7 @@ static void lts_ecs_fm0_n0_p4_ihires_dhires(void) denise_cck++; } } -static void lts_ecs_fm0_n0_p4_ihires_dhires_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_n1_p4_ihires_dhires(void) +static void lts_ecs_fm0_ham1_p6_ihires_dlores(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -11437,27 +8498,13 @@ static void lts_ecs_fm0_n1_p4_ihires_dhires(void) uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl4(); - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0]; - } - last_bpl_pix = pix0; } - shiftbpl4(); internal_pixel_cnt += 2; uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = getbpl4(); - clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1]; - } - last_bpl_pix = pix1; } - shiftbpl4(); internal_pixel_cnt += 2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { uae_u32 t0 = 0; @@ -11471,23 +8518,65 @@ static void lts_ecs_fm0_n1_p4_ihires_dhires(void) #endif *buf1++ = t0; *buf2++ = t0; - uae_u32 t1 = 0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ham1_p6_ihires_dlores_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + uae_u32 t0 = 0; if (!extblank) { - t1 = dpix_val1; + t0 = dpix_val0; } #ifdef DEBUGGER if (decode_specials_debug) { - t1 = decode_denise_specials_debug(t1, cnt + 2); + t0 = decode_denise_specials_debug(t0, cnt + 0); } #endif - *buf1++ = t1; - *buf2++ = t1; - } - if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { - copybpl4e(); - } - if (bpldat_copy[1] && (denise_hcounter_cmp & 7) == bplcon1_shift[1]) { - copybpl4o(); + *buf1++ = t0; + *buf2++ = t0; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -11511,11 +8600,7 @@ static void lts_ecs_fm0_n1_p4_ihires_dhires(void) denise_cck++; } } -static void lts_ecs_fm0_n1_p4_ihires_dhires_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_dpf0_p4_ihires_dhires(void) +static void lts_ecs_fm0_n0_p2_ihires_dlores_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -11526,35 +8611,48 @@ static void lts_ecs_fm0_dpf0_p4_ihires_dhires(void) } int cnt = denise_hcounter << 2; if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl4(); + pix0 = getbpl2(); clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - dpix_val0 = denise_colors.acolors[val0]; + dpix_val0 = denise_colors.acolors[pix0]; } last_bpl_pix = pix0; } - shiftbpl4(); + shiftbpl2(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_lores(); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } internal_pixel_cnt += 2; uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; if (denise_hdiw && bpl1dat_trigger) { - pix1 = getbpl4(); + pix1 = getbpl2(); clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - dpix_val1 = denise_colors.acolors[val1]; + dpix_val1 = denise_colors.acolors[pix1]; } last_bpl_pix = pix1; } - shiftbpl4(); + shiftbpl2(); internal_pixel_cnt += 2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } uae_u32 t0 = 0; if (!extblank) { t0 = dpix_val0; @@ -11566,20 +8664,9 @@ static void lts_ecs_fm0_dpf0_p4_ihires_dhires(void) #endif *buf1++ = t0; *buf2++ = t0; - uae_u32 t1 = 0; - if (!extblank) { - t1 = dpix_val1; - } - #ifdef DEBUGGER - if (decode_specials_debug) { - t1 = decode_denise_specials_debug(t1, cnt + 2); - } - #endif - *buf1++ = t1; - *buf2++ = t1; } if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { - copybpl4(); + copybpl2(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -11603,11 +8690,7 @@ static void lts_ecs_fm0_dpf0_p4_ihires_dhires(void) denise_cck++; } } -static void lts_ecs_fm0_dpf0_p4_ihires_dhires_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_dpf1_p4_ihires_dhires(void) +static void lts_ecs_fm0_n0_p2_ihires_dlores_spr_filtered(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -11618,35 +8701,50 @@ static void lts_ecs_fm0_dpf1_p4_ihires_dhires(void) } int cnt = denise_hcounter << 2; if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl4(); + pix0 = getbpl2(); clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - dpix_val0 = denise_colors.acolors[val0]; + dpix_val0 = denise_colors.acolors[pix0]; } last_bpl_pix = pix0; } - shiftbpl4(); + shiftbpl2(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_lores(); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } internal_pixel_cnt += 2; uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; if (denise_hdiw && bpl1dat_trigger) { - pix1 = getbpl4(); + pix1 = getbpl2(); clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - dpix_val1 = denise_colors.acolors[val1]; + dpix_val1 = denise_colors.acolors[pix1]; } last_bpl_pix = pix1; } - shiftbpl4(); + shiftbpl2(); internal_pixel_cnt += 2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + } + } uae_u32 t0 = 0; if (!extblank) { t0 = dpix_val0; @@ -11658,23 +8756,9 @@ static void lts_ecs_fm0_dpf1_p4_ihires_dhires(void) #endif *buf1++ = t0; *buf2++ = t0; - uae_u32 t1 = 0; - if (!extblank) { - t1 = dpix_val1; - } - #ifdef DEBUGGER - if (decode_specials_debug) { - t1 = decode_denise_specials_debug(t1, cnt + 2); - } - #endif - *buf1++ = t1; - *buf2++ = t1; } if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { - copybpl4e(); - } - if (bpldat_copy[1] && (denise_hcounter_cmp & 7) == bplcon1_shift[1]) { - copybpl4o(); + copybpl2(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -11698,171 +8782,7 @@ static void lts_ecs_fm0_dpf1_p4_ihires_dhires(void) denise_cck++; } } -static void lts_ecs_fm0_dpf1_p4_ihires_dhires_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb0_p4_ihires_dhires(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb0_p4_ihires_dhires_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb1_p4_ihires_dhires(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb1_p4_ihires_dhires_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham0_p4_ihires_dhires(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham0_p4_ihires_dhires_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham1_p4_ihires_dhires(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham1_p4_ihires_dhires_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_n0_p5_ihires_dhires(void) -{ - lts_null(); -} -static void lts_ecs_fm0_n0_p5_ihires_dhires_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_n1_p5_ihires_dhires(void) -{ - lts_null(); -} -static void lts_ecs_fm0_n1_p5_ihires_dhires_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_dpf0_p5_ihires_dhires(void) -{ - lts_null(); -} -static void lts_ecs_fm0_dpf0_p5_ihires_dhires_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_dpf1_p5_ihires_dhires(void) -{ - lts_null(); -} -static void lts_ecs_fm0_dpf1_p5_ihires_dhires_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb0_p5_ihires_dhires(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb0_p5_ihires_dhires_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb1_p5_ihires_dhires(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb1_p5_ihires_dhires_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham0_p5_ihires_dhires(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham0_p5_ihires_dhires_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham1_p5_ihires_dhires(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham1_p5_ihires_dhires_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_n0_p6_ihires_dhires(void) -{ - lts_null(); -} -static void lts_ecs_fm0_n0_p6_ihires_dhires_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_n1_p6_ihires_dhires(void) -{ - lts_null(); -} -static void lts_ecs_fm0_n1_p6_ihires_dhires_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_dpf0_p6_ihires_dhires(void) -{ - lts_null(); -} -static void lts_ecs_fm0_dpf0_p6_ihires_dhires_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_dpf1_p6_ihires_dhires(void) -{ - lts_null(); -} -static void lts_ecs_fm0_dpf1_p6_ihires_dhires_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb0_p6_ihires_dhires(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb0_p6_ihires_dhires_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb1_p6_ihires_dhires(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb1_p6_ihires_dhires_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham0_p6_ihires_dhires(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham0_p6_ihires_dhires_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham1_p6_ihires_dhires(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham1_p6_ihires_dhires_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_n0_p2_ihires_dhires_spr(void) +static void lts_ecs_fm0_n1_p2_ihires_dlores_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -11915,13 +8835,6 @@ static void lts_ecs_fm0_n0_p2_ihires_dhires_spr(void) dpix_val0 = denise_colors.acolors[spix0]; } } - uae_u32 sv1 = sv0; - if (sv1) { - uae_u32 spix1 = denise_render_sprites2(pix1, sv1); - if (spix1) { - dpix_val1 = denise_colors.acolors[spix1]; - } - } uae_u32 t0 = 0; if (!extblank) { t0 = dpix_val0; @@ -11933,20 +8846,12 @@ static void lts_ecs_fm0_n0_p2_ihires_dhires_spr(void) #endif *buf1++ = t0; *buf2++ = t0; - uae_u32 t1 = 0; - if (!extblank) { - t1 = dpix_val1; - } - #ifdef DEBUGGER - if (decode_specials_debug) { - t1 = decode_denise_specials_debug(t1, cnt + 2); - } - #endif - *buf1++ = t1; - *buf2++ = t1; } if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { - copybpl2(); + copybpl2e(); + } + if (bpldat_copy[1] && (denise_hcounter_cmp & 7) == bplcon1_shift[1]) { + copybpl2o(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -11970,11 +8875,7 @@ static void lts_ecs_fm0_n0_p2_ihires_dhires_spr(void) denise_cck++; } } -static void lts_ecs_fm0_n0_p2_ihires_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_n1_p2_ihires_dhires_spr(void) +static void lts_ecs_fm0_n1_p2_ihires_dlores_spr_filtered(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -12021,17 +8922,12 @@ static void lts_ecs_fm0_n1_p2_ihires_dhires_spr(void) shiftbpl2(); internal_pixel_cnt += 2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); if (sv0) { uae_u32 spix0 = denise_render_sprites2(pix0, sv0); if (spix0) { dpix_val0 = denise_colors.acolors[spix0]; - } - } - uae_u32 sv1 = sv0; - if (sv1) { - uae_u32 spix1 = denise_render_sprites2(pix1, sv1); - if (spix1) { - dpix_val1 = denise_colors.acolors[spix1]; + dpix_val1 = dpix_val0; } } uae_u32 t0 = 0; @@ -12045,17 +8941,6 @@ static void lts_ecs_fm0_n1_p2_ihires_dhires_spr(void) #endif *buf1++ = t0; *buf2++ = t0; - uae_u32 t1 = 0; - if (!extblank) { - t1 = dpix_val1; - } - #ifdef DEBUGGER - if (decode_specials_debug) { - t1 = decode_denise_specials_debug(t1, cnt + 2); - } - #endif - *buf1++ = t1; - *buf2++ = t1; } if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { copybpl2e(); @@ -12085,11 +8970,7 @@ static void lts_ecs_fm0_n1_p2_ihires_dhires_spr(void) denise_cck++; } } -static void lts_ecs_fm0_n1_p2_ihires_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_dpf0_p2_ihires_dhires_spr(void) +static void lts_ecs_fm0_dpf0_p2_ihires_dlores_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -12144,13 +9025,6 @@ static void lts_ecs_fm0_dpf0_p2_ihires_dhires_spr(void) dpix_val0 = denise_colors.acolors[spix0]; } } - uae_u32 sv1 = sv0; - if (sv1) { - uae_u32 spix1 = denise_render_sprites2(pix1, sv1); - if (spix1) { - dpix_val1 = denise_colors.acolors[spix1]; - } - } uae_u32 t0 = 0; if (!extblank) { t0 = dpix_val0; @@ -12162,17 +9036,6 @@ static void lts_ecs_fm0_dpf0_p2_ihires_dhires_spr(void) #endif *buf1++ = t0; *buf2++ = t0; - uae_u32 t1 = 0; - if (!extblank) { - t1 = dpix_val1; - } - #ifdef DEBUGGER - if (decode_specials_debug) { - t1 = decode_denise_specials_debug(t1, cnt + 2); - } - #endif - *buf1++ = t1; - *buf2++ = t1; } if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { copybpl2(); @@ -12199,11 +9062,7 @@ static void lts_ecs_fm0_dpf0_p2_ihires_dhires_spr(void) denise_cck++; } } -static void lts_ecs_fm0_dpf0_p2_ihires_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_dpf1_p2_ihires_dhires_spr(void) +static void lts_ecs_fm0_dpf0_p2_ihires_dlores_spr_filtered(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -12252,17 +9111,12 @@ static void lts_ecs_fm0_dpf1_p2_ihires_dhires_spr(void) shiftbpl2(); internal_pixel_cnt += 2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); if (sv0) { uae_u32 spix0 = denise_render_sprites2(pix0, sv0); if (spix0) { dpix_val0 = denise_colors.acolors[spix0]; - } - } - uae_u32 sv1 = sv0; - if (sv1) { - uae_u32 spix1 = denise_render_sprites2(pix1, sv1); - if (spix1) { - dpix_val1 = denise_colors.acolors[spix1]; + dpix_val1 = dpix_val0; } } uae_u32 t0 = 0; @@ -12276,23 +9130,9 @@ static void lts_ecs_fm0_dpf1_p2_ihires_dhires_spr(void) #endif *buf1++ = t0; *buf2++ = t0; - uae_u32 t1 = 0; - if (!extblank) { - t1 = dpix_val1; - } - #ifdef DEBUGGER - if (decode_specials_debug) { - t1 = decode_denise_specials_debug(t1, cnt + 2); - } - #endif - *buf1++ = t1; - *buf2++ = t1; } if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { - copybpl2e(); - } - if (bpldat_copy[1] && (denise_hcounter_cmp & 7) == bplcon1_shift[1]) { - copybpl2o(); + copybpl2(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -12316,43 +9156,7 @@ static void lts_ecs_fm0_dpf1_p2_ihires_dhires_spr(void) denise_cck++; } } -static void lts_ecs_fm0_dpf1_p2_ihires_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb0_p2_ihires_dhires_spr(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb0_p2_ihires_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb1_p2_ihires_dhires_spr(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb1_p2_ihires_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham0_p2_ihires_dhires_spr(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham0_p2_ihires_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham1_p2_ihires_dhires_spr(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham1_p2_ihires_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_n0_p4_ihires_dhires_spr(void) +static void lts_ecs_fm0_dpf1_p2_ihires_dlores_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -12369,13 +9173,14 @@ static void lts_ecs_fm0_n0_p4_ihires_dhires_spr(void) if (!denise_blank_active) { dpix_val0 = bordercolor; if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl4(); + pix0 = getbpl2(); clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + dpix_val0 = denise_colors.acolors[val0]; } last_bpl_pix = pix0; } - shiftbpl4(); + shiftbpl2(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -12390,13 +9195,14 @@ static void lts_ecs_fm0_n0_p4_ihires_dhires_spr(void) if (!denise_blank_active) { dpix_val1 = bordercolor; if (denise_hdiw && bpl1dat_trigger) { - pix1 = getbpl4(); + pix1 = getbpl2(); clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1]; + uae_u8 val1 = dpf_lookup[pix1]; + dpix_val1 = denise_colors.acolors[val1]; } last_bpl_pix = pix1; } - shiftbpl4(); + shiftbpl2(); internal_pixel_cnt += 2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { @@ -12405,13 +9211,6 @@ static void lts_ecs_fm0_n0_p4_ihires_dhires_spr(void) dpix_val0 = denise_colors.acolors[spix0]; } } - uae_u32 sv1 = sv0; - if (sv1) { - uae_u32 spix1 = denise_render_sprites2(pix1, sv1); - if (spix1) { - dpix_val1 = denise_colors.acolors[spix1]; - } - } uae_u32 t0 = 0; if (!extblank) { t0 = dpix_val0; @@ -12423,20 +9222,12 @@ static void lts_ecs_fm0_n0_p4_ihires_dhires_spr(void) #endif *buf1++ = t0; *buf2++ = t0; - uae_u32 t1 = 0; - if (!extblank) { - t1 = dpix_val1; - } - #ifdef DEBUGGER - if (decode_specials_debug) { - t1 = decode_denise_specials_debug(t1, cnt + 2); - } - #endif - *buf1++ = t1; - *buf2++ = t1; } if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { - copybpl4(); + copybpl2e(); + } + if (bpldat_copy[1] && (denise_hcounter_cmp & 7) == bplcon1_shift[1]) { + copybpl2o(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -12460,11 +9251,7 @@ static void lts_ecs_fm0_n0_p4_ihires_dhires_spr(void) denise_cck++; } } -static void lts_ecs_fm0_n0_p4_ihires_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_n1_p4_ihires_dhires_spr(void) +static void lts_ecs_fm0_dpf1_p2_ihires_dlores_spr_filtered(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -12481,13 +9268,14 @@ static void lts_ecs_fm0_n1_p4_ihires_dhires_spr(void) if (!denise_blank_active) { dpix_val0 = bordercolor; if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl4(); + pix0 = getbpl2(); clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + dpix_val0 = denise_colors.acolors[val0]; } last_bpl_pix = pix0; } - shiftbpl4(); + shiftbpl2(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -12502,26 +9290,22 @@ static void lts_ecs_fm0_n1_p4_ihires_dhires_spr(void) if (!denise_blank_active) { dpix_val1 = bordercolor; if (denise_hdiw && bpl1dat_trigger) { - pix1 = getbpl4(); + pix1 = getbpl2(); clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1]; + uae_u8 val1 = dpf_lookup[pix1]; + dpix_val1 = denise_colors.acolors[val1]; } last_bpl_pix = pix1; } - shiftbpl4(); + shiftbpl2(); internal_pixel_cnt += 2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); if (sv0) { uae_u32 spix0 = denise_render_sprites2(pix0, sv0); if (spix0) { dpix_val0 = denise_colors.acolors[spix0]; - } - } - uae_u32 sv1 = sv0; - if (sv1) { - uae_u32 spix1 = denise_render_sprites2(pix1, sv1); - if (spix1) { - dpix_val1 = denise_colors.acolors[spix1]; + dpix_val1 = dpix_val0; } } uae_u32 t0 = 0; @@ -12535,23 +9319,12 @@ static void lts_ecs_fm0_n1_p4_ihires_dhires_spr(void) #endif *buf1++ = t0; *buf2++ = t0; - uae_u32 t1 = 0; - if (!extblank) { - t1 = dpix_val1; - } - #ifdef DEBUGGER - if (decode_specials_debug) { - t1 = decode_denise_specials_debug(t1, cnt + 2); - } - #endif - *buf1++ = t1; - *buf2++ = t1; } if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { - copybpl4e(); + copybpl2e(); } if (bpldat_copy[1] && (denise_hcounter_cmp & 7) == bplcon1_shift[1]) { - copybpl4o(); + copybpl2o(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -12575,11 +9348,7 @@ static void lts_ecs_fm0_n1_p4_ihires_dhires_spr(void) denise_cck++; } } -static void lts_ecs_fm0_n1_p4_ihires_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_dpf0_p4_ihires_dhires_spr(void) +static void lts_ecs_fm0_ehb0_p2_ihires_dlores_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -12590,57 +9359,19 @@ static void lts_ecs_fm0_dpf0_p4_ihires_dhires_spr(void) } int cnt = denise_hcounter << 2; if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl4(); - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; - } - shiftbpl4(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_lores(); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } } internal_pixel_cnt += 2; uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = getbpl4(); - clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - dpix_val1 = denise_colors.acolors[val1]; - } - last_bpl_pix = pix1; } - shiftbpl4(); internal_pixel_cnt += 2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - } - } - uae_u32 sv1 = sv0; - if (sv1) { - uae_u32 spix1 = denise_render_sprites2(pix1, sv1); - if (spix1) { - dpix_val1 = denise_colors.acolors[spix1]; - } - } uae_u32 t0 = 0; if (!extblank) { t0 = dpix_val0; @@ -12652,20 +9383,6 @@ static void lts_ecs_fm0_dpf0_p4_ihires_dhires_spr(void) #endif *buf1++ = t0; *buf2++ = t0; - uae_u32 t1 = 0; - if (!extblank) { - t1 = dpix_val1; - } - #ifdef DEBUGGER - if (decode_specials_debug) { - t1 = decode_denise_specials_debug(t1, cnt + 2); - } - #endif - *buf1++ = t1; - *buf2++ = t1; - } - if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { - copybpl4(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -12689,11 +9406,7 @@ static void lts_ecs_fm0_dpf0_p4_ihires_dhires_spr(void) denise_cck++; } } -static void lts_ecs_fm0_dpf0_p4_ihires_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_dpf1_p4_ihires_dhires_spr(void) +static void lts_ecs_fm0_ehb0_p2_ihires_dlores_spr_filtered(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -12704,57 +9417,20 @@ static void lts_ecs_fm0_dpf1_p4_ihires_dhires_spr(void) } int cnt = denise_hcounter << 2; if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl4(); - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; - } - shiftbpl4(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_lores(); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } } internal_pixel_cnt += 2; uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = getbpl4(); - clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - dpix_val1 = denise_colors.acolors[val1]; - } - last_bpl_pix = pix1; } - shiftbpl4(); internal_pixel_cnt += 2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - } - } - uae_u32 sv1 = sv0; - if (sv1) { - uae_u32 spix1 = denise_render_sprites2(pix1, sv1); - if (spix1) { - dpix_val1 = denise_colors.acolors[spix1]; - } - } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); uae_u32 t0 = 0; if (!extblank) { t0 = dpix_val0; @@ -12766,23 +9442,6 @@ static void lts_ecs_fm0_dpf1_p4_ihires_dhires_spr(void) #endif *buf1++ = t0; *buf2++ = t0; - uae_u32 t1 = 0; - if (!extblank) { - t1 = dpix_val1; - } - #ifdef DEBUGGER - if (decode_specials_debug) { - t1 = decode_denise_specials_debug(t1, cnt + 2); - } - #endif - *buf1++ = t1; - *buf2++ = t1; - } - if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { - copybpl4e(); - } - if (bpldat_copy[1] && (denise_hcounter_cmp & 7) == bplcon1_shift[1]) { - copybpl4o(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -12806,171 +9465,21717 @@ static void lts_ecs_fm0_dpf1_p4_ihires_dhires_spr(void) denise_cck++; } } -static void lts_ecs_fm0_dpf1_p4_ihires_dhires_spr_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb0_p4_ihires_dhires_spr(void) +static void lts_ecs_fm0_ehb1_p2_ihires_dlores_spr(void) { - lts_null(); -} -static void lts_ecs_fm0_ehb0_p4_ihires_dhires_spr_filtered(void) + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ehb1_p2_ihires_dlores_spr_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ham0_p2_ihires_dlores_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ham0_p2_ihires_dlores_spr_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ham1_p2_ihires_dlores_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ham1_p2_ihires_dlores_spr_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_n0_p4_ihires_dlores_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl4(); + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0]; + } + last_bpl_pix = pix0; + } + shiftbpl4(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_lores(); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = getbpl4(); + clxdat |= bplcoltable[pix1]; + dpix_val1 = denise_colors.acolors[pix1]; + } + last_bpl_pix = pix1; + } + shiftbpl4(); + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_n0_p4_ihires_dlores_spr_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl4(); + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0]; + } + last_bpl_pix = pix0; + } + shiftbpl4(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_lores(); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = getbpl4(); + clxdat |= bplcoltable[pix1]; + dpix_val1 = denise_colors.acolors[pix1]; + } + last_bpl_pix = pix1; + } + shiftbpl4(); + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + } + } + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_n1_p4_ihires_dlores_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl4(); + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0]; + } + last_bpl_pix = pix0; + } + shiftbpl4(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_lores(); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = getbpl4(); + clxdat |= bplcoltable[pix1]; + dpix_val1 = denise_colors.acolors[pix1]; + } + last_bpl_pix = pix1; + } + shiftbpl4(); + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { + copybpl4e(); + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_n1_p4_ihires_dlores_spr_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl4(); + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0]; + } + last_bpl_pix = pix0; + } + shiftbpl4(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_lores(); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = getbpl4(); + clxdat |= bplcoltable[pix1]; + dpix_val1 = denise_colors.acolors[pix1]; + } + last_bpl_pix = pix1; + } + shiftbpl4(); + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + } + } + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { + copybpl4e(); + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_dpf0_p4_ihires_dlores_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl4(); + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + shiftbpl4(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_lores(); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = getbpl4(); + clxdat |= bplcoltable[pix1]; + uae_u8 val1 = dpf_lookup[pix1]; + dpix_val1 = denise_colors.acolors[val1]; + } + last_bpl_pix = pix1; + } + shiftbpl4(); + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_dpf0_p4_ihires_dlores_spr_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl4(); + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + shiftbpl4(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_lores(); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = getbpl4(); + clxdat |= bplcoltable[pix1]; + uae_u8 val1 = dpf_lookup[pix1]; + dpix_val1 = denise_colors.acolors[val1]; + } + last_bpl_pix = pix1; + } + shiftbpl4(); + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + } + } + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_dpf1_p4_ihires_dlores_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl4(); + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + shiftbpl4(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_lores(); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = getbpl4(); + clxdat |= bplcoltable[pix1]; + uae_u8 val1 = dpf_lookup[pix1]; + dpix_val1 = denise_colors.acolors[val1]; + } + last_bpl_pix = pix1; + } + shiftbpl4(); + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { + copybpl4e(); + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_dpf1_p4_ihires_dlores_spr_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl4(); + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + shiftbpl4(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_lores(); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = getbpl4(); + clxdat |= bplcoltable[pix1]; + uae_u8 val1 = dpf_lookup[pix1]; + dpix_val1 = denise_colors.acolors[val1]; + } + last_bpl_pix = pix1; + } + shiftbpl4(); + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + } + } + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { + copybpl4e(); + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ehb0_p4_ihires_dlores_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ehb0_p4_ihires_dlores_spr_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ehb1_p4_ihires_dlores_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ehb1_p4_ihires_dlores_spr_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ham0_p4_ihires_dlores_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ham0_p4_ihires_dlores_spr_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ham1_p4_ihires_dlores_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ham1_p4_ihires_dlores_spr_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_n0_p5_ihires_dlores_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_n0_p5_ihires_dlores_spr_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_n1_p5_ihires_dlores_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_n1_p5_ihires_dlores_spr_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_dpf0_p5_ihires_dlores_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_dpf0_p5_ihires_dlores_spr_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_dpf1_p5_ihires_dlores_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_dpf1_p5_ihires_dlores_spr_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ehb0_p5_ihires_dlores_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ehb0_p5_ihires_dlores_spr_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ehb1_p5_ihires_dlores_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ehb1_p5_ihires_dlores_spr_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ham0_p5_ihires_dlores_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ham0_p5_ihires_dlores_spr_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ham1_p5_ihires_dlores_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ham1_p5_ihires_dlores_spr_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_n0_p6_ihires_dlores_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_n0_p6_ihires_dlores_spr_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_n1_p6_ihires_dlores_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_n1_p6_ihires_dlores_spr_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_dpf0_p6_ihires_dlores_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_dpf0_p6_ihires_dlores_spr_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_dpf1_p6_ihires_dlores_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_dpf1_p6_ihires_dlores_spr_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ehb0_p6_ihires_dlores_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ehb0_p6_ihires_dlores_spr_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ehb1_p6_ihires_dlores_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ehb1_p6_ihires_dlores_spr_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ham0_p6_ihires_dlores_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ham0_p6_ihires_dlores_spr_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ham1_p6_ihires_dlores_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ham1_p6_ihires_dlores_spr_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_n0_p2_ilores_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl2(); + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0]; + } + last_bpl_pix = pix0; + } + shiftbpl2(); + internal_pixel_cnt += 2; + internal_pixel_cnt += 2; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dpix_val1; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_n0_p2_ilores_dhires_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_n1_p2_ilores_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl2(); + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0]; + } + last_bpl_pix = pix0; + } + shiftbpl2(); + internal_pixel_cnt += 2; + internal_pixel_cnt += 2; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dpix_val1; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + } + if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { + copybpl2e(); + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_n1_p2_ilores_dhires_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_dpf0_p2_ilores_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl2(); + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + shiftbpl2(); + internal_pixel_cnt += 2; + internal_pixel_cnt += 2; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dpix_val1; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_dpf0_p2_ilores_dhires_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_dpf1_p2_ilores_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl2(); + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + shiftbpl2(); + internal_pixel_cnt += 2; + internal_pixel_cnt += 2; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dpix_val1; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + } + if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { + copybpl2e(); + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_dpf1_p2_ilores_dhires_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_ehb0_p2_ilores_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + internal_pixel_cnt += 2; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dpix_val1; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ehb0_p2_ilores_dhires_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_ehb1_p2_ilores_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + internal_pixel_cnt += 2; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dpix_val1; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ehb1_p2_ilores_dhires_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_ham0_p2_ilores_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + internal_pixel_cnt += 2; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dpix_val1; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ham0_p2_ilores_dhires_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_ham1_p2_ilores_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + internal_pixel_cnt += 2; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dpix_val1; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ham1_p2_ilores_dhires_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_n0_p4_ilores_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl4(); + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0]; + } + last_bpl_pix = pix0; + } + shiftbpl4(); + internal_pixel_cnt += 2; + internal_pixel_cnt += 2; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dpix_val1; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_n0_p4_ilores_dhires_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_n1_p4_ilores_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl4(); + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0]; + } + last_bpl_pix = pix0; + } + shiftbpl4(); + internal_pixel_cnt += 2; + internal_pixel_cnt += 2; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dpix_val1; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + } + if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { + copybpl4e(); + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_n1_p4_ilores_dhires_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_dpf0_p4_ilores_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl4(); + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + shiftbpl4(); + internal_pixel_cnt += 2; + internal_pixel_cnt += 2; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dpix_val1; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_dpf0_p4_ilores_dhires_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_dpf1_p4_ilores_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl4(); + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + shiftbpl4(); + internal_pixel_cnt += 2; + internal_pixel_cnt += 2; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dpix_val1; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + } + if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { + copybpl4e(); + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_dpf1_p4_ilores_dhires_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_ehb0_p4_ilores_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + internal_pixel_cnt += 2; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dpix_val1; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ehb0_p4_ilores_dhires_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_ehb1_p4_ilores_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + internal_pixel_cnt += 2; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dpix_val1; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ehb1_p4_ilores_dhires_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_ham0_p4_ilores_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + internal_pixel_cnt += 2; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dpix_val1; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ham0_p4_ilores_dhires_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_ham1_p4_ilores_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + internal_pixel_cnt += 2; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dpix_val1; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ham1_p4_ilores_dhires_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_n0_p5_ilores_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl5(); + clxdat |= bplcoltable[pix0]; + if (decode_specials) { + pix0 = decode_denise_specials(pix0); + } + dpix_val0 = denise_colors.acolors[pix0]; + } + last_bpl_pix = pix0; + } + shiftbpl5(); + internal_pixel_cnt += 2; + internal_pixel_cnt += 2; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dpix_val1; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_n0_p5_ilores_dhires_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_n1_p5_ilores_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl5(); + clxdat |= bplcoltable[pix0]; + if (decode_specials) { + pix0 = decode_denise_specials(pix0); + } + dpix_val0 = denise_colors.acolors[pix0]; + } + last_bpl_pix = pix0; + } + shiftbpl5(); + internal_pixel_cnt += 2; + internal_pixel_cnt += 2; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dpix_val1; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + } + if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { + copybpl5e(); + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_n1_p5_ilores_dhires_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_dpf0_p5_ilores_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl5(); + clxdat |= bplcoltable[pix0]; + if (decode_specials) { + pix0 = decode_denise_specials(pix0); + } + uae_u8 val0 = dpf_lookup[pix0]; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + shiftbpl5(); + internal_pixel_cnt += 2; + internal_pixel_cnt += 2; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dpix_val1; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_dpf0_p5_ilores_dhires_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_dpf1_p5_ilores_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl5(); + clxdat |= bplcoltable[pix0]; + if (decode_specials) { + pix0 = decode_denise_specials(pix0); + } + uae_u8 val0 = dpf_lookup[pix0]; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + shiftbpl5(); + internal_pixel_cnt += 2; + internal_pixel_cnt += 2; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dpix_val1; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + } + if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { + copybpl5e(); + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_dpf1_p5_ilores_dhires_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_ehb0_p5_ilores_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + internal_pixel_cnt += 2; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dpix_val1; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ehb0_p5_ilores_dhires_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_ehb1_p5_ilores_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + internal_pixel_cnt += 2; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dpix_val1; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ehb1_p5_ilores_dhires_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_ham0_p5_ilores_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl5(); + clxdat |= bplcoltable[pix0]; + if (decode_specials) { + pix0 = decode_denise_specials(pix0); + } + dpix_val0 = decode_ham_pixel(pix0); + } + last_bpl_pix = pix0; + } + shiftbpl5(); + internal_pixel_cnt += 2; + internal_pixel_cnt += 2; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dpix_val1; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ham0_p5_ilores_dhires_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_ham1_p5_ilores_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl5(); + clxdat |= bplcoltable[pix0]; + if (decode_specials) { + pix0 = decode_denise_specials(pix0); + } + dpix_val0 = decode_ham_pixel(pix0); + } + last_bpl_pix = pix0; + } + shiftbpl5(); + internal_pixel_cnt += 2; + internal_pixel_cnt += 2; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dpix_val1; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + } + if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { + copybpl5e(); + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ham1_p5_ilores_dhires_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_n0_p6_ilores_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl6(); + clxdat |= bplcoltable[pix0]; + if (decode_specials) { + pix0 = decode_denise_specials(pix0); + } + dpix_val0 = denise_colors.acolors[pix0]; + } + last_bpl_pix = pix0; + } + shiftbpl6(); + internal_pixel_cnt += 2; + internal_pixel_cnt += 2; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dpix_val1; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_n0_p6_ilores_dhires_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_n1_p6_ilores_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl6(); + clxdat |= bplcoltable[pix0]; + if (decode_specials) { + pix0 = decode_denise_specials(pix0); + } + dpix_val0 = denise_colors.acolors[pix0]; + } + last_bpl_pix = pix0; + } + shiftbpl6(); + internal_pixel_cnt += 2; + internal_pixel_cnt += 2; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dpix_val1; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + } + if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { + copybpl6e(); + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_n1_p6_ilores_dhires_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_dpf0_p6_ilores_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl6(); + clxdat |= bplcoltable[pix0]; + if (decode_specials) { + pix0 = decode_denise_specials(pix0); + } + uae_u8 val0 = dpf_lookup[pix0]; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + shiftbpl6(); + internal_pixel_cnt += 2; + internal_pixel_cnt += 2; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dpix_val1; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_dpf0_p6_ilores_dhires_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_dpf1_p6_ilores_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl6(); + clxdat |= bplcoltable[pix0]; + if (decode_specials) { + pix0 = decode_denise_specials(pix0); + } + uae_u8 val0 = dpf_lookup[pix0]; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + shiftbpl6(); + internal_pixel_cnt += 2; + internal_pixel_cnt += 2; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dpix_val1; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + } + if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { + copybpl6e(); + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_dpf1_p6_ilores_dhires_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_ehb0_p6_ilores_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl6(); + clxdat |= bplcoltable[pix0]; + if (decode_specials) { + pix0 = decode_denise_specials(pix0); + } + pix0 &= bplehb_mask; + if (pix0 <= 31) { + dpix_val0 = denise_colors.acolors[pix0]; + } else { + dpix_val0 = p_xcolors[(denise_colors.color_regs_ecs[pix0 - 32] >> 1) & 0x777]; + } + } + last_bpl_pix = pix0; + } + shiftbpl6(); + internal_pixel_cnt += 2; + internal_pixel_cnt += 2; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dpix_val1; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ehb0_p6_ilores_dhires_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_ehb1_p6_ilores_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl6(); + clxdat |= bplcoltable[pix0]; + if (decode_specials) { + pix0 = decode_denise_specials(pix0); + } + pix0 &= bplehb_mask; + if (pix0 <= 31) { + dpix_val0 = denise_colors.acolors[pix0]; + } else { + dpix_val0 = p_xcolors[(denise_colors.color_regs_ecs[pix0 - 32] >> 1) & 0x777]; + } + } + last_bpl_pix = pix0; + } + shiftbpl6(); + internal_pixel_cnt += 2; + internal_pixel_cnt += 2; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dpix_val1; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + } + if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { + copybpl6e(); + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ehb1_p6_ilores_dhires_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_ham0_p6_ilores_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl6(); + clxdat |= bplcoltable[pix0]; + if (decode_specials) { + pix0 = decode_denise_specials(pix0); + } + dpix_val0 = decode_ham_pixel(pix0); + } + last_bpl_pix = pix0; + } + shiftbpl6(); + internal_pixel_cnt += 2; + internal_pixel_cnt += 2; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dpix_val1; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ham0_p6_ilores_dhires_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_ham1_p6_ilores_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl6(); + clxdat |= bplcoltable[pix0]; + if (decode_specials) { + pix0 = decode_denise_specials(pix0); + } + dpix_val0 = decode_ham_pixel(pix0); + } + last_bpl_pix = pix0; + } + shiftbpl6(); + internal_pixel_cnt += 2; + internal_pixel_cnt += 2; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dpix_val1; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + } + if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { + copybpl6e(); + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ham1_p6_ilores_dhires_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_n0_p2_ilores_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl2(); + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0]; + } + last_bpl_pix = pix0; + } + shiftbpl2(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_lores(); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + internal_pixel_cnt += 2; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + } + } + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dpix_val1; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_n0_p2_ilores_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_n1_p2_ilores_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl2(); + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0]; + } + last_bpl_pix = pix0; + } + shiftbpl2(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_lores(); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + internal_pixel_cnt += 2; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + } + } + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dpix_val1; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + } + if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { + copybpl2e(); + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_n1_p2_ilores_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_dpf0_p2_ilores_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl2(); + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + shiftbpl2(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_lores(); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + internal_pixel_cnt += 2; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + } + } + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dpix_val1; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_dpf0_p2_ilores_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_dpf1_p2_ilores_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl2(); + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + shiftbpl2(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_lores(); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + internal_pixel_cnt += 2; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + } + } + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dpix_val1; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + } + if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { + copybpl2e(); + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_dpf1_p2_ilores_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_ehb0_p2_ilores_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + internal_pixel_cnt += 2; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dpix_val1; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ehb0_p2_ilores_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_ehb1_p2_ilores_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + internal_pixel_cnt += 2; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dpix_val1; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ehb1_p2_ilores_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_ham0_p2_ilores_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + internal_pixel_cnt += 2; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dpix_val1; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ham0_p2_ilores_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_ham1_p2_ilores_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + internal_pixel_cnt += 2; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dpix_val1; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ham1_p2_ilores_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_n0_p4_ilores_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl4(); + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0]; + } + last_bpl_pix = pix0; + } + shiftbpl4(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_lores(); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + internal_pixel_cnt += 2; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + } + } + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dpix_val1; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_n0_p4_ilores_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_n1_p4_ilores_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl4(); + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0]; + } + last_bpl_pix = pix0; + } + shiftbpl4(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_lores(); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + internal_pixel_cnt += 2; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + } + } + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dpix_val1; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + } + if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { + copybpl4e(); + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_n1_p4_ilores_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_dpf0_p4_ilores_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl4(); + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + shiftbpl4(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_lores(); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + internal_pixel_cnt += 2; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + } + } + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dpix_val1; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_dpf0_p4_ilores_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_dpf1_p4_ilores_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl4(); + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + shiftbpl4(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_lores(); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + internal_pixel_cnt += 2; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + } + } + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dpix_val1; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + } + if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { + copybpl4e(); + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_dpf1_p4_ilores_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_ehb0_p4_ilores_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + internal_pixel_cnt += 2; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dpix_val1; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ehb0_p4_ilores_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_ehb1_p4_ilores_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + internal_pixel_cnt += 2; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dpix_val1; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ehb1_p4_ilores_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_ham0_p4_ilores_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + internal_pixel_cnt += 2; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dpix_val1; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ham0_p4_ilores_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_ham1_p4_ilores_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + internal_pixel_cnt += 2; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dpix_val1; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ham1_p4_ilores_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_n0_p5_ilores_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl5(); + clxdat |= bplcoltable[pix0]; + if (decode_specials) { + pix0 = decode_denise_specials(pix0); + } + dpix_val0 = denise_colors.acolors[pix0]; + } + last_bpl_pix = pix0; + } + shiftbpl5(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_lores(); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + internal_pixel_cnt += 2; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + } + } + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dpix_val1; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_n0_p5_ilores_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_n1_p5_ilores_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl5(); + clxdat |= bplcoltable[pix0]; + if (decode_specials) { + pix0 = decode_denise_specials(pix0); + } + dpix_val0 = denise_colors.acolors[pix0]; + } + last_bpl_pix = pix0; + } + shiftbpl5(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_lores(); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + internal_pixel_cnt += 2; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + } + } + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dpix_val1; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + } + if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { + copybpl5e(); + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_n1_p5_ilores_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_dpf0_p5_ilores_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl5(); + clxdat |= bplcoltable[pix0]; + if (decode_specials) { + pix0 = decode_denise_specials(pix0); + } + uae_u8 val0 = dpf_lookup[pix0]; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + shiftbpl5(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_lores(); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + internal_pixel_cnt += 2; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + } + } + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dpix_val1; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_dpf0_p5_ilores_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_dpf1_p5_ilores_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl5(); + clxdat |= bplcoltable[pix0]; + if (decode_specials) { + pix0 = decode_denise_specials(pix0); + } + uae_u8 val0 = dpf_lookup[pix0]; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + shiftbpl5(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_lores(); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + internal_pixel_cnt += 2; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + } + } + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dpix_val1; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + } + if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { + copybpl5e(); + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_dpf1_p5_ilores_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_ehb0_p5_ilores_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + internal_pixel_cnt += 2; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dpix_val1; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ehb0_p5_ilores_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_ehb1_p5_ilores_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + internal_pixel_cnt += 2; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dpix_val1; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ehb1_p5_ilores_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_ham0_p5_ilores_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl5(); + clxdat |= bplcoltable[pix0]; + if (decode_specials) { + pix0 = decode_denise_specials(pix0); + } + dpix_val0 = decode_ham_pixel(pix0); + } + last_bpl_pix = pix0; + } + shiftbpl5(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_lores(); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + internal_pixel_cnt += 2; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + } + } + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dpix_val1; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ham0_p5_ilores_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_ham1_p5_ilores_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl5(); + clxdat |= bplcoltable[pix0]; + if (decode_specials) { + pix0 = decode_denise_specials(pix0); + } + dpix_val0 = decode_ham_pixel(pix0); + } + last_bpl_pix = pix0; + } + shiftbpl5(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_lores(); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + internal_pixel_cnt += 2; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + } + } + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dpix_val1; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + } + if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { + copybpl5e(); + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ham1_p5_ilores_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_n0_p6_ilores_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl6(); + clxdat |= bplcoltable[pix0]; + if (decode_specials) { + pix0 = decode_denise_specials(pix0); + } + dpix_val0 = denise_colors.acolors[pix0]; + } + last_bpl_pix = pix0; + } + shiftbpl6(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_lores(); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + internal_pixel_cnt += 2; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + } + } + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dpix_val1; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_n0_p6_ilores_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_n1_p6_ilores_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl6(); + clxdat |= bplcoltable[pix0]; + if (decode_specials) { + pix0 = decode_denise_specials(pix0); + } + dpix_val0 = denise_colors.acolors[pix0]; + } + last_bpl_pix = pix0; + } + shiftbpl6(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_lores(); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + internal_pixel_cnt += 2; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + } + } + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dpix_val1; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + } + if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { + copybpl6e(); + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_n1_p6_ilores_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_dpf0_p6_ilores_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl6(); + clxdat |= bplcoltable[pix0]; + if (decode_specials) { + pix0 = decode_denise_specials(pix0); + } + uae_u8 val0 = dpf_lookup[pix0]; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + shiftbpl6(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_lores(); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + internal_pixel_cnt += 2; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + } + } + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dpix_val1; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_dpf0_p6_ilores_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_dpf1_p6_ilores_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl6(); + clxdat |= bplcoltable[pix0]; + if (decode_specials) { + pix0 = decode_denise_specials(pix0); + } + uae_u8 val0 = dpf_lookup[pix0]; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + shiftbpl6(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_lores(); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + internal_pixel_cnt += 2; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + } + } + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dpix_val1; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + } + if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { + copybpl6e(); + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_dpf1_p6_ilores_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_ehb0_p6_ilores_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl6(); + clxdat |= bplcoltable[pix0]; + if (decode_specials) { + pix0 = decode_denise_specials(pix0); + } + pix0 &= bplehb_mask; + if (pix0 <= 31) { + dpix_val0 = denise_colors.acolors[pix0]; + } else { + dpix_val0 = p_xcolors[(denise_colors.color_regs_ecs[pix0 - 32] >> 1) & 0x777]; + } + } + last_bpl_pix = pix0; + } + shiftbpl6(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_lores(); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + internal_pixel_cnt += 2; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + } + } + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dpix_val1; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ehb0_p6_ilores_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_ehb1_p6_ilores_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl6(); + clxdat |= bplcoltable[pix0]; + if (decode_specials) { + pix0 = decode_denise_specials(pix0); + } + pix0 &= bplehb_mask; + if (pix0 <= 31) { + dpix_val0 = denise_colors.acolors[pix0]; + } else { + dpix_val0 = p_xcolors[(denise_colors.color_regs_ecs[pix0 - 32] >> 1) & 0x777]; + } + } + last_bpl_pix = pix0; + } + shiftbpl6(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_lores(); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + internal_pixel_cnt += 2; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + } + } + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dpix_val1; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + } + if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { + copybpl6e(); + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ehb1_p6_ilores_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_ham0_p6_ilores_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl6(); + clxdat |= bplcoltable[pix0]; + if (decode_specials) { + pix0 = decode_denise_specials(pix0); + } + dpix_val0 = decode_ham_pixel(pix0); + } + last_bpl_pix = pix0; + } + shiftbpl6(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_lores(); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + internal_pixel_cnt += 2; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + } + } + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dpix_val1; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ham0_p6_ilores_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_ham1_p6_ilores_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl6(); + clxdat |= bplcoltable[pix0]; + if (decode_specials) { + pix0 = decode_denise_specials(pix0); + } + dpix_val0 = decode_ham_pixel(pix0); + } + last_bpl_pix = pix0; + } + shiftbpl6(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_lores(); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + internal_pixel_cnt += 2; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + } + } + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dpix_val1; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + } + if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { + copybpl6e(); + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ham1_p6_ilores_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_n0_p2_ihires_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl2(); + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0]; + } + last_bpl_pix = pix0; + } + shiftbpl2(); + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = getbpl2(); + clxdat |= bplcoltable[pix1]; + dpix_val1 = denise_colors.acolors[pix1]; + } + last_bpl_pix = pix1; + } + shiftbpl2(); + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dpix_val1; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_n0_p2_ihires_dhires_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_n1_p2_ihires_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl2(); + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0]; + } + last_bpl_pix = pix0; + } + shiftbpl2(); + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = getbpl2(); + clxdat |= bplcoltable[pix1]; + dpix_val1 = denise_colors.acolors[pix1]; + } + last_bpl_pix = pix1; + } + shiftbpl2(); + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dpix_val1; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + } + if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { + copybpl2e(); + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_n1_p2_ihires_dhires_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_dpf0_p2_ihires_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl2(); + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + shiftbpl2(); + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = getbpl2(); + clxdat |= bplcoltable[pix1]; + uae_u8 val1 = dpf_lookup[pix1]; + dpix_val1 = denise_colors.acolors[val1]; + } + last_bpl_pix = pix1; + } + shiftbpl2(); + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dpix_val1; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_dpf0_p2_ihires_dhires_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_dpf1_p2_ihires_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl2(); + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + shiftbpl2(); + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = getbpl2(); + clxdat |= bplcoltable[pix1]; + uae_u8 val1 = dpf_lookup[pix1]; + dpix_val1 = denise_colors.acolors[val1]; + } + last_bpl_pix = pix1; + } + shiftbpl2(); + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dpix_val1; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + } + if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { + copybpl2e(); + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_dpf1_p2_ihires_dhires_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_ehb0_p2_ihires_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dpix_val1; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ehb0_p2_ihires_dhires_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_ehb1_p2_ihires_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dpix_val1; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ehb1_p2_ihires_dhires_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_ham0_p2_ihires_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dpix_val1; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ham0_p2_ihires_dhires_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_ham1_p2_ihires_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dpix_val1; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ham1_p2_ihires_dhires_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_n0_p4_ihires_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl4(); + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0]; + } + last_bpl_pix = pix0; + } + shiftbpl4(); + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = getbpl4(); + clxdat |= bplcoltable[pix1]; + dpix_val1 = denise_colors.acolors[pix1]; + } + last_bpl_pix = pix1; + } + shiftbpl4(); + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dpix_val1; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_n0_p4_ihires_dhires_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_n1_p4_ihires_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl4(); + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0]; + } + last_bpl_pix = pix0; + } + shiftbpl4(); + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = getbpl4(); + clxdat |= bplcoltable[pix1]; + dpix_val1 = denise_colors.acolors[pix1]; + } + last_bpl_pix = pix1; + } + shiftbpl4(); + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dpix_val1; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + } + if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { + copybpl4e(); + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_n1_p4_ihires_dhires_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_dpf0_p4_ihires_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl4(); + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + shiftbpl4(); + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = getbpl4(); + clxdat |= bplcoltable[pix1]; + uae_u8 val1 = dpf_lookup[pix1]; + dpix_val1 = denise_colors.acolors[val1]; + } + last_bpl_pix = pix1; + } + shiftbpl4(); + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dpix_val1; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_dpf0_p4_ihires_dhires_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_dpf1_p4_ihires_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl4(); + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + shiftbpl4(); + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = getbpl4(); + clxdat |= bplcoltable[pix1]; + uae_u8 val1 = dpf_lookup[pix1]; + dpix_val1 = denise_colors.acolors[val1]; + } + last_bpl_pix = pix1; + } + shiftbpl4(); + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dpix_val1; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + } + if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { + copybpl4e(); + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_dpf1_p4_ihires_dhires_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_ehb0_p4_ihires_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dpix_val1; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ehb0_p4_ihires_dhires_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_ehb1_p4_ihires_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dpix_val1; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ehb1_p4_ihires_dhires_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_ham0_p4_ihires_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dpix_val1; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ham0_p4_ihires_dhires_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_ham1_p4_ihires_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dpix_val1; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ham1_p4_ihires_dhires_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_n0_p5_ihires_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dpix_val1; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_n0_p5_ihires_dhires_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_n1_p5_ihires_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dpix_val1; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_n1_p5_ihires_dhires_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_dpf0_p5_ihires_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dpix_val1; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_dpf0_p5_ihires_dhires_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_dpf1_p5_ihires_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dpix_val1; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_dpf1_p5_ihires_dhires_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_ehb0_p5_ihires_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dpix_val1; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ehb0_p5_ihires_dhires_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_ehb1_p5_ihires_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dpix_val1; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ehb1_p5_ihires_dhires_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_ham0_p5_ihires_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dpix_val1; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ham0_p5_ihires_dhires_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_ham1_p5_ihires_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dpix_val1; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ham1_p5_ihires_dhires_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_n0_p6_ihires_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dpix_val1; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_n0_p6_ihires_dhires_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_n1_p6_ihires_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dpix_val1; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_n1_p6_ihires_dhires_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_dpf0_p6_ihires_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dpix_val1; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_dpf0_p6_ihires_dhires_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_dpf1_p6_ihires_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dpix_val1; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_dpf1_p6_ihires_dhires_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_ehb0_p6_ihires_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dpix_val1; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ehb0_p6_ihires_dhires_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_ehb1_p6_ihires_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dpix_val1; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ehb1_p6_ihires_dhires_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_ham0_p6_ihires_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dpix_val1; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ham0_p6_ihires_dhires_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_ham1_p6_ihires_dhires(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dpix_val1; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ham1_p6_ihires_dhires_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_n0_p2_ihires_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl2(); + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0]; + } + last_bpl_pix = pix0; + } + shiftbpl2(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_lores(); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = getbpl2(); + clxdat |= bplcoltable[pix1]; + dpix_val1 = denise_colors.acolors[pix1]; + } + last_bpl_pix = pix1; + } + shiftbpl2(); + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + uae_u32 sv1 = sv0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dpix_val1; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_n0_p2_ihires_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_n1_p2_ihires_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl2(); + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0]; + } + last_bpl_pix = pix0; + } + shiftbpl2(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_lores(); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = getbpl2(); + clxdat |= bplcoltable[pix1]; + dpix_val1 = denise_colors.acolors[pix1]; + } + last_bpl_pix = pix1; + } + shiftbpl2(); + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + uae_u32 sv1 = sv0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dpix_val1; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + } + if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { + copybpl2e(); + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_n1_p2_ihires_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_dpf0_p2_ihires_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl2(); + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + shiftbpl2(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_lores(); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = getbpl2(); + clxdat |= bplcoltable[pix1]; + uae_u8 val1 = dpf_lookup[pix1]; + dpix_val1 = denise_colors.acolors[val1]; + } + last_bpl_pix = pix1; + } + shiftbpl2(); + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + uae_u32 sv1 = sv0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dpix_val1; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_dpf0_p2_ihires_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_dpf1_p2_ihires_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl2(); + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + shiftbpl2(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_lores(); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = getbpl2(); + clxdat |= bplcoltable[pix1]; + uae_u8 val1 = dpf_lookup[pix1]; + dpix_val1 = denise_colors.acolors[val1]; + } + last_bpl_pix = pix1; + } + shiftbpl2(); + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + uae_u32 sv1 = sv0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dpix_val1; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + } + if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { + copybpl2e(); + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_dpf1_p2_ihires_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_ehb0_p2_ihires_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dpix_val1; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ehb0_p2_ihires_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_ehb1_p2_ihires_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dpix_val1; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ehb1_p2_ihires_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_ham0_p2_ihires_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dpix_val1; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ham0_p2_ihires_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_ham1_p2_ihires_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dpix_val1; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ham1_p2_ihires_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_n0_p4_ihires_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl4(); + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0]; + } + last_bpl_pix = pix0; + } + shiftbpl4(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_lores(); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = getbpl4(); + clxdat |= bplcoltable[pix1]; + dpix_val1 = denise_colors.acolors[pix1]; + } + last_bpl_pix = pix1; + } + shiftbpl4(); + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + uae_u32 sv1 = sv0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dpix_val1; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_n0_p4_ihires_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_n1_p4_ihires_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl4(); + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0]; + } + last_bpl_pix = pix0; + } + shiftbpl4(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_lores(); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = getbpl4(); + clxdat |= bplcoltable[pix1]; + dpix_val1 = denise_colors.acolors[pix1]; + } + last_bpl_pix = pix1; + } + shiftbpl4(); + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + uae_u32 sv1 = sv0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dpix_val1; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + } + if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { + copybpl4e(); + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_n1_p4_ihires_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_dpf0_p4_ihires_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl4(); + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + shiftbpl4(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_lores(); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = getbpl4(); + clxdat |= bplcoltable[pix1]; + uae_u8 val1 = dpf_lookup[pix1]; + dpix_val1 = denise_colors.acolors[val1]; + } + last_bpl_pix = pix1; + } + shiftbpl4(); + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + uae_u32 sv1 = sv0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dpix_val1; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_dpf0_p4_ihires_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_dpf1_p4_ihires_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl4(); + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + shiftbpl4(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_lores(); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = getbpl4(); + clxdat |= bplcoltable[pix1]; + uae_u8 val1 = dpf_lookup[pix1]; + dpix_val1 = denise_colors.acolors[val1]; + } + last_bpl_pix = pix1; + } + shiftbpl4(); + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + uae_u32 sv1 = sv0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dpix_val1; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + } + if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { + copybpl4e(); + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_dpf1_p4_ihires_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_ehb0_p4_ihires_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dpix_val1; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ehb0_p4_ihires_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_ehb1_p4_ihires_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dpix_val1; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ehb1_p4_ihires_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_ham0_p4_ihires_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dpix_val1; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ham0_p4_ihires_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_ham1_p4_ihires_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dpix_val1; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ham1_p4_ihires_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_n0_p5_ihires_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dpix_val1; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_n0_p5_ihires_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_n1_p5_ihires_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dpix_val1; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_n1_p5_ihires_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_dpf0_p5_ihires_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dpix_val1; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_dpf0_p5_ihires_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_dpf1_p5_ihires_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dpix_val1; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_dpf1_p5_ihires_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_ehb0_p5_ihires_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dpix_val1; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ehb0_p5_ihires_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_ehb1_p5_ihires_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dpix_val1; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ehb1_p5_ihires_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_ham0_p5_ihires_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dpix_val1; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ham0_p5_ihires_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_ham1_p5_ihires_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dpix_val1; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ham1_p5_ihires_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_n0_p6_ihires_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dpix_val1; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_n0_p6_ihires_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_n1_p6_ihires_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dpix_val1; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_n1_p6_ihires_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_dpf0_p6_ihires_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dpix_val1; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_dpf0_p6_ihires_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_dpf1_p6_ihires_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dpix_val1; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_dpf1_p6_ihires_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_ehb0_p6_ihires_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dpix_val1; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ehb0_p6_ihires_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_ehb1_p6_ihires_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dpix_val1; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ehb1_p6_ihires_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_ham0_p6_ihires_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dpix_val1; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ham0_p6_ihires_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_ham1_p6_ihires_dhires_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dpix_val1; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ham1_p6_ihires_dhires_spr_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_n0_p2_ilores_dshres(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl2(); + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0]; + } + last_bpl_pix = pix0; + } + shiftbpl2(); + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + uae_u32 dpix_val2 = dpix_val1; + uae_u8 pix2 = pix1; + uae_u32 dpix_val3 = dpix_val2; + uae_u8 pix3 = pix2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dpix_val1; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + uae_u32 t2 = 0; + if (!extblank) { + t2 = dpix_val2; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + uae_u32 t3 = 0; + if (!extblank) { + t3 = dpix_val3; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_n0_p2_ilores_dshres_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_n1_p2_ilores_dshres(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl2(); + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0]; + } + last_bpl_pix = pix0; + } + shiftbpl2(); + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + uae_u32 dpix_val2 = dpix_val1; + uae_u8 pix2 = pix1; + uae_u32 dpix_val3 = dpix_val2; + uae_u8 pix3 = pix2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dpix_val1; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + uae_u32 t2 = 0; + if (!extblank) { + t2 = dpix_val2; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + uae_u32 t3 = 0; + if (!extblank) { + t3 = dpix_val3; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + } + if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { + copybpl2e(); + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_n1_p2_ilores_dshres_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_dpf0_p2_ilores_dshres(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl2(); + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + shiftbpl2(); + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + uae_u32 dpix_val2 = dpix_val1; + uae_u8 pix2 = pix1; + uae_u32 dpix_val3 = dpix_val2; + uae_u8 pix3 = pix2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dpix_val1; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + uae_u32 t2 = 0; + if (!extblank) { + t2 = dpix_val2; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + uae_u32 t3 = 0; + if (!extblank) { + t3 = dpix_val3; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_dpf0_p2_ilores_dshres_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_dpf1_p2_ilores_dshres(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl2(); + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + shiftbpl2(); + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + uae_u32 dpix_val2 = dpix_val1; + uae_u8 pix2 = pix1; + uae_u32 dpix_val3 = dpix_val2; + uae_u8 pix3 = pix2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dpix_val1; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + uae_u32 t2 = 0; + if (!extblank) { + t2 = dpix_val2; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + uae_u32 t3 = 0; + if (!extblank) { + t3 = dpix_val3; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + } + if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { + copybpl2e(); + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_dpf1_p2_ilores_dshres_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_ehb0_p2_ilores_dshres(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + uae_u32 dpix_val2 = dpix_val1; + uae_u8 pix2 = pix1; + uae_u32 dpix_val3 = dpix_val2; + uae_u8 pix3 = pix2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dpix_val1; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + uae_u32 t2 = 0; + if (!extblank) { + t2 = dpix_val2; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + uae_u32 t3 = 0; + if (!extblank) { + t3 = dpix_val3; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ehb0_p2_ilores_dshres_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_ehb1_p2_ilores_dshres(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + uae_u32 dpix_val2 = dpix_val1; + uae_u8 pix2 = pix1; + uae_u32 dpix_val3 = dpix_val2; + uae_u8 pix3 = pix2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dpix_val1; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + uae_u32 t2 = 0; + if (!extblank) { + t2 = dpix_val2; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + uae_u32 t3 = 0; + if (!extblank) { + t3 = dpix_val3; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ehb1_p2_ilores_dshres_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_ham0_p2_ilores_dshres(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + uae_u32 dpix_val2 = dpix_val1; + uae_u8 pix2 = pix1; + uae_u32 dpix_val3 = dpix_val2; + uae_u8 pix3 = pix2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dpix_val1; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + uae_u32 t2 = 0; + if (!extblank) { + t2 = dpix_val2; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + uae_u32 t3 = 0; + if (!extblank) { + t3 = dpix_val3; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ham0_p2_ilores_dshres_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_ham1_p2_ilores_dshres(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + uae_u32 dpix_val2 = dpix_val1; + uae_u8 pix2 = pix1; + uae_u32 dpix_val3 = dpix_val2; + uae_u8 pix3 = pix2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dpix_val1; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + uae_u32 t2 = 0; + if (!extblank) { + t2 = dpix_val2; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + uae_u32 t3 = 0; + if (!extblank) { + t3 = dpix_val3; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ham1_p2_ilores_dshres_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_n0_p4_ilores_dshres(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl4(); + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0]; + } + last_bpl_pix = pix0; + } + shiftbpl4(); + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + uae_u32 dpix_val2 = dpix_val1; + uae_u8 pix2 = pix1; + uae_u32 dpix_val3 = dpix_val2; + uae_u8 pix3 = pix2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dpix_val1; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + uae_u32 t2 = 0; + if (!extblank) { + t2 = dpix_val2; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + uae_u32 t3 = 0; + if (!extblank) { + t3 = dpix_val3; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_n0_p4_ilores_dshres_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_n1_p4_ilores_dshres(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl4(); + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0]; + } + last_bpl_pix = pix0; + } + shiftbpl4(); + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + uae_u32 dpix_val2 = dpix_val1; + uae_u8 pix2 = pix1; + uae_u32 dpix_val3 = dpix_val2; + uae_u8 pix3 = pix2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dpix_val1; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + uae_u32 t2 = 0; + if (!extblank) { + t2 = dpix_val2; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + uae_u32 t3 = 0; + if (!extblank) { + t3 = dpix_val3; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + } + if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { + copybpl4e(); + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_n1_p4_ilores_dshres_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_dpf0_p4_ilores_dshres(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl4(); + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + shiftbpl4(); + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + uae_u32 dpix_val2 = dpix_val1; + uae_u8 pix2 = pix1; + uae_u32 dpix_val3 = dpix_val2; + uae_u8 pix3 = pix2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dpix_val1; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + uae_u32 t2 = 0; + if (!extblank) { + t2 = dpix_val2; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + uae_u32 t3 = 0; + if (!extblank) { + t3 = dpix_val3; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_dpf0_p4_ilores_dshres_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_dpf1_p4_ilores_dshres(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl4(); + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + shiftbpl4(); + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + uae_u32 dpix_val2 = dpix_val1; + uae_u8 pix2 = pix1; + uae_u32 dpix_val3 = dpix_val2; + uae_u8 pix3 = pix2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dpix_val1; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + uae_u32 t2 = 0; + if (!extblank) { + t2 = dpix_val2; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + uae_u32 t3 = 0; + if (!extblank) { + t3 = dpix_val3; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + } + if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { + copybpl4e(); + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_dpf1_p4_ilores_dshres_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_ehb0_p4_ilores_dshres(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + uae_u32 dpix_val2 = dpix_val1; + uae_u8 pix2 = pix1; + uae_u32 dpix_val3 = dpix_val2; + uae_u8 pix3 = pix2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dpix_val1; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + uae_u32 t2 = 0; + if (!extblank) { + t2 = dpix_val2; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + uae_u32 t3 = 0; + if (!extblank) { + t3 = dpix_val3; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ehb0_p4_ilores_dshres_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_ehb1_p4_ilores_dshres(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + uae_u32 dpix_val2 = dpix_val1; + uae_u8 pix2 = pix1; + uae_u32 dpix_val3 = dpix_val2; + uae_u8 pix3 = pix2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dpix_val1; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + uae_u32 t2 = 0; + if (!extblank) { + t2 = dpix_val2; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + uae_u32 t3 = 0; + if (!extblank) { + t3 = dpix_val3; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ehb1_p4_ilores_dshres_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_ham0_p4_ilores_dshres(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + uae_u32 dpix_val2 = dpix_val1; + uae_u8 pix2 = pix1; + uae_u32 dpix_val3 = dpix_val2; + uae_u8 pix3 = pix2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dpix_val1; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + uae_u32 t2 = 0; + if (!extblank) { + t2 = dpix_val2; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + uae_u32 t3 = 0; + if (!extblank) { + t3 = dpix_val3; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ham0_p4_ilores_dshres_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_ham1_p4_ilores_dshres(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + uae_u32 dpix_val2 = dpix_val1; + uae_u8 pix2 = pix1; + uae_u32 dpix_val3 = dpix_val2; + uae_u8 pix3 = pix2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dpix_val1; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + uae_u32 t2 = 0; + if (!extblank) { + t2 = dpix_val2; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + uae_u32 t3 = 0; + if (!extblank) { + t3 = dpix_val3; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ham1_p4_ilores_dshres_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_n0_p5_ilores_dshres(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl5(); + clxdat |= bplcoltable[pix0]; + if (decode_specials) { + pix0 = decode_denise_specials(pix0); + } + dpix_val0 = denise_colors.acolors[pix0]; + } + last_bpl_pix = pix0; + } + shiftbpl5(); + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + uae_u32 dpix_val2 = dpix_val1; + uae_u8 pix2 = pix1; + uae_u32 dpix_val3 = dpix_val2; + uae_u8 pix3 = pix2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dpix_val1; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + uae_u32 t2 = 0; + if (!extblank) { + t2 = dpix_val2; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + uae_u32 t3 = 0; + if (!extblank) { + t3 = dpix_val3; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_n0_p5_ilores_dshres_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_n1_p5_ilores_dshres(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl5(); + clxdat |= bplcoltable[pix0]; + if (decode_specials) { + pix0 = decode_denise_specials(pix0); + } + dpix_val0 = denise_colors.acolors[pix0]; + } + last_bpl_pix = pix0; + } + shiftbpl5(); + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + uae_u32 dpix_val2 = dpix_val1; + uae_u8 pix2 = pix1; + uae_u32 dpix_val3 = dpix_val2; + uae_u8 pix3 = pix2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dpix_val1; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + uae_u32 t2 = 0; + if (!extblank) { + t2 = dpix_val2; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + uae_u32 t3 = 0; + if (!extblank) { + t3 = dpix_val3; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + } + if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { + copybpl5e(); + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_n1_p5_ilores_dshres_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_dpf0_p5_ilores_dshres(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl5(); + clxdat |= bplcoltable[pix0]; + if (decode_specials) { + pix0 = decode_denise_specials(pix0); + } + uae_u8 val0 = dpf_lookup[pix0]; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + shiftbpl5(); + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + uae_u32 dpix_val2 = dpix_val1; + uae_u8 pix2 = pix1; + uae_u32 dpix_val3 = dpix_val2; + uae_u8 pix3 = pix2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dpix_val1; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + uae_u32 t2 = 0; + if (!extblank) { + t2 = dpix_val2; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + uae_u32 t3 = 0; + if (!extblank) { + t3 = dpix_val3; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_dpf0_p5_ilores_dshres_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_dpf1_p5_ilores_dshres(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl5(); + clxdat |= bplcoltable[pix0]; + if (decode_specials) { + pix0 = decode_denise_specials(pix0); + } + uae_u8 val0 = dpf_lookup[pix0]; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + shiftbpl5(); + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + uae_u32 dpix_val2 = dpix_val1; + uae_u8 pix2 = pix1; + uae_u32 dpix_val3 = dpix_val2; + uae_u8 pix3 = pix2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dpix_val1; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + uae_u32 t2 = 0; + if (!extblank) { + t2 = dpix_val2; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + uae_u32 t3 = 0; + if (!extblank) { + t3 = dpix_val3; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + } + if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { + copybpl5e(); + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_dpf1_p5_ilores_dshres_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_ehb0_p5_ilores_dshres(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + uae_u32 dpix_val2 = dpix_val1; + uae_u8 pix2 = pix1; + uae_u32 dpix_val3 = dpix_val2; + uae_u8 pix3 = pix2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dpix_val1; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + uae_u32 t2 = 0; + if (!extblank) { + t2 = dpix_val2; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + uae_u32 t3 = 0; + if (!extblank) { + t3 = dpix_val3; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ehb0_p5_ilores_dshres_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_ehb1_p5_ilores_dshres(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + uae_u32 dpix_val2 = dpix_val1; + uae_u8 pix2 = pix1; + uae_u32 dpix_val3 = dpix_val2; + uae_u8 pix3 = pix2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dpix_val1; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + uae_u32 t2 = 0; + if (!extblank) { + t2 = dpix_val2; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + uae_u32 t3 = 0; + if (!extblank) { + t3 = dpix_val3; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ehb1_p5_ilores_dshres_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_ham0_p5_ilores_dshres(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl5(); + clxdat |= bplcoltable[pix0]; + if (decode_specials) { + pix0 = decode_denise_specials(pix0); + } + dpix_val0 = decode_ham_pixel(pix0); + } + last_bpl_pix = pix0; + } + shiftbpl5(); + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + uae_u32 dpix_val2 = dpix_val1; + uae_u8 pix2 = pix1; + uae_u32 dpix_val3 = dpix_val2; + uae_u8 pix3 = pix2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dpix_val1; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + uae_u32 t2 = 0; + if (!extblank) { + t2 = dpix_val2; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + uae_u32 t3 = 0; + if (!extblank) { + t3 = dpix_val3; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ham0_p5_ilores_dshres_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_ham1_p5_ilores_dshres(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl5(); + clxdat |= bplcoltable[pix0]; + if (decode_specials) { + pix0 = decode_denise_specials(pix0); + } + dpix_val0 = decode_ham_pixel(pix0); + } + last_bpl_pix = pix0; + } + shiftbpl5(); + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + uae_u32 dpix_val2 = dpix_val1; + uae_u8 pix2 = pix1; + uae_u32 dpix_val3 = dpix_val2; + uae_u8 pix3 = pix2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dpix_val1; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + uae_u32 t2 = 0; + if (!extblank) { + t2 = dpix_val2; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + uae_u32 t3 = 0; + if (!extblank) { + t3 = dpix_val3; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + } + if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { + copybpl5e(); + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ham1_p5_ilores_dshres_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_n0_p6_ilores_dshres(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl6(); + clxdat |= bplcoltable[pix0]; + if (decode_specials) { + pix0 = decode_denise_specials(pix0); + } + dpix_val0 = denise_colors.acolors[pix0]; + } + last_bpl_pix = pix0; + } + shiftbpl6(); + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + uae_u32 dpix_val2 = dpix_val1; + uae_u8 pix2 = pix1; + uae_u32 dpix_val3 = dpix_val2; + uae_u8 pix3 = pix2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dpix_val1; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + uae_u32 t2 = 0; + if (!extblank) { + t2 = dpix_val2; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + uae_u32 t3 = 0; + if (!extblank) { + t3 = dpix_val3; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_n0_p6_ilores_dshres_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_n1_p6_ilores_dshres(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl6(); + clxdat |= bplcoltable[pix0]; + if (decode_specials) { + pix0 = decode_denise_specials(pix0); + } + dpix_val0 = denise_colors.acolors[pix0]; + } + last_bpl_pix = pix0; + } + shiftbpl6(); + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + uae_u32 dpix_val2 = dpix_val1; + uae_u8 pix2 = pix1; + uae_u32 dpix_val3 = dpix_val2; + uae_u8 pix3 = pix2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dpix_val1; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + uae_u32 t2 = 0; + if (!extblank) { + t2 = dpix_val2; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + uae_u32 t3 = 0; + if (!extblank) { + t3 = dpix_val3; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + } + if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { + copybpl6e(); + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_n1_p6_ilores_dshres_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_dpf0_p6_ilores_dshres(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl6(); + clxdat |= bplcoltable[pix0]; + if (decode_specials) { + pix0 = decode_denise_specials(pix0); + } + uae_u8 val0 = dpf_lookup[pix0]; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + shiftbpl6(); + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + uae_u32 dpix_val2 = dpix_val1; + uae_u8 pix2 = pix1; + uae_u32 dpix_val3 = dpix_val2; + uae_u8 pix3 = pix2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dpix_val1; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + uae_u32 t2 = 0; + if (!extblank) { + t2 = dpix_val2; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + uae_u32 t3 = 0; + if (!extblank) { + t3 = dpix_val3; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_dpf0_p6_ilores_dshres_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_dpf1_p6_ilores_dshres(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl6(); + clxdat |= bplcoltable[pix0]; + if (decode_specials) { + pix0 = decode_denise_specials(pix0); + } + uae_u8 val0 = dpf_lookup[pix0]; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + shiftbpl6(); + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + uae_u32 dpix_val2 = dpix_val1; + uae_u8 pix2 = pix1; + uae_u32 dpix_val3 = dpix_val2; + uae_u8 pix3 = pix2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dpix_val1; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + uae_u32 t2 = 0; + if (!extblank) { + t2 = dpix_val2; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + uae_u32 t3 = 0; + if (!extblank) { + t3 = dpix_val3; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + } + if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { + copybpl6e(); + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_dpf1_p6_ilores_dshres_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_ehb0_p6_ilores_dshres(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl6(); + clxdat |= bplcoltable[pix0]; + if (decode_specials) { + pix0 = decode_denise_specials(pix0); + } + pix0 &= bplehb_mask; + if (pix0 <= 31) { + dpix_val0 = denise_colors.acolors[pix0]; + } else { + dpix_val0 = p_xcolors[(denise_colors.color_regs_ecs[pix0 - 32] >> 1) & 0x777]; + } + } + last_bpl_pix = pix0; + } + shiftbpl6(); + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + uae_u32 dpix_val2 = dpix_val1; + uae_u8 pix2 = pix1; + uae_u32 dpix_val3 = dpix_val2; + uae_u8 pix3 = pix2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dpix_val1; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + uae_u32 t2 = 0; + if (!extblank) { + t2 = dpix_val2; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + uae_u32 t3 = 0; + if (!extblank) { + t3 = dpix_val3; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ehb0_p6_ilores_dshres_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_ehb1_p6_ilores_dshres(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl6(); + clxdat |= bplcoltable[pix0]; + if (decode_specials) { + pix0 = decode_denise_specials(pix0); + } + pix0 &= bplehb_mask; + if (pix0 <= 31) { + dpix_val0 = denise_colors.acolors[pix0]; + } else { + dpix_val0 = p_xcolors[(denise_colors.color_regs_ecs[pix0 - 32] >> 1) & 0x777]; + } + } + last_bpl_pix = pix0; + } + shiftbpl6(); + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + uae_u32 dpix_val2 = dpix_val1; + uae_u8 pix2 = pix1; + uae_u32 dpix_val3 = dpix_val2; + uae_u8 pix3 = pix2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dpix_val1; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + uae_u32 t2 = 0; + if (!extblank) { + t2 = dpix_val2; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + uae_u32 t3 = 0; + if (!extblank) { + t3 = dpix_val3; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + } + if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { + copybpl6e(); + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ehb1_p6_ilores_dshres_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_ham0_p6_ilores_dshres(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl6(); + clxdat |= bplcoltable[pix0]; + if (decode_specials) { + pix0 = decode_denise_specials(pix0); + } + dpix_val0 = decode_ham_pixel(pix0); + } + last_bpl_pix = pix0; + } + shiftbpl6(); + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + uae_u32 dpix_val2 = dpix_val1; + uae_u8 pix2 = pix1; + uae_u32 dpix_val3 = dpix_val2; + uae_u8 pix3 = pix2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dpix_val1; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + uae_u32 t2 = 0; + if (!extblank) { + t2 = dpix_val2; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + uae_u32 t3 = 0; + if (!extblank) { + t3 = dpix_val3; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ham0_p6_ilores_dshres_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_ham1_p6_ilores_dshres(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl6(); + clxdat |= bplcoltable[pix0]; + if (decode_specials) { + pix0 = decode_denise_specials(pix0); + } + dpix_val0 = decode_ham_pixel(pix0); + } + last_bpl_pix = pix0; + } + shiftbpl6(); + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + uae_u32 dpix_val2 = dpix_val1; + uae_u8 pix2 = pix1; + uae_u32 dpix_val3 = dpix_val2; + uae_u8 pix3 = pix2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dpix_val1; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + uae_u32 t2 = 0; + if (!extblank) { + t2 = dpix_val2; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + uae_u32 t3 = 0; + if (!extblank) { + t3 = dpix_val3; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + } + if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { + copybpl6e(); + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ham1_p6_ilores_dshres_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_n0_p2_ilores_dshres_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl2(); + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0]; + } + last_bpl_pix = pix0; + } + shiftbpl2(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_lores(); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + uae_u32 dpix_val2 = dpix_val1; + uae_u8 pix2 = pix1; + uae_u32 dpix_val3 = dpix_val2; + uae_u8 pix3 = pix2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + dpix_val2 = dpix_val0; + dpix_val3 = dpix_val0; + } + } + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dpix_val1; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + uae_u32 t2 = 0; + if (!extblank) { + t2 = dpix_val2; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + uae_u32 t3 = 0; + if (!extblank) { + t3 = dpix_val3; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_n0_p2_ilores_dshres_spr_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_n1_p2_ilores_dshres_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl2(); + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0]; + } + last_bpl_pix = pix0; + } + shiftbpl2(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_lores(); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + uae_u32 dpix_val2 = dpix_val1; + uae_u8 pix2 = pix1; + uae_u32 dpix_val3 = dpix_val2; + uae_u8 pix3 = pix2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + dpix_val2 = dpix_val0; + dpix_val3 = dpix_val0; + } + } + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dpix_val1; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + uae_u32 t2 = 0; + if (!extblank) { + t2 = dpix_val2; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + uae_u32 t3 = 0; + if (!extblank) { + t3 = dpix_val3; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + } + if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { + copybpl2e(); + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_n1_p2_ilores_dshres_spr_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_dpf0_p2_ilores_dshres_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl2(); + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + shiftbpl2(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_lores(); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + uae_u32 dpix_val2 = dpix_val1; + uae_u8 pix2 = pix1; + uae_u32 dpix_val3 = dpix_val2; + uae_u8 pix3 = pix2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + dpix_val2 = dpix_val0; + dpix_val3 = dpix_val0; + } + } + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dpix_val1; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + uae_u32 t2 = 0; + if (!extblank) { + t2 = dpix_val2; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + uae_u32 t3 = 0; + if (!extblank) { + t3 = dpix_val3; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_dpf0_p2_ilores_dshres_spr_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_dpf1_p2_ilores_dshres_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl2(); + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + shiftbpl2(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_lores(); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + uae_u32 dpix_val2 = dpix_val1; + uae_u8 pix2 = pix1; + uae_u32 dpix_val3 = dpix_val2; + uae_u8 pix3 = pix2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + dpix_val2 = dpix_val0; + dpix_val3 = dpix_val0; + } + } + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dpix_val1; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + uae_u32 t2 = 0; + if (!extblank) { + t2 = dpix_val2; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + uae_u32 t3 = 0; + if (!extblank) { + t3 = dpix_val3; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + } + if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { + copybpl2e(); + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_dpf1_p2_ilores_dshres_spr_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_ehb0_p2_ilores_dshres_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + uae_u32 dpix_val2 = dpix_val1; + uae_u8 pix2 = pix1; + uae_u32 dpix_val3 = dpix_val2; + uae_u8 pix3 = pix2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dpix_val1; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + uae_u32 t2 = 0; + if (!extblank) { + t2 = dpix_val2; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + uae_u32 t3 = 0; + if (!extblank) { + t3 = dpix_val3; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ehb0_p2_ilores_dshres_spr_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_ehb1_p2_ilores_dshres_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + uae_u32 dpix_val2 = dpix_val1; + uae_u8 pix2 = pix1; + uae_u32 dpix_val3 = dpix_val2; + uae_u8 pix3 = pix2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dpix_val1; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + uae_u32 t2 = 0; + if (!extblank) { + t2 = dpix_val2; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + uae_u32 t3 = 0; + if (!extblank) { + t3 = dpix_val3; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ehb1_p2_ilores_dshres_spr_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_ham0_p2_ilores_dshres_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + uae_u32 dpix_val2 = dpix_val1; + uae_u8 pix2 = pix1; + uae_u32 dpix_val3 = dpix_val2; + uae_u8 pix3 = pix2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dpix_val1; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + uae_u32 t2 = 0; + if (!extblank) { + t2 = dpix_val2; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + uae_u32 t3 = 0; + if (!extblank) { + t3 = dpix_val3; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ham0_p2_ilores_dshres_spr_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_ham1_p2_ilores_dshres_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + uae_u32 dpix_val2 = dpix_val1; + uae_u8 pix2 = pix1; + uae_u32 dpix_val3 = dpix_val2; + uae_u8 pix3 = pix2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dpix_val1; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + uae_u32 t2 = 0; + if (!extblank) { + t2 = dpix_val2; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + uae_u32 t3 = 0; + if (!extblank) { + t3 = dpix_val3; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ham1_p2_ilores_dshres_spr_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_n0_p4_ilores_dshres_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl4(); + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0]; + } + last_bpl_pix = pix0; + } + shiftbpl4(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_lores(); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + uae_u32 dpix_val2 = dpix_val1; + uae_u8 pix2 = pix1; + uae_u32 dpix_val3 = dpix_val2; + uae_u8 pix3 = pix2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + dpix_val2 = dpix_val0; + dpix_val3 = dpix_val0; + } + } + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dpix_val1; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + uae_u32 t2 = 0; + if (!extblank) { + t2 = dpix_val2; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + uae_u32 t3 = 0; + if (!extblank) { + t3 = dpix_val3; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_n0_p4_ilores_dshres_spr_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_n1_p4_ilores_dshres_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl4(); + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0]; + } + last_bpl_pix = pix0; + } + shiftbpl4(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_lores(); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + uae_u32 dpix_val2 = dpix_val1; + uae_u8 pix2 = pix1; + uae_u32 dpix_val3 = dpix_val2; + uae_u8 pix3 = pix2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + dpix_val2 = dpix_val0; + dpix_val3 = dpix_val0; + } + } + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dpix_val1; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + uae_u32 t2 = 0; + if (!extblank) { + t2 = dpix_val2; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + uae_u32 t3 = 0; + if (!extblank) { + t3 = dpix_val3; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + } + if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { + copybpl4e(); + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_n1_p4_ilores_dshres_spr_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_dpf0_p4_ilores_dshres_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl4(); + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + shiftbpl4(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_lores(); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + uae_u32 dpix_val2 = dpix_val1; + uae_u8 pix2 = pix1; + uae_u32 dpix_val3 = dpix_val2; + uae_u8 pix3 = pix2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + dpix_val2 = dpix_val0; + dpix_val3 = dpix_val0; + } + } + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dpix_val1; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + uae_u32 t2 = 0; + if (!extblank) { + t2 = dpix_val2; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + uae_u32 t3 = 0; + if (!extblank) { + t3 = dpix_val3; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_dpf0_p4_ilores_dshres_spr_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_dpf1_p4_ilores_dshres_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl4(); + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + shiftbpl4(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_lores(); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + uae_u32 dpix_val2 = dpix_val1; + uae_u8 pix2 = pix1; + uae_u32 dpix_val3 = dpix_val2; + uae_u8 pix3 = pix2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + dpix_val2 = dpix_val0; + dpix_val3 = dpix_val0; + } + } + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dpix_val1; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + uae_u32 t2 = 0; + if (!extblank) { + t2 = dpix_val2; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + uae_u32 t3 = 0; + if (!extblank) { + t3 = dpix_val3; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + } + if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { + copybpl4e(); + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_dpf1_p4_ilores_dshres_spr_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_ehb0_p4_ilores_dshres_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + uae_u32 dpix_val2 = dpix_val1; + uae_u8 pix2 = pix1; + uae_u32 dpix_val3 = dpix_val2; + uae_u8 pix3 = pix2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dpix_val1; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + uae_u32 t2 = 0; + if (!extblank) { + t2 = dpix_val2; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + uae_u32 t3 = 0; + if (!extblank) { + t3 = dpix_val3; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ehb0_p4_ilores_dshres_spr_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_ehb1_p4_ilores_dshres_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + uae_u32 dpix_val2 = dpix_val1; + uae_u8 pix2 = pix1; + uae_u32 dpix_val3 = dpix_val2; + uae_u8 pix3 = pix2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dpix_val1; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + uae_u32 t2 = 0; + if (!extblank) { + t2 = dpix_val2; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + uae_u32 t3 = 0; + if (!extblank) { + t3 = dpix_val3; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ehb1_p4_ilores_dshres_spr_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_ham0_p4_ilores_dshres_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + uae_u32 dpix_val2 = dpix_val1; + uae_u8 pix2 = pix1; + uae_u32 dpix_val3 = dpix_val2; + uae_u8 pix3 = pix2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dpix_val1; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + uae_u32 t2 = 0; + if (!extblank) { + t2 = dpix_val2; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + uae_u32 t3 = 0; + if (!extblank) { + t3 = dpix_val3; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ham0_p4_ilores_dshres_spr_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_ham1_p4_ilores_dshres_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + uae_u32 dpix_val2 = dpix_val1; + uae_u8 pix2 = pix1; + uae_u32 dpix_val3 = dpix_val2; + uae_u8 pix3 = pix2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dpix_val1; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + uae_u32 t2 = 0; + if (!extblank) { + t2 = dpix_val2; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + uae_u32 t3 = 0; + if (!extblank) { + t3 = dpix_val3; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ham1_p4_ilores_dshres_spr_filtered(void) { lts_null(); } -static void lts_ecs_fm0_ehb1_p4_ihires_dhires_spr(void) +static void lts_ecs_fm0_n0_p5_ilores_dshres_spr(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl5(); + clxdat |= bplcoltable[pix0]; + if (decode_specials) { + pix0 = decode_denise_specials(pix0); + } + dpix_val0 = denise_colors.acolors[pix0]; + } + last_bpl_pix = pix0; + } + shiftbpl5(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_lores(); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + uae_u32 dpix_val2 = dpix_val1; + uae_u8 pix2 = pix1; + uae_u32 dpix_val3 = dpix_val2; + uae_u8 pix3 = pix2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + dpix_val2 = dpix_val0; + dpix_val3 = dpix_val0; + } + } + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dpix_val1; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + uae_u32 t2 = 0; + if (!extblank) { + t2 = dpix_val2; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + uae_u32 t3 = 0; + if (!extblank) { + t3 = dpix_val3; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_ecs_fm0_ehb1_p4_ihires_dhires_spr_filtered(void) +static void lts_ecs_fm0_n0_p5_ilores_dshres_spr_filtered(void) { lts_null(); } -static void lts_ecs_fm0_ham0_p4_ihires_dhires_spr(void) +static void lts_ecs_fm0_n1_p5_ilores_dshres_spr(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl5(); + clxdat |= bplcoltable[pix0]; + if (decode_specials) { + pix0 = decode_denise_specials(pix0); + } + dpix_val0 = denise_colors.acolors[pix0]; + } + last_bpl_pix = pix0; + } + shiftbpl5(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_lores(); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + uae_u32 dpix_val2 = dpix_val1; + uae_u8 pix2 = pix1; + uae_u32 dpix_val3 = dpix_val2; + uae_u8 pix3 = pix2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + dpix_val2 = dpix_val0; + dpix_val3 = dpix_val0; + } + } + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dpix_val1; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + uae_u32 t2 = 0; + if (!extblank) { + t2 = dpix_val2; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + uae_u32 t3 = 0; + if (!extblank) { + t3 = dpix_val3; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + } + if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { + copybpl5e(); + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_ecs_fm0_ham0_p4_ihires_dhires_spr_filtered(void) +static void lts_ecs_fm0_n1_p5_ilores_dshres_spr_filtered(void) { lts_null(); } -static void lts_ecs_fm0_ham1_p4_ihires_dhires_spr(void) +static void lts_ecs_fm0_dpf0_p5_ilores_dshres_spr(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl5(); + clxdat |= bplcoltable[pix0]; + if (decode_specials) { + pix0 = decode_denise_specials(pix0); + } + uae_u8 val0 = dpf_lookup[pix0]; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + shiftbpl5(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_lores(); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + uae_u32 dpix_val2 = dpix_val1; + uae_u8 pix2 = pix1; + uae_u32 dpix_val3 = dpix_val2; + uae_u8 pix3 = pix2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + dpix_val2 = dpix_val0; + dpix_val3 = dpix_val0; + } + } + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dpix_val1; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + uae_u32 t2 = 0; + if (!extblank) { + t2 = dpix_val2; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + uae_u32 t3 = 0; + if (!extblank) { + t3 = dpix_val3; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_ecs_fm0_ham1_p4_ihires_dhires_spr_filtered(void) +static void lts_ecs_fm0_dpf0_p5_ilores_dshres_spr_filtered(void) { lts_null(); } -static void lts_ecs_fm0_n0_p5_ihires_dhires_spr(void) +static void lts_ecs_fm0_dpf1_p5_ilores_dshres_spr(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl5(); + clxdat |= bplcoltable[pix0]; + if (decode_specials) { + pix0 = decode_denise_specials(pix0); + } + uae_u8 val0 = dpf_lookup[pix0]; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + shiftbpl5(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_lores(); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + uae_u32 dpix_val2 = dpix_val1; + uae_u8 pix2 = pix1; + uae_u32 dpix_val3 = dpix_val2; + uae_u8 pix3 = pix2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + dpix_val2 = dpix_val0; + dpix_val3 = dpix_val0; + } + } + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dpix_val1; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + uae_u32 t2 = 0; + if (!extblank) { + t2 = dpix_val2; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + uae_u32 t3 = 0; + if (!extblank) { + t3 = dpix_val3; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + } + if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { + copybpl5e(); + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_ecs_fm0_n0_p5_ihires_dhires_spr_filtered(void) +static void lts_ecs_fm0_dpf1_p5_ilores_dshres_spr_filtered(void) { lts_null(); } -static void lts_ecs_fm0_n1_p5_ihires_dhires_spr(void) +static void lts_ecs_fm0_ehb0_p5_ilores_dshres_spr(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + uae_u32 dpix_val2 = dpix_val1; + uae_u8 pix2 = pix1; + uae_u32 dpix_val3 = dpix_val2; + uae_u8 pix3 = pix2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dpix_val1; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + uae_u32 t2 = 0; + if (!extblank) { + t2 = dpix_val2; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + uae_u32 t3 = 0; + if (!extblank) { + t3 = dpix_val3; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_ecs_fm0_n1_p5_ihires_dhires_spr_filtered(void) +static void lts_ecs_fm0_ehb0_p5_ilores_dshres_spr_filtered(void) { lts_null(); } -static void lts_ecs_fm0_dpf0_p5_ihires_dhires_spr(void) +static void lts_ecs_fm0_ehb1_p5_ilores_dshres_spr(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + uae_u32 dpix_val2 = dpix_val1; + uae_u8 pix2 = pix1; + uae_u32 dpix_val3 = dpix_val2; + uae_u8 pix3 = pix2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dpix_val1; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + uae_u32 t2 = 0; + if (!extblank) { + t2 = dpix_val2; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + uae_u32 t3 = 0; + if (!extblank) { + t3 = dpix_val3; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_ecs_fm0_dpf0_p5_ihires_dhires_spr_filtered(void) +static void lts_ecs_fm0_ehb1_p5_ilores_dshres_spr_filtered(void) { lts_null(); } -static void lts_ecs_fm0_dpf1_p5_ihires_dhires_spr(void) +static void lts_ecs_fm0_ham0_p5_ilores_dshres_spr(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl5(); + clxdat |= bplcoltable[pix0]; + if (decode_specials) { + pix0 = decode_denise_specials(pix0); + } + dpix_val0 = decode_ham_pixel(pix0); + } + last_bpl_pix = pix0; + } + shiftbpl5(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_lores(); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + uae_u32 dpix_val2 = dpix_val1; + uae_u8 pix2 = pix1; + uae_u32 dpix_val3 = dpix_val2; + uae_u8 pix3 = pix2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + dpix_val2 = dpix_val0; + dpix_val3 = dpix_val0; + } + } + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dpix_val1; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + uae_u32 t2 = 0; + if (!extblank) { + t2 = dpix_val2; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + uae_u32 t3 = 0; + if (!extblank) { + t3 = dpix_val3; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_ecs_fm0_dpf1_p5_ihires_dhires_spr_filtered(void) +static void lts_ecs_fm0_ham0_p5_ilores_dshres_spr_filtered(void) { lts_null(); } -static void lts_ecs_fm0_ehb0_p5_ihires_dhires_spr(void) +static void lts_ecs_fm0_ham1_p5_ilores_dshres_spr(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl5(); + clxdat |= bplcoltable[pix0]; + if (decode_specials) { + pix0 = decode_denise_specials(pix0); + } + dpix_val0 = decode_ham_pixel(pix0); + } + last_bpl_pix = pix0; + } + shiftbpl5(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_lores(); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + uae_u32 dpix_val2 = dpix_val1; + uae_u8 pix2 = pix1; + uae_u32 dpix_val3 = dpix_val2; + uae_u8 pix3 = pix2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + dpix_val2 = dpix_val0; + dpix_val3 = dpix_val0; + } + } + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dpix_val1; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + uae_u32 t2 = 0; + if (!extblank) { + t2 = dpix_val2; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + uae_u32 t3 = 0; + if (!extblank) { + t3 = dpix_val3; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + } + if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { + copybpl5e(); + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_ecs_fm0_ehb0_p5_ihires_dhires_spr_filtered(void) +static void lts_ecs_fm0_ham1_p5_ilores_dshres_spr_filtered(void) { lts_null(); } -static void lts_ecs_fm0_ehb1_p5_ihires_dhires_spr(void) +static void lts_ecs_fm0_n0_p6_ilores_dshres_spr(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl6(); + clxdat |= bplcoltable[pix0]; + if (decode_specials) { + pix0 = decode_denise_specials(pix0); + } + dpix_val0 = denise_colors.acolors[pix0]; + } + last_bpl_pix = pix0; + } + shiftbpl6(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_lores(); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + uae_u32 dpix_val2 = dpix_val1; + uae_u8 pix2 = pix1; + uae_u32 dpix_val3 = dpix_val2; + uae_u8 pix3 = pix2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + dpix_val2 = dpix_val0; + dpix_val3 = dpix_val0; + } + } + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dpix_val1; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + uae_u32 t2 = 0; + if (!extblank) { + t2 = dpix_val2; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + uae_u32 t3 = 0; + if (!extblank) { + t3 = dpix_val3; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_ecs_fm0_ehb1_p5_ihires_dhires_spr_filtered(void) +static void lts_ecs_fm0_n0_p6_ilores_dshres_spr_filtered(void) { lts_null(); } -static void lts_ecs_fm0_ham0_p5_ihires_dhires_spr(void) +static void lts_ecs_fm0_n1_p6_ilores_dshres_spr(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl6(); + clxdat |= bplcoltable[pix0]; + if (decode_specials) { + pix0 = decode_denise_specials(pix0); + } + dpix_val0 = denise_colors.acolors[pix0]; + } + last_bpl_pix = pix0; + } + shiftbpl6(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_lores(); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + uae_u32 dpix_val2 = dpix_val1; + uae_u8 pix2 = pix1; + uae_u32 dpix_val3 = dpix_val2; + uae_u8 pix3 = pix2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + dpix_val2 = dpix_val0; + dpix_val3 = dpix_val0; + } + } + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dpix_val1; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + uae_u32 t2 = 0; + if (!extblank) { + t2 = dpix_val2; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + uae_u32 t3 = 0; + if (!extblank) { + t3 = dpix_val3; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + } + if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { + copybpl6e(); + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_ecs_fm0_ham0_p5_ihires_dhires_spr_filtered(void) +static void lts_ecs_fm0_n1_p6_ilores_dshres_spr_filtered(void) { lts_null(); } -static void lts_ecs_fm0_ham1_p5_ihires_dhires_spr(void) +static void lts_ecs_fm0_dpf0_p6_ilores_dshres_spr(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl6(); + clxdat |= bplcoltable[pix0]; + if (decode_specials) { + pix0 = decode_denise_specials(pix0); + } + uae_u8 val0 = dpf_lookup[pix0]; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + shiftbpl6(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_lores(); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + uae_u32 dpix_val2 = dpix_val1; + uae_u8 pix2 = pix1; + uae_u32 dpix_val3 = dpix_val2; + uae_u8 pix3 = pix2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + dpix_val2 = dpix_val0; + dpix_val3 = dpix_val0; + } + } + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dpix_val1; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + uae_u32 t2 = 0; + if (!extblank) { + t2 = dpix_val2; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + uae_u32 t3 = 0; + if (!extblank) { + t3 = dpix_val3; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_ecs_fm0_ham1_p5_ihires_dhires_spr_filtered(void) +static void lts_ecs_fm0_dpf0_p6_ilores_dshres_spr_filtered(void) { lts_null(); } -static void lts_ecs_fm0_n0_p6_ihires_dhires_spr(void) +static void lts_ecs_fm0_dpf1_p6_ilores_dshres_spr(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl6(); + clxdat |= bplcoltable[pix0]; + if (decode_specials) { + pix0 = decode_denise_specials(pix0); + } + uae_u8 val0 = dpf_lookup[pix0]; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + shiftbpl6(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_lores(); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + uae_u32 dpix_val2 = dpix_val1; + uae_u8 pix2 = pix1; + uae_u32 dpix_val3 = dpix_val2; + uae_u8 pix3 = pix2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + dpix_val2 = dpix_val0; + dpix_val3 = dpix_val0; + } + } + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dpix_val1; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + uae_u32 t2 = 0; + if (!extblank) { + t2 = dpix_val2; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + uae_u32 t3 = 0; + if (!extblank) { + t3 = dpix_val3; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + } + if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { + copybpl6e(); + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_ecs_fm0_n0_p6_ihires_dhires_spr_filtered(void) +static void lts_ecs_fm0_dpf1_p6_ilores_dshres_spr_filtered(void) { lts_null(); } -static void lts_ecs_fm0_n1_p6_ihires_dhires_spr(void) +static void lts_ecs_fm0_ehb0_p6_ilores_dshres_spr(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl6(); + clxdat |= bplcoltable[pix0]; + if (decode_specials) { + pix0 = decode_denise_specials(pix0); + } + pix0 &= bplehb_mask; + if (pix0 <= 31) { + dpix_val0 = denise_colors.acolors[pix0]; + } else { + dpix_val0 = p_xcolors[(denise_colors.color_regs_ecs[pix0 - 32] >> 1) & 0x777]; + } + } + last_bpl_pix = pix0; + } + shiftbpl6(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_lores(); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + uae_u32 dpix_val2 = dpix_val1; + uae_u8 pix2 = pix1; + uae_u32 dpix_val3 = dpix_val2; + uae_u8 pix3 = pix2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + dpix_val2 = dpix_val0; + dpix_val3 = dpix_val0; + } + } + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dpix_val1; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + uae_u32 t2 = 0; + if (!extblank) { + t2 = dpix_val2; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + uae_u32 t3 = 0; + if (!extblank) { + t3 = dpix_val3; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_ecs_fm0_n1_p6_ihires_dhires_spr_filtered(void) +static void lts_ecs_fm0_ehb0_p6_ilores_dshres_spr_filtered(void) { lts_null(); } -static void lts_ecs_fm0_dpf0_p6_ihires_dhires_spr(void) +static void lts_ecs_fm0_ehb1_p6_ilores_dshres_spr(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl6(); + clxdat |= bplcoltable[pix0]; + if (decode_specials) { + pix0 = decode_denise_specials(pix0); + } + pix0 &= bplehb_mask; + if (pix0 <= 31) { + dpix_val0 = denise_colors.acolors[pix0]; + } else { + dpix_val0 = p_xcolors[(denise_colors.color_regs_ecs[pix0 - 32] >> 1) & 0x777]; + } + } + last_bpl_pix = pix0; + } + shiftbpl6(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_lores(); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + uae_u32 dpix_val2 = dpix_val1; + uae_u8 pix2 = pix1; + uae_u32 dpix_val3 = dpix_val2; + uae_u8 pix3 = pix2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + dpix_val2 = dpix_val0; + dpix_val3 = dpix_val0; + } + } + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dpix_val1; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + uae_u32 t2 = 0; + if (!extblank) { + t2 = dpix_val2; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + uae_u32 t3 = 0; + if (!extblank) { + t3 = dpix_val3; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + } + if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { + copybpl6e(); + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_ecs_fm0_dpf0_p6_ihires_dhires_spr_filtered(void) +static void lts_ecs_fm0_ehb1_p6_ilores_dshres_spr_filtered(void) { lts_null(); } -static void lts_ecs_fm0_dpf1_p6_ihires_dhires_spr(void) +static void lts_ecs_fm0_ham0_p6_ilores_dshres_spr(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl6(); + clxdat |= bplcoltable[pix0]; + if (decode_specials) { + pix0 = decode_denise_specials(pix0); + } + dpix_val0 = decode_ham_pixel(pix0); + } + last_bpl_pix = pix0; + } + shiftbpl6(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_lores(); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + uae_u32 dpix_val2 = dpix_val1; + uae_u8 pix2 = pix1; + uae_u32 dpix_val3 = dpix_val2; + uae_u8 pix3 = pix2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + dpix_val2 = dpix_val0; + dpix_val3 = dpix_val0; + } + } + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dpix_val1; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + uae_u32 t2 = 0; + if (!extblank) { + t2 = dpix_val2; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + uae_u32 t3 = 0; + if (!extblank) { + t3 = dpix_val3; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_ecs_fm0_dpf1_p6_ihires_dhires_spr_filtered(void) +static void lts_ecs_fm0_ham0_p6_ilores_dshres_spr_filtered(void) { lts_null(); } -static void lts_ecs_fm0_ehb0_p6_ihires_dhires_spr(void) +static void lts_ecs_fm0_ham1_p6_ilores_dshres_spr(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl6(); + clxdat |= bplcoltable[pix0]; + if (decode_specials) { + pix0 = decode_denise_specials(pix0); + } + dpix_val0 = decode_ham_pixel(pix0); + } + last_bpl_pix = pix0; + } + shiftbpl6(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_lores(); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + uae_u32 dpix_val2 = dpix_val1; + uae_u8 pix2 = pix1; + uae_u32 dpix_val3 = dpix_val2; + uae_u8 pix3 = pix2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + dpix_val2 = dpix_val0; + dpix_val3 = dpix_val0; + } + } + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dpix_val1; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + uae_u32 t2 = 0; + if (!extblank) { + t2 = dpix_val2; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + uae_u32 t3 = 0; + if (!extblank) { + t3 = dpix_val3; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + } + if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { + copybpl6e(); + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_ecs_fm0_ehb0_p6_ihires_dhires_spr_filtered(void) +static void lts_ecs_fm0_ham1_p6_ilores_dshres_spr_filtered(void) { lts_null(); } -static void lts_ecs_fm0_ehb1_p6_ihires_dhires_spr(void) +static void lts_ecs_fm0_n0_p2_ihires_dshres(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl2(); + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0]; + } + last_bpl_pix = pix0; + } + shiftbpl2(); + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = getbpl2(); + clxdat |= bplcoltable[pix2]; + dpix_val2 = denise_colors.acolors[pix2]; + } + last_bpl_pix = pix2; + } + shiftbpl2(); + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + uae_u32 dpix_val3 = dpix_val2; + uae_u8 pix3 = pix2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dpix_val1; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + uae_u32 t2 = 0; + if (!extblank) { + t2 = dpix_val2; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + uae_u32 t3 = 0; + if (!extblank) { + t3 = dpix_val3; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_ecs_fm0_ehb1_p6_ihires_dhires_spr_filtered(void) +static void lts_ecs_fm0_n0_p2_ihires_dshres_filtered(void) { lts_null(); } -static void lts_ecs_fm0_ham0_p6_ihires_dhires_spr(void) +static void lts_ecs_fm0_n1_p2_ihires_dshres(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl2(); + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0]; + } + last_bpl_pix = pix0; + } + shiftbpl2(); + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = getbpl2(); + clxdat |= bplcoltable[pix2]; + dpix_val2 = denise_colors.acolors[pix2]; + } + last_bpl_pix = pix2; + } + shiftbpl2(); + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + uae_u32 dpix_val3 = dpix_val2; + uae_u8 pix3 = pix2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dpix_val1; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + uae_u32 t2 = 0; + if (!extblank) { + t2 = dpix_val2; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + uae_u32 t3 = 0; + if (!extblank) { + t3 = dpix_val3; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + } + if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { + copybpl2e(); + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_ecs_fm0_ham0_p6_ihires_dhires_spr_filtered(void) +static void lts_ecs_fm0_n1_p2_ihires_dshres_filtered(void) { lts_null(); } -static void lts_ecs_fm0_ham1_p6_ihires_dhires_spr(void) +static void lts_ecs_fm0_dpf0_p2_ihires_dshres(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl2(); + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + shiftbpl2(); + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = getbpl2(); + clxdat |= bplcoltable[pix2]; + uae_u8 val2 = dpf_lookup[pix2]; + dpix_val2 = denise_colors.acolors[val2]; + } + last_bpl_pix = pix2; + } + shiftbpl2(); + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + uae_u32 dpix_val3 = dpix_val2; + uae_u8 pix3 = pix2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dpix_val1; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + uae_u32 t2 = 0; + if (!extblank) { + t2 = dpix_val2; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + uae_u32 t3 = 0; + if (!extblank) { + t3 = dpix_val3; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_ecs_fm0_ham1_p6_ihires_dhires_spr_filtered(void) +static void lts_ecs_fm0_dpf0_p2_ihires_dshres_filtered(void) { lts_null(); } -static void lts_ecs_fm0_n0_p2_ilores_dshres(void) +static void lts_ecs_fm0_dpf1_p2_ihires_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -12988,19 +31193,31 @@ static void lts_ecs_fm0_n0_p2_ilores_dshres(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = getbpl2(); clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + dpix_val0 = denise_colors.acolors[val0]; } last_bpl_pix = pix0; } shiftbpl2(); internal_pixel_cnt += 1; internal_pixel_cnt += 1; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = getbpl2(); + clxdat |= bplcoltable[pix2]; + uae_u8 val2 = dpf_lookup[pix2]; + dpix_val2 = denise_colors.acolors[val2]; + } + last_bpl_pix = pix2; + } + shiftbpl2(); internal_pixel_cnt += 1; internal_pixel_cnt += 1; uae_u32 dpix_val1 = dpix_val0; uae_u8 pix1 = pix0; - uae_u32 dpix_val2 = dpix_val1; - uae_u8 pix2 = pix1; uae_u32 dpix_val3 = dpix_val2; uae_u8 pix3 = pix2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { @@ -13049,8 +31266,11 @@ static void lts_ecs_fm0_n0_p2_ilores_dshres(void) *buf1++ = t3; *buf2++ = t3; } - if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl2(); + if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { + copybpl2e(); + } + if (bpldat_copy[1] && (denise_hcounter_cmp & 7) == bplcon1_shift[1]) { + copybpl2o(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -13074,11 +31294,11 @@ static void lts_ecs_fm0_n0_p2_ilores_dshres(void) denise_cck++; } } -static void lts_ecs_fm0_n0_p2_ilores_dshres_filtered(void) +static void lts_ecs_fm0_dpf1_p2_ihires_dshres_filtered(void) { lts_null(); } -static void lts_ecs_fm0_n1_p2_ilores_dshres(void) +static void lts_ecs_fm0_ehb0_p2_ihires_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -13093,22 +31313,18 @@ static void lts_ecs_fm0_n1_p2_ilores_dshres(void) uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl2(); - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0]; - } - last_bpl_pix = pix0; } - shiftbpl2(); internal_pixel_cnt += 1; internal_pixel_cnt += 1; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } internal_pixel_cnt += 1; internal_pixel_cnt += 1; uae_u32 dpix_val1 = dpix_val0; uae_u8 pix1 = pix0; - uae_u32 dpix_val2 = dpix_val1; - uae_u8 pix2 = pix1; uae_u32 dpix_val3 = dpix_val2; uae_u8 pix3 = pix2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { @@ -13157,12 +31373,6 @@ static void lts_ecs_fm0_n1_p2_ilores_dshres(void) *buf1++ = t3; *buf2++ = t3; } - if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl2e(); - } - if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) { - copybpl2o(); - } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER *debug_dma_dhpos_odd = denise_hcounter; @@ -13185,11 +31395,11 @@ static void lts_ecs_fm0_n1_p2_ilores_dshres(void) denise_cck++; } } -static void lts_ecs_fm0_n1_p2_ilores_dshres_filtered(void) +static void lts_ecs_fm0_ehb0_p2_ihires_dshres_filtered(void) { lts_null(); } -static void lts_ecs_fm0_dpf0_p2_ilores_dshres(void) +static void lts_ecs_fm0_ehb1_p2_ihires_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -13204,23 +31414,18 @@ static void lts_ecs_fm0_dpf0_p2_ilores_dshres(void) uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl2(); - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; } - shiftbpl2(); internal_pixel_cnt += 1; internal_pixel_cnt += 1; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } internal_pixel_cnt += 1; internal_pixel_cnt += 1; uae_u32 dpix_val1 = dpix_val0; uae_u8 pix1 = pix0; - uae_u32 dpix_val2 = dpix_val1; - uae_u8 pix2 = pix1; uae_u32 dpix_val3 = dpix_val2; uae_u8 pix3 = pix2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { @@ -13269,9 +31474,6 @@ static void lts_ecs_fm0_dpf0_p2_ilores_dshres(void) *buf1++ = t3; *buf2++ = t3; } - if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl2(); - } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER *debug_dma_dhpos_odd = denise_hcounter; @@ -13294,11 +31496,11 @@ static void lts_ecs_fm0_dpf0_p2_ilores_dshres(void) denise_cck++; } } -static void lts_ecs_fm0_dpf0_p2_ilores_dshres_filtered(void) +static void lts_ecs_fm0_ehb1_p2_ihires_dshres_filtered(void) { lts_null(); } -static void lts_ecs_fm0_dpf1_p2_ilores_dshres(void) +static void lts_ecs_fm0_ham0_p2_ihires_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -13313,23 +31515,18 @@ static void lts_ecs_fm0_dpf1_p2_ilores_dshres(void) uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl2(); - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; } - shiftbpl2(); internal_pixel_cnt += 1; internal_pixel_cnt += 1; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } internal_pixel_cnt += 1; internal_pixel_cnt += 1; uae_u32 dpix_val1 = dpix_val0; uae_u8 pix1 = pix0; - uae_u32 dpix_val2 = dpix_val1; - uae_u8 pix2 = pix1; uae_u32 dpix_val3 = dpix_val2; uae_u8 pix3 = pix2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { @@ -13378,12 +31575,6 @@ static void lts_ecs_fm0_dpf1_p2_ilores_dshres(void) *buf1++ = t3; *buf2++ = t3; } - if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl2e(); - } - if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) { - copybpl2o(); - } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER *debug_dma_dhpos_odd = denise_hcounter; @@ -13406,43 +31597,11 @@ static void lts_ecs_fm0_dpf1_p2_ilores_dshres(void) denise_cck++; } } -static void lts_ecs_fm0_dpf1_p2_ilores_dshres_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb0_p2_ilores_dshres(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb0_p2_ilores_dshres_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb1_p2_ilores_dshres(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb1_p2_ilores_dshres_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham0_p2_ilores_dshres(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham0_p2_ilores_dshres_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham1_p2_ilores_dshres(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham1_p2_ilores_dshres_filtered(void) +static void lts_ecs_fm0_ham0_p2_ihires_dshres_filtered(void) { lts_null(); } -static void lts_ecs_fm0_n0_p4_ilores_dshres(void) +static void lts_ecs_fm0_ham1_p2_ihires_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -13457,22 +31616,18 @@ static void lts_ecs_fm0_n0_p4_ilores_dshres(void) uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl4(); - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0]; - } - last_bpl_pix = pix0; } - shiftbpl4(); internal_pixel_cnt += 1; internal_pixel_cnt += 1; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } internal_pixel_cnt += 1; internal_pixel_cnt += 1; uae_u32 dpix_val1 = dpix_val0; uae_u8 pix1 = pix0; - uae_u32 dpix_val2 = dpix_val1; - uae_u8 pix2 = pix1; uae_u32 dpix_val3 = dpix_val2; uae_u8 pix3 = pix2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { @@ -13521,9 +31676,6 @@ static void lts_ecs_fm0_n0_p4_ilores_dshres(void) *buf1++ = t3; *buf2++ = t3; } - if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl4(); - } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER *debug_dma_dhpos_odd = denise_hcounter; @@ -13546,11 +31698,11 @@ static void lts_ecs_fm0_n0_p4_ilores_dshres(void) denise_cck++; } } -static void lts_ecs_fm0_n0_p4_ilores_dshres_filtered(void) +static void lts_ecs_fm0_ham1_p2_ihires_dshres_filtered(void) { lts_null(); } -static void lts_ecs_fm0_n1_p4_ilores_dshres(void) +static void lts_ecs_fm0_n0_p4_ihires_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -13575,12 +31727,22 @@ static void lts_ecs_fm0_n1_p4_ilores_dshres(void) shiftbpl4(); internal_pixel_cnt += 1; internal_pixel_cnt += 1; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = getbpl4(); + clxdat |= bplcoltable[pix2]; + dpix_val2 = denise_colors.acolors[pix2]; + } + last_bpl_pix = pix2; + } + shiftbpl4(); internal_pixel_cnt += 1; internal_pixel_cnt += 1; uae_u32 dpix_val1 = dpix_val0; uae_u8 pix1 = pix0; - uae_u32 dpix_val2 = dpix_val1; - uae_u8 pix2 = pix1; uae_u32 dpix_val3 = dpix_val2; uae_u8 pix3 = pix2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { @@ -13629,11 +31791,8 @@ static void lts_ecs_fm0_n1_p4_ilores_dshres(void) *buf1++ = t3; *buf2++ = t3; } - if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl4e(); - } - if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) { - copybpl4o(); + if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { + copybpl4(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -13657,11 +31816,11 @@ static void lts_ecs_fm0_n1_p4_ilores_dshres(void) denise_cck++; } } -static void lts_ecs_fm0_n1_p4_ilores_dshres_filtered(void) +static void lts_ecs_fm0_n0_p4_ihires_dshres_filtered(void) { lts_null(); } -static void lts_ecs_fm0_dpf0_p4_ilores_dshres(void) +static void lts_ecs_fm0_n1_p4_ihires_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -13679,20 +31838,29 @@ static void lts_ecs_fm0_dpf0_p4_ilores_dshres(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = getbpl4(); clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - dpix_val0 = denise_colors.acolors[val0]; + dpix_val0 = denise_colors.acolors[pix0]; } last_bpl_pix = pix0; } shiftbpl4(); internal_pixel_cnt += 1; internal_pixel_cnt += 1; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = getbpl4(); + clxdat |= bplcoltable[pix2]; + dpix_val2 = denise_colors.acolors[pix2]; + } + last_bpl_pix = pix2; + } + shiftbpl4(); internal_pixel_cnt += 1; internal_pixel_cnt += 1; uae_u32 dpix_val1 = dpix_val0; uae_u8 pix1 = pix0; - uae_u32 dpix_val2 = dpix_val1; - uae_u8 pix2 = pix1; uae_u32 dpix_val3 = dpix_val2; uae_u8 pix3 = pix2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { @@ -13741,8 +31909,11 @@ static void lts_ecs_fm0_dpf0_p4_ilores_dshres(void) *buf1++ = t3; *buf2++ = t3; } - if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl4(); + if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { + copybpl4e(); + } + if (bpldat_copy[1] && (denise_hcounter_cmp & 7) == bplcon1_shift[1]) { + copybpl4o(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -13766,11 +31937,11 @@ static void lts_ecs_fm0_dpf0_p4_ilores_dshres(void) denise_cck++; } } -static void lts_ecs_fm0_dpf0_p4_ilores_dshres_filtered(void) +static void lts_ecs_fm0_n1_p4_ihires_dshres_filtered(void) { lts_null(); } -static void lts_ecs_fm0_dpf1_p4_ilores_dshres(void) +static void lts_ecs_fm0_dpf0_p4_ihires_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -13796,12 +31967,23 @@ static void lts_ecs_fm0_dpf1_p4_ilores_dshres(void) shiftbpl4(); internal_pixel_cnt += 1; internal_pixel_cnt += 1; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = getbpl4(); + clxdat |= bplcoltable[pix2]; + uae_u8 val2 = dpf_lookup[pix2]; + dpix_val2 = denise_colors.acolors[val2]; + } + last_bpl_pix = pix2; + } + shiftbpl4(); internal_pixel_cnt += 1; internal_pixel_cnt += 1; uae_u32 dpix_val1 = dpix_val0; uae_u8 pix1 = pix0; - uae_u32 dpix_val2 = dpix_val1; - uae_u8 pix2 = pix1; uae_u32 dpix_val3 = dpix_val2; uae_u8 pix3 = pix2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { @@ -13850,11 +32032,8 @@ static void lts_ecs_fm0_dpf1_p4_ilores_dshres(void) *buf1++ = t3; *buf2++ = t3; } - if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl4e(); - } - if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) { - copybpl4o(); + if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { + copybpl4(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -13878,43 +32057,11 @@ static void lts_ecs_fm0_dpf1_p4_ilores_dshres(void) denise_cck++; } } -static void lts_ecs_fm0_dpf1_p4_ilores_dshres_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb0_p4_ilores_dshres(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb0_p4_ilores_dshres_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb1_p4_ilores_dshres(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb1_p4_ilores_dshres_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham0_p4_ilores_dshres(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham0_p4_ilores_dshres_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham1_p4_ilores_dshres(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham1_p4_ilores_dshres_filtered(void) +static void lts_ecs_fm0_dpf0_p4_ihires_dshres_filtered(void) { lts_null(); } -static void lts_ecs_fm0_n0_p5_ilores_dshres(void) +static void lts_ecs_fm0_dpf1_p4_ihires_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -13930,24 +32077,33 @@ static void lts_ecs_fm0_n0_p5_ilores_dshres(void) if (!denise_blank_active) { dpix_val0 = bordercolor; if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl5(); + pix0 = getbpl4(); clxdat |= bplcoltable[pix0]; - if (decode_specials) { - pix0 = decode_denise_specials(pix0); - } - dpix_val0 = denise_colors.acolors[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + dpix_val0 = denise_colors.acolors[val0]; } last_bpl_pix = pix0; } - shiftbpl5(); + shiftbpl4(); internal_pixel_cnt += 1; internal_pixel_cnt += 1; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = getbpl4(); + clxdat |= bplcoltable[pix2]; + uae_u8 val2 = dpf_lookup[pix2]; + dpix_val2 = denise_colors.acolors[val2]; + } + last_bpl_pix = pix2; + } + shiftbpl4(); internal_pixel_cnt += 1; internal_pixel_cnt += 1; uae_u32 dpix_val1 = dpix_val0; uae_u8 pix1 = pix0; - uae_u32 dpix_val2 = dpix_val1; - uae_u8 pix2 = pix1; uae_u32 dpix_val3 = dpix_val2; uae_u8 pix3 = pix2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { @@ -13996,8 +32152,11 @@ static void lts_ecs_fm0_n0_p5_ilores_dshres(void) *buf1++ = t3; *buf2++ = t3; } - if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl5(); + if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { + copybpl4e(); + } + if (bpldat_copy[1] && (denise_hcounter_cmp & 7) == bplcon1_shift[1]) { + copybpl4o(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -14021,11 +32180,11 @@ static void lts_ecs_fm0_n0_p5_ilores_dshres(void) denise_cck++; } } -static void lts_ecs_fm0_n0_p5_ilores_dshres_filtered(void) +static void lts_ecs_fm0_dpf1_p4_ihires_dshres_filtered(void) { lts_null(); } -static void lts_ecs_fm0_n1_p5_ilores_dshres(void) +static void lts_ecs_fm0_ehb0_p4_ihires_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -14040,25 +32199,18 @@ static void lts_ecs_fm0_n1_p5_ilores_dshres(void) uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl5(); - clxdat |= bplcoltable[pix0]; - if (decode_specials) { - pix0 = decode_denise_specials(pix0); - } - dpix_val0 = denise_colors.acolors[pix0]; - } - last_bpl_pix = pix0; } - shiftbpl5(); internal_pixel_cnt += 1; internal_pixel_cnt += 1; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } internal_pixel_cnt += 1; internal_pixel_cnt += 1; uae_u32 dpix_val1 = dpix_val0; uae_u8 pix1 = pix0; - uae_u32 dpix_val2 = dpix_val1; - uae_u8 pix2 = pix1; uae_u32 dpix_val3 = dpix_val2; uae_u8 pix3 = pix2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { @@ -14107,12 +32259,6 @@ static void lts_ecs_fm0_n1_p5_ilores_dshres(void) *buf1++ = t3; *buf2++ = t3; } - if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl5e(); - } - if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) { - copybpl5o(); - } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER *debug_dma_dhpos_odd = denise_hcounter; @@ -14135,11 +32281,11 @@ static void lts_ecs_fm0_n1_p5_ilores_dshres(void) denise_cck++; } } -static void lts_ecs_fm0_n1_p5_ilores_dshres_filtered(void) +static void lts_ecs_fm0_ehb0_p4_ihires_dshres_filtered(void) { lts_null(); } -static void lts_ecs_fm0_dpf0_p5_ilores_dshres(void) +static void lts_ecs_fm0_ehb1_p4_ihires_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -14154,26 +32300,18 @@ static void lts_ecs_fm0_dpf0_p5_ilores_dshres(void) uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl5(); - clxdat |= bplcoltable[pix0]; - if (decode_specials) { - pix0 = decode_denise_specials(pix0); - } - uae_u8 val0 = dpf_lookup[pix0]; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; } - shiftbpl5(); internal_pixel_cnt += 1; internal_pixel_cnt += 1; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } internal_pixel_cnt += 1; internal_pixel_cnt += 1; uae_u32 dpix_val1 = dpix_val0; uae_u8 pix1 = pix0; - uae_u32 dpix_val2 = dpix_val1; - uae_u8 pix2 = pix1; uae_u32 dpix_val3 = dpix_val2; uae_u8 pix3 = pix2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { @@ -14222,9 +32360,6 @@ static void lts_ecs_fm0_dpf0_p5_ilores_dshres(void) *buf1++ = t3; *buf2++ = t3; } - if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl5(); - } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER *debug_dma_dhpos_odd = denise_hcounter; @@ -14247,11 +32382,11 @@ static void lts_ecs_fm0_dpf0_p5_ilores_dshres(void) denise_cck++; } } -static void lts_ecs_fm0_dpf0_p5_ilores_dshres_filtered(void) +static void lts_ecs_fm0_ehb1_p4_ihires_dshres_filtered(void) { lts_null(); } -static void lts_ecs_fm0_dpf1_p5_ilores_dshres(void) +static void lts_ecs_fm0_ham0_p4_ihires_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -14266,26 +32401,18 @@ static void lts_ecs_fm0_dpf1_p5_ilores_dshres(void) uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl5(); - clxdat |= bplcoltable[pix0]; - if (decode_specials) { - pix0 = decode_denise_specials(pix0); - } - uae_u8 val0 = dpf_lookup[pix0]; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; } - shiftbpl5(); internal_pixel_cnt += 1; internal_pixel_cnt += 1; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } internal_pixel_cnt += 1; internal_pixel_cnt += 1; uae_u32 dpix_val1 = dpix_val0; uae_u8 pix1 = pix0; - uae_u32 dpix_val2 = dpix_val1; - uae_u8 pix2 = pix1; uae_u32 dpix_val3 = dpix_val2; uae_u8 pix3 = pix2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { @@ -14334,12 +32461,6 @@ static void lts_ecs_fm0_dpf1_p5_ilores_dshres(void) *buf1++ = t3; *buf2++ = t3; } - if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl5e(); - } - if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) { - copybpl5o(); - } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER *debug_dma_dhpos_odd = denise_hcounter; @@ -14362,27 +32483,11 @@ static void lts_ecs_fm0_dpf1_p5_ilores_dshres(void) denise_cck++; } } -static void lts_ecs_fm0_dpf1_p5_ilores_dshres_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb0_p5_ilores_dshres(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb0_p5_ilores_dshres_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb1_p5_ilores_dshres(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb1_p5_ilores_dshres_filtered(void) +static void lts_ecs_fm0_ham0_p4_ihires_dshres_filtered(void) { lts_null(); } -static void lts_ecs_fm0_ham0_p5_ilores_dshres(void) +static void lts_ecs_fm0_ham1_p4_ihires_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -14397,25 +32502,18 @@ static void lts_ecs_fm0_ham0_p5_ilores_dshres(void) uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl5(); - clxdat |= bplcoltable[pix0]; - if (decode_specials) { - pix0 = decode_denise_specials(pix0); - } - dpix_val0 = decode_ham_pixel(pix0); - } - last_bpl_pix = pix0; } - shiftbpl5(); internal_pixel_cnt += 1; internal_pixel_cnt += 1; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } internal_pixel_cnt += 1; internal_pixel_cnt += 1; uae_u32 dpix_val1 = dpix_val0; uae_u8 pix1 = pix0; - uae_u32 dpix_val2 = dpix_val1; - uae_u8 pix2 = pix1; uae_u32 dpix_val3 = dpix_val2; uae_u8 pix3 = pix2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { @@ -14464,9 +32562,6 @@ static void lts_ecs_fm0_ham0_p5_ilores_dshres(void) *buf1++ = t3; *buf2++ = t3; } - if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl5(); - } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER *debug_dma_dhpos_odd = denise_hcounter; @@ -14489,11 +32584,11 @@ static void lts_ecs_fm0_ham0_p5_ilores_dshres(void) denise_cck++; } } -static void lts_ecs_fm0_ham0_p5_ilores_dshres_filtered(void) +static void lts_ecs_fm0_ham1_p4_ihires_dshres_filtered(void) { lts_null(); } -static void lts_ecs_fm0_ham1_p5_ilores_dshres(void) +static void lts_ecs_fm0_n0_p5_ihires_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -14506,27 +32601,20 @@ static void lts_ecs_fm0_ham1_p5_ilores_dshres(void) if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; - if (!denise_blank_active) { - dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl5(); - clxdat |= bplcoltable[pix0]; - if (decode_specials) { - pix0 = decode_denise_specials(pix0); - } - dpix_val0 = decode_ham_pixel(pix0); - } - last_bpl_pix = pix0; + if (!denise_blank_active) { + dpix_val0 = bordercolor; } - shiftbpl5(); internal_pixel_cnt += 1; internal_pixel_cnt += 1; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } internal_pixel_cnt += 1; internal_pixel_cnt += 1; uae_u32 dpix_val1 = dpix_val0; uae_u8 pix1 = pix0; - uae_u32 dpix_val2 = dpix_val1; - uae_u8 pix2 = pix1; uae_u32 dpix_val3 = dpix_val2; uae_u8 pix3 = pix2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { @@ -14575,12 +32663,6 @@ static void lts_ecs_fm0_ham1_p5_ilores_dshres(void) *buf1++ = t3; *buf2++ = t3; } - if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl5e(); - } - if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) { - copybpl5o(); - } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER *debug_dma_dhpos_odd = denise_hcounter; @@ -14603,11 +32685,11 @@ static void lts_ecs_fm0_ham1_p5_ilores_dshres(void) denise_cck++; } } -static void lts_ecs_fm0_ham1_p5_ilores_dshres_filtered(void) +static void lts_ecs_fm0_n0_p5_ihires_dshres_filtered(void) { lts_null(); } -static void lts_ecs_fm0_n0_p6_ilores_dshres(void) +static void lts_ecs_fm0_n1_p5_ihires_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -14622,25 +32704,18 @@ static void lts_ecs_fm0_n0_p6_ilores_dshres(void) uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl6(); - clxdat |= bplcoltable[pix0]; - if (decode_specials) { - pix0 = decode_denise_specials(pix0); - } - dpix_val0 = denise_colors.acolors[pix0]; - } - last_bpl_pix = pix0; } - shiftbpl6(); internal_pixel_cnt += 1; internal_pixel_cnt += 1; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } internal_pixel_cnt += 1; internal_pixel_cnt += 1; uae_u32 dpix_val1 = dpix_val0; uae_u8 pix1 = pix0; - uae_u32 dpix_val2 = dpix_val1; - uae_u8 pix2 = pix1; uae_u32 dpix_val3 = dpix_val2; uae_u8 pix3 = pix2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { @@ -14689,9 +32764,6 @@ static void lts_ecs_fm0_n0_p6_ilores_dshres(void) *buf1++ = t3; *buf2++ = t3; } - if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl6(); - } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER *debug_dma_dhpos_odd = denise_hcounter; @@ -14714,11 +32786,11 @@ static void lts_ecs_fm0_n0_p6_ilores_dshres(void) denise_cck++; } } -static void lts_ecs_fm0_n0_p6_ilores_dshres_filtered(void) +static void lts_ecs_fm0_n1_p5_ihires_dshres_filtered(void) { lts_null(); } -static void lts_ecs_fm0_n1_p6_ilores_dshres(void) +static void lts_ecs_fm0_dpf0_p5_ihires_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -14733,25 +32805,18 @@ static void lts_ecs_fm0_n1_p6_ilores_dshres(void) uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl6(); - clxdat |= bplcoltable[pix0]; - if (decode_specials) { - pix0 = decode_denise_specials(pix0); - } - dpix_val0 = denise_colors.acolors[pix0]; - } - last_bpl_pix = pix0; } - shiftbpl6(); internal_pixel_cnt += 1; internal_pixel_cnt += 1; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } internal_pixel_cnt += 1; internal_pixel_cnt += 1; uae_u32 dpix_val1 = dpix_val0; uae_u8 pix1 = pix0; - uae_u32 dpix_val2 = dpix_val1; - uae_u8 pix2 = pix1; uae_u32 dpix_val3 = dpix_val2; uae_u8 pix3 = pix2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { @@ -14800,12 +32865,6 @@ static void lts_ecs_fm0_n1_p6_ilores_dshres(void) *buf1++ = t3; *buf2++ = t3; } - if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl6e(); - } - if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) { - copybpl6o(); - } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER *debug_dma_dhpos_odd = denise_hcounter; @@ -14828,11 +32887,11 @@ static void lts_ecs_fm0_n1_p6_ilores_dshres(void) denise_cck++; } } -static void lts_ecs_fm0_n1_p6_ilores_dshres_filtered(void) +static void lts_ecs_fm0_dpf0_p5_ihires_dshres_filtered(void) { lts_null(); } -static void lts_ecs_fm0_dpf0_p6_ilores_dshres(void) +static void lts_ecs_fm0_dpf1_p5_ihires_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -14847,26 +32906,18 @@ static void lts_ecs_fm0_dpf0_p6_ilores_dshres(void) uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl6(); - clxdat |= bplcoltable[pix0]; - if (decode_specials) { - pix0 = decode_denise_specials(pix0); - } - uae_u8 val0 = dpf_lookup[pix0]; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; } - shiftbpl6(); internal_pixel_cnt += 1; internal_pixel_cnt += 1; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } internal_pixel_cnt += 1; internal_pixel_cnt += 1; uae_u32 dpix_val1 = dpix_val0; uae_u8 pix1 = pix0; - uae_u32 dpix_val2 = dpix_val1; - uae_u8 pix2 = pix1; uae_u32 dpix_val3 = dpix_val2; uae_u8 pix3 = pix2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { @@ -14915,9 +32966,6 @@ static void lts_ecs_fm0_dpf0_p6_ilores_dshres(void) *buf1++ = t3; *buf2++ = t3; } - if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl6(); - } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER *debug_dma_dhpos_odd = denise_hcounter; @@ -14940,11 +32988,11 @@ static void lts_ecs_fm0_dpf0_p6_ilores_dshres(void) denise_cck++; } } -static void lts_ecs_fm0_dpf0_p6_ilores_dshres_filtered(void) +static void lts_ecs_fm0_dpf1_p5_ihires_dshres_filtered(void) { lts_null(); } -static void lts_ecs_fm0_dpf1_p6_ilores_dshres(void) +static void lts_ecs_fm0_ehb0_p5_ihires_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -14959,26 +33007,18 @@ static void lts_ecs_fm0_dpf1_p6_ilores_dshres(void) uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl6(); - clxdat |= bplcoltable[pix0]; - if (decode_specials) { - pix0 = decode_denise_specials(pix0); - } - uae_u8 val0 = dpf_lookup[pix0]; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; } - shiftbpl6(); internal_pixel_cnt += 1; internal_pixel_cnt += 1; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } internal_pixel_cnt += 1; internal_pixel_cnt += 1; uae_u32 dpix_val1 = dpix_val0; uae_u8 pix1 = pix0; - uae_u32 dpix_val2 = dpix_val1; - uae_u8 pix2 = pix1; uae_u32 dpix_val3 = dpix_val2; uae_u8 pix3 = pix2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { @@ -15027,12 +33067,6 @@ static void lts_ecs_fm0_dpf1_p6_ilores_dshres(void) *buf1++ = t3; *buf2++ = t3; } - if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl6e(); - } - if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) { - copybpl6o(); - } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER *debug_dma_dhpos_odd = denise_hcounter; @@ -15055,11 +33089,11 @@ static void lts_ecs_fm0_dpf1_p6_ilores_dshres(void) denise_cck++; } } -static void lts_ecs_fm0_dpf1_p6_ilores_dshres_filtered(void) +static void lts_ecs_fm0_ehb0_p5_ihires_dshres_filtered(void) { lts_null(); } -static void lts_ecs_fm0_ehb0_p6_ilores_dshres(void) +static void lts_ecs_fm0_ehb1_p5_ihires_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -15074,30 +33108,18 @@ static void lts_ecs_fm0_ehb0_p6_ilores_dshres(void) uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl6(); - clxdat |= bplcoltable[pix0]; - if (decode_specials) { - pix0 = decode_denise_specials(pix0); - } - pix0 &= bplehb_mask; - if (pix0 <= 31) { - dpix_val0 = denise_colors.acolors[pix0]; - } else { - dpix_val0 = p_xcolors[(denise_colors.color_regs_ecs[pix0 - 32] >> 1) & 0x777]; - } - } - last_bpl_pix = pix0; } - shiftbpl6(); internal_pixel_cnt += 1; internal_pixel_cnt += 1; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } internal_pixel_cnt += 1; internal_pixel_cnt += 1; uae_u32 dpix_val1 = dpix_val0; uae_u8 pix1 = pix0; - uae_u32 dpix_val2 = dpix_val1; - uae_u8 pix2 = pix1; uae_u32 dpix_val3 = dpix_val2; uae_u8 pix3 = pix2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { @@ -15146,9 +33168,6 @@ static void lts_ecs_fm0_ehb0_p6_ilores_dshres(void) *buf1++ = t3; *buf2++ = t3; } - if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl6(); - } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER *debug_dma_dhpos_odd = denise_hcounter; @@ -15171,11 +33190,11 @@ static void lts_ecs_fm0_ehb0_p6_ilores_dshres(void) denise_cck++; } } -static void lts_ecs_fm0_ehb0_p6_ilores_dshres_filtered(void) +static void lts_ecs_fm0_ehb1_p5_ihires_dshres_filtered(void) { lts_null(); } -static void lts_ecs_fm0_ehb1_p6_ilores_dshres(void) +static void lts_ecs_fm0_ham0_p5_ihires_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -15190,30 +33209,18 @@ static void lts_ecs_fm0_ehb1_p6_ilores_dshres(void) uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl6(); - clxdat |= bplcoltable[pix0]; - if (decode_specials) { - pix0 = decode_denise_specials(pix0); - } - pix0 &= bplehb_mask; - if (pix0 <= 31) { - dpix_val0 = denise_colors.acolors[pix0]; - } else { - dpix_val0 = p_xcolors[(denise_colors.color_regs_ecs[pix0 - 32] >> 1) & 0x777]; - } - } - last_bpl_pix = pix0; } - shiftbpl6(); internal_pixel_cnt += 1; internal_pixel_cnt += 1; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } internal_pixel_cnt += 1; internal_pixel_cnt += 1; uae_u32 dpix_val1 = dpix_val0; uae_u8 pix1 = pix0; - uae_u32 dpix_val2 = dpix_val1; - uae_u8 pix2 = pix1; uae_u32 dpix_val3 = dpix_val2; uae_u8 pix3 = pix2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { @@ -15262,12 +33269,6 @@ static void lts_ecs_fm0_ehb1_p6_ilores_dshres(void) *buf1++ = t3; *buf2++ = t3; } - if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl6e(); - } - if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) { - copybpl6o(); - } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER *debug_dma_dhpos_odd = denise_hcounter; @@ -15290,11 +33291,11 @@ static void lts_ecs_fm0_ehb1_p6_ilores_dshres(void) denise_cck++; } } -static void lts_ecs_fm0_ehb1_p6_ilores_dshres_filtered(void) +static void lts_ecs_fm0_ham0_p5_ihires_dshres_filtered(void) { lts_null(); } -static void lts_ecs_fm0_ham0_p6_ilores_dshres(void) +static void lts_ecs_fm0_ham1_p5_ihires_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -15309,25 +33310,18 @@ static void lts_ecs_fm0_ham0_p6_ilores_dshres(void) uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl6(); - clxdat |= bplcoltable[pix0]; - if (decode_specials) { - pix0 = decode_denise_specials(pix0); - } - dpix_val0 = decode_ham_pixel(pix0); - } - last_bpl_pix = pix0; } - shiftbpl6(); internal_pixel_cnt += 1; internal_pixel_cnt += 1; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } internal_pixel_cnt += 1; internal_pixel_cnt += 1; uae_u32 dpix_val1 = dpix_val0; uae_u8 pix1 = pix0; - uae_u32 dpix_val2 = dpix_val1; - uae_u8 pix2 = pix1; uae_u32 dpix_val3 = dpix_val2; uae_u8 pix3 = pix2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { @@ -15376,9 +33370,6 @@ static void lts_ecs_fm0_ham0_p6_ilores_dshres(void) *buf1++ = t3; *buf2++ = t3; } - if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl6(); - } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER *debug_dma_dhpos_odd = denise_hcounter; @@ -15401,11 +33392,11 @@ static void lts_ecs_fm0_ham0_p6_ilores_dshres(void) denise_cck++; } } -static void lts_ecs_fm0_ham0_p6_ilores_dshres_filtered(void) +static void lts_ecs_fm0_ham1_p5_ihires_dshres_filtered(void) { lts_null(); } -static void lts_ecs_fm0_ham1_p6_ilores_dshres(void) +static void lts_ecs_fm0_n0_p6_ihires_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -15420,25 +33411,18 @@ static void lts_ecs_fm0_ham1_p6_ilores_dshres(void) uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl6(); - clxdat |= bplcoltable[pix0]; - if (decode_specials) { - pix0 = decode_denise_specials(pix0); - } - dpix_val0 = decode_ham_pixel(pix0); - } - last_bpl_pix = pix0; } - shiftbpl6(); internal_pixel_cnt += 1; internal_pixel_cnt += 1; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } internal_pixel_cnt += 1; internal_pixel_cnt += 1; uae_u32 dpix_val1 = dpix_val0; uae_u8 pix1 = pix0; - uae_u32 dpix_val2 = dpix_val1; - uae_u8 pix2 = pix1; uae_u32 dpix_val3 = dpix_val2; uae_u8 pix3 = pix2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { @@ -15487,12 +33471,6 @@ static void lts_ecs_fm0_ham1_p6_ilores_dshres(void) *buf1++ = t3; *buf2++ = t3; } - if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl6e(); - } - if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) { - copybpl6o(); - } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER *debug_dma_dhpos_odd = denise_hcounter; @@ -15515,11 +33493,11 @@ static void lts_ecs_fm0_ham1_p6_ilores_dshres(void) denise_cck++; } } -static void lts_ecs_fm0_ham1_p6_ilores_dshres_filtered(void) +static void lts_ecs_fm0_n0_p6_ihires_dshres_filtered(void) { lts_null(); } -static void lts_ecs_fm0_n0_p2_ilores_dshres_spr(void) +static void lts_ecs_fm0_n1_p6_ihires_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -15530,47 +33508,25 @@ static void lts_ecs_fm0_n0_p2_ilores_dshres_spr(void) } int cnt = denise_hcounter << 2; if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl2(); - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0]; - } - last_bpl_pix = pix0; - } - shiftbpl2(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_lores(); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } } internal_pixel_cnt += 1; internal_pixel_cnt += 1; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } internal_pixel_cnt += 1; internal_pixel_cnt += 1; uae_u32 dpix_val1 = dpix_val0; uae_u8 pix1 = pix0; - uae_u32 dpix_val2 = dpix_val1; - uae_u8 pix2 = pix1; uae_u32 dpix_val3 = dpix_val2; uae_u8 pix3 = pix2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - dpix_val1 = dpix_val0; - dpix_val2 = dpix_val0; - dpix_val3 = dpix_val0; - } - } uae_u32 t0 = 0; if (!extblank) { t0 = dpix_val0; @@ -15616,9 +33572,6 @@ static void lts_ecs_fm0_n0_p2_ilores_dshres_spr(void) *buf1++ = t3; *buf2++ = t3; } - if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl2(); - } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER *debug_dma_dhpos_odd = denise_hcounter; @@ -15641,11 +33594,11 @@ static void lts_ecs_fm0_n0_p2_ilores_dshres_spr(void) denise_cck++; } } -static void lts_ecs_fm0_n0_p2_ilores_dshres_spr_filtered(void) +static void lts_ecs_fm0_n1_p6_ihires_dshres_filtered(void) { lts_null(); } -static void lts_ecs_fm0_n1_p2_ilores_dshres_spr(void) +static void lts_ecs_fm0_dpf0_p6_ihires_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -15656,47 +33609,25 @@ static void lts_ecs_fm0_n1_p2_ilores_dshres_spr(void) } int cnt = denise_hcounter << 2; if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl2(); - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0]; - } - last_bpl_pix = pix0; - } - shiftbpl2(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_lores(); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } } internal_pixel_cnt += 1; internal_pixel_cnt += 1; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } internal_pixel_cnt += 1; internal_pixel_cnt += 1; uae_u32 dpix_val1 = dpix_val0; uae_u8 pix1 = pix0; - uae_u32 dpix_val2 = dpix_val1; - uae_u8 pix2 = pix1; uae_u32 dpix_val3 = dpix_val2; uae_u8 pix3 = pix2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - dpix_val1 = dpix_val0; - dpix_val2 = dpix_val0; - dpix_val3 = dpix_val0; - } - } uae_u32 t0 = 0; if (!extblank) { t0 = dpix_val0; @@ -15742,12 +33673,6 @@ static void lts_ecs_fm0_n1_p2_ilores_dshres_spr(void) *buf1++ = t3; *buf2++ = t3; } - if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl2e(); - } - if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) { - copybpl2o(); - } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER *debug_dma_dhpos_odd = denise_hcounter; @@ -15770,11 +33695,11 @@ static void lts_ecs_fm0_n1_p2_ilores_dshres_spr(void) denise_cck++; } } -static void lts_ecs_fm0_n1_p2_ilores_dshres_spr_filtered(void) +static void lts_ecs_fm0_dpf0_p6_ihires_dshres_filtered(void) { lts_null(); } -static void lts_ecs_fm0_dpf0_p2_ilores_dshres_spr(void) +static void lts_ecs_fm0_dpf1_p6_ihires_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -15785,48 +33710,25 @@ static void lts_ecs_fm0_dpf0_p2_ilores_dshres_spr(void) } int cnt = denise_hcounter << 2; if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl2(); - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; - } - shiftbpl2(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_lores(); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } } internal_pixel_cnt += 1; internal_pixel_cnt += 1; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } internal_pixel_cnt += 1; internal_pixel_cnt += 1; uae_u32 dpix_val1 = dpix_val0; uae_u8 pix1 = pix0; - uae_u32 dpix_val2 = dpix_val1; - uae_u8 pix2 = pix1; uae_u32 dpix_val3 = dpix_val2; uae_u8 pix3 = pix2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - dpix_val1 = dpix_val0; - dpix_val2 = dpix_val0; - dpix_val3 = dpix_val0; - } - } uae_u32 t0 = 0; if (!extblank) { t0 = dpix_val0; @@ -15872,9 +33774,6 @@ static void lts_ecs_fm0_dpf0_p2_ilores_dshres_spr(void) *buf1++ = t3; *buf2++ = t3; } - if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl2(); - } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER *debug_dma_dhpos_odd = denise_hcounter; @@ -15897,11 +33796,11 @@ static void lts_ecs_fm0_dpf0_p2_ilores_dshres_spr(void) denise_cck++; } } -static void lts_ecs_fm0_dpf0_p2_ilores_dshres_spr_filtered(void) +static void lts_ecs_fm0_dpf1_p6_ihires_dshres_filtered(void) { lts_null(); } -static void lts_ecs_fm0_dpf1_p2_ilores_dshres_spr(void) +static void lts_ecs_fm0_ehb0_p6_ihires_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -15912,48 +33811,25 @@ static void lts_ecs_fm0_dpf1_p2_ilores_dshres_spr(void) } int cnt = denise_hcounter << 2; if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl2(); - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; - } - shiftbpl2(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_lores(); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } } internal_pixel_cnt += 1; internal_pixel_cnt += 1; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } internal_pixel_cnt += 1; internal_pixel_cnt += 1; uae_u32 dpix_val1 = dpix_val0; uae_u8 pix1 = pix0; - uae_u32 dpix_val2 = dpix_val1; - uae_u8 pix2 = pix1; uae_u32 dpix_val3 = dpix_val2; uae_u8 pix3 = pix2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - dpix_val1 = dpix_val0; - dpix_val2 = dpix_val0; - dpix_val3 = dpix_val0; - } - } uae_u32 t0 = 0; if (!extblank) { t0 = dpix_val0; @@ -15999,12 +33875,6 @@ static void lts_ecs_fm0_dpf1_p2_ilores_dshres_spr(void) *buf1++ = t3; *buf2++ = t3; } - if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl2e(); - } - if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) { - copybpl2o(); - } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER *debug_dma_dhpos_odd = denise_hcounter; @@ -16027,43 +33897,11 @@ static void lts_ecs_fm0_dpf1_p2_ilores_dshres_spr(void) denise_cck++; } } -static void lts_ecs_fm0_dpf1_p2_ilores_dshres_spr_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb0_p2_ilores_dshres_spr(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb0_p2_ilores_dshres_spr_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb1_p2_ilores_dshres_spr(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb1_p2_ilores_dshres_spr_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham0_p2_ilores_dshres_spr(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham0_p2_ilores_dshres_spr_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham1_p2_ilores_dshres_spr(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham1_p2_ilores_dshres_spr_filtered(void) +static void lts_ecs_fm0_ehb0_p6_ihires_dshres_filtered(void) { lts_null(); } -static void lts_ecs_fm0_n0_p4_ilores_dshres_spr(void) +static void lts_ecs_fm0_ehb1_p6_ihires_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -16074,47 +33912,25 @@ static void lts_ecs_fm0_n0_p4_ilores_dshres_spr(void) } int cnt = denise_hcounter << 2; if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl4(); - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0]; - } - last_bpl_pix = pix0; - } - shiftbpl4(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_lores(); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } } internal_pixel_cnt += 1; internal_pixel_cnt += 1; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } internal_pixel_cnt += 1; internal_pixel_cnt += 1; uae_u32 dpix_val1 = dpix_val0; uae_u8 pix1 = pix0; - uae_u32 dpix_val2 = dpix_val1; - uae_u8 pix2 = pix1; uae_u32 dpix_val3 = dpix_val2; uae_u8 pix3 = pix2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - dpix_val1 = dpix_val0; - dpix_val2 = dpix_val0; - dpix_val3 = dpix_val0; - } - } uae_u32 t0 = 0; if (!extblank) { t0 = dpix_val0; @@ -16160,9 +33976,6 @@ static void lts_ecs_fm0_n0_p4_ilores_dshres_spr(void) *buf1++ = t3; *buf2++ = t3; } - if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl4(); - } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER *debug_dma_dhpos_odd = denise_hcounter; @@ -16185,11 +33998,11 @@ static void lts_ecs_fm0_n0_p4_ilores_dshres_spr(void) denise_cck++; } } -static void lts_ecs_fm0_n0_p4_ilores_dshres_spr_filtered(void) +static void lts_ecs_fm0_ehb1_p6_ihires_dshres_filtered(void) { lts_null(); } -static void lts_ecs_fm0_n1_p4_ilores_dshres_spr(void) +static void lts_ecs_fm0_ham0_p6_ihires_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -16200,47 +34013,25 @@ static void lts_ecs_fm0_n1_p4_ilores_dshres_spr(void) } int cnt = denise_hcounter << 2; if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl4(); - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0]; - } - last_bpl_pix = pix0; - } - shiftbpl4(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_lores(); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } } internal_pixel_cnt += 1; internal_pixel_cnt += 1; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } internal_pixel_cnt += 1; internal_pixel_cnt += 1; uae_u32 dpix_val1 = dpix_val0; uae_u8 pix1 = pix0; - uae_u32 dpix_val2 = dpix_val1; - uae_u8 pix2 = pix1; uae_u32 dpix_val3 = dpix_val2; uae_u8 pix3 = pix2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - dpix_val1 = dpix_val0; - dpix_val2 = dpix_val0; - dpix_val3 = dpix_val0; - } - } uae_u32 t0 = 0; if (!extblank) { t0 = dpix_val0; @@ -16282,15 +34073,9 @@ static void lts_ecs_fm0_n1_p4_ilores_dshres_spr(void) if (decode_specials_debug) { t3 = decode_denise_specials_debug(t3, cnt + 3); } - #endif - *buf1++ = t3; - *buf2++ = t3; - } - if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl4e(); - } - if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) { - copybpl4o(); + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -16314,11 +34099,11 @@ static void lts_ecs_fm0_n1_p4_ilores_dshres_spr(void) denise_cck++; } } -static void lts_ecs_fm0_n1_p4_ilores_dshres_spr_filtered(void) +static void lts_ecs_fm0_ham0_p6_ihires_dshres_filtered(void) { lts_null(); } -static void lts_ecs_fm0_dpf0_p4_ilores_dshres_spr(void) +static void lts_ecs_fm0_ham1_p6_ihires_dshres(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -16329,48 +34114,25 @@ static void lts_ecs_fm0_dpf0_p4_ilores_dshres_spr(void) } int cnt = denise_hcounter << 2; if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl4(); - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; - } - shiftbpl4(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_lores(); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } } internal_pixel_cnt += 1; internal_pixel_cnt += 1; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } internal_pixel_cnt += 1; internal_pixel_cnt += 1; uae_u32 dpix_val1 = dpix_val0; uae_u8 pix1 = pix0; - uae_u32 dpix_val2 = dpix_val1; - uae_u8 pix2 = pix1; uae_u32 dpix_val3 = dpix_val2; uae_u8 pix3 = pix2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - dpix_val1 = dpix_val0; - dpix_val2 = dpix_val0; - dpix_val3 = dpix_val0; - } - } uae_u32 t0 = 0; if (!extblank) { t0 = dpix_val0; @@ -16416,9 +34178,6 @@ static void lts_ecs_fm0_dpf0_p4_ilores_dshres_spr(void) *buf1++ = t3; *buf2++ = t3; } - if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl4(); - } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER *debug_dma_dhpos_odd = denise_hcounter; @@ -16441,11 +34200,11 @@ static void lts_ecs_fm0_dpf0_p4_ilores_dshres_spr(void) denise_cck++; } } -static void lts_ecs_fm0_dpf0_p4_ilores_dshres_spr_filtered(void) +static void lts_ecs_fm0_ham1_p6_ihires_dshres_filtered(void) { lts_null(); } -static void lts_ecs_fm0_dpf1_p4_ilores_dshres_spr(void) +static void lts_ecs_fm0_n0_p2_ihires_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -16462,14 +34221,13 @@ static void lts_ecs_fm0_dpf1_p4_ilores_dshres_spr(void) if (!denise_blank_active) { dpix_val0 = bordercolor; if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl4(); + pix0 = getbpl2(); clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - dpix_val0 = denise_colors.acolors[val0]; + dpix_val0 = denise_colors.acolors[pix0]; } last_bpl_pix = pix0; } - shiftbpl4(); + shiftbpl2(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -16480,12 +34238,22 @@ static void lts_ecs_fm0_dpf1_p4_ilores_dshres_spr(void) } internal_pixel_cnt += 1; internal_pixel_cnt += 1; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = getbpl2(); + clxdat |= bplcoltable[pix2]; + dpix_val2 = denise_colors.acolors[pix2]; + } + last_bpl_pix = pix2; + } + shiftbpl2(); internal_pixel_cnt += 1; internal_pixel_cnt += 1; uae_u32 dpix_val1 = dpix_val0; uae_u8 pix1 = pix0; - uae_u32 dpix_val2 = dpix_val1; - uae_u8 pix2 = pix1; uae_u32 dpix_val3 = dpix_val2; uae_u8 pix3 = pix2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { @@ -16493,9 +34261,27 @@ static void lts_ecs_fm0_dpf1_p4_ilores_dshres_spr(void) uae_u32 spix0 = denise_render_sprites2(pix0, sv0); if (spix0) { dpix_val0 = denise_colors.acolors[spix0]; - dpix_val1 = dpix_val0; - dpix_val2 = dpix_val0; - dpix_val3 = dpix_val0; + } + } + uae_u32 sv1 = sv0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } + uae_u32 sv2 = sv0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + uae_u32 sv3 = sv0; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; } } uae_u32 t0 = 0; @@ -16543,11 +34329,8 @@ static void lts_ecs_fm0_dpf1_p4_ilores_dshres_spr(void) *buf1++ = t3; *buf2++ = t3; } - if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl4e(); - } - if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) { - copybpl4o(); + if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { + copybpl2(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -16571,43 +34354,11 @@ static void lts_ecs_fm0_dpf1_p4_ilores_dshres_spr(void) denise_cck++; } } -static void lts_ecs_fm0_dpf1_p4_ilores_dshres_spr_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb0_p4_ilores_dshres_spr(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb0_p4_ilores_dshres_spr_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb1_p4_ilores_dshres_spr(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb1_p4_ilores_dshres_spr_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham0_p4_ilores_dshres_spr(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham0_p4_ilores_dshres_spr_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham1_p4_ilores_dshres_spr(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham1_p4_ilores_dshres_spr_filtered(void) +static void lts_ecs_fm0_n0_p2_ihires_dshres_spr_filtered(void) { lts_null(); } -static void lts_ecs_fm0_n0_p5_ilores_dshres_spr(void) +static void lts_ecs_fm0_n1_p2_ihires_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -16624,16 +34375,13 @@ static void lts_ecs_fm0_n0_p5_ilores_dshres_spr(void) if (!denise_blank_active) { dpix_val0 = bordercolor; if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl5(); + pix0 = getbpl2(); clxdat |= bplcoltable[pix0]; - if (decode_specials) { - pix0 = decode_denise_specials(pix0); - } dpix_val0 = denise_colors.acolors[pix0]; } last_bpl_pix = pix0; } - shiftbpl5(); + shiftbpl2(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -16644,12 +34392,22 @@ static void lts_ecs_fm0_n0_p5_ilores_dshres_spr(void) } internal_pixel_cnt += 1; internal_pixel_cnt += 1; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = getbpl2(); + clxdat |= bplcoltable[pix2]; + dpix_val2 = denise_colors.acolors[pix2]; + } + last_bpl_pix = pix2; + } + shiftbpl2(); internal_pixel_cnt += 1; internal_pixel_cnt += 1; uae_u32 dpix_val1 = dpix_val0; uae_u8 pix1 = pix0; - uae_u32 dpix_val2 = dpix_val1; - uae_u8 pix2 = pix1; uae_u32 dpix_val3 = dpix_val2; uae_u8 pix3 = pix2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { @@ -16657,9 +34415,27 @@ static void lts_ecs_fm0_n0_p5_ilores_dshres_spr(void) uae_u32 spix0 = denise_render_sprites2(pix0, sv0); if (spix0) { dpix_val0 = denise_colors.acolors[spix0]; - dpix_val1 = dpix_val0; - dpix_val2 = dpix_val0; - dpix_val3 = dpix_val0; + } + } + uae_u32 sv1 = sv0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } + uae_u32 sv2 = sv0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + uae_u32 sv3 = sv0; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; } } uae_u32 t0 = 0; @@ -16707,8 +34483,11 @@ static void lts_ecs_fm0_n0_p5_ilores_dshres_spr(void) *buf1++ = t3; *buf2++ = t3; } - if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl5(); + if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { + copybpl2e(); + } + if (bpldat_copy[1] && (denise_hcounter_cmp & 7) == bplcon1_shift[1]) { + copybpl2o(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -16732,11 +34511,11 @@ static void lts_ecs_fm0_n0_p5_ilores_dshres_spr(void) denise_cck++; } } -static void lts_ecs_fm0_n0_p5_ilores_dshres_spr_filtered(void) +static void lts_ecs_fm0_n1_p2_ihires_dshres_spr_filtered(void) { lts_null(); } -static void lts_ecs_fm0_n1_p5_ilores_dshres_spr(void) +static void lts_ecs_fm0_dpf0_p2_ihires_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -16753,16 +34532,14 @@ static void lts_ecs_fm0_n1_p5_ilores_dshres_spr(void) if (!denise_blank_active) { dpix_val0 = bordercolor; if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl5(); + pix0 = getbpl2(); clxdat |= bplcoltable[pix0]; - if (decode_specials) { - pix0 = decode_denise_specials(pix0); - } - dpix_val0 = denise_colors.acolors[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + dpix_val0 = denise_colors.acolors[val0]; } last_bpl_pix = pix0; } - shiftbpl5(); + shiftbpl2(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -16773,12 +34550,23 @@ static void lts_ecs_fm0_n1_p5_ilores_dshres_spr(void) } internal_pixel_cnt += 1; internal_pixel_cnt += 1; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = getbpl2(); + clxdat |= bplcoltable[pix2]; + uae_u8 val2 = dpf_lookup[pix2]; + dpix_val2 = denise_colors.acolors[val2]; + } + last_bpl_pix = pix2; + } + shiftbpl2(); internal_pixel_cnt += 1; internal_pixel_cnt += 1; uae_u32 dpix_val1 = dpix_val0; uae_u8 pix1 = pix0; - uae_u32 dpix_val2 = dpix_val1; - uae_u8 pix2 = pix1; uae_u32 dpix_val3 = dpix_val2; uae_u8 pix3 = pix2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { @@ -16786,9 +34574,27 @@ static void lts_ecs_fm0_n1_p5_ilores_dshres_spr(void) uae_u32 spix0 = denise_render_sprites2(pix0, sv0); if (spix0) { dpix_val0 = denise_colors.acolors[spix0]; - dpix_val1 = dpix_val0; - dpix_val2 = dpix_val0; - dpix_val3 = dpix_val0; + } + } + uae_u32 sv1 = sv0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } + uae_u32 sv2 = sv0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + uae_u32 sv3 = sv0; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; } } uae_u32 t0 = 0; @@ -16836,11 +34642,8 @@ static void lts_ecs_fm0_n1_p5_ilores_dshres_spr(void) *buf1++ = t3; *buf2++ = t3; } - if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl5e(); - } - if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) { - copybpl5o(); + if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { + copybpl2(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -16864,11 +34667,11 @@ static void lts_ecs_fm0_n1_p5_ilores_dshres_spr(void) denise_cck++; } } -static void lts_ecs_fm0_n1_p5_ilores_dshres_spr_filtered(void) +static void lts_ecs_fm0_dpf0_p2_ihires_dshres_spr_filtered(void) { lts_null(); } -static void lts_ecs_fm0_dpf0_p5_ilores_dshres_spr(void) +static void lts_ecs_fm0_dpf1_p2_ihires_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -16885,17 +34688,14 @@ static void lts_ecs_fm0_dpf0_p5_ilores_dshres_spr(void) if (!denise_blank_active) { dpix_val0 = bordercolor; if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl5(); + pix0 = getbpl2(); clxdat |= bplcoltable[pix0]; - if (decode_specials) { - pix0 = decode_denise_specials(pix0); - } uae_u8 val0 = dpf_lookup[pix0]; dpix_val0 = denise_colors.acolors[val0]; } last_bpl_pix = pix0; } - shiftbpl5(); + shiftbpl2(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -16906,12 +34706,23 @@ static void lts_ecs_fm0_dpf0_p5_ilores_dshres_spr(void) } internal_pixel_cnt += 1; internal_pixel_cnt += 1; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = getbpl2(); + clxdat |= bplcoltable[pix2]; + uae_u8 val2 = dpf_lookup[pix2]; + dpix_val2 = denise_colors.acolors[val2]; + } + last_bpl_pix = pix2; + } + shiftbpl2(); internal_pixel_cnt += 1; internal_pixel_cnt += 1; uae_u32 dpix_val1 = dpix_val0; uae_u8 pix1 = pix0; - uae_u32 dpix_val2 = dpix_val1; - uae_u8 pix2 = pix1; uae_u32 dpix_val3 = dpix_val2; uae_u8 pix3 = pix2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { @@ -16919,9 +34730,27 @@ static void lts_ecs_fm0_dpf0_p5_ilores_dshres_spr(void) uae_u32 spix0 = denise_render_sprites2(pix0, sv0); if (spix0) { dpix_val0 = denise_colors.acolors[spix0]; - dpix_val1 = dpix_val0; - dpix_val2 = dpix_val0; - dpix_val3 = dpix_val0; + } + } + uae_u32 sv1 = sv0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } + uae_u32 sv2 = sv0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + uae_u32 sv3 = sv0; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; } } uae_u32 t0 = 0; @@ -16969,8 +34798,11 @@ static void lts_ecs_fm0_dpf0_p5_ilores_dshres_spr(void) *buf1++ = t3; *buf2++ = t3; } - if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl5(); + if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { + copybpl2e(); + } + if (bpldat_copy[1] && (denise_hcounter_cmp & 7) == bplcon1_shift[1]) { + copybpl2o(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -16994,11 +34826,11 @@ static void lts_ecs_fm0_dpf0_p5_ilores_dshres_spr(void) denise_cck++; } } -static void lts_ecs_fm0_dpf0_p5_ilores_dshres_spr_filtered(void) +static void lts_ecs_fm0_dpf1_p2_ihires_dshres_spr_filtered(void) { lts_null(); } -static void lts_ecs_fm0_dpf1_p5_ilores_dshres_spr(void) +static void lts_ecs_fm0_ehb0_p2_ihires_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -17009,51 +34841,25 @@ static void lts_ecs_fm0_dpf1_p5_ilores_dshres_spr(void) } int cnt = denise_hcounter << 2; if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl5(); - clxdat |= bplcoltable[pix0]; - if (decode_specials) { - pix0 = decode_denise_specials(pix0); - } - uae_u8 val0 = dpf_lookup[pix0]; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; - } - shiftbpl5(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_lores(); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } } internal_pixel_cnt += 1; internal_pixel_cnt += 1; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } internal_pixel_cnt += 1; internal_pixel_cnt += 1; uae_u32 dpix_val1 = dpix_val0; uae_u8 pix1 = pix0; - uae_u32 dpix_val2 = dpix_val1; - uae_u8 pix2 = pix1; uae_u32 dpix_val3 = dpix_val2; uae_u8 pix3 = pix2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - dpix_val1 = dpix_val0; - dpix_val2 = dpix_val0; - dpix_val3 = dpix_val0; - } - } uae_u32 t0 = 0; if (!extblank) { t0 = dpix_val0; @@ -17099,12 +34905,6 @@ static void lts_ecs_fm0_dpf1_p5_ilores_dshres_spr(void) *buf1++ = t3; *buf2++ = t3; } - if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl5e(); - } - if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) { - copybpl5o(); - } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER *debug_dma_dhpos_odd = denise_hcounter; @@ -17127,27 +34927,11 @@ static void lts_ecs_fm0_dpf1_p5_ilores_dshres_spr(void) denise_cck++; } } -static void lts_ecs_fm0_dpf1_p5_ilores_dshres_spr_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb0_p5_ilores_dshres_spr(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb0_p5_ilores_dshres_spr_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb1_p5_ilores_dshres_spr(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb1_p5_ilores_dshres_spr_filtered(void) +static void lts_ecs_fm0_ehb0_p2_ihires_dshres_spr_filtered(void) { lts_null(); } -static void lts_ecs_fm0_ham0_p5_ilores_dshres_spr(void) +static void lts_ecs_fm0_ehb1_p2_ihires_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -17158,50 +34942,25 @@ static void lts_ecs_fm0_ham0_p5_ilores_dshres_spr(void) } int cnt = denise_hcounter << 2; if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl5(); - clxdat |= bplcoltable[pix0]; - if (decode_specials) { - pix0 = decode_denise_specials(pix0); - } - dpix_val0 = decode_ham_pixel(pix0); - } - last_bpl_pix = pix0; - } - shiftbpl5(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_lores(); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } } internal_pixel_cnt += 1; internal_pixel_cnt += 1; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } internal_pixel_cnt += 1; internal_pixel_cnt += 1; uae_u32 dpix_val1 = dpix_val0; uae_u8 pix1 = pix0; - uae_u32 dpix_val2 = dpix_val1; - uae_u8 pix2 = pix1; uae_u32 dpix_val3 = dpix_val2; uae_u8 pix3 = pix2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - dpix_val1 = dpix_val0; - dpix_val2 = dpix_val0; - dpix_val3 = dpix_val0; - } - } uae_u32 t0 = 0; if (!extblank) { t0 = dpix_val0; @@ -17247,9 +35006,6 @@ static void lts_ecs_fm0_ham0_p5_ilores_dshres_spr(void) *buf1++ = t3; *buf2++ = t3; } - if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl5(); - } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER *debug_dma_dhpos_odd = denise_hcounter; @@ -17272,11 +35028,11 @@ static void lts_ecs_fm0_ham0_p5_ilores_dshres_spr(void) denise_cck++; } } -static void lts_ecs_fm0_ham0_p5_ilores_dshres_spr_filtered(void) +static void lts_ecs_fm0_ehb1_p2_ihires_dshres_spr_filtered(void) { lts_null(); } -static void lts_ecs_fm0_ham1_p5_ilores_dshres_spr(void) +static void lts_ecs_fm0_ham0_p2_ihires_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -17287,50 +35043,25 @@ static void lts_ecs_fm0_ham1_p5_ilores_dshres_spr(void) } int cnt = denise_hcounter << 2; if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl5(); - clxdat |= bplcoltable[pix0]; - if (decode_specials) { - pix0 = decode_denise_specials(pix0); - } - dpix_val0 = decode_ham_pixel(pix0); - } - last_bpl_pix = pix0; - } - shiftbpl5(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_lores(); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } } internal_pixel_cnt += 1; internal_pixel_cnt += 1; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } internal_pixel_cnt += 1; internal_pixel_cnt += 1; uae_u32 dpix_val1 = dpix_val0; uae_u8 pix1 = pix0; - uae_u32 dpix_val2 = dpix_val1; - uae_u8 pix2 = pix1; uae_u32 dpix_val3 = dpix_val2; uae_u8 pix3 = pix2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - dpix_val1 = dpix_val0; - dpix_val2 = dpix_val0; - dpix_val3 = dpix_val0; - } - } uae_u32 t0 = 0; if (!extblank) { t0 = dpix_val0; @@ -17376,12 +35107,6 @@ static void lts_ecs_fm0_ham1_p5_ilores_dshres_spr(void) *buf1++ = t3; *buf2++ = t3; } - if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl5e(); - } - if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) { - copybpl5o(); - } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER *debug_dma_dhpos_odd = denise_hcounter; @@ -17404,11 +35129,11 @@ static void lts_ecs_fm0_ham1_p5_ilores_dshres_spr(void) denise_cck++; } } -static void lts_ecs_fm0_ham1_p5_ilores_dshres_spr_filtered(void) +static void lts_ecs_fm0_ham0_p2_ihires_dshres_spr_filtered(void) { lts_null(); } -static void lts_ecs_fm0_n0_p6_ilores_dshres_spr(void) +static void lts_ecs_fm0_ham1_p2_ihires_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -17419,50 +35144,25 @@ static void lts_ecs_fm0_n0_p6_ilores_dshres_spr(void) } int cnt = denise_hcounter << 2; if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl6(); - clxdat |= bplcoltable[pix0]; - if (decode_specials) { - pix0 = decode_denise_specials(pix0); - } - dpix_val0 = denise_colors.acolors[pix0]; - } - last_bpl_pix = pix0; - } - shiftbpl6(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_lores(); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } } internal_pixel_cnt += 1; internal_pixel_cnt += 1; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } internal_pixel_cnt += 1; internal_pixel_cnt += 1; uae_u32 dpix_val1 = dpix_val0; uae_u8 pix1 = pix0; - uae_u32 dpix_val2 = dpix_val1; - uae_u8 pix2 = pix1; uae_u32 dpix_val3 = dpix_val2; uae_u8 pix3 = pix2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - dpix_val1 = dpix_val0; - dpix_val2 = dpix_val0; - dpix_val3 = dpix_val0; - } - } uae_u32 t0 = 0; if (!extblank) { t0 = dpix_val0; @@ -17508,9 +35208,6 @@ static void lts_ecs_fm0_n0_p6_ilores_dshres_spr(void) *buf1++ = t3; *buf2++ = t3; } - if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl6(); - } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER *debug_dma_dhpos_odd = denise_hcounter; @@ -17533,11 +35230,11 @@ static void lts_ecs_fm0_n0_p6_ilores_dshres_spr(void) denise_cck++; } } -static void lts_ecs_fm0_n0_p6_ilores_dshres_spr_filtered(void) +static void lts_ecs_fm0_ham1_p2_ihires_dshres_spr_filtered(void) { lts_null(); } -static void lts_ecs_fm0_n1_p6_ilores_dshres_spr(void) +static void lts_ecs_fm0_n0_p4_ihires_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -17554,16 +35251,13 @@ static void lts_ecs_fm0_n1_p6_ilores_dshres_spr(void) if (!denise_blank_active) { dpix_val0 = bordercolor; if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl6(); + pix0 = getbpl4(); clxdat |= bplcoltable[pix0]; - if (decode_specials) { - pix0 = decode_denise_specials(pix0); - } dpix_val0 = denise_colors.acolors[pix0]; } last_bpl_pix = pix0; } - shiftbpl6(); + shiftbpl4(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -17572,14 +35266,24 @@ static void lts_ecs_fm0_n1_p6_ilores_dshres_spr(void) sv0 = svt; } } - internal_pixel_cnt += 1; - internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = getbpl4(); + clxdat |= bplcoltable[pix2]; + dpix_val2 = denise_colors.acolors[pix2]; + } + last_bpl_pix = pix2; + } + shiftbpl4(); internal_pixel_cnt += 1; internal_pixel_cnt += 1; uae_u32 dpix_val1 = dpix_val0; uae_u8 pix1 = pix0; - uae_u32 dpix_val2 = dpix_val1; - uae_u8 pix2 = pix1; uae_u32 dpix_val3 = dpix_val2; uae_u8 pix3 = pix2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { @@ -17587,9 +35291,27 @@ static void lts_ecs_fm0_n1_p6_ilores_dshres_spr(void) uae_u32 spix0 = denise_render_sprites2(pix0, sv0); if (spix0) { dpix_val0 = denise_colors.acolors[spix0]; - dpix_val1 = dpix_val0; - dpix_val2 = dpix_val0; - dpix_val3 = dpix_val0; + } + } + uae_u32 sv1 = sv0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } + uae_u32 sv2 = sv0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + uae_u32 sv3 = sv0; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; } } uae_u32 t0 = 0; @@ -17637,11 +35359,8 @@ static void lts_ecs_fm0_n1_p6_ilores_dshres_spr(void) *buf1++ = t3; *buf2++ = t3; } - if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl6e(); - } - if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) { - copybpl6o(); + if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { + copybpl4(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -17665,11 +35384,11 @@ static void lts_ecs_fm0_n1_p6_ilores_dshres_spr(void) denise_cck++; } } -static void lts_ecs_fm0_n1_p6_ilores_dshres_spr_filtered(void) +static void lts_ecs_fm0_n0_p4_ihires_dshres_spr_filtered(void) { lts_null(); } -static void lts_ecs_fm0_dpf0_p6_ilores_dshres_spr(void) +static void lts_ecs_fm0_n1_p4_ihires_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -17686,17 +35405,13 @@ static void lts_ecs_fm0_dpf0_p6_ilores_dshres_spr(void) if (!denise_blank_active) { dpix_val0 = bordercolor; if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl6(); + pix0 = getbpl4(); clxdat |= bplcoltable[pix0]; - if (decode_specials) { - pix0 = decode_denise_specials(pix0); - } - uae_u8 val0 = dpf_lookup[pix0]; - dpix_val0 = denise_colors.acolors[val0]; + dpix_val0 = denise_colors.acolors[pix0]; } last_bpl_pix = pix0; } - shiftbpl6(); + shiftbpl4(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -17707,12 +35422,22 @@ static void lts_ecs_fm0_dpf0_p6_ilores_dshres_spr(void) } internal_pixel_cnt += 1; internal_pixel_cnt += 1; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = getbpl4(); + clxdat |= bplcoltable[pix2]; + dpix_val2 = denise_colors.acolors[pix2]; + } + last_bpl_pix = pix2; + } + shiftbpl4(); internal_pixel_cnt += 1; internal_pixel_cnt += 1; uae_u32 dpix_val1 = dpix_val0; uae_u8 pix1 = pix0; - uae_u32 dpix_val2 = dpix_val1; - uae_u8 pix2 = pix1; uae_u32 dpix_val3 = dpix_val2; uae_u8 pix3 = pix2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { @@ -17720,9 +35445,27 @@ static void lts_ecs_fm0_dpf0_p6_ilores_dshres_spr(void) uae_u32 spix0 = denise_render_sprites2(pix0, sv0); if (spix0) { dpix_val0 = denise_colors.acolors[spix0]; - dpix_val1 = dpix_val0; - dpix_val2 = dpix_val0; - dpix_val3 = dpix_val0; + } + } + uae_u32 sv1 = sv0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } + uae_u32 sv2 = sv0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + uae_u32 sv3 = sv0; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; } } uae_u32 t0 = 0; @@ -17770,8 +35513,11 @@ static void lts_ecs_fm0_dpf0_p6_ilores_dshres_spr(void) *buf1++ = t3; *buf2++ = t3; } - if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl6(); + if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { + copybpl4e(); + } + if (bpldat_copy[1] && (denise_hcounter_cmp & 7) == bplcon1_shift[1]) { + copybpl4o(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -17795,11 +35541,11 @@ static void lts_ecs_fm0_dpf0_p6_ilores_dshres_spr(void) denise_cck++; } } -static void lts_ecs_fm0_dpf0_p6_ilores_dshres_spr_filtered(void) +static void lts_ecs_fm0_n1_p4_ihires_dshres_spr_filtered(void) { lts_null(); } -static void lts_ecs_fm0_dpf1_p6_ilores_dshres_spr(void) +static void lts_ecs_fm0_dpf0_p4_ihires_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -17816,17 +35562,14 @@ static void lts_ecs_fm0_dpf1_p6_ilores_dshres_spr(void) if (!denise_blank_active) { dpix_val0 = bordercolor; if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl6(); + pix0 = getbpl4(); clxdat |= bplcoltable[pix0]; - if (decode_specials) { - pix0 = decode_denise_specials(pix0); - } uae_u8 val0 = dpf_lookup[pix0]; dpix_val0 = denise_colors.acolors[val0]; } last_bpl_pix = pix0; } - shiftbpl6(); + shiftbpl4(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -17837,12 +35580,23 @@ static void lts_ecs_fm0_dpf1_p6_ilores_dshres_spr(void) } internal_pixel_cnt += 1; internal_pixel_cnt += 1; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = getbpl4(); + clxdat |= bplcoltable[pix2]; + uae_u8 val2 = dpf_lookup[pix2]; + dpix_val2 = denise_colors.acolors[val2]; + } + last_bpl_pix = pix2; + } + shiftbpl4(); internal_pixel_cnt += 1; internal_pixel_cnt += 1; uae_u32 dpix_val1 = dpix_val0; uae_u8 pix1 = pix0; - uae_u32 dpix_val2 = dpix_val1; - uae_u8 pix2 = pix1; uae_u32 dpix_val3 = dpix_val2; uae_u8 pix3 = pix2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { @@ -17850,9 +35604,27 @@ static void lts_ecs_fm0_dpf1_p6_ilores_dshres_spr(void) uae_u32 spix0 = denise_render_sprites2(pix0, sv0); if (spix0) { dpix_val0 = denise_colors.acolors[spix0]; - dpix_val1 = dpix_val0; - dpix_val2 = dpix_val0; - dpix_val3 = dpix_val0; + } + } + uae_u32 sv1 = sv0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } + uae_u32 sv2 = sv0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + uae_u32 sv3 = sv0; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; } } uae_u32 t0 = 0; @@ -17900,11 +35672,8 @@ static void lts_ecs_fm0_dpf1_p6_ilores_dshres_spr(void) *buf1++ = t3; *buf2++ = t3; } - if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl6e(); - } - if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) { - copybpl6o(); + if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { + copybpl4(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -17928,11 +35697,11 @@ static void lts_ecs_fm0_dpf1_p6_ilores_dshres_spr(void) denise_cck++; } } -static void lts_ecs_fm0_dpf1_p6_ilores_dshres_spr_filtered(void) +static void lts_ecs_fm0_dpf0_p4_ihires_dshres_spr_filtered(void) { lts_null(); } -static void lts_ecs_fm0_ehb0_p6_ilores_dshres_spr(void) +static void lts_ecs_fm0_dpf1_p4_ihires_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -17949,21 +35718,14 @@ static void lts_ecs_fm0_ehb0_p6_ilores_dshres_spr(void) if (!denise_blank_active) { dpix_val0 = bordercolor; if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl6(); + pix0 = getbpl4(); clxdat |= bplcoltable[pix0]; - if (decode_specials) { - pix0 = decode_denise_specials(pix0); - } - pix0 &= bplehb_mask; - if (pix0 <= 31) { - dpix_val0 = denise_colors.acolors[pix0]; - } else { - dpix_val0 = p_xcolors[(denise_colors.color_regs_ecs[pix0 - 32] >> 1) & 0x777]; - } + uae_u8 val0 = dpf_lookup[pix0]; + dpix_val0 = denise_colors.acolors[val0]; } last_bpl_pix = pix0; } - shiftbpl6(); + shiftbpl4(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -17974,12 +35736,23 @@ static void lts_ecs_fm0_ehb0_p6_ilores_dshres_spr(void) } internal_pixel_cnt += 1; internal_pixel_cnt += 1; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = getbpl4(); + clxdat |= bplcoltable[pix2]; + uae_u8 val2 = dpf_lookup[pix2]; + dpix_val2 = denise_colors.acolors[val2]; + } + last_bpl_pix = pix2; + } + shiftbpl4(); internal_pixel_cnt += 1; internal_pixel_cnt += 1; uae_u32 dpix_val1 = dpix_val0; uae_u8 pix1 = pix0; - uae_u32 dpix_val2 = dpix_val1; - uae_u8 pix2 = pix1; uae_u32 dpix_val3 = dpix_val2; uae_u8 pix3 = pix2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { @@ -17987,9 +35760,27 @@ static void lts_ecs_fm0_ehb0_p6_ilores_dshres_spr(void) uae_u32 spix0 = denise_render_sprites2(pix0, sv0); if (spix0) { dpix_val0 = denise_colors.acolors[spix0]; - dpix_val1 = dpix_val0; - dpix_val2 = dpix_val0; - dpix_val3 = dpix_val0; + } + } + uae_u32 sv1 = sv0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } + uae_u32 sv2 = sv0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + uae_u32 sv3 = sv0; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; } } uae_u32 t0 = 0; @@ -18037,8 +35828,11 @@ static void lts_ecs_fm0_ehb0_p6_ilores_dshres_spr(void) *buf1++ = t3; *buf2++ = t3; } - if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl6(); + if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { + copybpl4e(); + } + if (bpldat_copy[1] && (denise_hcounter_cmp & 7) == bplcon1_shift[1]) { + copybpl4o(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -18062,70 +35856,40 @@ static void lts_ecs_fm0_ehb0_p6_ilores_dshres_spr(void) denise_cck++; } } -static void lts_ecs_fm0_ehb0_p6_ilores_dshres_spr_filtered(void) +static void lts_ecs_fm0_dpf1_p4_ihires_dshres_spr_filtered(void) { lts_null(); } -static void lts_ecs_fm0_ehb1_p6_ilores_dshres_spr(void) +static void lts_ecs_fm0_ehb0_p4_ihires_dshres_spr(void) { - while (denise_cck < denise_endcycle) { - do_denise_cck(denise_linecnt, denise_startpos, denise_cck); - if (lts_changed) return; - for (int h = 0; h < 2; h++) { - if (h) { - denise_hcounter_next = denise_hcounter_new; - } - int cnt = denise_hcounter << 2; - if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites(cnt + 0); - uae_u8 pix0 = 0; - uae_u32 dpix_val0 = BLANK_COLOR; - if (!denise_blank_active) { - dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl6(); - clxdat |= bplcoltable[pix0]; - if (decode_specials) { - pix0 = decode_denise_specials(pix0); - } - pix0 &= bplehb_mask; - if (pix0 <= 31) { - dpix_val0 = denise_colors.acolors[pix0]; - } else { - dpix_val0 = p_xcolors[(denise_colors.color_regs_ecs[pix0 - 32] >> 1) & 0x777]; - } - } - last_bpl_pix = pix0; + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; } - shiftbpl6(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_lores(); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; } internal_pixel_cnt += 1; internal_pixel_cnt += 1; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } internal_pixel_cnt += 1; internal_pixel_cnt += 1; uae_u32 dpix_val1 = dpix_val0; uae_u8 pix1 = pix0; - uae_u32 dpix_val2 = dpix_val1; - uae_u8 pix2 = pix1; uae_u32 dpix_val3 = dpix_val2; uae_u8 pix3 = pix2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - dpix_val1 = dpix_val0; - dpix_val2 = dpix_val0; - dpix_val3 = dpix_val0; - } - } uae_u32 t0 = 0; if (!extblank) { t0 = dpix_val0; @@ -18171,12 +35935,6 @@ static void lts_ecs_fm0_ehb1_p6_ilores_dshres_spr(void) *buf1++ = t3; *buf2++ = t3; } - if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl6e(); - } - if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) { - copybpl6o(); - } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER *debug_dma_dhpos_odd = denise_hcounter; @@ -18199,11 +35957,11 @@ static void lts_ecs_fm0_ehb1_p6_ilores_dshres_spr(void) denise_cck++; } } -static void lts_ecs_fm0_ehb1_p6_ilores_dshres_spr_filtered(void) +static void lts_ecs_fm0_ehb0_p4_ihires_dshres_spr_filtered(void) { lts_null(); } -static void lts_ecs_fm0_ham0_p6_ilores_dshres_spr(void) +static void lts_ecs_fm0_ehb1_p4_ihires_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -18214,50 +35972,25 @@ static void lts_ecs_fm0_ham0_p6_ilores_dshres_spr(void) } int cnt = denise_hcounter << 2; if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl6(); - clxdat |= bplcoltable[pix0]; - if (decode_specials) { - pix0 = decode_denise_specials(pix0); - } - dpix_val0 = decode_ham_pixel(pix0); - } - last_bpl_pix = pix0; - } - shiftbpl6(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_lores(); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } } internal_pixel_cnt += 1; internal_pixel_cnt += 1; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } internal_pixel_cnt += 1; internal_pixel_cnt += 1; uae_u32 dpix_val1 = dpix_val0; uae_u8 pix1 = pix0; - uae_u32 dpix_val2 = dpix_val1; - uae_u8 pix2 = pix1; uae_u32 dpix_val3 = dpix_val2; uae_u8 pix3 = pix2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - dpix_val1 = dpix_val0; - dpix_val2 = dpix_val0; - dpix_val3 = dpix_val0; - } - } uae_u32 t0 = 0; if (!extblank) { t0 = dpix_val0; @@ -18303,9 +36036,6 @@ static void lts_ecs_fm0_ham0_p6_ilores_dshres_spr(void) *buf1++ = t3; *buf2++ = t3; } - if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl6(); - } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER *debug_dma_dhpos_odd = denise_hcounter; @@ -18328,11 +36058,11 @@ static void lts_ecs_fm0_ham0_p6_ilores_dshres_spr(void) denise_cck++; } } -static void lts_ecs_fm0_ham0_p6_ilores_dshres_spr_filtered(void) +static void lts_ecs_fm0_ehb1_p4_ihires_dshres_spr_filtered(void) { lts_null(); } -static void lts_ecs_fm0_ham1_p6_ilores_dshres_spr(void) +static void lts_ecs_fm0_ham0_p4_ihires_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -18343,50 +36073,25 @@ static void lts_ecs_fm0_ham1_p6_ilores_dshres_spr(void) } int cnt = denise_hcounter << 2; if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl6(); - clxdat |= bplcoltable[pix0]; - if (decode_specials) { - pix0 = decode_denise_specials(pix0); - } - dpix_val0 = decode_ham_pixel(pix0); - } - last_bpl_pix = pix0; - } - shiftbpl6(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_lores(); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } } internal_pixel_cnt += 1; internal_pixel_cnt += 1; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } internal_pixel_cnt += 1; internal_pixel_cnt += 1; uae_u32 dpix_val1 = dpix_val0; uae_u8 pix1 = pix0; - uae_u32 dpix_val2 = dpix_val1; - uae_u8 pix2 = pix1; uae_u32 dpix_val3 = dpix_val2; uae_u8 pix3 = pix2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - dpix_val1 = dpix_val0; - dpix_val2 = dpix_val0; - dpix_val3 = dpix_val0; - } - } uae_u32 t0 = 0; if (!extblank) { t0 = dpix_val0; @@ -18432,12 +36137,6 @@ static void lts_ecs_fm0_ham1_p6_ilores_dshres_spr(void) *buf1++ = t3; *buf2++ = t3; } - if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl6e(); - } - if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) { - copybpl6o(); - } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER *debug_dma_dhpos_odd = denise_hcounter; @@ -18460,11 +36159,11 @@ static void lts_ecs_fm0_ham1_p6_ilores_dshres_spr(void) denise_cck++; } } -static void lts_ecs_fm0_ham1_p6_ilores_dshres_spr_filtered(void) +static void lts_ecs_fm0_ham0_p4_ihires_dshres_spr_filtered(void) { lts_null(); } -static void lts_ecs_fm0_n0_p2_ihires_dshres(void) +static void lts_ecs_fm0_ham1_p4_ihires_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -18479,28 +36178,14 @@ static void lts_ecs_fm0_n0_p2_ihires_dshres(void) uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl2(); - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0]; - } - last_bpl_pix = pix0; } - shiftbpl2(); internal_pixel_cnt += 1; internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = getbpl2(); - clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2]; - } - last_bpl_pix = pix2; } - shiftbpl2(); internal_pixel_cnt += 1; internal_pixel_cnt += 1; uae_u32 dpix_val1 = dpix_val0; @@ -18553,9 +36238,6 @@ static void lts_ecs_fm0_n0_p2_ihires_dshres(void) *buf1++ = t3; *buf2++ = t3; } - if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { - copybpl2(); - } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER *debug_dma_dhpos_odd = denise_hcounter; @@ -18578,11 +36260,11 @@ static void lts_ecs_fm0_n0_p2_ihires_dshres(void) denise_cck++; } } -static void lts_ecs_fm0_n0_p2_ihires_dshres_filtered(void) +static void lts_ecs_fm0_ham1_p4_ihires_dshres_spr_filtered(void) { lts_null(); } -static void lts_ecs_fm0_n1_p2_ihires_dshres(void) +static void lts_ecs_fm0_n0_p5_ihires_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -18597,28 +36279,14 @@ static void lts_ecs_fm0_n1_p2_ihires_dshres(void) uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl2(); - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0]; - } - last_bpl_pix = pix0; } - shiftbpl2(); internal_pixel_cnt += 1; internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = getbpl2(); - clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2]; - } - last_bpl_pix = pix2; } - shiftbpl2(); internal_pixel_cnt += 1; internal_pixel_cnt += 1; uae_u32 dpix_val1 = dpix_val0; @@ -18671,12 +36339,6 @@ static void lts_ecs_fm0_n1_p2_ihires_dshres(void) *buf1++ = t3; *buf2++ = t3; } - if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { - copybpl2e(); - } - if (bpldat_copy[1] && (denise_hcounter_cmp & 7) == bplcon1_shift[1]) { - copybpl2o(); - } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER *debug_dma_dhpos_odd = denise_hcounter; @@ -18699,11 +36361,11 @@ static void lts_ecs_fm0_n1_p2_ihires_dshres(void) denise_cck++; } } -static void lts_ecs_fm0_n1_p2_ihires_dshres_filtered(void) +static void lts_ecs_fm0_n0_p5_ihires_dshres_spr_filtered(void) { lts_null(); } -static void lts_ecs_fm0_dpf0_p2_ihires_dshres(void) +static void lts_ecs_fm0_n1_p5_ihires_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -18718,30 +36380,14 @@ static void lts_ecs_fm0_dpf0_p2_ihires_dshres(void) uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl2(); - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; } - shiftbpl2(); internal_pixel_cnt += 1; internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = getbpl2(); - clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - dpix_val2 = denise_colors.acolors[val2]; - } - last_bpl_pix = pix2; } - shiftbpl2(); internal_pixel_cnt += 1; internal_pixel_cnt += 1; uae_u32 dpix_val1 = dpix_val0; @@ -18794,9 +36440,6 @@ static void lts_ecs_fm0_dpf0_p2_ihires_dshres(void) *buf1++ = t3; *buf2++ = t3; } - if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { - copybpl2(); - } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER *debug_dma_dhpos_odd = denise_hcounter; @@ -18819,11 +36462,11 @@ static void lts_ecs_fm0_dpf0_p2_ihires_dshres(void) denise_cck++; } } -static void lts_ecs_fm0_dpf0_p2_ihires_dshres_filtered(void) +static void lts_ecs_fm0_n1_p5_ihires_dshres_spr_filtered(void) { lts_null(); } -static void lts_ecs_fm0_dpf1_p2_ihires_dshres(void) +static void lts_ecs_fm0_dpf0_p5_ihires_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -18838,30 +36481,14 @@ static void lts_ecs_fm0_dpf1_p2_ihires_dshres(void) uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl2(); - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; } - shiftbpl2(); internal_pixel_cnt += 1; internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = getbpl2(); - clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - dpix_val2 = denise_colors.acolors[val2]; - } - last_bpl_pix = pix2; } - shiftbpl2(); internal_pixel_cnt += 1; internal_pixel_cnt += 1; uae_u32 dpix_val1 = dpix_val0; @@ -18914,12 +36541,6 @@ static void lts_ecs_fm0_dpf1_p2_ihires_dshres(void) *buf1++ = t3; *buf2++ = t3; } - if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { - copybpl2e(); - } - if (bpldat_copy[1] && (denise_hcounter_cmp & 7) == bplcon1_shift[1]) { - copybpl2o(); - } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER *debug_dma_dhpos_odd = denise_hcounter; @@ -18940,45 +36561,13 @@ static void lts_ecs_fm0_dpf1_p2_ihires_dshres(void) denise_hcounter_cmp = denise_hcounter_new; } denise_cck++; - } -} -static void lts_ecs_fm0_dpf1_p2_ihires_dshres_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb0_p2_ihires_dshres(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb0_p2_ihires_dshres_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb1_p2_ihires_dshres(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb1_p2_ihires_dshres_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham0_p2_ihires_dshres(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham0_p2_ihires_dshres_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham1_p2_ihires_dshres(void) -{ - lts_null(); + } } -static void lts_ecs_fm0_ham1_p2_ihires_dshres_filtered(void) +static void lts_ecs_fm0_dpf0_p5_ihires_dshres_spr_filtered(void) { lts_null(); } -static void lts_ecs_fm0_n0_p4_ihires_dshres(void) +static void lts_ecs_fm0_dpf1_p5_ihires_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -18993,28 +36582,14 @@ static void lts_ecs_fm0_n0_p4_ihires_dshres(void) uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl4(); - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0]; - } - last_bpl_pix = pix0; } - shiftbpl4(); internal_pixel_cnt += 1; internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = getbpl4(); - clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2]; - } - last_bpl_pix = pix2; } - shiftbpl4(); internal_pixel_cnt += 1; internal_pixel_cnt += 1; uae_u32 dpix_val1 = dpix_val0; @@ -19067,9 +36642,6 @@ static void lts_ecs_fm0_n0_p4_ihires_dshres(void) *buf1++ = t3; *buf2++ = t3; } - if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { - copybpl4(); - } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER *debug_dma_dhpos_odd = denise_hcounter; @@ -19092,11 +36664,11 @@ static void lts_ecs_fm0_n0_p4_ihires_dshres(void) denise_cck++; } } -static void lts_ecs_fm0_n0_p4_ihires_dshres_filtered(void) +static void lts_ecs_fm0_dpf1_p5_ihires_dshres_spr_filtered(void) { lts_null(); } -static void lts_ecs_fm0_n1_p4_ihires_dshres(void) +static void lts_ecs_fm0_ehb0_p5_ihires_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -19111,28 +36683,14 @@ static void lts_ecs_fm0_n1_p4_ihires_dshres(void) uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl4(); - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0]; - } - last_bpl_pix = pix0; } - shiftbpl4(); internal_pixel_cnt += 1; internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = getbpl4(); - clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2]; - } - last_bpl_pix = pix2; } - shiftbpl4(); internal_pixel_cnt += 1; internal_pixel_cnt += 1; uae_u32 dpix_val1 = dpix_val0; @@ -19185,12 +36743,6 @@ static void lts_ecs_fm0_n1_p4_ihires_dshres(void) *buf1++ = t3; *buf2++ = t3; } - if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { - copybpl4e(); - } - if (bpldat_copy[1] && (denise_hcounter_cmp & 7) == bplcon1_shift[1]) { - copybpl4o(); - } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER *debug_dma_dhpos_odd = denise_hcounter; @@ -19213,11 +36765,11 @@ static void lts_ecs_fm0_n1_p4_ihires_dshres(void) denise_cck++; } } -static void lts_ecs_fm0_n1_p4_ihires_dshres_filtered(void) +static void lts_ecs_fm0_ehb0_p5_ihires_dshres_spr_filtered(void) { lts_null(); } -static void lts_ecs_fm0_dpf0_p4_ihires_dshres(void) +static void lts_ecs_fm0_ehb1_p5_ihires_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -19232,30 +36784,14 @@ static void lts_ecs_fm0_dpf0_p4_ihires_dshres(void) uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl4(); - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; } - shiftbpl4(); internal_pixel_cnt += 1; internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = getbpl4(); - clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - dpix_val2 = denise_colors.acolors[val2]; - } - last_bpl_pix = pix2; } - shiftbpl4(); internal_pixel_cnt += 1; internal_pixel_cnt += 1; uae_u32 dpix_val1 = dpix_val0; @@ -19308,9 +36844,6 @@ static void lts_ecs_fm0_dpf0_p4_ihires_dshres(void) *buf1++ = t3; *buf2++ = t3; } - if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { - copybpl4(); - } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER *debug_dma_dhpos_odd = denise_hcounter; @@ -19333,11 +36866,11 @@ static void lts_ecs_fm0_dpf0_p4_ihires_dshres(void) denise_cck++; } } -static void lts_ecs_fm0_dpf0_p4_ihires_dshres_filtered(void) +static void lts_ecs_fm0_ehb1_p5_ihires_dshres_spr_filtered(void) { lts_null(); } -static void lts_ecs_fm0_dpf1_p4_ihires_dshres(void) +static void lts_ecs_fm0_ham0_p5_ihires_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -19352,30 +36885,14 @@ static void lts_ecs_fm0_dpf1_p4_ihires_dshres(void) uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl4(); - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; } - shiftbpl4(); internal_pixel_cnt += 1; internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = getbpl4(); - clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - dpix_val2 = denise_colors.acolors[val2]; - } - last_bpl_pix = pix2; } - shiftbpl4(); internal_pixel_cnt += 1; internal_pixel_cnt += 1; uae_u32 dpix_val1 = dpix_val0; @@ -19428,12 +36945,6 @@ static void lts_ecs_fm0_dpf1_p4_ihires_dshres(void) *buf1++ = t3; *buf2++ = t3; } - if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { - copybpl4e(); - } - if (bpldat_copy[1] && (denise_hcounter_cmp & 7) == bplcon1_shift[1]) { - copybpl4o(); - } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER *debug_dma_dhpos_odd = denise_hcounter; @@ -19454,173 +36965,13 @@ static void lts_ecs_fm0_dpf1_p4_ihires_dshres(void) denise_hcounter_cmp = denise_hcounter_new; } denise_cck++; - } -} -static void lts_ecs_fm0_dpf1_p4_ihires_dshres_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb0_p4_ihires_dshres(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb0_p4_ihires_dshres_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb1_p4_ihires_dshres(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb1_p4_ihires_dshres_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham0_p4_ihires_dshres(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham0_p4_ihires_dshres_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham1_p4_ihires_dshres(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham1_p4_ihires_dshres_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_n0_p5_ihires_dshres(void) -{ - lts_null(); -} -static void lts_ecs_fm0_n0_p5_ihires_dshres_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_n1_p5_ihires_dshres(void) -{ - lts_null(); -} -static void lts_ecs_fm0_n1_p5_ihires_dshres_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_dpf0_p5_ihires_dshres(void) -{ - lts_null(); -} -static void lts_ecs_fm0_dpf0_p5_ihires_dshres_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_dpf1_p5_ihires_dshres(void) -{ - lts_null(); -} -static void lts_ecs_fm0_dpf1_p5_ihires_dshres_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb0_p5_ihires_dshres(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb0_p5_ihires_dshres_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb1_p5_ihires_dshres(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb1_p5_ihires_dshres_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham0_p5_ihires_dshres(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham0_p5_ihires_dshres_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham1_p5_ihires_dshres(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham1_p5_ihires_dshres_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_n0_p6_ihires_dshres(void) -{ - lts_null(); -} -static void lts_ecs_fm0_n0_p6_ihires_dshres_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_n1_p6_ihires_dshres(void) -{ - lts_null(); -} -static void lts_ecs_fm0_n1_p6_ihires_dshres_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_dpf0_p6_ihires_dshres(void) -{ - lts_null(); -} -static void lts_ecs_fm0_dpf0_p6_ihires_dshres_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_dpf1_p6_ihires_dshres(void) -{ - lts_null(); -} -static void lts_ecs_fm0_dpf1_p6_ihires_dshres_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb0_p6_ihires_dshres(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb0_p6_ihires_dshres_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb1_p6_ihires_dshres(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb1_p6_ihires_dshres_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham0_p6_ihires_dshres(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham0_p6_ihires_dshres_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham1_p6_ihires_dshres(void) -{ - lts_null(); + } } -static void lts_ecs_fm0_ham1_p6_ihires_dshres_filtered(void) +static void lts_ecs_fm0_ham0_p5_ihires_dshres_spr_filtered(void) { lts_null(); } -static void lts_ecs_fm0_n0_p2_ihires_dshres_spr(void) +static void lts_ecs_fm0_ham1_p5_ihires_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -19631,26 +36982,10 @@ static void lts_ecs_fm0_n0_p2_ihires_dshres_spr(void) } int cnt = denise_hcounter << 2; if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl2(); - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0]; - } - last_bpl_pix = pix0; - } - shiftbpl2(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_lores(); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } } internal_pixel_cnt += 1; internal_pixel_cnt += 1; @@ -19658,14 +36993,7 @@ static void lts_ecs_fm0_n0_p2_ihires_dshres_spr(void) uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = getbpl2(); - clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2]; - } - last_bpl_pix = pix2; } - shiftbpl2(); internal_pixel_cnt += 1; internal_pixel_cnt += 1; uae_u32 dpix_val1 = dpix_val0; @@ -19673,33 +37001,6 @@ static void lts_ecs_fm0_n0_p2_ihires_dshres_spr(void) uae_u32 dpix_val3 = dpix_val2; uae_u8 pix3 = pix2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - } - } - uae_u32 sv1 = sv0; - if (sv1) { - uae_u32 spix1 = denise_render_sprites2(pix1, sv1); - if (spix1) { - dpix_val1 = denise_colors.acolors[spix1]; - } - } - uae_u32 sv2 = sv0; - if (sv2) { - uae_u32 spix2 = denise_render_sprites2(pix2, sv2); - if (spix2) { - dpix_val2 = denise_colors.acolors[spix2]; - } - } - uae_u32 sv3 = sv0; - if (sv3) { - uae_u32 spix3 = denise_render_sprites2(pix3, sv3); - if (spix3) { - dpix_val3 = denise_colors.acolors[spix3]; - } - } uae_u32 t0 = 0; if (!extblank) { t0 = dpix_val0; @@ -19745,9 +37046,6 @@ static void lts_ecs_fm0_n0_p2_ihires_dshres_spr(void) *buf1++ = t3; *buf2++ = t3; } - if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { - copybpl2(); - } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER *debug_dma_dhpos_odd = denise_hcounter; @@ -19770,11 +37068,11 @@ static void lts_ecs_fm0_n0_p2_ihires_dshres_spr(void) denise_cck++; } } -static void lts_ecs_fm0_n0_p2_ihires_dshres_spr_filtered(void) +static void lts_ecs_fm0_ham1_p5_ihires_dshres_spr_filtered(void) { lts_null(); } -static void lts_ecs_fm0_n1_p2_ihires_dshres_spr(void) +static void lts_ecs_fm0_n0_p6_ihires_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -19785,26 +37083,10 @@ static void lts_ecs_fm0_n1_p2_ihires_dshres_spr(void) } int cnt = denise_hcounter << 2; if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl2(); - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0]; - } - last_bpl_pix = pix0; - } - shiftbpl2(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_lores(); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } } internal_pixel_cnt += 1; internal_pixel_cnt += 1; @@ -19812,14 +37094,7 @@ static void lts_ecs_fm0_n1_p2_ihires_dshres_spr(void) uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = getbpl2(); - clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2]; - } - last_bpl_pix = pix2; } - shiftbpl2(); internal_pixel_cnt += 1; internal_pixel_cnt += 1; uae_u32 dpix_val1 = dpix_val0; @@ -19827,33 +37102,6 @@ static void lts_ecs_fm0_n1_p2_ihires_dshres_spr(void) uae_u32 dpix_val3 = dpix_val2; uae_u8 pix3 = pix2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - } - } - uae_u32 sv1 = sv0; - if (sv1) { - uae_u32 spix1 = denise_render_sprites2(pix1, sv1); - if (spix1) { - dpix_val1 = denise_colors.acolors[spix1]; - } - } - uae_u32 sv2 = sv0; - if (sv2) { - uae_u32 spix2 = denise_render_sprites2(pix2, sv2); - if (spix2) { - dpix_val2 = denise_colors.acolors[spix2]; - } - } - uae_u32 sv3 = sv0; - if (sv3) { - uae_u32 spix3 = denise_render_sprites2(pix3, sv3); - if (spix3) { - dpix_val3 = denise_colors.acolors[spix3]; - } - } uae_u32 t0 = 0; if (!extblank) { t0 = dpix_val0; @@ -19899,12 +37147,6 @@ static void lts_ecs_fm0_n1_p2_ihires_dshres_spr(void) *buf1++ = t3; *buf2++ = t3; } - if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { - copybpl2e(); - } - if (bpldat_copy[1] && (denise_hcounter_cmp & 7) == bplcon1_shift[1]) { - copybpl2o(); - } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER *debug_dma_dhpos_odd = denise_hcounter; @@ -19927,11 +37169,11 @@ static void lts_ecs_fm0_n1_p2_ihires_dshres_spr(void) denise_cck++; } } -static void lts_ecs_fm0_n1_p2_ihires_dshres_spr_filtered(void) +static void lts_ecs_fm0_n0_p6_ihires_dshres_spr_filtered(void) { lts_null(); } -static void lts_ecs_fm0_dpf0_p2_ihires_dshres_spr(void) +static void lts_ecs_fm0_n1_p6_ihires_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -19942,27 +37184,10 @@ static void lts_ecs_fm0_dpf0_p2_ihires_dshres_spr(void) } int cnt = denise_hcounter << 2; if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl2(); - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; - } - shiftbpl2(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_lores(); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } } internal_pixel_cnt += 1; internal_pixel_cnt += 1; @@ -19970,15 +37195,7 @@ static void lts_ecs_fm0_dpf0_p2_ihires_dshres_spr(void) uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = getbpl2(); - clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - dpix_val2 = denise_colors.acolors[val2]; - } - last_bpl_pix = pix2; } - shiftbpl2(); internal_pixel_cnt += 1; internal_pixel_cnt += 1; uae_u32 dpix_val1 = dpix_val0; @@ -19986,33 +37203,107 @@ static void lts_ecs_fm0_dpf0_p2_ihires_dshres_spr(void) uae_u32 dpix_val3 = dpix_val2; uae_u8 pix3 = pix2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - } + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; } - uae_u32 sv1 = sv0; - if (sv1) { - uae_u32 spix1 = denise_render_sprites2(pix1, sv1); - if (spix1) { - dpix_val1 = denise_colors.acolors[spix1]; - } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); } - uae_u32 sv2 = sv0; - if (sv2) { - uae_u32 spix2 = denise_render_sprites2(pix2, sv2); - if (spix2) { - dpix_val2 = denise_colors.acolors[spix2]; - } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dpix_val1; } - uae_u32 sv3 = sv0; - if (sv3) { - uae_u32 spix3 = denise_render_sprites2(pix3, sv3); - if (spix3) { - dpix_val3 = denise_colors.acolors[spix3]; - } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + uae_u32 t2 = 0; + if (!extblank) { + t2 = dpix_val2; } + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + uae_u32 t3 = 0; + if (!extblank) { + t3 = dpix_val3; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_n1_p6_ihires_dshres_spr_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_dpf0_p6_ihires_dshres_spr(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + uae_u32 dpix_val3 = dpix_val2; + uae_u8 pix3 = pix2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { uae_u32 t0 = 0; if (!extblank) { t0 = dpix_val0; @@ -20058,9 +37349,6 @@ static void lts_ecs_fm0_dpf0_p2_ihires_dshres_spr(void) *buf1++ = t3; *buf2++ = t3; } - if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { - copybpl2(); - } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER *debug_dma_dhpos_odd = denise_hcounter; @@ -20083,11 +37371,11 @@ static void lts_ecs_fm0_dpf0_p2_ihires_dshres_spr(void) denise_cck++; } } -static void lts_ecs_fm0_dpf0_p2_ihires_dshres_spr_filtered(void) +static void lts_ecs_fm0_dpf0_p6_ihires_dshres_spr_filtered(void) { lts_null(); } -static void lts_ecs_fm0_dpf1_p2_ihires_dshres_spr(void) +static void lts_ecs_fm0_dpf1_p6_ihires_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -20098,27 +37386,10 @@ static void lts_ecs_fm0_dpf1_p2_ihires_dshres_spr(void) } int cnt = denise_hcounter << 2; if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl2(); - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; - } - shiftbpl2(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_lores(); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } } internal_pixel_cnt += 1; internal_pixel_cnt += 1; @@ -20126,15 +37397,7 @@ static void lts_ecs_fm0_dpf1_p2_ihires_dshres_spr(void) uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = getbpl2(); - clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - dpix_val2 = denise_colors.acolors[val2]; - } - last_bpl_pix = pix2; } - shiftbpl2(); internal_pixel_cnt += 1; internal_pixel_cnt += 1; uae_u32 dpix_val1 = dpix_val0; @@ -20142,33 +37405,6 @@ static void lts_ecs_fm0_dpf1_p2_ihires_dshres_spr(void) uae_u32 dpix_val3 = dpix_val2; uae_u8 pix3 = pix2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - } - } - uae_u32 sv1 = sv0; - if (sv1) { - uae_u32 spix1 = denise_render_sprites2(pix1, sv1); - if (spix1) { - dpix_val1 = denise_colors.acolors[spix1]; - } - } - uae_u32 sv2 = sv0; - if (sv2) { - uae_u32 spix2 = denise_render_sprites2(pix2, sv2); - if (spix2) { - dpix_val2 = denise_colors.acolors[spix2]; - } - } - uae_u32 sv3 = sv0; - if (sv3) { - uae_u32 spix3 = denise_render_sprites2(pix3, sv3); - if (spix3) { - dpix_val3 = denise_colors.acolors[spix3]; - } - } uae_u32 t0 = 0; if (!extblank) { t0 = dpix_val0; @@ -20214,12 +37450,6 @@ static void lts_ecs_fm0_dpf1_p2_ihires_dshres_spr(void) *buf1++ = t3; *buf2++ = t3; } - if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { - copybpl2e(); - } - if (bpldat_copy[1] && (denise_hcounter_cmp & 7) == bplcon1_shift[1]) { - copybpl2o(); - } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER *debug_dma_dhpos_odd = denise_hcounter; @@ -20242,43 +37472,11 @@ static void lts_ecs_fm0_dpf1_p2_ihires_dshres_spr(void) denise_cck++; } } -static void lts_ecs_fm0_dpf1_p2_ihires_dshres_spr_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb0_p2_ihires_dshres_spr(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb0_p2_ihires_dshres_spr_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb1_p2_ihires_dshres_spr(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb1_p2_ihires_dshres_spr_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham0_p2_ihires_dshres_spr(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham0_p2_ihires_dshres_spr_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham1_p2_ihires_dshres_spr(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham1_p2_ihires_dshres_spr_filtered(void) +static void lts_ecs_fm0_dpf1_p6_ihires_dshres_spr_filtered(void) { lts_null(); } -static void lts_ecs_fm0_n0_p4_ihires_dshres_spr(void) +static void lts_ecs_fm0_ehb0_p6_ihires_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -20289,26 +37487,10 @@ static void lts_ecs_fm0_n0_p4_ihires_dshres_spr(void) } int cnt = denise_hcounter << 2; if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl4(); - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0]; - } - last_bpl_pix = pix0; - } - shiftbpl4(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_lores(); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } } internal_pixel_cnt += 1; internal_pixel_cnt += 1; @@ -20316,14 +37498,7 @@ static void lts_ecs_fm0_n0_p4_ihires_dshres_spr(void) uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = getbpl4(); - clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2]; - } - last_bpl_pix = pix2; } - shiftbpl4(); internal_pixel_cnt += 1; internal_pixel_cnt += 1; uae_u32 dpix_val1 = dpix_val0; @@ -20331,33 +37506,6 @@ static void lts_ecs_fm0_n0_p4_ihires_dshres_spr(void) uae_u32 dpix_val3 = dpix_val2; uae_u8 pix3 = pix2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - } - } - uae_u32 sv1 = sv0; - if (sv1) { - uae_u32 spix1 = denise_render_sprites2(pix1, sv1); - if (spix1) { - dpix_val1 = denise_colors.acolors[spix1]; - } - } - uae_u32 sv2 = sv0; - if (sv2) { - uae_u32 spix2 = denise_render_sprites2(pix2, sv2); - if (spix2) { - dpix_val2 = denise_colors.acolors[spix2]; - } - } - uae_u32 sv3 = sv0; - if (sv3) { - uae_u32 spix3 = denise_render_sprites2(pix3, sv3); - if (spix3) { - dpix_val3 = denise_colors.acolors[spix3]; - } - } uae_u32 t0 = 0; if (!extblank) { t0 = dpix_val0; @@ -20403,9 +37551,6 @@ static void lts_ecs_fm0_n0_p4_ihires_dshres_spr(void) *buf1++ = t3; *buf2++ = t3; } - if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { - copybpl4(); - } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER *debug_dma_dhpos_odd = denise_hcounter; @@ -20428,11 +37573,11 @@ static void lts_ecs_fm0_n0_p4_ihires_dshres_spr(void) denise_cck++; } } -static void lts_ecs_fm0_n0_p4_ihires_dshres_spr_filtered(void) +static void lts_ecs_fm0_ehb0_p6_ihires_dshres_spr_filtered(void) { lts_null(); } -static void lts_ecs_fm0_n1_p4_ihires_dshres_spr(void) +static void lts_ecs_fm0_ehb1_p6_ihires_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -20443,26 +37588,10 @@ static void lts_ecs_fm0_n1_p4_ihires_dshres_spr(void) } int cnt = denise_hcounter << 2; if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl4(); - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0]; - } - last_bpl_pix = pix0; - } - shiftbpl4(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_lores(); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } } internal_pixel_cnt += 1; internal_pixel_cnt += 1; @@ -20470,14 +37599,7 @@ static void lts_ecs_fm0_n1_p4_ihires_dshres_spr(void) uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = getbpl4(); - clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2]; - } - last_bpl_pix = pix2; } - shiftbpl4(); internal_pixel_cnt += 1; internal_pixel_cnt += 1; uae_u32 dpix_val1 = dpix_val0; @@ -20485,33 +37607,6 @@ static void lts_ecs_fm0_n1_p4_ihires_dshres_spr(void) uae_u32 dpix_val3 = dpix_val2; uae_u8 pix3 = pix2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - } - } - uae_u32 sv1 = sv0; - if (sv1) { - uae_u32 spix1 = denise_render_sprites2(pix1, sv1); - if (spix1) { - dpix_val1 = denise_colors.acolors[spix1]; - } - } - uae_u32 sv2 = sv0; - if (sv2) { - uae_u32 spix2 = denise_render_sprites2(pix2, sv2); - if (spix2) { - dpix_val2 = denise_colors.acolors[spix2]; - } - } - uae_u32 sv3 = sv0; - if (sv3) { - uae_u32 spix3 = denise_render_sprites2(pix3, sv3); - if (spix3) { - dpix_val3 = denise_colors.acolors[spix3]; - } - } uae_u32 t0 = 0; if (!extblank) { t0 = dpix_val0; @@ -20557,12 +37652,6 @@ static void lts_ecs_fm0_n1_p4_ihires_dshres_spr(void) *buf1++ = t3; *buf2++ = t3; } - if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { - copybpl4e(); - } - if (bpldat_copy[1] && (denise_hcounter_cmp & 7) == bplcon1_shift[1]) { - copybpl4o(); - } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER *debug_dma_dhpos_odd = denise_hcounter; @@ -20585,11 +37674,11 @@ static void lts_ecs_fm0_n1_p4_ihires_dshres_spr(void) denise_cck++; } } -static void lts_ecs_fm0_n1_p4_ihires_dshres_spr_filtered(void) +static void lts_ecs_fm0_ehb1_p6_ihires_dshres_spr_filtered(void) { lts_null(); } -static void lts_ecs_fm0_dpf0_p4_ihires_dshres_spr(void) +static void lts_ecs_fm0_ham0_p6_ihires_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -20600,43 +37689,18 @@ static void lts_ecs_fm0_dpf0_p4_ihires_dshres_spr(void) } int cnt = denise_hcounter << 2; if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl4(); - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; - } - shiftbpl4(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_lores(); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } } internal_pixel_cnt += 1; internal_pixel_cnt += 1; uae_u8 pix2 = 0; - uae_u32 dpix_val2 = BLANK_COLOR; - if (!denise_blank_active) { - dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = getbpl4(); - clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - dpix_val2 = denise_colors.acolors[val2]; - } - last_bpl_pix = pix2; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; } - shiftbpl4(); internal_pixel_cnt += 1; internal_pixel_cnt += 1; uae_u32 dpix_val1 = dpix_val0; @@ -20644,33 +37708,6 @@ static void lts_ecs_fm0_dpf0_p4_ihires_dshres_spr(void) uae_u32 dpix_val3 = dpix_val2; uae_u8 pix3 = pix2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - } - } - uae_u32 sv1 = sv0; - if (sv1) { - uae_u32 spix1 = denise_render_sprites2(pix1, sv1); - if (spix1) { - dpix_val1 = denise_colors.acolors[spix1]; - } - } - uae_u32 sv2 = sv0; - if (sv2) { - uae_u32 spix2 = denise_render_sprites2(pix2, sv2); - if (spix2) { - dpix_val2 = denise_colors.acolors[spix2]; - } - } - uae_u32 sv3 = sv0; - if (sv3) { - uae_u32 spix3 = denise_render_sprites2(pix3, sv3); - if (spix3) { - dpix_val3 = denise_colors.acolors[spix3]; - } - } uae_u32 t0 = 0; if (!extblank) { t0 = dpix_val0; @@ -20716,9 +37753,6 @@ static void lts_ecs_fm0_dpf0_p4_ihires_dshres_spr(void) *buf1++ = t3; *buf2++ = t3; } - if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { - copybpl4(); - } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER *debug_dma_dhpos_odd = denise_hcounter; @@ -20741,11 +37775,11 @@ static void lts_ecs_fm0_dpf0_p4_ihires_dshres_spr(void) denise_cck++; } } -static void lts_ecs_fm0_dpf0_p4_ihires_dshres_spr_filtered(void) +static void lts_ecs_fm0_ham0_p6_ihires_dshres_spr_filtered(void) { lts_null(); } -static void lts_ecs_fm0_dpf1_p4_ihires_dshres_spr(void) +static void lts_ecs_fm0_ham1_p6_ihires_dshres_spr(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -20756,27 +37790,10 @@ static void lts_ecs_fm0_dpf1_p4_ihires_dshres_spr(void) } int cnt = denise_hcounter << 2; if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl4(); - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; - } - shiftbpl4(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_lores(); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } } internal_pixel_cnt += 1; internal_pixel_cnt += 1; @@ -20784,15 +37801,7 @@ static void lts_ecs_fm0_dpf1_p4_ihires_dshres_spr(void) uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = getbpl4(); - clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - dpix_val2 = denise_colors.acolors[val2]; - } - last_bpl_pix = pix2; } - shiftbpl4(); internal_pixel_cnt += 1; internal_pixel_cnt += 1; uae_u32 dpix_val1 = dpix_val0; @@ -20800,33 +37809,6 @@ static void lts_ecs_fm0_dpf1_p4_ihires_dshres_spr(void) uae_u32 dpix_val3 = dpix_val2; uae_u8 pix3 = pix2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - } - } - uae_u32 sv1 = sv0; - if (sv1) { - uae_u32 spix1 = denise_render_sprites2(pix1, sv1); - if (spix1) { - dpix_val1 = denise_colors.acolors[spix1]; - } - } - uae_u32 sv2 = sv0; - if (sv2) { - uae_u32 spix2 = denise_render_sprites2(pix2, sv2); - if (spix2) { - dpix_val2 = denise_colors.acolors[spix2]; - } - } - uae_u32 sv3 = sv0; - if (sv3) { - uae_u32 spix3 = denise_render_sprites2(pix3, sv3); - if (spix3) { - dpix_val3 = denise_colors.acolors[spix3]; - } - } uae_u32 t0 = 0; if (!extblank) { t0 = dpix_val0; @@ -20872,12 +37854,6 @@ static void lts_ecs_fm0_dpf1_p4_ihires_dshres_spr(void) *buf1++ = t3; *buf2++ = t3; } - if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { - copybpl4e(); - } - if (bpldat_copy[1] && (denise_hcounter_cmp & 7) == bplcon1_shift[1]) { - copybpl4o(); - } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER *debug_dma_dhpos_odd = denise_hcounter; @@ -20900,166 +37876,6 @@ static void lts_ecs_fm0_dpf1_p4_ihires_dshres_spr(void) denise_cck++; } } -static void lts_ecs_fm0_dpf1_p4_ihires_dshres_spr_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb0_p4_ihires_dshres_spr(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb0_p4_ihires_dshres_spr_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb1_p4_ihires_dshres_spr(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb1_p4_ihires_dshres_spr_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham0_p4_ihires_dshres_spr(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham0_p4_ihires_dshres_spr_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham1_p4_ihires_dshres_spr(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham1_p4_ihires_dshres_spr_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_n0_p5_ihires_dshres_spr(void) -{ - lts_null(); -} -static void lts_ecs_fm0_n0_p5_ihires_dshres_spr_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_n1_p5_ihires_dshres_spr(void) -{ - lts_null(); -} -static void lts_ecs_fm0_n1_p5_ihires_dshres_spr_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_dpf0_p5_ihires_dshres_spr(void) -{ - lts_null(); -} -static void lts_ecs_fm0_dpf0_p5_ihires_dshres_spr_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_dpf1_p5_ihires_dshres_spr(void) -{ - lts_null(); -} -static void lts_ecs_fm0_dpf1_p5_ihires_dshres_spr_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb0_p5_ihires_dshres_spr(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb0_p5_ihires_dshres_spr_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb1_p5_ihires_dshres_spr(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb1_p5_ihires_dshres_spr_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham0_p5_ihires_dshres_spr(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham0_p5_ihires_dshres_spr_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham1_p5_ihires_dshres_spr(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham1_p5_ihires_dshres_spr_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_n0_p6_ihires_dshres_spr(void) -{ - lts_null(); -} -static void lts_ecs_fm0_n0_p6_ihires_dshres_spr_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_n1_p6_ihires_dshres_spr(void) -{ - lts_null(); -} -static void lts_ecs_fm0_n1_p6_ihires_dshres_spr_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_dpf0_p6_ihires_dshres_spr(void) -{ - lts_null(); -} -static void lts_ecs_fm0_dpf0_p6_ihires_dshres_spr_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_dpf1_p6_ihires_dshres_spr(void) -{ - lts_null(); -} -static void lts_ecs_fm0_dpf1_p6_ihires_dshres_spr_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb0_p6_ihires_dshres_spr(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb0_p6_ihires_dshres_spr_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb1_p6_ihires_dshres_spr(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb1_p6_ihires_dshres_spr_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham0_p6_ihires_dshres_spr(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham0_p6_ihires_dshres_spr_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham1_p6_ihires_dshres_spr(void) -{ - lts_null(); -} static void lts_ecs_fm0_ham1_p6_ihires_dshres_spr_filtered(void) { lts_null(); diff --git a/linetoscr_ocs_ecs_genlock.cpp b/linetoscr_ocs_ecs_genlock.cpp index 6b6a322b..7e3b230a 100644 --- a/linetoscr_ocs_ecs_genlock.cpp +++ b/linetoscr_ocs_ecs_genlock.cpp @@ -2041,38 +2041,6 @@ static void lts_ecs_fm0_dpf1_p4_ihires_dlores_filtered_genlock(void) } } static void lts_ecs_fm0_ehb0_p4_ihires_dlores_genlock(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb0_p4_ihires_dlores_filtered_genlock(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb1_p4_ihires_dlores_genlock(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb1_p4_ihires_dlores_filtered_genlock(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham0_p4_ihires_dlores_genlock(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham0_p4_ihires_dlores_filtered_genlock(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham1_p4_ihires_dlores_genlock(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham1_p4_ihires_dlores_filtered_genlock(void) -{ - lts_null(); -} -static void lts_ecs_fm0_n0_p4_ihires_dlores_spr_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -2083,29 +2051,12 @@ static void lts_ecs_fm0_n0_p4_ihires_dlores_spr_genlock(void) } int cnt = denise_hcounter << 2; if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl4(); - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0]; - gpix0 = get_genlock_transparency(pix0); - } - last_bpl_pix = pix0; - } - shiftbpl4(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_lores(); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } } internal_pixel_cnt += 2; uae_u8 pix1 = 0; @@ -2114,25 +2065,9 @@ static void lts_ecs_fm0_n0_p4_ihires_dlores_spr_genlock(void) if (!denise_blank_active) { gpix1 = get_genlock_transparency_border(); dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = getbpl4(); - clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1]; - gpix1 = get_genlock_transparency(pix1); - } - last_bpl_pix = pix1; } - shiftbpl4(); internal_pixel_cnt += 2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - gpix0 = get_genlock_transparency(spix0); - - } - } uae_u32 t0 = 0; if (!extblank) { t0 = dpix_val0; @@ -2146,9 +2081,6 @@ static void lts_ecs_fm0_n0_p4_ihires_dlores_spr_genlock(void) *buf2++ = t0; *gbuf++ = gpix0; } - if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { - copybpl4(); - } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER *debug_dma_dhpos_odd = denise_hcounter; @@ -2171,7 +2103,7 @@ static void lts_ecs_fm0_n0_p4_ihires_dlores_spr_genlock(void) denise_cck++; } } -static void lts_ecs_fm0_n0_p4_ihires_dlores_spr_filtered_genlock(void) +static void lts_ecs_fm0_ehb0_p4_ihires_dlores_filtered_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -2182,29 +2114,12 @@ static void lts_ecs_fm0_n0_p4_ihires_dlores_spr_filtered_genlock(void) } int cnt = denise_hcounter << 2; if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl4(); - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0]; - gpix0 = get_genlock_transparency(pix0); - } - last_bpl_pix = pix0; - } - shiftbpl4(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_lores(); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } } internal_pixel_cnt += 2; uae_u8 pix1 = 0; @@ -2213,28 +2128,11 @@ static void lts_ecs_fm0_n0_p4_ihires_dlores_spr_filtered_genlock(void) if (!denise_blank_active) { gpix1 = get_genlock_transparency_border(); dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = getbpl4(); - clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1]; - gpix1 = get_genlock_transparency(pix1); - } - last_bpl_pix = pix1; } - shiftbpl4(); internal_pixel_cnt += 2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dpix_val0 = filter_pixel(dpix_val0, dpix_val1); gpix0 = filter_pixel_genlock(gpix0, gpix1); - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - gpix0 = get_genlock_transparency(spix0); - - dpix_val1 = dpix_val0; - } - } uae_u32 t0 = 0; if (!extblank) { t0 = dpix_val0; @@ -2248,9 +2146,6 @@ static void lts_ecs_fm0_n0_p4_ihires_dlores_spr_filtered_genlock(void) *buf2++ = t0; *gbuf++ = gpix0; } - if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { - copybpl4(); - } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER *debug_dma_dhpos_odd = denise_hcounter; @@ -2273,7 +2168,7 @@ static void lts_ecs_fm0_n0_p4_ihires_dlores_spr_filtered_genlock(void) denise_cck++; } } -static void lts_ecs_fm0_n1_p4_ihires_dlores_spr_genlock(void) +static void lts_ecs_fm0_ehb1_p4_ihires_dlores_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -2284,29 +2179,12 @@ static void lts_ecs_fm0_n1_p4_ihires_dlores_spr_genlock(void) } int cnt = denise_hcounter << 2; if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl4(); - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0]; - gpix0 = get_genlock_transparency(pix0); - } - last_bpl_pix = pix0; - } - shiftbpl4(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_lores(); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } } internal_pixel_cnt += 2; uae_u8 pix1 = 0; @@ -2315,25 +2193,9 @@ static void lts_ecs_fm0_n1_p4_ihires_dlores_spr_genlock(void) if (!denise_blank_active) { gpix1 = get_genlock_transparency_border(); dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = getbpl4(); - clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1]; - gpix1 = get_genlock_transparency(pix1); - } - last_bpl_pix = pix1; } - shiftbpl4(); internal_pixel_cnt += 2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - gpix0 = get_genlock_transparency(spix0); - - } - } uae_u32 t0 = 0; if (!extblank) { t0 = dpix_val0; @@ -2347,12 +2209,6 @@ static void lts_ecs_fm0_n1_p4_ihires_dlores_spr_genlock(void) *buf2++ = t0; *gbuf++ = gpix0; } - if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { - copybpl4e(); - } - if (bpldat_copy[1] && (denise_hcounter_cmp & 7) == bplcon1_shift[1]) { - copybpl4o(); - } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER *debug_dma_dhpos_odd = denise_hcounter; @@ -2375,7 +2231,7 @@ static void lts_ecs_fm0_n1_p4_ihires_dlores_spr_genlock(void) denise_cck++; } } -static void lts_ecs_fm0_n1_p4_ihires_dlores_spr_filtered_genlock(void) +static void lts_ecs_fm0_ehb1_p4_ihires_dlores_filtered_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -2386,29 +2242,12 @@ static void lts_ecs_fm0_n1_p4_ihires_dlores_spr_filtered_genlock(void) } int cnt = denise_hcounter << 2; if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl4(); - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0]; - gpix0 = get_genlock_transparency(pix0); - } - last_bpl_pix = pix0; - } - shiftbpl4(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_lores(); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } } internal_pixel_cnt += 2; uae_u8 pix1 = 0; @@ -2417,28 +2256,11 @@ static void lts_ecs_fm0_n1_p4_ihires_dlores_spr_filtered_genlock(void) if (!denise_blank_active) { gpix1 = get_genlock_transparency_border(); dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = getbpl4(); - clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1]; - gpix1 = get_genlock_transparency(pix1); - } - last_bpl_pix = pix1; } - shiftbpl4(); internal_pixel_cnt += 2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dpix_val0 = filter_pixel(dpix_val0, dpix_val1); gpix0 = filter_pixel_genlock(gpix0, gpix1); - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - gpix0 = get_genlock_transparency(spix0); - - dpix_val1 = dpix_val0; - } - } uae_u32 t0 = 0; if (!extblank) { t0 = dpix_val0; @@ -2452,12 +2274,6 @@ static void lts_ecs_fm0_n1_p4_ihires_dlores_spr_filtered_genlock(void) *buf2++ = t0; *gbuf++ = gpix0; } - if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { - copybpl4e(); - } - if (bpldat_copy[1] && (denise_hcounter_cmp & 7) == bplcon1_shift[1]) { - copybpl4o(); - } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER *debug_dma_dhpos_odd = denise_hcounter; @@ -2480,7 +2296,7 @@ static void lts_ecs_fm0_n1_p4_ihires_dlores_spr_filtered_genlock(void) denise_cck++; } } -static void lts_ecs_fm0_dpf0_p4_ihires_dlores_spr_genlock(void) +static void lts_ecs_fm0_ham0_p4_ihires_dlores_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -2491,30 +2307,12 @@ static void lts_ecs_fm0_dpf0_p4_ihires_dlores_spr_genlock(void) } int cnt = denise_hcounter << 2; if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl4(); - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - dpix_val0 = denise_colors.acolors[val0]; - gpix0 = get_genlock_transparency(dpf_lookup[pix0]); - } - last_bpl_pix = pix0; - } - shiftbpl4(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_lores(); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } } internal_pixel_cnt += 2; uae_u8 pix1 = 0; @@ -2523,26 +2321,9 @@ static void lts_ecs_fm0_dpf0_p4_ihires_dlores_spr_genlock(void) if (!denise_blank_active) { gpix1 = get_genlock_transparency_border(); dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = getbpl4(); - clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - dpix_val1 = denise_colors.acolors[val1]; - gpix1 = get_genlock_transparency(dpf_lookup[pix1]); - } - last_bpl_pix = pix1; } - shiftbpl4(); internal_pixel_cnt += 2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - gpix0 = get_genlock_transparency(spix0); - - } - } uae_u32 t0 = 0; if (!extblank) { t0 = dpix_val0; @@ -2556,9 +2337,6 @@ static void lts_ecs_fm0_dpf0_p4_ihires_dlores_spr_genlock(void) *buf2++ = t0; *gbuf++ = gpix0; } - if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { - copybpl4(); - } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER *debug_dma_dhpos_odd = denise_hcounter; @@ -2581,7 +2359,7 @@ static void lts_ecs_fm0_dpf0_p4_ihires_dlores_spr_genlock(void) denise_cck++; } } -static void lts_ecs_fm0_dpf0_p4_ihires_dlores_spr_filtered_genlock(void) +static void lts_ecs_fm0_ham0_p4_ihires_dlores_filtered_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -2592,30 +2370,12 @@ static void lts_ecs_fm0_dpf0_p4_ihires_dlores_spr_filtered_genlock(void) } int cnt = denise_hcounter << 2; if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl4(); - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - dpix_val0 = denise_colors.acolors[val0]; - gpix0 = get_genlock_transparency(dpf_lookup[pix0]); - } - last_bpl_pix = pix0; - } - shiftbpl4(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_lores(); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } } internal_pixel_cnt += 2; uae_u8 pix1 = 0; @@ -2624,29 +2384,11 @@ static void lts_ecs_fm0_dpf0_p4_ihires_dlores_spr_filtered_genlock(void) if (!denise_blank_active) { gpix1 = get_genlock_transparency_border(); dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = getbpl4(); - clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - dpix_val1 = denise_colors.acolors[val1]; - gpix1 = get_genlock_transparency(dpf_lookup[pix1]); - } - last_bpl_pix = pix1; } - shiftbpl4(); internal_pixel_cnt += 2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dpix_val0 = filter_pixel(dpix_val0, dpix_val1); gpix0 = filter_pixel_genlock(gpix0, gpix1); - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - gpix0 = get_genlock_transparency(spix0); - - dpix_val1 = dpix_val0; - } - } uae_u32 t0 = 0; if (!extblank) { t0 = dpix_val0; @@ -2660,9 +2402,6 @@ static void lts_ecs_fm0_dpf0_p4_ihires_dlores_spr_filtered_genlock(void) *buf2++ = t0; *gbuf++ = gpix0; } - if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { - copybpl4(); - } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER *debug_dma_dhpos_odd = denise_hcounter; @@ -2685,7 +2424,7 @@ static void lts_ecs_fm0_dpf0_p4_ihires_dlores_spr_filtered_genlock(void) denise_cck++; } } -static void lts_ecs_fm0_dpf1_p4_ihires_dlores_spr_genlock(void) +static void lts_ecs_fm0_ham1_p4_ihires_dlores_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -2696,30 +2435,12 @@ static void lts_ecs_fm0_dpf1_p4_ihires_dlores_spr_genlock(void) } int cnt = denise_hcounter << 2; if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl4(); - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - dpix_val0 = denise_colors.acolors[val0]; - gpix0 = get_genlock_transparency(dpf_lookup[pix0]); - } - last_bpl_pix = pix0; - } - shiftbpl4(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_lores(); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } } internal_pixel_cnt += 2; uae_u8 pix1 = 0; @@ -2728,26 +2449,9 @@ static void lts_ecs_fm0_dpf1_p4_ihires_dlores_spr_genlock(void) if (!denise_blank_active) { gpix1 = get_genlock_transparency_border(); dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = getbpl4(); - clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - dpix_val1 = denise_colors.acolors[val1]; - gpix1 = get_genlock_transparency(dpf_lookup[pix1]); - } - last_bpl_pix = pix1; } - shiftbpl4(); internal_pixel_cnt += 2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - gpix0 = get_genlock_transparency(spix0); - - } - } uae_u32 t0 = 0; if (!extblank) { t0 = dpix_val0; @@ -2761,11 +2465,70 @@ static void lts_ecs_fm0_dpf1_p4_ihires_dlores_spr_genlock(void) *buf2++ = t0; *gbuf++ = gpix0; } - if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { - copybpl4e(); + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ham1_p4_ihires_dlores_filtered_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; } - if (bpldat_copy[1] && (denise_hcounter_cmp & 7) == bplcon1_shift[1]) { - copybpl4o(); + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + gpix0 = filter_pixel_genlock(gpix0, gpix1); + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = gpix0; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -2789,7 +2552,7 @@ static void lts_ecs_fm0_dpf1_p4_ihires_dlores_spr_genlock(void) denise_cck++; } } -static void lts_ecs_fm0_dpf1_p4_ihires_dlores_spr_filtered_genlock(void) +static void lts_ecs_fm0_n0_p4_ihires_dlores_spr_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -2810,9 +2573,8 @@ static void lts_ecs_fm0_dpf1_p4_ihires_dlores_spr_filtered_genlock(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = getbpl4(); clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - dpix_val0 = denise_colors.acolors[val0]; - gpix0 = get_genlock_transparency(dpf_lookup[pix0]); + dpix_val0 = denise_colors.acolors[pix0]; + gpix0 = get_genlock_transparency(pix0); } last_bpl_pix = pix0; } @@ -2835,24 +2597,20 @@ static void lts_ecs_fm0_dpf1_p4_ihires_dlores_spr_filtered_genlock(void) if (denise_hdiw && bpl1dat_trigger) { pix1 = getbpl4(); clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - dpix_val1 = denise_colors.acolors[val1]; - gpix1 = get_genlock_transparency(dpf_lookup[pix1]); + dpix_val1 = denise_colors.acolors[pix1]; + gpix1 = get_genlock_transparency(pix1); } last_bpl_pix = pix1; } shiftbpl4(); internal_pixel_cnt += 2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - dpix_val0 = filter_pixel(dpix_val0, dpix_val1); - gpix0 = filter_pixel_genlock(gpix0, gpix1); if (sv0) { uae_u32 spix0 = denise_render_sprites2(pix0, sv0); if (spix0) { dpix_val0 = denise_colors.acolors[spix0]; gpix0 = get_genlock_transparency(spix0); - dpix_val1 = dpix_val0; } } uae_u32 t0 = 0; @@ -2869,10 +2627,7 @@ static void lts_ecs_fm0_dpf1_p4_ihires_dlores_spr_filtered_genlock(void) *gbuf++ = gpix0; } if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { - copybpl4e(); - } - if (bpldat_copy[1] && (denise_hcounter_cmp & 7) == bplcon1_shift[1]) { - copybpl4o(); + copybpl4(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -2896,39 +2651,7 @@ static void lts_ecs_fm0_dpf1_p4_ihires_dlores_spr_filtered_genlock(void) denise_cck++; } } -static void lts_ecs_fm0_ehb0_p4_ihires_dlores_spr_genlock(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb0_p4_ihires_dlores_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb1_p4_ihires_dlores_spr_genlock(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb1_p4_ihires_dlores_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham0_p4_ihires_dlores_spr_genlock(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham0_p4_ihires_dlores_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham1_p4_ihires_dlores_spr_genlock(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham1_p4_ihires_dlores_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_ecs_fm0_n0_p6_ilores_dhires_genlock(void) +static void lts_ecs_fm0_n0_p4_ihires_dlores_spr_filtered_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -2939,6 +2662,7 @@ static void lts_ecs_fm0_n0_p6_ilores_dhires_genlock(void) } int cnt = denise_hcounter << 2; if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; @@ -2946,23 +2670,51 @@ static void lts_ecs_fm0_n0_p6_ilores_dhires_genlock(void) gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl6(); + pix0 = getbpl4(); clxdat |= bplcoltable[pix0]; - if (decode_specials) { - pix0 = decode_denise_specials(pix0); - } dpix_val0 = denise_colors.acolors[pix0]; gpix0 = get_genlock_transparency(pix0); } last_bpl_pix = pix0; } - shiftbpl6(); + shiftbpl4(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_lores(); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = getbpl4(); + clxdat |= bplcoltable[pix1]; + dpix_val1 = denise_colors.acolors[pix1]; + gpix1 = get_genlock_transparency(pix1); + } + last_bpl_pix = pix1; + } + shiftbpl4(); internal_pixel_cnt += 2; - uae_u32 dpix_val1 = dpix_val0; - uae_u8 pix1 = pix0; - uae_u8 gpix1 = gpix0; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + gpix0 = filter_pixel_genlock(gpix0, gpix1); + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + dpix_val1 = dpix_val0; + } + } uae_u32 t0 = 0; if (!extblank) { t0 = dpix_val0; @@ -2975,21 +2727,9 @@ static void lts_ecs_fm0_n0_p6_ilores_dhires_genlock(void) *buf1++ = t0; *buf2++ = t0; *gbuf++ = gpix0; - uae_u32 t1 = 0; - if (!extblank) { - t1 = dpix_val1; - } - #ifdef DEBUGGER - if (decode_specials_debug) { - t1 = decode_denise_specials_debug(t1, cnt + 2); - } - #endif - *buf1++ = t1; - *buf2++ = t1; - *gbuf++ = gpix1; } - if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl6(); + if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { + copybpl4(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -3013,11 +2753,7 @@ static void lts_ecs_fm0_n0_p6_ilores_dhires_genlock(void) denise_cck++; } } -static void lts_ecs_fm0_n0_p6_ilores_dhires_filtered_genlock(void) -{ - lts_null(); -} -static void lts_ecs_fm0_n1_p6_ilores_dhires_genlock(void) +static void lts_ecs_fm0_n1_p4_ihires_dlores_spr_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -3028,6 +2764,7 @@ static void lts_ecs_fm0_n1_p6_ilores_dhires_genlock(void) } int cnt = denise_hcounter << 2; if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; @@ -3035,23 +2772,48 @@ static void lts_ecs_fm0_n1_p6_ilores_dhires_genlock(void) gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl6(); + pix0 = getbpl4(); clxdat |= bplcoltable[pix0]; - if (decode_specials) { - pix0 = decode_denise_specials(pix0); - } dpix_val0 = denise_colors.acolors[pix0]; gpix0 = get_genlock_transparency(pix0); } last_bpl_pix = pix0; } - shiftbpl6(); + shiftbpl4(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_lores(); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = getbpl4(); + clxdat |= bplcoltable[pix1]; + dpix_val1 = denise_colors.acolors[pix1]; + gpix1 = get_genlock_transparency(pix1); + } + last_bpl_pix = pix1; + } + shiftbpl4(); internal_pixel_cnt += 2; - uae_u32 dpix_val1 = dpix_val0; - uae_u8 pix1 = pix0; - uae_u8 gpix1 = gpix0; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } uae_u32 t0 = 0; if (!extblank) { t0 = dpix_val0; @@ -3064,24 +2826,12 @@ static void lts_ecs_fm0_n1_p6_ilores_dhires_genlock(void) *buf1++ = t0; *buf2++ = t0; *gbuf++ = gpix0; - uae_u32 t1 = 0; - if (!extblank) { - t1 = dpix_val1; - } - #ifdef DEBUGGER - if (decode_specials_debug) { - t1 = decode_denise_specials_debug(t1, cnt + 2); - } - #endif - *buf1++ = t1; - *buf2++ = t1; - *gbuf++ = gpix1; } - if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl6e(); + if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { + copybpl4e(); } - if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) { - copybpl6o(); + if (bpldat_copy[1] && (denise_hcounter_cmp & 7) == bplcon1_shift[1]) { + copybpl4o(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -3105,11 +2855,7 @@ static void lts_ecs_fm0_n1_p6_ilores_dhires_genlock(void) denise_cck++; } } -static void lts_ecs_fm0_n1_p6_ilores_dhires_filtered_genlock(void) -{ - lts_null(); -} -static void lts_ecs_fm0_dpf0_p6_ilores_dhires_genlock(void) +static void lts_ecs_fm0_n1_p4_ihires_dlores_spr_filtered_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -3120,6 +2866,7 @@ static void lts_ecs_fm0_dpf0_p6_ilores_dhires_genlock(void) } int cnt = denise_hcounter << 2; if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; @@ -3127,24 +2874,51 @@ static void lts_ecs_fm0_dpf0_p6_ilores_dhires_genlock(void) gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl6(); + pix0 = getbpl4(); clxdat |= bplcoltable[pix0]; - if (decode_specials) { - pix0 = decode_denise_specials(pix0); - } - uae_u8 val0 = dpf_lookup[pix0]; - dpix_val0 = denise_colors.acolors[val0]; - gpix0 = get_genlock_transparency(dpf_lookup[pix0]); + dpix_val0 = denise_colors.acolors[pix0]; + gpix0 = get_genlock_transparency(pix0); } last_bpl_pix = pix0; } - shiftbpl6(); + shiftbpl4(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_lores(); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = getbpl4(); + clxdat |= bplcoltable[pix1]; + dpix_val1 = denise_colors.acolors[pix1]; + gpix1 = get_genlock_transparency(pix1); + } + last_bpl_pix = pix1; + } + shiftbpl4(); internal_pixel_cnt += 2; - uae_u32 dpix_val1 = dpix_val0; - uae_u8 pix1 = pix0; - uae_u8 gpix1 = gpix0; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + gpix0 = filter_pixel_genlock(gpix0, gpix1); + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + dpix_val1 = dpix_val0; + } + } uae_u32 t0 = 0; if (!extblank) { t0 = dpix_val0; @@ -3157,21 +2931,12 @@ static void lts_ecs_fm0_dpf0_p6_ilores_dhires_genlock(void) *buf1++ = t0; *buf2++ = t0; *gbuf++ = gpix0; - uae_u32 t1 = 0; - if (!extblank) { - t1 = dpix_val1; - } - #ifdef DEBUGGER - if (decode_specials_debug) { - t1 = decode_denise_specials_debug(t1, cnt + 2); - } - #endif - *buf1++ = t1; - *buf2++ = t1; - *gbuf++ = gpix1; } - if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl6(); + if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { + copybpl4e(); + } + if (bpldat_copy[1] && (denise_hcounter_cmp & 7) == bplcon1_shift[1]) { + copybpl4o(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -3195,11 +2960,7 @@ static void lts_ecs_fm0_dpf0_p6_ilores_dhires_genlock(void) denise_cck++; } } -static void lts_ecs_fm0_dpf0_p6_ilores_dhires_filtered_genlock(void) -{ - lts_null(); -} -static void lts_ecs_fm0_dpf1_p6_ilores_dhires_genlock(void) +static void lts_ecs_fm0_dpf0_p4_ihires_dlores_spr_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -3210,6 +2971,7 @@ static void lts_ecs_fm0_dpf1_p6_ilores_dhires_genlock(void) } int cnt = denise_hcounter << 2; if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; @@ -3217,24 +2979,50 @@ static void lts_ecs_fm0_dpf1_p6_ilores_dhires_genlock(void) gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl6(); + pix0 = getbpl4(); clxdat |= bplcoltable[pix0]; - if (decode_specials) { - pix0 = decode_denise_specials(pix0); - } uae_u8 val0 = dpf_lookup[pix0]; dpix_val0 = denise_colors.acolors[val0]; gpix0 = get_genlock_transparency(dpf_lookup[pix0]); } last_bpl_pix = pix0; } - shiftbpl6(); + shiftbpl4(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_lores(); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = getbpl4(); + clxdat |= bplcoltable[pix1]; + uae_u8 val1 = dpf_lookup[pix1]; + dpix_val1 = denise_colors.acolors[val1]; + gpix1 = get_genlock_transparency(dpf_lookup[pix1]); + } + last_bpl_pix = pix1; + } + shiftbpl4(); internal_pixel_cnt += 2; - uae_u32 dpix_val1 = dpix_val0; - uae_u8 pix1 = pix0; - uae_u8 gpix1 = gpix0; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } uae_u32 t0 = 0; if (!extblank) { t0 = dpix_val0; @@ -3247,24 +3035,9 @@ static void lts_ecs_fm0_dpf1_p6_ilores_dhires_genlock(void) *buf1++ = t0; *buf2++ = t0; *gbuf++ = gpix0; - uae_u32 t1 = 0; - if (!extblank) { - t1 = dpix_val1; - } - #ifdef DEBUGGER - if (decode_specials_debug) { - t1 = decode_denise_specials_debug(t1, cnt + 2); - } - #endif - *buf1++ = t1; - *buf2++ = t1; - *gbuf++ = gpix1; - } - if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl6e(); } - if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) { - copybpl6o(); + if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { + copybpl4(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -3288,11 +3061,7 @@ static void lts_ecs_fm0_dpf1_p6_ilores_dhires_genlock(void) denise_cck++; } } -static void lts_ecs_fm0_dpf1_p6_ilores_dhires_filtered_genlock(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb0_p6_ilores_dhires_genlock(void) +static void lts_ecs_fm0_dpf0_p4_ihires_dlores_spr_filtered_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -3303,6 +3072,7 @@ static void lts_ecs_fm0_ehb0_p6_ilores_dhires_genlock(void) } int cnt = denise_hcounter << 2; if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; @@ -3310,28 +3080,53 @@ static void lts_ecs_fm0_ehb0_p6_ilores_dhires_genlock(void) gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl6(); + pix0 = getbpl4(); clxdat |= bplcoltable[pix0]; - if (decode_specials) { - pix0 = decode_denise_specials(pix0); - } - pix0 &= bplehb_mask; - if (pix0 <= 31) { - dpix_val0 = denise_colors.acolors[pix0]; - } else { - dpix_val0 = p_xcolors[(denise_colors.color_regs_ecs[pix0 - 32] >> 1) & 0x777]; - } - gpix0 = get_genlock_transparency(pix0 & 31); + uae_u8 val0 = dpf_lookup[pix0]; + dpix_val0 = denise_colors.acolors[val0]; + gpix0 = get_genlock_transparency(dpf_lookup[pix0]); } last_bpl_pix = pix0; } - shiftbpl6(); + shiftbpl4(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_lores(); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = getbpl4(); + clxdat |= bplcoltable[pix1]; + uae_u8 val1 = dpf_lookup[pix1]; + dpix_val1 = denise_colors.acolors[val1]; + gpix1 = get_genlock_transparency(dpf_lookup[pix1]); + } + last_bpl_pix = pix1; + } + shiftbpl4(); internal_pixel_cnt += 2; - uae_u32 dpix_val1 = dpix_val0; - uae_u8 pix1 = pix0; - uae_u8 gpix1 = gpix0; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + gpix0 = filter_pixel_genlock(gpix0, gpix1); + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + dpix_val1 = dpix_val0; + } + } uae_u32 t0 = 0; if (!extblank) { t0 = dpix_val0; @@ -3344,21 +3139,9 @@ static void lts_ecs_fm0_ehb0_p6_ilores_dhires_genlock(void) *buf1++ = t0; *buf2++ = t0; *gbuf++ = gpix0; - uae_u32 t1 = 0; - if (!extblank) { - t1 = dpix_val1; - } - #ifdef DEBUGGER - if (decode_specials_debug) { - t1 = decode_denise_specials_debug(t1, cnt + 2); - } - #endif - *buf1++ = t1; - *buf2++ = t1; - *gbuf++ = gpix1; } - if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl6(); + if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { + copybpl4(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -3382,11 +3165,7 @@ static void lts_ecs_fm0_ehb0_p6_ilores_dhires_genlock(void) denise_cck++; } } -static void lts_ecs_fm0_ehb0_p6_ilores_dhires_filtered_genlock(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb1_p6_ilores_dhires_genlock(void) +static void lts_ecs_fm0_dpf1_p4_ihires_dlores_spr_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -3397,6 +3176,7 @@ static void lts_ecs_fm0_ehb1_p6_ilores_dhires_genlock(void) } int cnt = denise_hcounter << 2; if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; @@ -3404,28 +3184,50 @@ static void lts_ecs_fm0_ehb1_p6_ilores_dhires_genlock(void) gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl6(); + pix0 = getbpl4(); clxdat |= bplcoltable[pix0]; - if (decode_specials) { - pix0 = decode_denise_specials(pix0); - } - pix0 &= bplehb_mask; - if (pix0 <= 31) { - dpix_val0 = denise_colors.acolors[pix0]; - } else { - dpix_val0 = p_xcolors[(denise_colors.color_regs_ecs[pix0 - 32] >> 1) & 0x777]; - } - gpix0 = get_genlock_transparency(pix0 & 31); + uae_u8 val0 = dpf_lookup[pix0]; + dpix_val0 = denise_colors.acolors[val0]; + gpix0 = get_genlock_transparency(dpf_lookup[pix0]); } last_bpl_pix = pix0; } - shiftbpl6(); + shiftbpl4(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_lores(); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = getbpl4(); + clxdat |= bplcoltable[pix1]; + uae_u8 val1 = dpf_lookup[pix1]; + dpix_val1 = denise_colors.acolors[val1]; + gpix1 = get_genlock_transparency(dpf_lookup[pix1]); + } + last_bpl_pix = pix1; + } + shiftbpl4(); internal_pixel_cnt += 2; - uae_u32 dpix_val1 = dpix_val0; - uae_u8 pix1 = pix0; - uae_u8 gpix1 = gpix0; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } uae_u32 t0 = 0; if (!extblank) { t0 = dpix_val0; @@ -3438,24 +3240,12 @@ static void lts_ecs_fm0_ehb1_p6_ilores_dhires_genlock(void) *buf1++ = t0; *buf2++ = t0; *gbuf++ = gpix0; - uae_u32 t1 = 0; - if (!extblank) { - t1 = dpix_val1; - } - #ifdef DEBUGGER - if (decode_specials_debug) { - t1 = decode_denise_specials_debug(t1, cnt + 2); - } - #endif - *buf1++ = t1; - *buf2++ = t1; - *gbuf++ = gpix1; } - if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl6e(); + if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { + copybpl4e(); } - if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) { - copybpl6o(); + if (bpldat_copy[1] && (denise_hcounter_cmp & 7) == bplcon1_shift[1]) { + copybpl4o(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -3479,11 +3269,7 @@ static void lts_ecs_fm0_ehb1_p6_ilores_dhires_genlock(void) denise_cck++; } } -static void lts_ecs_fm0_ehb1_p6_ilores_dhires_filtered_genlock(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham0_p6_ilores_dhires_genlock(void) +static void lts_ecs_fm0_dpf1_p4_ihires_dlores_spr_filtered_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -3494,6 +3280,7 @@ static void lts_ecs_fm0_ham0_p6_ilores_dhires_genlock(void) } int cnt = denise_hcounter << 2; if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; @@ -3501,23 +3288,53 @@ static void lts_ecs_fm0_ham0_p6_ilores_dhires_genlock(void) gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl6(); + pix0 = getbpl4(); clxdat |= bplcoltable[pix0]; - if (decode_specials) { - pix0 = decode_denise_specials(pix0); - } - dpix_val0 = decode_ham_pixel(pix0); - gpix0 = get_genlock_transparency(pix0 & 15); + uae_u8 val0 = dpf_lookup[pix0]; + dpix_val0 = denise_colors.acolors[val0]; + gpix0 = get_genlock_transparency(dpf_lookup[pix0]); } last_bpl_pix = pix0; } - shiftbpl6(); + shiftbpl4(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_lores(); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = getbpl4(); + clxdat |= bplcoltable[pix1]; + uae_u8 val1 = dpf_lookup[pix1]; + dpix_val1 = denise_colors.acolors[val1]; + gpix1 = get_genlock_transparency(dpf_lookup[pix1]); + } + last_bpl_pix = pix1; + } + shiftbpl4(); internal_pixel_cnt += 2; - uae_u32 dpix_val1 = dpix_val0; - uae_u8 pix1 = pix0; - uae_u8 gpix1 = gpix0; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + gpix0 = filter_pixel_genlock(gpix0, gpix1); + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + dpix_val1 = dpix_val0; + } + } uae_u32 t0 = 0; if (!extblank) { t0 = dpix_val0; @@ -3530,21 +3347,12 @@ static void lts_ecs_fm0_ham0_p6_ilores_dhires_genlock(void) *buf1++ = t0; *buf2++ = t0; *gbuf++ = gpix0; - uae_u32 t1 = 0; - if (!extblank) { - t1 = dpix_val1; - } - #ifdef DEBUGGER - if (decode_specials_debug) { - t1 = decode_denise_specials_debug(t1, cnt + 2); - } - #endif - *buf1++ = t1; - *buf2++ = t1; - *gbuf++ = gpix1; } - if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl6(); + if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { + copybpl4e(); + } + if (bpldat_copy[1] && (denise_hcounter_cmp & 7) == bplcon1_shift[1]) { + copybpl4o(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -3568,11 +3376,7 @@ static void lts_ecs_fm0_ham0_p6_ilores_dhires_genlock(void) denise_cck++; } } -static void lts_ecs_fm0_ham0_p6_ilores_dhires_filtered_genlock(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham1_p6_ilores_dhires_genlock(void) +static void lts_ecs_fm0_ehb0_p4_ihires_dlores_spr_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -3589,23 +3393,16 @@ static void lts_ecs_fm0_ham1_p6_ilores_dhires_genlock(void) if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl6(); - clxdat |= bplcoltable[pix0]; - if (decode_specials) { - pix0 = decode_denise_specials(pix0); - } - dpix_val0 = decode_ham_pixel(pix0); - gpix0 = get_genlock_transparency(pix0 & 15); - } - last_bpl_pix = pix0; } - shiftbpl6(); internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } internal_pixel_cnt += 2; - uae_u32 dpix_val1 = dpix_val0; - uae_u8 pix1 = pix0; - uae_u8 gpix1 = gpix0; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { uae_u32 t0 = 0; if (!extblank) { @@ -3619,24 +3416,6 @@ static void lts_ecs_fm0_ham1_p6_ilores_dhires_genlock(void) *buf1++ = t0; *buf2++ = t0; *gbuf++ = gpix0; - uae_u32 t1 = 0; - if (!extblank) { - t1 = dpix_val1; - } - #ifdef DEBUGGER - if (decode_specials_debug) { - t1 = decode_denise_specials_debug(t1, cnt + 2); - } - #endif - *buf1++ = t1; - *buf2++ = t1; - *gbuf++ = gpix1; - } - if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl6e(); - } - if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) { - copybpl6o(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -3660,11 +3439,7 @@ static void lts_ecs_fm0_ham1_p6_ilores_dhires_genlock(void) denise_cck++; } } -static void lts_ecs_fm0_ham1_p6_ilores_dhires_filtered_genlock(void) -{ - lts_null(); -} -static void lts_ecs_fm0_n0_p6_ilores_dhires_spr_genlock(void) +static void lts_ecs_fm0_ehb0_p4_ihires_dlores_spr_filtered_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -3675,48 +3450,25 @@ static void lts_ecs_fm0_n0_p6_ilores_dhires_spr_genlock(void) } int cnt = denise_hcounter << 2; if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl6(); - clxdat |= bplcoltable[pix0]; - if (decode_specials) { - pix0 = decode_denise_specials(pix0); - } - dpix_val0 = denise_colors.acolors[pix0]; - gpix0 = get_genlock_transparency(pix0); - } - last_bpl_pix = pix0; - } - shiftbpl6(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_lores(); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } } internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } internal_pixel_cnt += 2; - uae_u32 dpix_val1 = dpix_val0; - uae_u8 pix1 = pix0; - uae_u8 gpix1 = gpix0; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - gpix0 = get_genlock_transparency(spix0); - - dpix_val1 = dpix_val0; - } - } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + gpix0 = filter_pixel_genlock(gpix0, gpix1); uae_u32 t0 = 0; if (!extblank) { t0 = dpix_val0; @@ -3729,21 +3481,6 @@ static void lts_ecs_fm0_n0_p6_ilores_dhires_spr_genlock(void) *buf1++ = t0; *buf2++ = t0; *gbuf++ = gpix0; - uae_u32 t1 = 0; - if (!extblank) { - t1 = dpix_val1; - } - #ifdef DEBUGGER - if (decode_specials_debug) { - t1 = decode_denise_specials_debug(t1, cnt + 2); - } - #endif - *buf1++ = t1; - *buf2++ = t1; - *gbuf++ = gpix1; - } - if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl6(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -3767,11 +3504,7 @@ static void lts_ecs_fm0_n0_p6_ilores_dhires_spr_genlock(void) denise_cck++; } } -static void lts_ecs_fm0_n0_p6_ilores_dhires_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_ecs_fm0_n1_p6_ilores_dhires_spr_genlock(void) +static void lts_ecs_fm0_ehb1_p4_ihires_dlores_spr_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -3782,48 +3515,23 @@ static void lts_ecs_fm0_n1_p6_ilores_dhires_spr_genlock(void) } int cnt = denise_hcounter << 2; if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl6(); - clxdat |= bplcoltable[pix0]; - if (decode_specials) { - pix0 = decode_denise_specials(pix0); - } - dpix_val0 = denise_colors.acolors[pix0]; - gpix0 = get_genlock_transparency(pix0); - } - last_bpl_pix = pix0; - } - shiftbpl6(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_lores(); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } } internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } internal_pixel_cnt += 2; - uae_u32 dpix_val1 = dpix_val0; - uae_u8 pix1 = pix0; - uae_u8 gpix1 = gpix0; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - gpix0 = get_genlock_transparency(spix0); - - dpix_val1 = dpix_val0; - } - } uae_u32 t0 = 0; if (!extblank) { t0 = dpix_val0; @@ -3836,24 +3544,6 @@ static void lts_ecs_fm0_n1_p6_ilores_dhires_spr_genlock(void) *buf1++ = t0; *buf2++ = t0; *gbuf++ = gpix0; - uae_u32 t1 = 0; - if (!extblank) { - t1 = dpix_val1; - } - #ifdef DEBUGGER - if (decode_specials_debug) { - t1 = decode_denise_specials_debug(t1, cnt + 2); - } - #endif - *buf1++ = t1; - *buf2++ = t1; - *gbuf++ = gpix1; - } - if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl6e(); - } - if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) { - copybpl6o(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -3877,11 +3567,7 @@ static void lts_ecs_fm0_n1_p6_ilores_dhires_spr_genlock(void) denise_cck++; } } -static void lts_ecs_fm0_n1_p6_ilores_dhires_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_ecs_fm0_dpf0_p6_ilores_dhires_spr_genlock(void) +static void lts_ecs_fm0_ehb1_p4_ihires_dlores_spr_filtered_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -3892,49 +3578,25 @@ static void lts_ecs_fm0_dpf0_p6_ilores_dhires_spr_genlock(void) } int cnt = denise_hcounter << 2; if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl6(); - clxdat |= bplcoltable[pix0]; - if (decode_specials) { - pix0 = decode_denise_specials(pix0); - } - uae_u8 val0 = dpf_lookup[pix0]; - dpix_val0 = denise_colors.acolors[val0]; - gpix0 = get_genlock_transparency(dpf_lookup[pix0]); - } - last_bpl_pix = pix0; - } - shiftbpl6(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_lores(); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } } internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } internal_pixel_cnt += 2; - uae_u32 dpix_val1 = dpix_val0; - uae_u8 pix1 = pix0; - uae_u8 gpix1 = gpix0; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - gpix0 = get_genlock_transparency(spix0); - - dpix_val1 = dpix_val0; - } - } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + gpix0 = filter_pixel_genlock(gpix0, gpix1); uae_u32 t0 = 0; if (!extblank) { t0 = dpix_val0; @@ -3947,21 +3609,6 @@ static void lts_ecs_fm0_dpf0_p6_ilores_dhires_spr_genlock(void) *buf1++ = t0; *buf2++ = t0; *gbuf++ = gpix0; - uae_u32 t1 = 0; - if (!extblank) { - t1 = dpix_val1; - } - #ifdef DEBUGGER - if (decode_specials_debug) { - t1 = decode_denise_specials_debug(t1, cnt + 2); - } - #endif - *buf1++ = t1; - *buf2++ = t1; - *gbuf++ = gpix1; - } - if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl6(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -3985,11 +3632,7 @@ static void lts_ecs_fm0_dpf0_p6_ilores_dhires_spr_genlock(void) denise_cck++; } } -static void lts_ecs_fm0_dpf0_p6_ilores_dhires_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_ecs_fm0_dpf1_p6_ilores_dhires_spr_genlock(void) +static void lts_ecs_fm0_ham0_p4_ihires_dlores_spr_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -4000,49 +3643,23 @@ static void lts_ecs_fm0_dpf1_p6_ilores_dhires_spr_genlock(void) } int cnt = denise_hcounter << 2; if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl6(); - clxdat |= bplcoltable[pix0]; - if (decode_specials) { - pix0 = decode_denise_specials(pix0); - } - uae_u8 val0 = dpf_lookup[pix0]; - dpix_val0 = denise_colors.acolors[val0]; - gpix0 = get_genlock_transparency(dpf_lookup[pix0]); - } - last_bpl_pix = pix0; - } - shiftbpl6(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_lores(); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } } internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } internal_pixel_cnt += 2; - uae_u32 dpix_val1 = dpix_val0; - uae_u8 pix1 = pix0; - uae_u8 gpix1 = gpix0; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - gpix0 = get_genlock_transparency(spix0); - - dpix_val1 = dpix_val0; - } - } uae_u32 t0 = 0; if (!extblank) { t0 = dpix_val0; @@ -4055,24 +3672,6 @@ static void lts_ecs_fm0_dpf1_p6_ilores_dhires_spr_genlock(void) *buf1++ = t0; *buf2++ = t0; *gbuf++ = gpix0; - uae_u32 t1 = 0; - if (!extblank) { - t1 = dpix_val1; - } - #ifdef DEBUGGER - if (decode_specials_debug) { - t1 = decode_denise_specials_debug(t1, cnt + 2); - } - #endif - *buf1++ = t1; - *buf2++ = t1; - *gbuf++ = gpix1; - } - if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl6e(); - } - if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) { - copybpl6o(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -4096,11 +3695,7 @@ static void lts_ecs_fm0_dpf1_p6_ilores_dhires_spr_genlock(void) denise_cck++; } } -static void lts_ecs_fm0_dpf1_p6_ilores_dhires_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb0_p6_ilores_dhires_spr_genlock(void) +static void lts_ecs_fm0_ham0_p4_ihires_dlores_spr_filtered_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -4111,53 +3706,25 @@ static void lts_ecs_fm0_ehb0_p6_ilores_dhires_spr_genlock(void) } int cnt = denise_hcounter << 2; if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl6(); - clxdat |= bplcoltable[pix0]; - if (decode_specials) { - pix0 = decode_denise_specials(pix0); - } - pix0 &= bplehb_mask; - if (pix0 <= 31) { - dpix_val0 = denise_colors.acolors[pix0]; - } else { - dpix_val0 = p_xcolors[(denise_colors.color_regs_ecs[pix0 - 32] >> 1) & 0x777]; - } - gpix0 = get_genlock_transparency(pix0 & 31); - } - last_bpl_pix = pix0; - } - shiftbpl6(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_lores(); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } } internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } internal_pixel_cnt += 2; - uae_u32 dpix_val1 = dpix_val0; - uae_u8 pix1 = pix0; - uae_u8 gpix1 = gpix0; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - gpix0 = get_genlock_transparency(spix0); - - dpix_val1 = dpix_val0; - } - } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + gpix0 = filter_pixel_genlock(gpix0, gpix1); uae_u32 t0 = 0; if (!extblank) { t0 = dpix_val0; @@ -4170,21 +3737,6 @@ static void lts_ecs_fm0_ehb0_p6_ilores_dhires_spr_genlock(void) *buf1++ = t0; *buf2++ = t0; *gbuf++ = gpix0; - uae_u32 t1 = 0; - if (!extblank) { - t1 = dpix_val1; - } - #ifdef DEBUGGER - if (decode_specials_debug) { - t1 = decode_denise_specials_debug(t1, cnt + 2); - } - #endif - *buf1++ = t1; - *buf2++ = t1; - *gbuf++ = gpix1; - } - if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl6(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -4208,11 +3760,7 @@ static void lts_ecs_fm0_ehb0_p6_ilores_dhires_spr_genlock(void) denise_cck++; } } -static void lts_ecs_fm0_ehb0_p6_ilores_dhires_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb1_p6_ilores_dhires_spr_genlock(void) +static void lts_ecs_fm0_ham1_p4_ihires_dlores_spr_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -4223,53 +3771,23 @@ static void lts_ecs_fm0_ehb1_p6_ilores_dhires_spr_genlock(void) } int cnt = denise_hcounter << 2; if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl6(); - clxdat |= bplcoltable[pix0]; - if (decode_specials) { - pix0 = decode_denise_specials(pix0); - } - pix0 &= bplehb_mask; - if (pix0 <= 31) { - dpix_val0 = denise_colors.acolors[pix0]; - } else { - dpix_val0 = p_xcolors[(denise_colors.color_regs_ecs[pix0 - 32] >> 1) & 0x777]; - } - gpix0 = get_genlock_transparency(pix0 & 31); - } - last_bpl_pix = pix0; - } - shiftbpl6(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_lores(); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } } internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } internal_pixel_cnt += 2; - uae_u32 dpix_val1 = dpix_val0; - uae_u8 pix1 = pix0; - uae_u8 gpix1 = gpix0; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - gpix0 = get_genlock_transparency(spix0); - - dpix_val1 = dpix_val0; - } - } uae_u32 t0 = 0; if (!extblank) { t0 = dpix_val0; @@ -4282,24 +3800,71 @@ static void lts_ecs_fm0_ehb1_p6_ilores_dhires_spr_genlock(void) *buf1++ = t0; *buf2++ = t0; *gbuf++ = gpix0; - uae_u32 t1 = 0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ham1_p4_ihires_dlores_spr_filtered_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + gpix0 = filter_pixel_genlock(gpix0, gpix1); + uae_u32 t0 = 0; if (!extblank) { - t1 = dpix_val1; + t0 = dpix_val0; } #ifdef DEBUGGER if (decode_specials_debug) { - t1 = decode_denise_specials_debug(t1, cnt + 2); + t0 = decode_denise_specials_debug(t0, cnt + 0); } #endif - *buf1++ = t1; - *buf2++ = t1; - *gbuf++ = gpix1; - } - if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl6e(); - } - if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) { - copybpl6o(); + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = gpix0; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -4323,11 +3888,7 @@ static void lts_ecs_fm0_ehb1_p6_ilores_dhires_spr_genlock(void) denise_cck++; } } -static void lts_ecs_fm0_ehb1_p6_ilores_dhires_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham0_p6_ilores_dhires_spr_genlock(void) +static void lts_ecs_fm0_n0_p6_ilores_dhires_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -4338,7 +3899,6 @@ static void lts_ecs_fm0_ham0_p6_ilores_dhires_spr_genlock(void) } int cnt = denise_hcounter << 2; if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; @@ -4351,35 +3911,18 @@ static void lts_ecs_fm0_ham0_p6_ilores_dhires_spr_genlock(void) if (decode_specials) { pix0 = decode_denise_specials(pix0); } - dpix_val0 = decode_ham_pixel(pix0); - gpix0 = get_genlock_transparency(pix0 & 15); + dpix_val0 = denise_colors.acolors[pix0]; + gpix0 = get_genlock_transparency(pix0); } last_bpl_pix = pix0; } shiftbpl6(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_lores(); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } - } internal_pixel_cnt += 2; internal_pixel_cnt += 2; uae_u32 dpix_val1 = dpix_val0; uae_u8 pix1 = pix0; uae_u8 gpix1 = gpix0; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - gpix0 = get_genlock_transparency(spix0); - - dpix_val1 = dpix_val0; - } - } uae_u32 t0 = 0; if (!extblank) { t0 = dpix_val0; @@ -4430,11 +3973,11 @@ static void lts_ecs_fm0_ham0_p6_ilores_dhires_spr_genlock(void) denise_cck++; } } -static void lts_ecs_fm0_ham0_p6_ilores_dhires_spr_filtered_genlock(void) +static void lts_ecs_fm0_n0_p6_ilores_dhires_filtered_genlock(void) { lts_null(); } -static void lts_ecs_fm0_ham1_p6_ilores_dhires_spr_genlock(void) +static void lts_ecs_fm0_n1_p6_ilores_dhires_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -4445,7 +3988,6 @@ static void lts_ecs_fm0_ham1_p6_ilores_dhires_spr_genlock(void) } int cnt = denise_hcounter << 2; if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; @@ -4458,35 +4000,18 @@ static void lts_ecs_fm0_ham1_p6_ilores_dhires_spr_genlock(void) if (decode_specials) { pix0 = decode_denise_specials(pix0); } - dpix_val0 = decode_ham_pixel(pix0); - gpix0 = get_genlock_transparency(pix0 & 15); + dpix_val0 = denise_colors.acolors[pix0]; + gpix0 = get_genlock_transparency(pix0); } last_bpl_pix = pix0; } shiftbpl6(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_lores(); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } - } internal_pixel_cnt += 2; internal_pixel_cnt += 2; uae_u32 dpix_val1 = dpix_val0; uae_u8 pix1 = pix0; uae_u8 gpix1 = gpix0; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - gpix0 = get_genlock_transparency(spix0); - - dpix_val1 = dpix_val0; - } - } uae_u32 t0 = 0; if (!extblank) { t0 = dpix_val0; @@ -4540,11 +4065,11 @@ static void lts_ecs_fm0_ham1_p6_ilores_dhires_spr_genlock(void) denise_cck++; } } -static void lts_ecs_fm0_ham1_p6_ilores_dhires_spr_filtered_genlock(void) +static void lts_ecs_fm0_n1_p6_ilores_dhires_filtered_genlock(void) { lts_null(); } -static void lts_ecs_fm0_n0_p4_ihires_dhires_genlock(void) +static void lts_ecs_fm0_dpf0_p6_ilores_dhires_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -4562,31 +4087,23 @@ static void lts_ecs_fm0_n0_p4_ihires_dhires_genlock(void) gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl4(); + pix0 = getbpl6(); clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0]; - gpix0 = get_genlock_transparency(pix0); + if (decode_specials) { + pix0 = decode_denise_specials(pix0); + } + uae_u8 val0 = dpf_lookup[pix0]; + dpix_val0 = denise_colors.acolors[val0]; + gpix0 = get_genlock_transparency(dpf_lookup[pix0]); } last_bpl_pix = pix0; } - shiftbpl4(); + shiftbpl6(); internal_pixel_cnt += 2; - uae_u8 pix1 = 0; - uae_u8 gpix1 = 0xff; - uae_u32 dpix_val1 = BLANK_COLOR; - if (!denise_blank_active) { - gpix1 = get_genlock_transparency_border(); - dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = getbpl4(); - clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1]; - gpix1 = get_genlock_transparency(pix1); - } - last_bpl_pix = pix1; - } - shiftbpl4(); internal_pixel_cnt += 2; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + uae_u8 gpix1 = gpix0; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { uae_u32 t0 = 0; if (!extblank) { @@ -4613,8 +4130,8 @@ static void lts_ecs_fm0_n0_p4_ihires_dhires_genlock(void) *buf2++ = t1; *gbuf++ = gpix1; } - if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { - copybpl4(); + if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { + copybpl6(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -4638,11 +4155,11 @@ static void lts_ecs_fm0_n0_p4_ihires_dhires_genlock(void) denise_cck++; } } -static void lts_ecs_fm0_n0_p4_ihires_dhires_filtered_genlock(void) +static void lts_ecs_fm0_dpf0_p6_ilores_dhires_filtered_genlock(void) { lts_null(); } -static void lts_ecs_fm0_n1_p4_ihires_dhires_genlock(void) +static void lts_ecs_fm0_dpf1_p6_ilores_dhires_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -4660,31 +4177,23 @@ static void lts_ecs_fm0_n1_p4_ihires_dhires_genlock(void) gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl4(); + pix0 = getbpl6(); clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0]; - gpix0 = get_genlock_transparency(pix0); + if (decode_specials) { + pix0 = decode_denise_specials(pix0); + } + uae_u8 val0 = dpf_lookup[pix0]; + dpix_val0 = denise_colors.acolors[val0]; + gpix0 = get_genlock_transparency(dpf_lookup[pix0]); } last_bpl_pix = pix0; } - shiftbpl4(); + shiftbpl6(); internal_pixel_cnt += 2; - uae_u8 pix1 = 0; - uae_u8 gpix1 = 0xff; - uae_u32 dpix_val1 = BLANK_COLOR; - if (!denise_blank_active) { - gpix1 = get_genlock_transparency_border(); - dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = getbpl4(); - clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1]; - gpix1 = get_genlock_transparency(pix1); - } - last_bpl_pix = pix1; - } - shiftbpl4(); internal_pixel_cnt += 2; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + uae_u8 gpix1 = gpix0; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { uae_u32 t0 = 0; if (!extblank) { @@ -4711,11 +4220,11 @@ static void lts_ecs_fm0_n1_p4_ihires_dhires_genlock(void) *buf2++ = t1; *gbuf++ = gpix1; } - if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { - copybpl4e(); + if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { + copybpl6e(); } - if (bpldat_copy[1] && (denise_hcounter_cmp & 7) == bplcon1_shift[1]) { - copybpl4o(); + if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) { + copybpl6o(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -4739,11 +4248,11 @@ static void lts_ecs_fm0_n1_p4_ihires_dhires_genlock(void) denise_cck++; } } -static void lts_ecs_fm0_n1_p4_ihires_dhires_filtered_genlock(void) +static void lts_ecs_fm0_dpf1_p6_ilores_dhires_filtered_genlock(void) { lts_null(); } -static void lts_ecs_fm0_dpf0_p4_ihires_dhires_genlock(void) +static void lts_ecs_fm0_ehb0_p6_ilores_dhires_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -4761,33 +4270,27 @@ static void lts_ecs_fm0_dpf0_p4_ihires_dhires_genlock(void) gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl4(); + pix0 = getbpl6(); clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - dpix_val0 = denise_colors.acolors[val0]; - gpix0 = get_genlock_transparency(dpf_lookup[pix0]); + if (decode_specials) { + pix0 = decode_denise_specials(pix0); + } + pix0 &= bplehb_mask; + if (pix0 <= 31) { + dpix_val0 = denise_colors.acolors[pix0]; + } else { + dpix_val0 = p_xcolors[(denise_colors.color_regs_ecs[pix0 - 32] >> 1) & 0x777]; + } + gpix0 = get_genlock_transparency(pix0 & 31); } last_bpl_pix = pix0; } - shiftbpl4(); + shiftbpl6(); internal_pixel_cnt += 2; - uae_u8 pix1 = 0; - uae_u8 gpix1 = 0xff; - uae_u32 dpix_val1 = BLANK_COLOR; - if (!denise_blank_active) { - gpix1 = get_genlock_transparency_border(); - dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = getbpl4(); - clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - dpix_val1 = denise_colors.acolors[val1]; - gpix1 = get_genlock_transparency(dpf_lookup[pix1]); - } - last_bpl_pix = pix1; - } - shiftbpl4(); internal_pixel_cnt += 2; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + uae_u8 gpix1 = gpix0; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { uae_u32 t0 = 0; if (!extblank) { @@ -4814,8 +4317,8 @@ static void lts_ecs_fm0_dpf0_p4_ihires_dhires_genlock(void) *buf2++ = t1; *gbuf++ = gpix1; } - if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { - copybpl4(); + if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { + copybpl6(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -4839,11 +4342,11 @@ static void lts_ecs_fm0_dpf0_p4_ihires_dhires_genlock(void) denise_cck++; } } -static void lts_ecs_fm0_dpf0_p4_ihires_dhires_filtered_genlock(void) +static void lts_ecs_fm0_ehb0_p6_ilores_dhires_filtered_genlock(void) { lts_null(); } -static void lts_ecs_fm0_dpf1_p4_ihires_dhires_genlock(void) +static void lts_ecs_fm0_ehb1_p6_ilores_dhires_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -4861,33 +4364,27 @@ static void lts_ecs_fm0_dpf1_p4_ihires_dhires_genlock(void) gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl4(); + pix0 = getbpl6(); clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - dpix_val0 = denise_colors.acolors[val0]; - gpix0 = get_genlock_transparency(dpf_lookup[pix0]); + if (decode_specials) { + pix0 = decode_denise_specials(pix0); + } + pix0 &= bplehb_mask; + if (pix0 <= 31) { + dpix_val0 = denise_colors.acolors[pix0]; + } else { + dpix_val0 = p_xcolors[(denise_colors.color_regs_ecs[pix0 - 32] >> 1) & 0x777]; + } + gpix0 = get_genlock_transparency(pix0 & 31); } last_bpl_pix = pix0; } - shiftbpl4(); + shiftbpl6(); internal_pixel_cnt += 2; - uae_u8 pix1 = 0; - uae_u8 gpix1 = 0xff; - uae_u32 dpix_val1 = BLANK_COLOR; - if (!denise_blank_active) { - gpix1 = get_genlock_transparency_border(); - dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = getbpl4(); - clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - dpix_val1 = denise_colors.acolors[val1]; - gpix1 = get_genlock_transparency(dpf_lookup[pix1]); - } - last_bpl_pix = pix1; - } - shiftbpl4(); internal_pixel_cnt += 2; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + uae_u8 gpix1 = gpix0; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { uae_u32 t0 = 0; if (!extblank) { @@ -4914,11 +4411,11 @@ static void lts_ecs_fm0_dpf1_p4_ihires_dhires_genlock(void) *buf2++ = t1; *gbuf++ = gpix1; } - if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { - copybpl4e(); + if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { + copybpl6e(); } - if (bpldat_copy[1] && (denise_hcounter_cmp & 7) == bplcon1_shift[1]) { - copybpl4o(); + if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) { + copybpl6o(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -4942,43 +4439,11 @@ static void lts_ecs_fm0_dpf1_p4_ihires_dhires_genlock(void) denise_cck++; } } -static void lts_ecs_fm0_dpf1_p4_ihires_dhires_filtered_genlock(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb0_p4_ihires_dhires_genlock(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb0_p4_ihires_dhires_filtered_genlock(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb1_p4_ihires_dhires_genlock(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb1_p4_ihires_dhires_filtered_genlock(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham0_p4_ihires_dhires_genlock(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham0_p4_ihires_dhires_filtered_genlock(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham1_p4_ihires_dhires_genlock(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham1_p4_ihires_dhires_filtered_genlock(void) +static void lts_ecs_fm0_ehb1_p6_ilores_dhires_filtered_genlock(void) { lts_null(); } -static void lts_ecs_fm0_n0_p4_ihires_dhires_spr_genlock(void) +static void lts_ecs_fm0_ham0_p6_ilores_dhires_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -4989,7 +4454,6 @@ static void lts_ecs_fm0_n0_p4_ihires_dhires_spr_genlock(void) } int cnt = denise_hcounter << 2; if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; @@ -4997,57 +4461,23 @@ static void lts_ecs_fm0_n0_p4_ihires_dhires_spr_genlock(void) gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl4(); + pix0 = getbpl6(); clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0]; - gpix0 = get_genlock_transparency(pix0); + if (decode_specials) { + pix0 = decode_denise_specials(pix0); + } + dpix_val0 = decode_ham_pixel(pix0); + gpix0 = get_genlock_transparency(pix0 & 15); } last_bpl_pix = pix0; } - shiftbpl4(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_lores(); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } - } + shiftbpl6(); internal_pixel_cnt += 2; - uae_u8 pix1 = 0; - uae_u8 gpix1 = 0xff; - uae_u32 dpix_val1 = BLANK_COLOR; - if (!denise_blank_active) { - gpix1 = get_genlock_transparency_border(); - dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = getbpl4(); - clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1]; - gpix1 = get_genlock_transparency(pix1); - } - last_bpl_pix = pix1; - } - shiftbpl4(); internal_pixel_cnt += 2; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + uae_u8 gpix1 = gpix0; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - gpix0 = get_genlock_transparency(spix0); - - } - } - uae_u32 sv1 = sv0; - if (sv1) { - uae_u32 spix1 = denise_render_sprites2(pix1, sv1); - if (spix1) { - dpix_val1 = denise_colors.acolors[spix1]; - gpix1 = get_genlock_transparency(spix1); - - } - } uae_u32 t0 = 0; if (!extblank) { t0 = dpix_val0; @@ -5073,8 +4503,8 @@ static void lts_ecs_fm0_n0_p4_ihires_dhires_spr_genlock(void) *buf2++ = t1; *gbuf++ = gpix1; } - if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { - copybpl4(); + if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { + copybpl6(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -5098,11 +4528,11 @@ static void lts_ecs_fm0_n0_p4_ihires_dhires_spr_genlock(void) denise_cck++; } } -static void lts_ecs_fm0_n0_p4_ihires_dhires_spr_filtered_genlock(void) +static void lts_ecs_fm0_ham0_p6_ilores_dhires_filtered_genlock(void) { lts_null(); } -static void lts_ecs_fm0_n1_p4_ihires_dhires_spr_genlock(void) +static void lts_ecs_fm0_ham1_p6_ilores_dhires_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -5113,7 +4543,6 @@ static void lts_ecs_fm0_n1_p4_ihires_dhires_spr_genlock(void) } int cnt = denise_hcounter << 2; if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; @@ -5121,55 +4550,131 @@ static void lts_ecs_fm0_n1_p4_ihires_dhires_spr_genlock(void) gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl4(); + pix0 = getbpl6(); clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0]; - gpix0 = get_genlock_transparency(pix0); + if (decode_specials) { + pix0 = decode_denise_specials(pix0); + } + dpix_val0 = decode_ham_pixel(pix0); + gpix0 = get_genlock_transparency(pix0 & 15); } last_bpl_pix = pix0; } - shiftbpl4(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_lores(); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } - } + shiftbpl6(); internal_pixel_cnt += 2; - uae_u8 pix1 = 0; - uae_u8 gpix1 = 0xff; - uae_u32 dpix_val1 = BLANK_COLOR; - if (!denise_blank_active) { - gpix1 = get_genlock_transparency_border(); - dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = getbpl4(); - clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1]; - gpix1 = get_genlock_transparency(pix1); - } - last_bpl_pix = pix1; - } - shiftbpl4(); internal_pixel_cnt += 2; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + uae_u8 gpix1 = gpix0; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - gpix0 = get_genlock_transparency(spix0); - - } + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; } - uae_u32 sv1 = sv0; - if (sv1) { - uae_u32 spix1 = denise_render_sprites2(pix1, sv1); - if (spix1) { - dpix_val1 = denise_colors.acolors[spix1]; - gpix1 = get_genlock_transparency(spix1); + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = gpix0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dpix_val1; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = gpix1; + } + if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { + copybpl6e(); + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ham1_p6_ilores_dhires_filtered_genlock(void) +{ + lts_null(); +} +static void lts_ecs_fm0_n0_p6_ilores_dhires_spr_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl6(); + clxdat |= bplcoltable[pix0]; + if (decode_specials) { + pix0 = decode_denise_specials(pix0); + } + dpix_val0 = denise_colors.acolors[pix0]; + gpix0 = get_genlock_transparency(pix0); + } + last_bpl_pix = pix0; + } + shiftbpl6(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_lores(); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + internal_pixel_cnt += 2; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + uae_u8 gpix1 = gpix0; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + dpix_val1 = dpix_val0; } } uae_u32 t0 = 0; @@ -5197,11 +4702,8 @@ static void lts_ecs_fm0_n1_p4_ihires_dhires_spr_genlock(void) *buf2++ = t1; *gbuf++ = gpix1; } - if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { - copybpl4e(); - } - if (bpldat_copy[1] && (denise_hcounter_cmp & 7) == bplcon1_shift[1]) { - copybpl4o(); + if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { + copybpl6(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -5225,11 +4727,11 @@ static void lts_ecs_fm0_n1_p4_ihires_dhires_spr_genlock(void) denise_cck++; } } -static void lts_ecs_fm0_n1_p4_ihires_dhires_spr_filtered_genlock(void) +static void lts_ecs_fm0_n0_p6_ilores_dhires_spr_filtered_genlock(void) { lts_null(); } -static void lts_ecs_fm0_dpf0_p4_ihires_dhires_spr_genlock(void) +static void lts_ecs_fm0_n1_p6_ilores_dhires_spr_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -5248,15 +4750,17 @@ static void lts_ecs_fm0_dpf0_p4_ihires_dhires_spr_genlock(void) gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl4(); + pix0 = getbpl6(); clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - dpix_val0 = denise_colors.acolors[val0]; - gpix0 = get_genlock_transparency(dpf_lookup[pix0]); + if (decode_specials) { + pix0 = decode_denise_specials(pix0); + } + dpix_val0 = denise_colors.acolors[pix0]; + gpix0 = get_genlock_transparency(pix0); } last_bpl_pix = pix0; } - shiftbpl4(); + shiftbpl6(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -5266,23 +4770,10 @@ static void lts_ecs_fm0_dpf0_p4_ihires_dhires_spr_genlock(void) } } internal_pixel_cnt += 2; - uae_u8 pix1 = 0; - uae_u8 gpix1 = 0xff; - uae_u32 dpix_val1 = BLANK_COLOR; - if (!denise_blank_active) { - gpix1 = get_genlock_transparency_border(); - dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = getbpl4(); - clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - dpix_val1 = denise_colors.acolors[val1]; - gpix1 = get_genlock_transparency(dpf_lookup[pix1]); - } - last_bpl_pix = pix1; - } - shiftbpl4(); internal_pixel_cnt += 2; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + uae_u8 gpix1 = gpix0; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { uae_u32 spix0 = denise_render_sprites2(pix0, sv0); @@ -5290,15 +4781,7 @@ static void lts_ecs_fm0_dpf0_p4_ihires_dhires_spr_genlock(void) dpix_val0 = denise_colors.acolors[spix0]; gpix0 = get_genlock_transparency(spix0); - } - } - uae_u32 sv1 = sv0; - if (sv1) { - uae_u32 spix1 = denise_render_sprites2(pix1, sv1); - if (spix1) { - dpix_val1 = denise_colors.acolors[spix1]; - gpix1 = get_genlock_transparency(spix1); - + dpix_val1 = dpix_val0; } } uae_u32 t0 = 0; @@ -5326,8 +4809,11 @@ static void lts_ecs_fm0_dpf0_p4_ihires_dhires_spr_genlock(void) *buf2++ = t1; *gbuf++ = gpix1; } - if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { - copybpl4(); + if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { + copybpl6e(); + } + if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) { + copybpl6o(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -5351,11 +4837,11 @@ static void lts_ecs_fm0_dpf0_p4_ihires_dhires_spr_genlock(void) denise_cck++; } } -static void lts_ecs_fm0_dpf0_p4_ihires_dhires_spr_filtered_genlock(void) +static void lts_ecs_fm0_n1_p6_ilores_dhires_spr_filtered_genlock(void) { lts_null(); } -static void lts_ecs_fm0_dpf1_p4_ihires_dhires_spr_genlock(void) +static void lts_ecs_fm0_dpf0_p6_ilores_dhires_spr_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -5374,15 +4860,18 @@ static void lts_ecs_fm0_dpf1_p4_ihires_dhires_spr_genlock(void) gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl4(); + pix0 = getbpl6(); clxdat |= bplcoltable[pix0]; + if (decode_specials) { + pix0 = decode_denise_specials(pix0); + } uae_u8 val0 = dpf_lookup[pix0]; dpix_val0 = denise_colors.acolors[val0]; gpix0 = get_genlock_transparency(dpf_lookup[pix0]); } last_bpl_pix = pix0; } - shiftbpl4(); + shiftbpl6(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -5392,23 +4881,10 @@ static void lts_ecs_fm0_dpf1_p4_ihires_dhires_spr_genlock(void) } } internal_pixel_cnt += 2; - uae_u8 pix1 = 0; - uae_u8 gpix1 = 0xff; - uae_u32 dpix_val1 = BLANK_COLOR; - if (!denise_blank_active) { - gpix1 = get_genlock_transparency_border(); - dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = getbpl4(); - clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - dpix_val1 = denise_colors.acolors[val1]; - gpix1 = get_genlock_transparency(dpf_lookup[pix1]); - } - last_bpl_pix = pix1; - } - shiftbpl4(); internal_pixel_cnt += 2; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + uae_u8 gpix1 = gpix0; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { uae_u32 spix0 = denise_render_sprites2(pix0, sv0); @@ -5416,17 +4892,3069 @@ static void lts_ecs_fm0_dpf1_p4_ihires_dhires_spr_genlock(void) dpix_val0 = denise_colors.acolors[spix0]; gpix0 = get_genlock_transparency(spix0); + dpix_val1 = dpix_val0; } } - uae_u32 sv1 = sv0; - if (sv1) { - uae_u32 spix1 = denise_render_sprites2(pix1, sv1); - if (spix1) { - dpix_val1 = denise_colors.acolors[spix1]; - gpix1 = get_genlock_transparency(spix1); - + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = gpix0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dpix_val1; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = gpix1; + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_dpf0_p6_ilores_dhires_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_ecs_fm0_dpf1_p6_ilores_dhires_spr_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl6(); + clxdat |= bplcoltable[pix0]; + if (decode_specials) { + pix0 = decode_denise_specials(pix0); + } + uae_u8 val0 = dpf_lookup[pix0]; + dpix_val0 = denise_colors.acolors[val0]; + gpix0 = get_genlock_transparency(dpf_lookup[pix0]); + } + last_bpl_pix = pix0; + } + shiftbpl6(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_lores(); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + internal_pixel_cnt += 2; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + uae_u8 gpix1 = gpix0; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + dpix_val1 = dpix_val0; + } + } + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = gpix0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dpix_val1; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = gpix1; + } + if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { + copybpl6e(); + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_dpf1_p6_ilores_dhires_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_ecs_fm0_ehb0_p6_ilores_dhires_spr_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl6(); + clxdat |= bplcoltable[pix0]; + if (decode_specials) { + pix0 = decode_denise_specials(pix0); + } + pix0 &= bplehb_mask; + if (pix0 <= 31) { + dpix_val0 = denise_colors.acolors[pix0]; + } else { + dpix_val0 = p_xcolors[(denise_colors.color_regs_ecs[pix0 - 32] >> 1) & 0x777]; + } + gpix0 = get_genlock_transparency(pix0 & 31); + } + last_bpl_pix = pix0; + } + shiftbpl6(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_lores(); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + internal_pixel_cnt += 2; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + uae_u8 gpix1 = gpix0; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + dpix_val1 = dpix_val0; + } + } + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = gpix0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dpix_val1; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = gpix1; + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ehb0_p6_ilores_dhires_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_ecs_fm0_ehb1_p6_ilores_dhires_spr_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl6(); + clxdat |= bplcoltable[pix0]; + if (decode_specials) { + pix0 = decode_denise_specials(pix0); + } + pix0 &= bplehb_mask; + if (pix0 <= 31) { + dpix_val0 = denise_colors.acolors[pix0]; + } else { + dpix_val0 = p_xcolors[(denise_colors.color_regs_ecs[pix0 - 32] >> 1) & 0x777]; + } + gpix0 = get_genlock_transparency(pix0 & 31); + } + last_bpl_pix = pix0; + } + shiftbpl6(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_lores(); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + internal_pixel_cnt += 2; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + uae_u8 gpix1 = gpix0; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + dpix_val1 = dpix_val0; + } + } + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = gpix0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dpix_val1; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = gpix1; + } + if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { + copybpl6e(); + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ehb1_p6_ilores_dhires_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_ecs_fm0_ham0_p6_ilores_dhires_spr_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl6(); + clxdat |= bplcoltable[pix0]; + if (decode_specials) { + pix0 = decode_denise_specials(pix0); + } + dpix_val0 = decode_ham_pixel(pix0); + gpix0 = get_genlock_transparency(pix0 & 15); + } + last_bpl_pix = pix0; + } + shiftbpl6(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_lores(); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + internal_pixel_cnt += 2; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + uae_u8 gpix1 = gpix0; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + dpix_val1 = dpix_val0; + } + } + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = gpix0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dpix_val1; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = gpix1; + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ham0_p6_ilores_dhires_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_ecs_fm0_ham1_p6_ilores_dhires_spr_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl6(); + clxdat |= bplcoltable[pix0]; + if (decode_specials) { + pix0 = decode_denise_specials(pix0); + } + dpix_val0 = decode_ham_pixel(pix0); + gpix0 = get_genlock_transparency(pix0 & 15); + } + last_bpl_pix = pix0; + } + shiftbpl6(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_lores(); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + internal_pixel_cnt += 2; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + uae_u8 gpix1 = gpix0; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + dpix_val1 = dpix_val0; + } + } + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = gpix0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dpix_val1; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = gpix1; + } + if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { + copybpl6e(); + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ham1_p6_ilores_dhires_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_ecs_fm0_n0_p4_ihires_dhires_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl4(); + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0]; + gpix0 = get_genlock_transparency(pix0); + } + last_bpl_pix = pix0; + } + shiftbpl4(); + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = getbpl4(); + clxdat |= bplcoltable[pix1]; + dpix_val1 = denise_colors.acolors[pix1]; + gpix1 = get_genlock_transparency(pix1); + } + last_bpl_pix = pix1; + } + shiftbpl4(); + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = gpix0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dpix_val1; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = gpix1; + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_n0_p4_ihires_dhires_filtered_genlock(void) +{ + lts_null(); +} +static void lts_ecs_fm0_n1_p4_ihires_dhires_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl4(); + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0]; + gpix0 = get_genlock_transparency(pix0); + } + last_bpl_pix = pix0; + } + shiftbpl4(); + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = getbpl4(); + clxdat |= bplcoltable[pix1]; + dpix_val1 = denise_colors.acolors[pix1]; + gpix1 = get_genlock_transparency(pix1); + } + last_bpl_pix = pix1; + } + shiftbpl4(); + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = gpix0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dpix_val1; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = gpix1; + } + if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { + copybpl4e(); + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_n1_p4_ihires_dhires_filtered_genlock(void) +{ + lts_null(); +} +static void lts_ecs_fm0_dpf0_p4_ihires_dhires_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl4(); + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + dpix_val0 = denise_colors.acolors[val0]; + gpix0 = get_genlock_transparency(dpf_lookup[pix0]); + } + last_bpl_pix = pix0; + } + shiftbpl4(); + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = getbpl4(); + clxdat |= bplcoltable[pix1]; + uae_u8 val1 = dpf_lookup[pix1]; + dpix_val1 = denise_colors.acolors[val1]; + gpix1 = get_genlock_transparency(dpf_lookup[pix1]); + } + last_bpl_pix = pix1; + } + shiftbpl4(); + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = gpix0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dpix_val1; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = gpix1; + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_dpf0_p4_ihires_dhires_filtered_genlock(void) +{ + lts_null(); +} +static void lts_ecs_fm0_dpf1_p4_ihires_dhires_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl4(); + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + dpix_val0 = denise_colors.acolors[val0]; + gpix0 = get_genlock_transparency(dpf_lookup[pix0]); + } + last_bpl_pix = pix0; + } + shiftbpl4(); + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = getbpl4(); + clxdat |= bplcoltable[pix1]; + uae_u8 val1 = dpf_lookup[pix1]; + dpix_val1 = denise_colors.acolors[val1]; + gpix1 = get_genlock_transparency(dpf_lookup[pix1]); + } + last_bpl_pix = pix1; + } + shiftbpl4(); + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = gpix0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dpix_val1; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = gpix1; + } + if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { + copybpl4e(); + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_dpf1_p4_ihires_dhires_filtered_genlock(void) +{ + lts_null(); +} +static void lts_ecs_fm0_ehb0_p4_ihires_dhires_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = gpix0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dpix_val1; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = gpix1; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ehb0_p4_ihires_dhires_filtered_genlock(void) +{ + lts_null(); +} +static void lts_ecs_fm0_ehb1_p4_ihires_dhires_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = gpix0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dpix_val1; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = gpix1; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ehb1_p4_ihires_dhires_filtered_genlock(void) +{ + lts_null(); +} +static void lts_ecs_fm0_ham0_p4_ihires_dhires_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = gpix0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dpix_val1; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = gpix1; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ham0_p4_ihires_dhires_filtered_genlock(void) +{ + lts_null(); +} +static void lts_ecs_fm0_ham1_p4_ihires_dhires_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = gpix0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dpix_val1; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = gpix1; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ham1_p4_ihires_dhires_filtered_genlock(void) +{ + lts_null(); +} +static void lts_ecs_fm0_n0_p4_ihires_dhires_spr_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl4(); + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0]; + gpix0 = get_genlock_transparency(pix0); + } + last_bpl_pix = pix0; + } + shiftbpl4(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_lores(); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = getbpl4(); + clxdat |= bplcoltable[pix1]; + dpix_val1 = denise_colors.acolors[pix1]; + gpix1 = get_genlock_transparency(pix1); + } + last_bpl_pix = pix1; + } + shiftbpl4(); + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + uae_u32 sv1 = sv0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + gpix1 = get_genlock_transparency(spix1); + + } + } + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = gpix0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dpix_val1; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = gpix1; + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_n0_p4_ihires_dhires_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_ecs_fm0_n1_p4_ihires_dhires_spr_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl4(); + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0]; + gpix0 = get_genlock_transparency(pix0); + } + last_bpl_pix = pix0; + } + shiftbpl4(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_lores(); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = getbpl4(); + clxdat |= bplcoltable[pix1]; + dpix_val1 = denise_colors.acolors[pix1]; + gpix1 = get_genlock_transparency(pix1); + } + last_bpl_pix = pix1; + } + shiftbpl4(); + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + uae_u32 sv1 = sv0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + gpix1 = get_genlock_transparency(spix1); + + } + } + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = gpix0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dpix_val1; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = gpix1; + } + if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { + copybpl4e(); + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_n1_p4_ihires_dhires_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_ecs_fm0_dpf0_p4_ihires_dhires_spr_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl4(); + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + dpix_val0 = denise_colors.acolors[val0]; + gpix0 = get_genlock_transparency(dpf_lookup[pix0]); + } + last_bpl_pix = pix0; + } + shiftbpl4(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_lores(); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = getbpl4(); + clxdat |= bplcoltable[pix1]; + uae_u8 val1 = dpf_lookup[pix1]; + dpix_val1 = denise_colors.acolors[val1]; + gpix1 = get_genlock_transparency(dpf_lookup[pix1]); + } + last_bpl_pix = pix1; + } + shiftbpl4(); + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + uae_u32 sv1 = sv0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + gpix1 = get_genlock_transparency(spix1); + + } + } + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = gpix0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dpix_val1; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = gpix1; + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_dpf0_p4_ihires_dhires_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_ecs_fm0_dpf1_p4_ihires_dhires_spr_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl4(); + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + dpix_val0 = denise_colors.acolors[val0]; + gpix0 = get_genlock_transparency(dpf_lookup[pix0]); + } + last_bpl_pix = pix0; + } + shiftbpl4(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_lores(); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = getbpl4(); + clxdat |= bplcoltable[pix1]; + uae_u8 val1 = dpf_lookup[pix1]; + dpix_val1 = denise_colors.acolors[val1]; + gpix1 = get_genlock_transparency(dpf_lookup[pix1]); + } + last_bpl_pix = pix1; + } + shiftbpl4(); + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + uae_u32 sv1 = sv0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + gpix1 = get_genlock_transparency(spix1); + + } + } + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = gpix0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dpix_val1; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = gpix1; + } + if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { + copybpl4e(); + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_dpf1_p4_ihires_dhires_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_ecs_fm0_ehb0_p4_ihires_dhires_spr_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = gpix0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dpix_val1; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = gpix1; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ehb0_p4_ihires_dhires_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_ecs_fm0_ehb1_p4_ihires_dhires_spr_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = gpix0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dpix_val1; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = gpix1; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ehb1_p4_ihires_dhires_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_ecs_fm0_ham0_p4_ihires_dhires_spr_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = gpix0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dpix_val1; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = gpix1; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ham0_p4_ihires_dhires_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_ecs_fm0_ham1_p4_ihires_dhires_spr_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = gpix0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dpix_val1; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = gpix1; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ham1_p4_ihires_dhires_spr_filtered_genlock(void) +{ + lts_null(); +} +static void lts_ecs_fm0_n0_p6_ilores_dshres_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl6(); + clxdat |= bplcoltable[pix0]; + if (decode_specials) { + pix0 = decode_denise_specials(pix0); + } + dpix_val0 = denise_colors.acolors[pix0]; + gpix0 = get_genlock_transparency(pix0); + } + last_bpl_pix = pix0; + } + shiftbpl6(); + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + uae_u8 gpix1 = gpix0; + uae_u32 dpix_val2 = dpix_val1; + uae_u8 pix2 = pix1; + uae_u8 gpix2 = gpix1; + uae_u32 dpix_val3 = dpix_val2; + uae_u8 pix3 = pix2; + uae_u8 gpix3 = gpix2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = gpix0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dpix_val1; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = gpix1; + uae_u32 t2 = 0; + if (!extblank) { + t2 = dpix_val2; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = gpix2; + uae_u32 t3 = 0; + if (!extblank) { + t3 = dpix_val3; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + *gbuf++ = gpix3; + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_n0_p6_ilores_dshres_filtered_genlock(void) +{ + lts_null(); +} +static void lts_ecs_fm0_n1_p6_ilores_dshres_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl6(); + clxdat |= bplcoltable[pix0]; + if (decode_specials) { + pix0 = decode_denise_specials(pix0); + } + dpix_val0 = denise_colors.acolors[pix0]; + gpix0 = get_genlock_transparency(pix0); + } + last_bpl_pix = pix0; + } + shiftbpl6(); + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + uae_u8 gpix1 = gpix0; + uae_u32 dpix_val2 = dpix_val1; + uae_u8 pix2 = pix1; + uae_u8 gpix2 = gpix1; + uae_u32 dpix_val3 = dpix_val2; + uae_u8 pix3 = pix2; + uae_u8 gpix3 = gpix2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = gpix0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dpix_val1; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = gpix1; + uae_u32 t2 = 0; + if (!extblank) { + t2 = dpix_val2; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = gpix2; + uae_u32 t3 = 0; + if (!extblank) { + t3 = dpix_val3; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + *gbuf++ = gpix3; + } + if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { + copybpl6e(); + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_n1_p6_ilores_dshres_filtered_genlock(void) +{ + lts_null(); +} +static void lts_ecs_fm0_dpf0_p6_ilores_dshres_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl6(); + clxdat |= bplcoltable[pix0]; + if (decode_specials) { + pix0 = decode_denise_specials(pix0); + } + uae_u8 val0 = dpf_lookup[pix0]; + dpix_val0 = denise_colors.acolors[val0]; + gpix0 = get_genlock_transparency(dpf_lookup[pix0]); + } + last_bpl_pix = pix0; + } + shiftbpl6(); + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + uae_u8 gpix1 = gpix0; + uae_u32 dpix_val2 = dpix_val1; + uae_u8 pix2 = pix1; + uae_u8 gpix2 = gpix1; + uae_u32 dpix_val3 = dpix_val2; + uae_u8 pix3 = pix2; + uae_u8 gpix3 = gpix2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = gpix0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dpix_val1; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = gpix1; + uae_u32 t2 = 0; + if (!extblank) { + t2 = dpix_val2; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = gpix2; + uae_u32 t3 = 0; + if (!extblank) { + t3 = dpix_val3; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + *gbuf++ = gpix3; + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_dpf0_p6_ilores_dshres_filtered_genlock(void) +{ + lts_null(); +} +static void lts_ecs_fm0_dpf1_p6_ilores_dshres_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl6(); + clxdat |= bplcoltable[pix0]; + if (decode_specials) { + pix0 = decode_denise_specials(pix0); + } + uae_u8 val0 = dpf_lookup[pix0]; + dpix_val0 = denise_colors.acolors[val0]; + gpix0 = get_genlock_transparency(dpf_lookup[pix0]); + } + last_bpl_pix = pix0; + } + shiftbpl6(); + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + uae_u8 gpix1 = gpix0; + uae_u32 dpix_val2 = dpix_val1; + uae_u8 pix2 = pix1; + uae_u8 gpix2 = gpix1; + uae_u32 dpix_val3 = dpix_val2; + uae_u8 pix3 = pix2; + uae_u8 gpix3 = gpix2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = gpix0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dpix_val1; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = gpix1; + uae_u32 t2 = 0; + if (!extblank) { + t2 = dpix_val2; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = gpix2; + uae_u32 t3 = 0; + if (!extblank) { + t3 = dpix_val3; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + *gbuf++ = gpix3; + } + if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { + copybpl6e(); + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_dpf1_p6_ilores_dshres_filtered_genlock(void) +{ + lts_null(); +} +static void lts_ecs_fm0_ehb0_p6_ilores_dshres_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl6(); + clxdat |= bplcoltable[pix0]; + if (decode_specials) { + pix0 = decode_denise_specials(pix0); + } + pix0 &= bplehb_mask; + if (pix0 <= 31) { + dpix_val0 = denise_colors.acolors[pix0]; + } else { + dpix_val0 = p_xcolors[(denise_colors.color_regs_ecs[pix0 - 32] >> 1) & 0x777]; + } + gpix0 = get_genlock_transparency(pix0 & 31); + } + last_bpl_pix = pix0; + } + shiftbpl6(); + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + uae_u8 gpix1 = gpix0; + uae_u32 dpix_val2 = dpix_val1; + uae_u8 pix2 = pix1; + uae_u8 gpix2 = gpix1; + uae_u32 dpix_val3 = dpix_val2; + uae_u8 pix3 = pix2; + uae_u8 gpix3 = gpix2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = gpix0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dpix_val1; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = gpix1; + uae_u32 t2 = 0; + if (!extblank) { + t2 = dpix_val2; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = gpix2; + uae_u32 t3 = 0; + if (!extblank) { + t3 = dpix_val3; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + *gbuf++ = gpix3; + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ehb0_p6_ilores_dshres_filtered_genlock(void) +{ + lts_null(); +} +static void lts_ecs_fm0_ehb1_p6_ilores_dshres_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl6(); + clxdat |= bplcoltable[pix0]; + if (decode_specials) { + pix0 = decode_denise_specials(pix0); + } + pix0 &= bplehb_mask; + if (pix0 <= 31) { + dpix_val0 = denise_colors.acolors[pix0]; + } else { + dpix_val0 = p_xcolors[(denise_colors.color_regs_ecs[pix0 - 32] >> 1) & 0x777]; + } + gpix0 = get_genlock_transparency(pix0 & 31); + } + last_bpl_pix = pix0; + } + shiftbpl6(); + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + uae_u8 gpix1 = gpix0; + uae_u32 dpix_val2 = dpix_val1; + uae_u8 pix2 = pix1; + uae_u8 gpix2 = gpix1; + uae_u32 dpix_val3 = dpix_val2; + uae_u8 pix3 = pix2; + uae_u8 gpix3 = gpix2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = gpix0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dpix_val1; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = gpix1; + uae_u32 t2 = 0; + if (!extblank) { + t2 = dpix_val2; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = gpix2; + uae_u32 t3 = 0; + if (!extblank) { + t3 = dpix_val3; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + *gbuf++ = gpix3; + } + if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { + copybpl6e(); + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ehb1_p6_ilores_dshres_filtered_genlock(void) +{ + lts_null(); +} +static void lts_ecs_fm0_ham0_p6_ilores_dshres_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl6(); + clxdat |= bplcoltable[pix0]; + if (decode_specials) { + pix0 = decode_denise_specials(pix0); + } + dpix_val0 = decode_ham_pixel(pix0); + gpix0 = get_genlock_transparency(pix0 & 15); + } + last_bpl_pix = pix0; + } + shiftbpl6(); + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + uae_u8 gpix1 = gpix0; + uae_u32 dpix_val2 = dpix_val1; + uae_u8 pix2 = pix1; + uae_u8 gpix2 = gpix1; + uae_u32 dpix_val3 = dpix_val2; + uae_u8 pix3 = pix2; + uae_u8 gpix3 = gpix2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + uae_u32 t0 = 0; + if (!extblank) { + t0 = dpix_val0; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = gpix0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dpix_val1; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = gpix1; + uae_u32 t2 = 0; + if (!extblank) { + t2 = dpix_val2; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = gpix2; + uae_u32 t3 = 0; + if (!extblank) { + t3 = dpix_val3; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + *gbuf++ = gpix3; + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ham0_p6_ilores_dshres_filtered_genlock(void) +{ + lts_null(); +} +static void lts_ecs_fm0_ham1_p6_ilores_dshres_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl6(); + clxdat |= bplcoltable[pix0]; + if (decode_specials) { + pix0 = decode_denise_specials(pix0); } + dpix_val0 = decode_ham_pixel(pix0); + gpix0 = get_genlock_transparency(pix0 & 15); } + last_bpl_pix = pix0; + } + shiftbpl6(); + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + uae_u8 gpix1 = gpix0; + uae_u32 dpix_val2 = dpix_val1; + uae_u8 pix2 = pix1; + uae_u8 gpix2 = gpix1; + uae_u32 dpix_val3 = dpix_val2; + uae_u8 pix3 = pix2; + uae_u8 gpix3 = gpix2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { uae_u32 t0 = 0; if (!extblank) { t0 = dpix_val0; @@ -5445,18 +7973,42 @@ static void lts_ecs_fm0_dpf1_p4_ihires_dhires_spr_genlock(void) } #ifdef DEBUGGER if (decode_specials_debug) { - t1 = decode_denise_specials_debug(t1, cnt + 2); + t1 = decode_denise_specials_debug(t1, cnt + 1); } #endif *buf1++ = t1; *buf2++ = t1; *gbuf++ = gpix1; + uae_u32 t2 = 0; + if (!extblank) { + t2 = dpix_val2; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = gpix2; + uae_u32 t3 = 0; + if (!extblank) { + t3 = dpix_val3; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + *gbuf++ = gpix3; } - if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { - copybpl4e(); + if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { + copybpl6e(); } - if (bpldat_copy[1] && (denise_hcounter_cmp & 7) == bplcon1_shift[1]) { - copybpl4o(); + if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) { + copybpl6o(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -5480,43 +8032,11 @@ static void lts_ecs_fm0_dpf1_p4_ihires_dhires_spr_genlock(void) denise_cck++; } } -static void lts_ecs_fm0_dpf1_p4_ihires_dhires_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb0_p4_ihires_dhires_spr_genlock(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb0_p4_ihires_dhires_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb1_p4_ihires_dhires_spr_genlock(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb1_p4_ihires_dhires_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham0_p4_ihires_dhires_spr_genlock(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham0_p4_ihires_dhires_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham1_p4_ihires_dhires_spr_genlock(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham1_p4_ihires_dhires_spr_filtered_genlock(void) +static void lts_ecs_fm0_ham1_p6_ilores_dshres_filtered_genlock(void) { lts_null(); } -static void lts_ecs_fm0_n0_p6_ilores_dshres_genlock(void) +static void lts_ecs_fm0_n0_p6_ilores_dshres_spr_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -5527,6 +8047,7 @@ static void lts_ecs_fm0_n0_p6_ilores_dshres_genlock(void) } int cnt = denise_hcounter << 2; if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; @@ -5545,6 +8066,14 @@ static void lts_ecs_fm0_n0_p6_ilores_dshres_genlock(void) last_bpl_pix = pix0; } shiftbpl6(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_lores(); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } internal_pixel_cnt += 1; internal_pixel_cnt += 1; internal_pixel_cnt += 1; @@ -5559,6 +8088,17 @@ static void lts_ecs_fm0_n0_p6_ilores_dshres_genlock(void) uae_u8 pix3 = pix2; uae_u8 gpix3 = gpix2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + dpix_val1 = dpix_val0; + dpix_val2 = dpix_val0; + dpix_val3 = dpix_val0; + } + } uae_u32 t0 = 0; if (!extblank) { t0 = dpix_val0; @@ -5633,11 +8173,11 @@ static void lts_ecs_fm0_n0_p6_ilores_dshres_genlock(void) denise_cck++; } } -static void lts_ecs_fm0_n0_p6_ilores_dshres_filtered_genlock(void) +static void lts_ecs_fm0_n0_p6_ilores_dshres_spr_filtered_genlock(void) { lts_null(); } -static void lts_ecs_fm0_n1_p6_ilores_dshres_genlock(void) +static void lts_ecs_fm0_n1_p6_ilores_dshres_spr_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -5648,6 +8188,7 @@ static void lts_ecs_fm0_n1_p6_ilores_dshres_genlock(void) } int cnt = denise_hcounter << 2; if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; @@ -5666,6 +8207,14 @@ static void lts_ecs_fm0_n1_p6_ilores_dshres_genlock(void) last_bpl_pix = pix0; } shiftbpl6(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_lores(); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } internal_pixel_cnt += 1; internal_pixel_cnt += 1; internal_pixel_cnt += 1; @@ -5680,6 +8229,17 @@ static void lts_ecs_fm0_n1_p6_ilores_dshres_genlock(void) uae_u8 pix3 = pix2; uae_u8 gpix3 = gpix2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + dpix_val1 = dpix_val0; + dpix_val2 = dpix_val0; + dpix_val3 = dpix_val0; + } + } uae_u32 t0 = 0; if (!extblank) { t0 = dpix_val0; @@ -5757,11 +8317,11 @@ static void lts_ecs_fm0_n1_p6_ilores_dshres_genlock(void) denise_cck++; } } -static void lts_ecs_fm0_n1_p6_ilores_dshres_filtered_genlock(void) +static void lts_ecs_fm0_n1_p6_ilores_dshres_spr_filtered_genlock(void) { lts_null(); } -static void lts_ecs_fm0_dpf0_p6_ilores_dshres_genlock(void) +static void lts_ecs_fm0_dpf0_p6_ilores_dshres_spr_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -5772,6 +8332,7 @@ static void lts_ecs_fm0_dpf0_p6_ilores_dshres_genlock(void) } int cnt = denise_hcounter << 2; if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; @@ -5791,6 +8352,14 @@ static void lts_ecs_fm0_dpf0_p6_ilores_dshres_genlock(void) last_bpl_pix = pix0; } shiftbpl6(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_lores(); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } internal_pixel_cnt += 1; internal_pixel_cnt += 1; internal_pixel_cnt += 1; @@ -5805,6 +8374,17 @@ static void lts_ecs_fm0_dpf0_p6_ilores_dshres_genlock(void) uae_u8 pix3 = pix2; uae_u8 gpix3 = gpix2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + dpix_val1 = dpix_val0; + dpix_val2 = dpix_val0; + dpix_val3 = dpix_val0; + } + } uae_u32 t0 = 0; if (!extblank) { t0 = dpix_val0; @@ -5879,11 +8459,11 @@ static void lts_ecs_fm0_dpf0_p6_ilores_dshres_genlock(void) denise_cck++; } } -static void lts_ecs_fm0_dpf0_p6_ilores_dshres_filtered_genlock(void) +static void lts_ecs_fm0_dpf0_p6_ilores_dshres_spr_filtered_genlock(void) { lts_null(); } -static void lts_ecs_fm0_dpf1_p6_ilores_dshres_genlock(void) +static void lts_ecs_fm0_dpf1_p6_ilores_dshres_spr_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -5894,6 +8474,7 @@ static void lts_ecs_fm0_dpf1_p6_ilores_dshres_genlock(void) } int cnt = denise_hcounter << 2; if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; @@ -5913,6 +8494,14 @@ static void lts_ecs_fm0_dpf1_p6_ilores_dshres_genlock(void) last_bpl_pix = pix0; } shiftbpl6(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_lores(); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } internal_pixel_cnt += 1; internal_pixel_cnt += 1; internal_pixel_cnt += 1; @@ -5927,6 +8516,17 @@ static void lts_ecs_fm0_dpf1_p6_ilores_dshres_genlock(void) uae_u8 pix3 = pix2; uae_u8 gpix3 = gpix2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + dpix_val1 = dpix_val0; + dpix_val2 = dpix_val0; + dpix_val3 = dpix_val0; + } + } uae_u32 t0 = 0; if (!extblank) { t0 = dpix_val0; @@ -6004,11 +8604,11 @@ static void lts_ecs_fm0_dpf1_p6_ilores_dshres_genlock(void) denise_cck++; } } -static void lts_ecs_fm0_dpf1_p6_ilores_dshres_filtered_genlock(void) +static void lts_ecs_fm0_dpf1_p6_ilores_dshres_spr_filtered_genlock(void) { lts_null(); } -static void lts_ecs_fm0_ehb0_p6_ilores_dshres_genlock(void) +static void lts_ecs_fm0_ehb0_p6_ilores_dshres_spr_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -6019,6 +8619,7 @@ static void lts_ecs_fm0_ehb0_p6_ilores_dshres_genlock(void) } int cnt = denise_hcounter << 2; if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; @@ -6042,6 +8643,14 @@ static void lts_ecs_fm0_ehb0_p6_ilores_dshres_genlock(void) last_bpl_pix = pix0; } shiftbpl6(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_lores(); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } internal_pixel_cnt += 1; internal_pixel_cnt += 1; internal_pixel_cnt += 1; @@ -6056,6 +8665,17 @@ static void lts_ecs_fm0_ehb0_p6_ilores_dshres_genlock(void) uae_u8 pix3 = pix2; uae_u8 gpix3 = gpix2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + dpix_val1 = dpix_val0; + dpix_val2 = dpix_val0; + dpix_val3 = dpix_val0; + } + } uae_u32 t0 = 0; if (!extblank) { t0 = dpix_val0; @@ -6130,11 +8750,11 @@ static void lts_ecs_fm0_ehb0_p6_ilores_dshres_genlock(void) denise_cck++; } } -static void lts_ecs_fm0_ehb0_p6_ilores_dshres_filtered_genlock(void) +static void lts_ecs_fm0_ehb0_p6_ilores_dshres_spr_filtered_genlock(void) { lts_null(); } -static void lts_ecs_fm0_ehb1_p6_ilores_dshres_genlock(void) +static void lts_ecs_fm0_ehb1_p6_ilores_dshres_spr_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -6145,6 +8765,7 @@ static void lts_ecs_fm0_ehb1_p6_ilores_dshres_genlock(void) } int cnt = denise_hcounter << 2; if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; @@ -6168,6 +8789,14 @@ static void lts_ecs_fm0_ehb1_p6_ilores_dshres_genlock(void) last_bpl_pix = pix0; } shiftbpl6(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_lores(); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } internal_pixel_cnt += 1; internal_pixel_cnt += 1; internal_pixel_cnt += 1; @@ -6182,6 +8811,17 @@ static void lts_ecs_fm0_ehb1_p6_ilores_dshres_genlock(void) uae_u8 pix3 = pix2; uae_u8 gpix3 = gpix2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + dpix_val1 = dpix_val0; + dpix_val2 = dpix_val0; + dpix_val3 = dpix_val0; + } + } uae_u32 t0 = 0; if (!extblank) { t0 = dpix_val0; @@ -6259,11 +8899,11 @@ static void lts_ecs_fm0_ehb1_p6_ilores_dshres_genlock(void) denise_cck++; } } -static void lts_ecs_fm0_ehb1_p6_ilores_dshres_filtered_genlock(void) +static void lts_ecs_fm0_ehb1_p6_ilores_dshres_spr_filtered_genlock(void) { lts_null(); } -static void lts_ecs_fm0_ham0_p6_ilores_dshres_genlock(void) +static void lts_ecs_fm0_ham0_p6_ilores_dshres_spr_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -6274,6 +8914,7 @@ static void lts_ecs_fm0_ham0_p6_ilores_dshres_genlock(void) } int cnt = denise_hcounter << 2; if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; @@ -6289,9 +8930,17 @@ static void lts_ecs_fm0_ham0_p6_ilores_dshres_genlock(void) dpix_val0 = decode_ham_pixel(pix0); gpix0 = get_genlock_transparency(pix0 & 15); } - last_bpl_pix = pix0; + last_bpl_pix = pix0; + } + shiftbpl6(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_lores(); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } } - shiftbpl6(); internal_pixel_cnt += 1; internal_pixel_cnt += 1; internal_pixel_cnt += 1; @@ -6306,6 +8955,17 @@ static void lts_ecs_fm0_ham0_p6_ilores_dshres_genlock(void) uae_u8 pix3 = pix2; uae_u8 gpix3 = gpix2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + dpix_val1 = dpix_val0; + dpix_val2 = dpix_val0; + dpix_val3 = dpix_val0; + } + } uae_u32 t0 = 0; if (!extblank) { t0 = dpix_val0; @@ -6380,11 +9040,11 @@ static void lts_ecs_fm0_ham0_p6_ilores_dshres_genlock(void) denise_cck++; } } -static void lts_ecs_fm0_ham0_p6_ilores_dshres_filtered_genlock(void) +static void lts_ecs_fm0_ham0_p6_ilores_dshres_spr_filtered_genlock(void) { lts_null(); } -static void lts_ecs_fm0_ham1_p6_ilores_dshres_genlock(void) +static void lts_ecs_fm0_ham1_p6_ilores_dshres_spr_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -6395,6 +9055,7 @@ static void lts_ecs_fm0_ham1_p6_ilores_dshres_genlock(void) } int cnt = denise_hcounter << 2; if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; @@ -6413,6 +9074,14 @@ static void lts_ecs_fm0_ham1_p6_ilores_dshres_genlock(void) last_bpl_pix = pix0; } shiftbpl6(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_lores(); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } internal_pixel_cnt += 1; internal_pixel_cnt += 1; internal_pixel_cnt += 1; @@ -6427,6 +9096,17 @@ static void lts_ecs_fm0_ham1_p6_ilores_dshres_genlock(void) uae_u8 pix3 = pix2; uae_u8 gpix3 = gpix2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + dpix_val1 = dpix_val0; + dpix_val2 = dpix_val0; + dpix_val3 = dpix_val0; + } + } uae_u32 t0 = 0; if (!extblank) { t0 = dpix_val0; @@ -6504,11 +9184,11 @@ static void lts_ecs_fm0_ham1_p6_ilores_dshres_genlock(void) denise_cck++; } } -static void lts_ecs_fm0_ham1_p6_ilores_dshres_filtered_genlock(void) +static void lts_ecs_fm0_ham1_p6_ilores_dshres_spr_filtered_genlock(void) { lts_null(); } -static void lts_ecs_fm0_n0_p6_ilores_dshres_spr_genlock(void) +static void lts_ecs_fm0_n0_p4_ihires_dshres_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -6519,7 +9199,6 @@ static void lts_ecs_fm0_n0_p6_ilores_dshres_spr_genlock(void) } int cnt = denise_hcounter << 2; if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; @@ -6527,50 +9206,40 @@ static void lts_ecs_fm0_n0_p6_ilores_dshres_spr_genlock(void) gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl6(); + pix0 = getbpl4(); clxdat |= bplcoltable[pix0]; - if (decode_specials) { - pix0 = decode_denise_specials(pix0); - } dpix_val0 = denise_colors.acolors[pix0]; gpix0 = get_genlock_transparency(pix0); } last_bpl_pix = pix0; } - shiftbpl6(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_lores(); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } - } + shiftbpl4(); internal_pixel_cnt += 1; internal_pixel_cnt += 1; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = getbpl4(); + clxdat |= bplcoltable[pix2]; + dpix_val2 = denise_colors.acolors[pix2]; + gpix2 = get_genlock_transparency(pix2); + } + last_bpl_pix = pix2; + } + shiftbpl4(); internal_pixel_cnt += 1; internal_pixel_cnt += 1; uae_u32 dpix_val1 = dpix_val0; uae_u8 pix1 = pix0; uae_u8 gpix1 = gpix0; - uae_u32 dpix_val2 = dpix_val1; - uae_u8 pix2 = pix1; - uae_u8 gpix2 = gpix1; uae_u32 dpix_val3 = dpix_val2; uae_u8 pix3 = pix2; uae_u8 gpix3 = gpix2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - gpix0 = get_genlock_transparency(spix0); - - dpix_val1 = dpix_val0; - dpix_val2 = dpix_val0; - dpix_val3 = dpix_val0; - } - } uae_u32 t0 = 0; if (!extblank) { t0 = dpix_val0; @@ -6620,8 +9289,8 @@ static void lts_ecs_fm0_n0_p6_ilores_dshres_spr_genlock(void) *buf2++ = t3; *gbuf++ = gpix3; } - if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl6(); + if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { + copybpl4(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -6645,11 +9314,11 @@ static void lts_ecs_fm0_n0_p6_ilores_dshres_spr_genlock(void) denise_cck++; } } -static void lts_ecs_fm0_n0_p6_ilores_dshres_spr_filtered_genlock(void) +static void lts_ecs_fm0_n0_p4_ihires_dshres_filtered_genlock(void) { lts_null(); } -static void lts_ecs_fm0_n1_p6_ilores_dshres_spr_genlock(void) +static void lts_ecs_fm0_n1_p4_ihires_dshres_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -6660,7 +9329,6 @@ static void lts_ecs_fm0_n1_p6_ilores_dshres_spr_genlock(void) } int cnt = denise_hcounter << 2; if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; @@ -6668,50 +9336,40 @@ static void lts_ecs_fm0_n1_p6_ilores_dshres_spr_genlock(void) gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl6(); + pix0 = getbpl4(); clxdat |= bplcoltable[pix0]; - if (decode_specials) { - pix0 = decode_denise_specials(pix0); - } dpix_val0 = denise_colors.acolors[pix0]; gpix0 = get_genlock_transparency(pix0); } last_bpl_pix = pix0; } - shiftbpl6(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_lores(); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } - } + shiftbpl4(); internal_pixel_cnt += 1; internal_pixel_cnt += 1; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = getbpl4(); + clxdat |= bplcoltable[pix2]; + dpix_val2 = denise_colors.acolors[pix2]; + gpix2 = get_genlock_transparency(pix2); + } + last_bpl_pix = pix2; + } + shiftbpl4(); internal_pixel_cnt += 1; internal_pixel_cnt += 1; uae_u32 dpix_val1 = dpix_val0; uae_u8 pix1 = pix0; uae_u8 gpix1 = gpix0; - uae_u32 dpix_val2 = dpix_val1; - uae_u8 pix2 = pix1; - uae_u8 gpix2 = gpix1; uae_u32 dpix_val3 = dpix_val2; uae_u8 pix3 = pix2; uae_u8 gpix3 = gpix2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - gpix0 = get_genlock_transparency(spix0); - - dpix_val1 = dpix_val0; - dpix_val2 = dpix_val0; - dpix_val3 = dpix_val0; - } - } uae_u32 t0 = 0; if (!extblank) { t0 = dpix_val0; @@ -6761,11 +9419,11 @@ static void lts_ecs_fm0_n1_p6_ilores_dshres_spr_genlock(void) *buf2++ = t3; *gbuf++ = gpix3; } - if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl6e(); + if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { + copybpl4e(); } - if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) { - copybpl6o(); + if (bpldat_copy[1] && (denise_hcounter_cmp & 7) == bplcon1_shift[1]) { + copybpl4o(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -6789,11 +9447,11 @@ static void lts_ecs_fm0_n1_p6_ilores_dshres_spr_genlock(void) denise_cck++; } } -static void lts_ecs_fm0_n1_p6_ilores_dshres_spr_filtered_genlock(void) +static void lts_ecs_fm0_n1_p4_ihires_dshres_filtered_genlock(void) { lts_null(); } -static void lts_ecs_fm0_dpf0_p6_ilores_dshres_spr_genlock(void) +static void lts_ecs_fm0_dpf0_p4_ihires_dshres_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -6804,7 +9462,6 @@ static void lts_ecs_fm0_dpf0_p6_ilores_dshres_spr_genlock(void) } int cnt = denise_hcounter << 2; if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; @@ -6812,51 +9469,42 @@ static void lts_ecs_fm0_dpf0_p6_ilores_dshres_spr_genlock(void) gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl6(); + pix0 = getbpl4(); clxdat |= bplcoltable[pix0]; - if (decode_specials) { - pix0 = decode_denise_specials(pix0); - } uae_u8 val0 = dpf_lookup[pix0]; dpix_val0 = denise_colors.acolors[val0]; gpix0 = get_genlock_transparency(dpf_lookup[pix0]); } last_bpl_pix = pix0; } - shiftbpl6(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_lores(); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } - } + shiftbpl4(); internal_pixel_cnt += 1; internal_pixel_cnt += 1; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = getbpl4(); + clxdat |= bplcoltable[pix2]; + uae_u8 val2 = dpf_lookup[pix2]; + dpix_val2 = denise_colors.acolors[val2]; + gpix2 = get_genlock_transparency(dpf_lookup[pix2]); + } + last_bpl_pix = pix2; + } + shiftbpl4(); internal_pixel_cnt += 1; internal_pixel_cnt += 1; uae_u32 dpix_val1 = dpix_val0; uae_u8 pix1 = pix0; uae_u8 gpix1 = gpix0; - uae_u32 dpix_val2 = dpix_val1; - uae_u8 pix2 = pix1; - uae_u8 gpix2 = gpix1; uae_u32 dpix_val3 = dpix_val2; uae_u8 pix3 = pix2; uae_u8 gpix3 = gpix2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - gpix0 = get_genlock_transparency(spix0); - - dpix_val1 = dpix_val0; - dpix_val2 = dpix_val0; - dpix_val3 = dpix_val0; - } - } uae_u32 t0 = 0; if (!extblank) { t0 = dpix_val0; @@ -6906,8 +9554,8 @@ static void lts_ecs_fm0_dpf0_p6_ilores_dshres_spr_genlock(void) *buf2++ = t3; *gbuf++ = gpix3; } - if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl6(); + if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { + copybpl4(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -6931,11 +9579,11 @@ static void lts_ecs_fm0_dpf0_p6_ilores_dshres_spr_genlock(void) denise_cck++; } } -static void lts_ecs_fm0_dpf0_p6_ilores_dshres_spr_filtered_genlock(void) +static void lts_ecs_fm0_dpf0_p4_ihires_dshres_filtered_genlock(void) { lts_null(); } -static void lts_ecs_fm0_dpf1_p6_ilores_dshres_spr_genlock(void) +static void lts_ecs_fm0_dpf1_p4_ihires_dshres_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -6946,7 +9594,6 @@ static void lts_ecs_fm0_dpf1_p6_ilores_dshres_spr_genlock(void) } int cnt = denise_hcounter << 2; if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; @@ -6954,51 +9601,42 @@ static void lts_ecs_fm0_dpf1_p6_ilores_dshres_spr_genlock(void) gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl6(); + pix0 = getbpl4(); clxdat |= bplcoltable[pix0]; - if (decode_specials) { - pix0 = decode_denise_specials(pix0); - } uae_u8 val0 = dpf_lookup[pix0]; dpix_val0 = denise_colors.acolors[val0]; gpix0 = get_genlock_transparency(dpf_lookup[pix0]); } last_bpl_pix = pix0; } - shiftbpl6(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_lores(); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } - } + shiftbpl4(); internal_pixel_cnt += 1; internal_pixel_cnt += 1; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = getbpl4(); + clxdat |= bplcoltable[pix2]; + uae_u8 val2 = dpf_lookup[pix2]; + dpix_val2 = denise_colors.acolors[val2]; + gpix2 = get_genlock_transparency(dpf_lookup[pix2]); + } + last_bpl_pix = pix2; + } + shiftbpl4(); internal_pixel_cnt += 1; internal_pixel_cnt += 1; uae_u32 dpix_val1 = dpix_val0; uae_u8 pix1 = pix0; uae_u8 gpix1 = gpix0; - uae_u32 dpix_val2 = dpix_val1; - uae_u8 pix2 = pix1; - uae_u8 gpix2 = gpix1; uae_u32 dpix_val3 = dpix_val2; uae_u8 pix3 = pix2; uae_u8 gpix3 = gpix2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - gpix0 = get_genlock_transparency(spix0); - - dpix_val1 = dpix_val0; - dpix_val2 = dpix_val0; - dpix_val3 = dpix_val0; - } - } uae_u32 t0 = 0; if (!extblank) { t0 = dpix_val0; @@ -7048,11 +9686,11 @@ static void lts_ecs_fm0_dpf1_p6_ilores_dshres_spr_genlock(void) *buf2++ = t3; *gbuf++ = gpix3; } - if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl6e(); + if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { + copybpl4e(); } - if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) { - copybpl6o(); + if (bpldat_copy[1] && (denise_hcounter_cmp & 7) == bplcon1_shift[1]) { + copybpl4o(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -7076,11 +9714,11 @@ static void lts_ecs_fm0_dpf1_p6_ilores_dshres_spr_genlock(void) denise_cck++; } } -static void lts_ecs_fm0_dpf1_p6_ilores_dshres_spr_filtered_genlock(void) +static void lts_ecs_fm0_dpf1_p4_ihires_dshres_filtered_genlock(void) { lts_null(); } -static void lts_ecs_fm0_ehb0_p6_ilores_dshres_spr_genlock(void) +static void lts_ecs_fm0_ehb0_p4_ihires_dshres_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -7091,63 +9729,31 @@ static void lts_ecs_fm0_ehb0_p6_ilores_dshres_spr_genlock(void) } int cnt = denise_hcounter << 2; if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl6(); - clxdat |= bplcoltable[pix0]; - if (decode_specials) { - pix0 = decode_denise_specials(pix0); - } - pix0 &= bplehb_mask; - if (pix0 <= 31) { - dpix_val0 = denise_colors.acolors[pix0]; - } else { - dpix_val0 = p_xcolors[(denise_colors.color_regs_ecs[pix0 - 32] >> 1) & 0x777]; - } - gpix0 = get_genlock_transparency(pix0 & 31); - } - last_bpl_pix = pix0; - } - shiftbpl6(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_lores(); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } } internal_pixel_cnt += 1; internal_pixel_cnt += 1; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } internal_pixel_cnt += 1; internal_pixel_cnt += 1; uae_u32 dpix_val1 = dpix_val0; uae_u8 pix1 = pix0; uae_u8 gpix1 = gpix0; - uae_u32 dpix_val2 = dpix_val1; - uae_u8 pix2 = pix1; - uae_u8 gpix2 = gpix1; uae_u32 dpix_val3 = dpix_val2; uae_u8 pix3 = pix2; uae_u8 gpix3 = gpix2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - gpix0 = get_genlock_transparency(spix0); - - dpix_val1 = dpix_val0; - dpix_val2 = dpix_val0; - dpix_val3 = dpix_val0; - } - } uae_u32 t0 = 0; if (!extblank) { t0 = dpix_val0; @@ -7197,9 +9803,6 @@ static void lts_ecs_fm0_ehb0_p6_ilores_dshres_spr_genlock(void) *buf2++ = t3; *gbuf++ = gpix3; } - if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl6(); - } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER *debug_dma_dhpos_odd = denise_hcounter; @@ -7222,11 +9825,11 @@ static void lts_ecs_fm0_ehb0_p6_ilores_dshres_spr_genlock(void) denise_cck++; } } -static void lts_ecs_fm0_ehb0_p6_ilores_dshres_spr_filtered_genlock(void) +static void lts_ecs_fm0_ehb0_p4_ihires_dshres_filtered_genlock(void) { lts_null(); } -static void lts_ecs_fm0_ehb1_p6_ilores_dshres_spr_genlock(void) +static void lts_ecs_fm0_ehb1_p4_ihires_dshres_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -7237,63 +9840,31 @@ static void lts_ecs_fm0_ehb1_p6_ilores_dshres_spr_genlock(void) } int cnt = denise_hcounter << 2; if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl6(); - clxdat |= bplcoltable[pix0]; - if (decode_specials) { - pix0 = decode_denise_specials(pix0); - } - pix0 &= bplehb_mask; - if (pix0 <= 31) { - dpix_val0 = denise_colors.acolors[pix0]; - } else { - dpix_val0 = p_xcolors[(denise_colors.color_regs_ecs[pix0 - 32] >> 1) & 0x777]; - } - gpix0 = get_genlock_transparency(pix0 & 31); - } - last_bpl_pix = pix0; - } - shiftbpl6(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_lores(); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } } internal_pixel_cnt += 1; internal_pixel_cnt += 1; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } internal_pixel_cnt += 1; internal_pixel_cnt += 1; uae_u32 dpix_val1 = dpix_val0; uae_u8 pix1 = pix0; uae_u8 gpix1 = gpix0; - uae_u32 dpix_val2 = dpix_val1; - uae_u8 pix2 = pix1; - uae_u8 gpix2 = gpix1; uae_u32 dpix_val3 = dpix_val2; uae_u8 pix3 = pix2; uae_u8 gpix3 = gpix2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - gpix0 = get_genlock_transparency(spix0); - - dpix_val1 = dpix_val0; - dpix_val2 = dpix_val0; - dpix_val3 = dpix_val0; - } - } uae_u32 t0 = 0; if (!extblank) { t0 = dpix_val0; @@ -7343,12 +9914,6 @@ static void lts_ecs_fm0_ehb1_p6_ilores_dshres_spr_genlock(void) *buf2++ = t3; *gbuf++ = gpix3; } - if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl6e(); - } - if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) { - copybpl6o(); - } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER *debug_dma_dhpos_odd = denise_hcounter; @@ -7371,11 +9936,11 @@ static void lts_ecs_fm0_ehb1_p6_ilores_dshres_spr_genlock(void) denise_cck++; } } -static void lts_ecs_fm0_ehb1_p6_ilores_dshres_spr_filtered_genlock(void) +static void lts_ecs_fm0_ehb1_p4_ihires_dshres_filtered_genlock(void) { lts_null(); } -static void lts_ecs_fm0_ham0_p6_ilores_dshres_spr_genlock(void) +static void lts_ecs_fm0_ham0_p4_ihires_dshres_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -7386,58 +9951,31 @@ static void lts_ecs_fm0_ham0_p6_ilores_dshres_spr_genlock(void) } int cnt = denise_hcounter << 2; if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl6(); - clxdat |= bplcoltable[pix0]; - if (decode_specials) { - pix0 = decode_denise_specials(pix0); - } - dpix_val0 = decode_ham_pixel(pix0); - gpix0 = get_genlock_transparency(pix0 & 15); - } - last_bpl_pix = pix0; - } - shiftbpl6(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_lores(); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } } internal_pixel_cnt += 1; internal_pixel_cnt += 1; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } internal_pixel_cnt += 1; internal_pixel_cnt += 1; uae_u32 dpix_val1 = dpix_val0; uae_u8 pix1 = pix0; uae_u8 gpix1 = gpix0; - uae_u32 dpix_val2 = dpix_val1; - uae_u8 pix2 = pix1; - uae_u8 gpix2 = gpix1; uae_u32 dpix_val3 = dpix_val2; uae_u8 pix3 = pix2; uae_u8 gpix3 = gpix2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - gpix0 = get_genlock_transparency(spix0); - - dpix_val1 = dpix_val0; - dpix_val2 = dpix_val0; - dpix_val3 = dpix_val0; - } - } uae_u32 t0 = 0; if (!extblank) { t0 = dpix_val0; @@ -7487,9 +10025,6 @@ static void lts_ecs_fm0_ham0_p6_ilores_dshres_spr_genlock(void) *buf2++ = t3; *gbuf++ = gpix3; } - if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl6(); - } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER *debug_dma_dhpos_odd = denise_hcounter; @@ -7512,11 +10047,11 @@ static void lts_ecs_fm0_ham0_p6_ilores_dshres_spr_genlock(void) denise_cck++; } } -static void lts_ecs_fm0_ham0_p6_ilores_dshres_spr_filtered_genlock(void) +static void lts_ecs_fm0_ham0_p4_ihires_dshres_filtered_genlock(void) { lts_null(); } -static void lts_ecs_fm0_ham1_p6_ilores_dshres_spr_genlock(void) +static void lts_ecs_fm0_ham1_p4_ihires_dshres_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -7527,58 +10062,31 @@ static void lts_ecs_fm0_ham1_p6_ilores_dshres_spr_genlock(void) } int cnt = denise_hcounter << 2; if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl6(); - clxdat |= bplcoltable[pix0]; - if (decode_specials) { - pix0 = decode_denise_specials(pix0); - } - dpix_val0 = decode_ham_pixel(pix0); - gpix0 = get_genlock_transparency(pix0 & 15); - } - last_bpl_pix = pix0; - } - shiftbpl6(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_lores(); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } } internal_pixel_cnt += 1; internal_pixel_cnt += 1; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } internal_pixel_cnt += 1; internal_pixel_cnt += 1; uae_u32 dpix_val1 = dpix_val0; uae_u8 pix1 = pix0; uae_u8 gpix1 = gpix0; - uae_u32 dpix_val2 = dpix_val1; - uae_u8 pix2 = pix1; - uae_u8 gpix2 = gpix1; uae_u32 dpix_val3 = dpix_val2; uae_u8 pix3 = pix2; uae_u8 gpix3 = gpix2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - gpix0 = get_genlock_transparency(spix0); - - dpix_val1 = dpix_val0; - dpix_val2 = dpix_val0; - dpix_val3 = dpix_val0; - } - } uae_u32 t0 = 0; if (!extblank) { t0 = dpix_val0; @@ -7628,12 +10136,6 @@ static void lts_ecs_fm0_ham1_p6_ilores_dshres_spr_genlock(void) *buf2++ = t3; *gbuf++ = gpix3; } - if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl6e(); - } - if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) { - copybpl6o(); - } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER *debug_dma_dhpos_odd = denise_hcounter; @@ -7656,11 +10158,11 @@ static void lts_ecs_fm0_ham1_p6_ilores_dshres_spr_genlock(void) denise_cck++; } } -static void lts_ecs_fm0_ham1_p6_ilores_dshres_spr_filtered_genlock(void) +static void lts_ecs_fm0_ham1_p4_ihires_dshres_filtered_genlock(void) { lts_null(); } -static void lts_ecs_fm0_n0_p4_ihires_dshres_genlock(void) +static void lts_ecs_fm0_n0_p4_ihires_dshres_spr_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -7671,6 +10173,7 @@ static void lts_ecs_fm0_n0_p4_ihires_dshres_genlock(void) } int cnt = denise_hcounter << 2; if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; @@ -7686,6 +10189,14 @@ static void lts_ecs_fm0_n0_p4_ihires_dshres_genlock(void) last_bpl_pix = pix0; } shiftbpl4(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_lores(); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } internal_pixel_cnt += 1; internal_pixel_cnt += 1; uae_u8 pix2 = 0; @@ -7712,6 +10223,41 @@ static void lts_ecs_fm0_n0_p4_ihires_dshres_genlock(void) uae_u8 pix3 = pix2; uae_u8 gpix3 = gpix2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + uae_u32 sv1 = sv0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + gpix1 = get_genlock_transparency(spix1); + + } + } + uae_u32 sv2 = sv0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } + uae_u32 sv3 = sv0; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + gpix3 = get_genlock_transparency(spix3); + + } + } uae_u32 t0 = 0; if (!extblank) { t0 = dpix_val0; @@ -7786,11 +10332,11 @@ static void lts_ecs_fm0_n0_p4_ihires_dshres_genlock(void) denise_cck++; } } -static void lts_ecs_fm0_n0_p4_ihires_dshres_filtered_genlock(void) +static void lts_ecs_fm0_n0_p4_ihires_dshres_spr_filtered_genlock(void) { lts_null(); } -static void lts_ecs_fm0_n1_p4_ihires_dshres_genlock(void) +static void lts_ecs_fm0_n1_p4_ihires_dshres_spr_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -7801,6 +10347,7 @@ static void lts_ecs_fm0_n1_p4_ihires_dshres_genlock(void) } int cnt = denise_hcounter << 2; if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; @@ -7816,6 +10363,14 @@ static void lts_ecs_fm0_n1_p4_ihires_dshres_genlock(void) last_bpl_pix = pix0; } shiftbpl4(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_lores(); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } internal_pixel_cnt += 1; internal_pixel_cnt += 1; uae_u8 pix2 = 0; @@ -7842,6 +10397,41 @@ static void lts_ecs_fm0_n1_p4_ihires_dshres_genlock(void) uae_u8 pix3 = pix2; uae_u8 gpix3 = gpix2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + uae_u32 sv1 = sv0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + gpix1 = get_genlock_transparency(spix1); + + } + } + uae_u32 sv2 = sv0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } + uae_u32 sv3 = sv0; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + gpix3 = get_genlock_transparency(spix3); + + } + } uae_u32 t0 = 0; if (!extblank) { t0 = dpix_val0; @@ -7919,11 +10509,11 @@ static void lts_ecs_fm0_n1_p4_ihires_dshres_genlock(void) denise_cck++; } } -static void lts_ecs_fm0_n1_p4_ihires_dshres_filtered_genlock(void) +static void lts_ecs_fm0_n1_p4_ihires_dshres_spr_filtered_genlock(void) { lts_null(); } -static void lts_ecs_fm0_dpf0_p4_ihires_dshres_genlock(void) +static void lts_ecs_fm0_dpf0_p4_ihires_dshres_spr_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -7934,6 +10524,7 @@ static void lts_ecs_fm0_dpf0_p4_ihires_dshres_genlock(void) } int cnt = denise_hcounter << 2; if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; @@ -7950,6 +10541,14 @@ static void lts_ecs_fm0_dpf0_p4_ihires_dshres_genlock(void) last_bpl_pix = pix0; } shiftbpl4(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_lores(); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } internal_pixel_cnt += 1; internal_pixel_cnt += 1; uae_u8 pix2 = 0; @@ -7977,6 +10576,41 @@ static void lts_ecs_fm0_dpf0_p4_ihires_dshres_genlock(void) uae_u8 pix3 = pix2; uae_u8 gpix3 = gpix2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + uae_u32 sv1 = sv0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + gpix1 = get_genlock_transparency(spix1); + + } + } + uae_u32 sv2 = sv0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } + uae_u32 sv3 = sv0; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + gpix3 = get_genlock_transparency(spix3); + + } + } uae_u32 t0 = 0; if (!extblank) { t0 = dpix_val0; @@ -8051,11 +10685,11 @@ static void lts_ecs_fm0_dpf0_p4_ihires_dshres_genlock(void) denise_cck++; } } -static void lts_ecs_fm0_dpf0_p4_ihires_dshres_filtered_genlock(void) +static void lts_ecs_fm0_dpf0_p4_ihires_dshres_spr_filtered_genlock(void) { lts_null(); } -static void lts_ecs_fm0_dpf1_p4_ihires_dshres_genlock(void) +static void lts_ecs_fm0_dpf1_p4_ihires_dshres_spr_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -8066,6 +10700,7 @@ static void lts_ecs_fm0_dpf1_p4_ihires_dshres_genlock(void) } int cnt = denise_hcounter << 2; if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; @@ -8082,6 +10717,14 @@ static void lts_ecs_fm0_dpf1_p4_ihires_dshres_genlock(void) last_bpl_pix = pix0; } shiftbpl4(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_lores(); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } internal_pixel_cnt += 1; internal_pixel_cnt += 1; uae_u8 pix2 = 0; @@ -8109,6 +10752,41 @@ static void lts_ecs_fm0_dpf1_p4_ihires_dshres_genlock(void) uae_u8 pix3 = pix2; uae_u8 gpix3 = gpix2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + uae_u32 sv1 = sv0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + gpix1 = get_genlock_transparency(spix1); + + } + } + uae_u32 sv2 = sv0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } + uae_u32 sv3 = sv0; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + gpix3 = get_genlock_transparency(spix3); + + } + } uae_u32 t0 = 0; if (!extblank) { t0 = dpix_val0; @@ -8186,43 +10864,11 @@ static void lts_ecs_fm0_dpf1_p4_ihires_dshres_genlock(void) denise_cck++; } } -static void lts_ecs_fm0_dpf1_p4_ihires_dshres_filtered_genlock(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb0_p4_ihires_dshres_genlock(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb0_p4_ihires_dshres_filtered_genlock(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb1_p4_ihires_dshres_genlock(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb1_p4_ihires_dshres_filtered_genlock(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham0_p4_ihires_dshres_genlock(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham0_p4_ihires_dshres_filtered_genlock(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham1_p4_ihires_dshres_genlock(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham1_p4_ihires_dshres_filtered_genlock(void) +static void lts_ecs_fm0_dpf1_p4_ihires_dshres_spr_filtered_genlock(void) { lts_null(); } -static void lts_ecs_fm0_n0_p4_ihires_dshres_spr_genlock(void) +static void lts_ecs_fm0_ehb0_p4_ihires_dshres_spr_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -8233,29 +10879,12 @@ static void lts_ecs_fm0_n0_p4_ihires_dshres_spr_genlock(void) } int cnt = denise_hcounter << 2; if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl4(); - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0]; - gpix0 = get_genlock_transparency(pix0); - } - last_bpl_pix = pix0; - } - shiftbpl4(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_lores(); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } } internal_pixel_cnt += 1; internal_pixel_cnt += 1; @@ -8265,59 +10894,16 @@ static void lts_ecs_fm0_n0_p4_ihires_dshres_spr_genlock(void) if (!denise_blank_active) { gpix2 = get_genlock_transparency_border(); dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = getbpl4(); - clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2]; - gpix2 = get_genlock_transparency(pix2); - } - last_bpl_pix = pix2; - } - shiftbpl4(); - internal_pixel_cnt += 1; - internal_pixel_cnt += 1; - uae_u32 dpix_val1 = dpix_val0; - uae_u8 pix1 = pix0; - uae_u8 gpix1 = gpix0; - uae_u32 dpix_val3 = dpix_val2; - uae_u8 pix3 = pix2; - uae_u8 gpix3 = gpix2; - if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - gpix0 = get_genlock_transparency(spix0); - - } - } - uae_u32 sv1 = sv0; - if (sv1) { - uae_u32 spix1 = denise_render_sprites2(pix1, sv1); - if (spix1) { - dpix_val1 = denise_colors.acolors[spix1]; - gpix1 = get_genlock_transparency(spix1); - - } - } - uae_u32 sv2 = sv0; - if (sv2) { - uae_u32 spix2 = denise_render_sprites2(pix2, sv2); - if (spix2) { - dpix_val2 = denise_colors.acolors[spix2]; - gpix2 = get_genlock_transparency(spix2); - - } - } - uae_u32 sv3 = sv0; - if (sv3) { - uae_u32 spix3 = denise_render_sprites2(pix3, sv3); - if (spix3) { - dpix_val3 = denise_colors.acolors[spix3]; - gpix3 = get_genlock_transparency(spix3); - - } - } + } + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + uae_u8 gpix1 = gpix0; + uae_u32 dpix_val3 = dpix_val2; + uae_u8 pix3 = pix2; + uae_u8 gpix3 = gpix2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { uae_u32 t0 = 0; if (!extblank) { t0 = dpix_val0; @@ -8367,9 +10953,6 @@ static void lts_ecs_fm0_n0_p4_ihires_dshres_spr_genlock(void) *buf2++ = t3; *gbuf++ = gpix3; } - if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { - copybpl4(); - } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER *debug_dma_dhpos_odd = denise_hcounter; @@ -8392,11 +10975,11 @@ static void lts_ecs_fm0_n0_p4_ihires_dshres_spr_genlock(void) denise_cck++; } } -static void lts_ecs_fm0_n0_p4_ihires_dshres_spr_filtered_genlock(void) +static void lts_ecs_fm0_ehb0_p4_ihires_dshres_spr_filtered_genlock(void) { lts_null(); } -static void lts_ecs_fm0_n1_p4_ihires_dshres_spr_genlock(void) +static void lts_ecs_fm0_ehb1_p4_ihires_dshres_spr_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -8407,29 +10990,12 @@ static void lts_ecs_fm0_n1_p4_ihires_dshres_spr_genlock(void) } int cnt = denise_hcounter << 2; if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl4(); - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0]; - gpix0 = get_genlock_transparency(pix0); - } - last_bpl_pix = pix0; - } - shiftbpl4(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_lores(); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } } internal_pixel_cnt += 1; internal_pixel_cnt += 1; @@ -8439,15 +11005,7 @@ static void lts_ecs_fm0_n1_p4_ihires_dshres_spr_genlock(void) if (!denise_blank_active) { gpix2 = get_genlock_transparency_border(); dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = getbpl4(); - clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2]; - gpix2 = get_genlock_transparency(pix2); - } - last_bpl_pix = pix2; } - shiftbpl4(); internal_pixel_cnt += 1; internal_pixel_cnt += 1; uae_u32 dpix_val1 = dpix_val0; @@ -8457,41 +11015,6 @@ static void lts_ecs_fm0_n1_p4_ihires_dshres_spr_genlock(void) uae_u8 pix3 = pix2; uae_u8 gpix3 = gpix2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - gpix0 = get_genlock_transparency(spix0); - - } - } - uae_u32 sv1 = sv0; - if (sv1) { - uae_u32 spix1 = denise_render_sprites2(pix1, sv1); - if (spix1) { - dpix_val1 = denise_colors.acolors[spix1]; - gpix1 = get_genlock_transparency(spix1); - - } - } - uae_u32 sv2 = sv0; - if (sv2) { - uae_u32 spix2 = denise_render_sprites2(pix2, sv2); - if (spix2) { - dpix_val2 = denise_colors.acolors[spix2]; - gpix2 = get_genlock_transparency(spix2); - - } - } - uae_u32 sv3 = sv0; - if (sv3) { - uae_u32 spix3 = denise_render_sprites2(pix3, sv3); - if (spix3) { - dpix_val3 = denise_colors.acolors[spix3]; - gpix3 = get_genlock_transparency(spix3); - - } - } uae_u32 t0 = 0; if (!extblank) { t0 = dpix_val0; @@ -8541,12 +11064,6 @@ static void lts_ecs_fm0_n1_p4_ihires_dshres_spr_genlock(void) *buf2++ = t3; *gbuf++ = gpix3; } - if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { - copybpl4e(); - } - if (bpldat_copy[1] && (denise_hcounter_cmp & 7) == bplcon1_shift[1]) { - copybpl4o(); - } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER *debug_dma_dhpos_odd = denise_hcounter; @@ -8569,11 +11086,11 @@ static void lts_ecs_fm0_n1_p4_ihires_dshres_spr_genlock(void) denise_cck++; } } -static void lts_ecs_fm0_n1_p4_ihires_dshres_spr_filtered_genlock(void) +static void lts_ecs_fm0_ehb1_p4_ihires_dshres_spr_filtered_genlock(void) { lts_null(); } -static void lts_ecs_fm0_dpf0_p4_ihires_dshres_spr_genlock(void) +static void lts_ecs_fm0_ham0_p4_ihires_dshres_spr_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -8584,30 +11101,12 @@ static void lts_ecs_fm0_dpf0_p4_ihires_dshres_spr_genlock(void) } int cnt = denise_hcounter << 2; if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl4(); - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - dpix_val0 = denise_colors.acolors[val0]; - gpix0 = get_genlock_transparency(dpf_lookup[pix0]); - } - last_bpl_pix = pix0; - } - shiftbpl4(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_lores(); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } } internal_pixel_cnt += 1; internal_pixel_cnt += 1; @@ -8617,16 +11116,7 @@ static void lts_ecs_fm0_dpf0_p4_ihires_dshres_spr_genlock(void) if (!denise_blank_active) { gpix2 = get_genlock_transparency_border(); dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = getbpl4(); - clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - dpix_val2 = denise_colors.acolors[val2]; - gpix2 = get_genlock_transparency(dpf_lookup[pix2]); - } - last_bpl_pix = pix2; } - shiftbpl4(); internal_pixel_cnt += 1; internal_pixel_cnt += 1; uae_u32 dpix_val1 = dpix_val0; @@ -8636,41 +11126,6 @@ static void lts_ecs_fm0_dpf0_p4_ihires_dshres_spr_genlock(void) uae_u8 pix3 = pix2; uae_u8 gpix3 = gpix2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - gpix0 = get_genlock_transparency(spix0); - - } - } - uae_u32 sv1 = sv0; - if (sv1) { - uae_u32 spix1 = denise_render_sprites2(pix1, sv1); - if (spix1) { - dpix_val1 = denise_colors.acolors[spix1]; - gpix1 = get_genlock_transparency(spix1); - - } - } - uae_u32 sv2 = sv0; - if (sv2) { - uae_u32 spix2 = denise_render_sprites2(pix2, sv2); - if (spix2) { - dpix_val2 = denise_colors.acolors[spix2]; - gpix2 = get_genlock_transparency(spix2); - - } - } - uae_u32 sv3 = sv0; - if (sv3) { - uae_u32 spix3 = denise_render_sprites2(pix3, sv3); - if (spix3) { - dpix_val3 = denise_colors.acolors[spix3]; - gpix3 = get_genlock_transparency(spix3); - - } - } uae_u32 t0 = 0; if (!extblank) { t0 = dpix_val0; @@ -8720,9 +11175,6 @@ static void lts_ecs_fm0_dpf0_p4_ihires_dshres_spr_genlock(void) *buf2++ = t3; *gbuf++ = gpix3; } - if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { - copybpl4(); - } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER *debug_dma_dhpos_odd = denise_hcounter; @@ -8745,11 +11197,11 @@ static void lts_ecs_fm0_dpf0_p4_ihires_dshres_spr_genlock(void) denise_cck++; } } -static void lts_ecs_fm0_dpf0_p4_ihires_dshres_spr_filtered_genlock(void) +static void lts_ecs_fm0_ham0_p4_ihires_dshres_spr_filtered_genlock(void) { lts_null(); } -static void lts_ecs_fm0_dpf1_p4_ihires_dshres_spr_genlock(void) +static void lts_ecs_fm0_ham1_p4_ihires_dshres_spr_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -8760,30 +11212,12 @@ static void lts_ecs_fm0_dpf1_p4_ihires_dshres_spr_genlock(void) } int cnt = denise_hcounter << 2; if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl4(); - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - dpix_val0 = denise_colors.acolors[val0]; - gpix0 = get_genlock_transparency(dpf_lookup[pix0]); - } - last_bpl_pix = pix0; - } - shiftbpl4(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_lores(); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } } internal_pixel_cnt += 1; internal_pixel_cnt += 1; @@ -8793,16 +11227,7 @@ static void lts_ecs_fm0_dpf1_p4_ihires_dshres_spr_genlock(void) if (!denise_blank_active) { gpix2 = get_genlock_transparency_border(); dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = getbpl4(); - clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - dpix_val2 = denise_colors.acolors[val2]; - gpix2 = get_genlock_transparency(dpf_lookup[pix2]); - } - last_bpl_pix = pix2; } - shiftbpl4(); internal_pixel_cnt += 1; internal_pixel_cnt += 1; uae_u32 dpix_val1 = dpix_val0; @@ -8812,41 +11237,6 @@ static void lts_ecs_fm0_dpf1_p4_ihires_dshres_spr_genlock(void) uae_u8 pix3 = pix2; uae_u8 gpix3 = gpix2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - gpix0 = get_genlock_transparency(spix0); - - } - } - uae_u32 sv1 = sv0; - if (sv1) { - uae_u32 spix1 = denise_render_sprites2(pix1, sv1); - if (spix1) { - dpix_val1 = denise_colors.acolors[spix1]; - gpix1 = get_genlock_transparency(spix1); - - } - } - uae_u32 sv2 = sv0; - if (sv2) { - uae_u32 spix2 = denise_render_sprites2(pix2, sv2); - if (spix2) { - dpix_val2 = denise_colors.acolors[spix2]; - gpix2 = get_genlock_transparency(spix2); - - } - } - uae_u32 sv3 = sv0; - if (sv3) { - uae_u32 spix3 = denise_render_sprites2(pix3, sv3); - if (spix3) { - dpix_val3 = denise_colors.acolors[spix3]; - gpix3 = get_genlock_transparency(spix3); - - } - } uae_u32 t0 = 0; if (!extblank) { t0 = dpix_val0; @@ -8896,12 +11286,6 @@ static void lts_ecs_fm0_dpf1_p4_ihires_dshres_spr_genlock(void) *buf2++ = t3; *gbuf++ = gpix3; } - if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { - copybpl4e(); - } - if (bpldat_copy[1] && (denise_hcounter_cmp & 7) == bplcon1_shift[1]) { - copybpl4o(); - } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER *debug_dma_dhpos_odd = denise_hcounter; @@ -8924,38 +11308,6 @@ static void lts_ecs_fm0_dpf1_p4_ihires_dshres_spr_genlock(void) denise_cck++; } } -static void lts_ecs_fm0_dpf1_p4_ihires_dshres_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb0_p4_ihires_dshres_spr_genlock(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb0_p4_ihires_dshres_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb1_p4_ihires_dshres_spr_genlock(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb1_p4_ihires_dshres_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham0_p4_ihires_dshres_spr_genlock(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham0_p4_ihires_dshres_spr_filtered_genlock(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham1_p4_ihires_dshres_spr_genlock(void) -{ - lts_null(); -} static void lts_ecs_fm0_ham1_p4_ihires_dshres_spr_filtered_genlock(void) { lts_null(); diff --git a/linetoscr_ocs_ecs_ntsc.cpp b/linetoscr_ocs_ecs_ntsc.cpp index 6e24d7c9..d5f710db 100644 --- a/linetoscr_ocs_ecs_ntsc.cpp +++ b/linetoscr_ocs_ecs_ntsc.cpp @@ -281,38 +281,6 @@ static void lts_ecs_fm0_dpf1_p2_ilores_dlores_ntsc_filtered(void) lts_null(); } static void lts_ecs_fm0_ehb0_p2_ilores_dlores_ntsc(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb0_p2_ilores_dlores_ntsc_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb1_p2_ilores_dlores_ntsc(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb1_p2_ilores_dlores_ntsc_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham0_p2_ilores_dlores_ntsc(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham0_p2_ilores_dlores_ntsc_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham1_p2_ilores_dlores_ntsc(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham1_p2_ilores_dlores_ntsc_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_n0_p4_ilores_dlores_ntsc(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -327,14 +295,7 @@ static void lts_ecs_fm0_n0_p4_ilores_dlores_ntsc(void) uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl4(); - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0]; - } - last_bpl_pix = pix0; } - shiftbpl4(); internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; @@ -350,9 +311,6 @@ static void lts_ecs_fm0_n0_p4_ilores_dlores_ntsc(void) *buf1++ = t0; *buf2++ = t0; } - if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl4(); - } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER *debug_dma_dhpos_odd = denise_hcounter; @@ -375,11 +333,11 @@ static void lts_ecs_fm0_n0_p4_ilores_dlores_ntsc(void) denise_cck++; } } -static void lts_ecs_fm0_n0_p4_ilores_dlores_ntsc_filtered(void) +static void lts_ecs_fm0_ehb0_p2_ilores_dlores_ntsc_filtered(void) { lts_null(); } -static void lts_ecs_fm0_n1_p4_ilores_dlores_ntsc(void) +static void lts_ecs_fm0_ehb1_p2_ilores_dlores_ntsc(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -394,14 +352,7 @@ static void lts_ecs_fm0_n1_p4_ilores_dlores_ntsc(void) uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl4(); - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0]; - } - last_bpl_pix = pix0; } - shiftbpl4(); internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; @@ -417,12 +368,6 @@ static void lts_ecs_fm0_n1_p4_ilores_dlores_ntsc(void) *buf1++ = t0; *buf2++ = t0; } - if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl4e(); - } - if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) { - copybpl4o(); - } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER *debug_dma_dhpos_odd = denise_hcounter; @@ -445,11 +390,11 @@ static void lts_ecs_fm0_n1_p4_ilores_dlores_ntsc(void) denise_cck++; } } -static void lts_ecs_fm0_n1_p4_ilores_dlores_ntsc_filtered(void) +static void lts_ecs_fm0_ehb1_p2_ilores_dlores_ntsc_filtered(void) { lts_null(); } -static void lts_ecs_fm0_dpf0_p4_ilores_dlores_ntsc(void) +static void lts_ecs_fm0_ham0_p2_ilores_dlores_ntsc(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -464,15 +409,7 @@ static void lts_ecs_fm0_dpf0_p4_ilores_dlores_ntsc(void) uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl4(); - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; } - shiftbpl4(); internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; @@ -488,9 +425,6 @@ static void lts_ecs_fm0_dpf0_p4_ilores_dlores_ntsc(void) *buf1++ = t0; *buf2++ = t0; } - if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl4(); - } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER *debug_dma_dhpos_odd = denise_hcounter; @@ -513,11 +447,11 @@ static void lts_ecs_fm0_dpf0_p4_ilores_dlores_ntsc(void) denise_cck++; } } -static void lts_ecs_fm0_dpf0_p4_ilores_dlores_ntsc_filtered(void) +static void lts_ecs_fm0_ham0_p2_ilores_dlores_ntsc_filtered(void) { lts_null(); } -static void lts_ecs_fm0_dpf1_p4_ilores_dlores_ntsc(void) +static void lts_ecs_fm0_ham1_p2_ilores_dlores_ntsc(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -532,15 +466,7 @@ static void lts_ecs_fm0_dpf1_p4_ilores_dlores_ntsc(void) uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl4(); - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; } - shiftbpl4(); internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; @@ -556,12 +482,6 @@ static void lts_ecs_fm0_dpf1_p4_ilores_dlores_ntsc(void) *buf1++ = t0; *buf2++ = t0; } - if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl4e(); - } - if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) { - copybpl4o(); - } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER *debug_dma_dhpos_odd = denise_hcounter; @@ -584,43 +504,11 @@ static void lts_ecs_fm0_dpf1_p4_ilores_dlores_ntsc(void) denise_cck++; } } -static void lts_ecs_fm0_dpf1_p4_ilores_dlores_ntsc_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb0_p4_ilores_dlores_ntsc(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb0_p4_ilores_dlores_ntsc_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb1_p4_ilores_dlores_ntsc(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb1_p4_ilores_dlores_ntsc_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham0_p4_ilores_dlores_ntsc(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham0_p4_ilores_dlores_ntsc_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham1_p4_ilores_dlores_ntsc(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham1_p4_ilores_dlores_ntsc_filtered(void) +static void lts_ecs_fm0_ham1_p2_ilores_dlores_ntsc_filtered(void) { lts_null(); } -static void lts_ecs_fm0_n0_p5_ilores_dlores_ntsc(void) +static void lts_ecs_fm0_n0_p4_ilores_dlores_ntsc(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -636,16 +524,13 @@ static void lts_ecs_fm0_n0_p5_ilores_dlores_ntsc(void) if (!denise_blank_active) { dpix_val0 = bordercolor; if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl5(); + pix0 = getbpl4(); clxdat |= bplcoltable[pix0]; - if (decode_specials) { - pix0 = decode_denise_specials(pix0); - } dpix_val0 = denise_colors.acolors[pix0]; } last_bpl_pix = pix0; } - shiftbpl5(); + shiftbpl4(); internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; @@ -662,7 +547,7 @@ static void lts_ecs_fm0_n0_p5_ilores_dlores_ntsc(void) *buf2++ = t0; } if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl5(); + copybpl4(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -686,11 +571,11 @@ static void lts_ecs_fm0_n0_p5_ilores_dlores_ntsc(void) denise_cck++; } } -static void lts_ecs_fm0_n0_p5_ilores_dlores_ntsc_filtered(void) +static void lts_ecs_fm0_n0_p4_ilores_dlores_ntsc_filtered(void) { lts_null(); } -static void lts_ecs_fm0_n1_p5_ilores_dlores_ntsc(void) +static void lts_ecs_fm0_n1_p4_ilores_dlores_ntsc(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -706,16 +591,13 @@ static void lts_ecs_fm0_n1_p5_ilores_dlores_ntsc(void) if (!denise_blank_active) { dpix_val0 = bordercolor; if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl5(); + pix0 = getbpl4(); clxdat |= bplcoltable[pix0]; - if (decode_specials) { - pix0 = decode_denise_specials(pix0); - } dpix_val0 = denise_colors.acolors[pix0]; } last_bpl_pix = pix0; } - shiftbpl5(); + shiftbpl4(); internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; @@ -732,10 +614,10 @@ static void lts_ecs_fm0_n1_p5_ilores_dlores_ntsc(void) *buf2++ = t0; } if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl5e(); + copybpl4e(); } if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) { - copybpl5o(); + copybpl4o(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -759,11 +641,11 @@ static void lts_ecs_fm0_n1_p5_ilores_dlores_ntsc(void) denise_cck++; } } -static void lts_ecs_fm0_n1_p5_ilores_dlores_ntsc_filtered(void) +static void lts_ecs_fm0_n1_p4_ilores_dlores_ntsc_filtered(void) { lts_null(); } -static void lts_ecs_fm0_dpf0_p5_ilores_dlores_ntsc(void) +static void lts_ecs_fm0_dpf0_p4_ilores_dlores_ntsc(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -779,17 +661,14 @@ static void lts_ecs_fm0_dpf0_p5_ilores_dlores_ntsc(void) if (!denise_blank_active) { dpix_val0 = bordercolor; if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl5(); + pix0 = getbpl4(); clxdat |= bplcoltable[pix0]; - if (decode_specials) { - pix0 = decode_denise_specials(pix0); - } uae_u8 val0 = dpf_lookup[pix0]; dpix_val0 = denise_colors.acolors[val0]; } last_bpl_pix = pix0; } - shiftbpl5(); + shiftbpl4(); internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; @@ -806,7 +685,7 @@ static void lts_ecs_fm0_dpf0_p5_ilores_dlores_ntsc(void) *buf2++ = t0; } if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl5(); + copybpl4(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -830,11 +709,11 @@ static void lts_ecs_fm0_dpf0_p5_ilores_dlores_ntsc(void) denise_cck++; } } -static void lts_ecs_fm0_dpf0_p5_ilores_dlores_ntsc_filtered(void) +static void lts_ecs_fm0_dpf0_p4_ilores_dlores_ntsc_filtered(void) { lts_null(); } -static void lts_ecs_fm0_dpf1_p5_ilores_dlores_ntsc(void) +static void lts_ecs_fm0_dpf1_p4_ilores_dlores_ntsc(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -850,17 +729,14 @@ static void lts_ecs_fm0_dpf1_p5_ilores_dlores_ntsc(void) if (!denise_blank_active) { dpix_val0 = bordercolor; if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl5(); + pix0 = getbpl4(); clxdat |= bplcoltable[pix0]; - if (decode_specials) { - pix0 = decode_denise_specials(pix0); - } uae_u8 val0 = dpf_lookup[pix0]; dpix_val0 = denise_colors.acolors[val0]; } last_bpl_pix = pix0; } - shiftbpl5(); + shiftbpl4(); internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; @@ -877,10 +753,10 @@ static void lts_ecs_fm0_dpf1_p5_ilores_dlores_ntsc(void) *buf2++ = t0; } if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl5e(); + copybpl4e(); } if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) { - copybpl5o(); + copybpl4o(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -904,27 +780,11 @@ static void lts_ecs_fm0_dpf1_p5_ilores_dlores_ntsc(void) denise_cck++; } } -static void lts_ecs_fm0_dpf1_p5_ilores_dlores_ntsc_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb0_p5_ilores_dlores_ntsc(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb0_p5_ilores_dlores_ntsc_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb1_p5_ilores_dlores_ntsc(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb1_p5_ilores_dlores_ntsc_filtered(void) +static void lts_ecs_fm0_dpf1_p4_ilores_dlores_ntsc_filtered(void) { lts_null(); } -static void lts_ecs_fm0_ham0_p5_ilores_dlores_ntsc(void) +static void lts_ecs_fm0_ehb0_p4_ilores_dlores_ntsc(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -939,17 +799,7 @@ static void lts_ecs_fm0_ham0_p5_ilores_dlores_ntsc(void) uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl5(); - clxdat |= bplcoltable[pix0]; - if (decode_specials) { - pix0 = decode_denise_specials(pix0); - } - dpix_val0 = decode_ham_pixel(pix0); - } - last_bpl_pix = pix0; } - shiftbpl5(); internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; @@ -965,9 +815,6 @@ static void lts_ecs_fm0_ham0_p5_ilores_dlores_ntsc(void) *buf1++ = t0; *buf2++ = t0; } - if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl5(); - } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER *debug_dma_dhpos_odd = denise_hcounter; @@ -990,11 +837,11 @@ static void lts_ecs_fm0_ham0_p5_ilores_dlores_ntsc(void) denise_cck++; } } -static void lts_ecs_fm0_ham0_p5_ilores_dlores_ntsc_filtered(void) +static void lts_ecs_fm0_ehb0_p4_ilores_dlores_ntsc_filtered(void) { lts_null(); } -static void lts_ecs_fm0_ham1_p5_ilores_dlores_ntsc(void) +static void lts_ecs_fm0_ehb1_p4_ilores_dlores_ntsc(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -1009,17 +856,7 @@ static void lts_ecs_fm0_ham1_p5_ilores_dlores_ntsc(void) uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl5(); - clxdat |= bplcoltable[pix0]; - if (decode_specials) { - pix0 = decode_denise_specials(pix0); - } - dpix_val0 = decode_ham_pixel(pix0); - } - last_bpl_pix = pix0; } - shiftbpl5(); internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; @@ -1035,12 +872,6 @@ static void lts_ecs_fm0_ham1_p5_ilores_dlores_ntsc(void) *buf1++ = t0; *buf2++ = t0; } - if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl5e(); - } - if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) { - copybpl5o(); - } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER *debug_dma_dhpos_odd = denise_hcounter; @@ -1063,11 +894,11 @@ static void lts_ecs_fm0_ham1_p5_ilores_dlores_ntsc(void) denise_cck++; } } -static void lts_ecs_fm0_ham1_p5_ilores_dlores_ntsc_filtered(void) +static void lts_ecs_fm0_ehb1_p4_ilores_dlores_ntsc_filtered(void) { lts_null(); } -static void lts_ecs_fm0_n0_p6_ilores_dlores_ntsc(void) +static void lts_ecs_fm0_ham0_p4_ilores_dlores_ntsc(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -1082,17 +913,7 @@ static void lts_ecs_fm0_n0_p6_ilores_dlores_ntsc(void) uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl6(); - clxdat |= bplcoltable[pix0]; - if (decode_specials) { - pix0 = decode_denise_specials(pix0); - } - dpix_val0 = denise_colors.acolors[pix0]; - } - last_bpl_pix = pix0; } - shiftbpl6(); internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; @@ -1108,9 +929,6 @@ static void lts_ecs_fm0_n0_p6_ilores_dlores_ntsc(void) *buf1++ = t0; *buf2++ = t0; } - if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl6(); - } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER *debug_dma_dhpos_odd = denise_hcounter; @@ -1133,11 +951,11 @@ static void lts_ecs_fm0_n0_p6_ilores_dlores_ntsc(void) denise_cck++; } } -static void lts_ecs_fm0_n0_p6_ilores_dlores_ntsc_filtered(void) +static void lts_ecs_fm0_ham0_p4_ilores_dlores_ntsc_filtered(void) { lts_null(); } -static void lts_ecs_fm0_n1_p6_ilores_dlores_ntsc(void) +static void lts_ecs_fm0_ham1_p4_ilores_dlores_ntsc(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -1152,17 +970,7 @@ static void lts_ecs_fm0_n1_p6_ilores_dlores_ntsc(void) uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl6(); - clxdat |= bplcoltable[pix0]; - if (decode_specials) { - pix0 = decode_denise_specials(pix0); - } - dpix_val0 = denise_colors.acolors[pix0]; - } - last_bpl_pix = pix0; } - shiftbpl6(); internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; @@ -1178,12 +986,6 @@ static void lts_ecs_fm0_n1_p6_ilores_dlores_ntsc(void) *buf1++ = t0; *buf2++ = t0; } - if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl6e(); - } - if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) { - copybpl6o(); - } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER *debug_dma_dhpos_odd = denise_hcounter; @@ -1206,11 +1008,11 @@ static void lts_ecs_fm0_n1_p6_ilores_dlores_ntsc(void) denise_cck++; } } -static void lts_ecs_fm0_n1_p6_ilores_dlores_ntsc_filtered(void) +static void lts_ecs_fm0_ham1_p4_ilores_dlores_ntsc_filtered(void) { lts_null(); } -static void lts_ecs_fm0_dpf0_p6_ilores_dlores_ntsc(void) +static void lts_ecs_fm0_n0_p5_ilores_dlores_ntsc(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -1226,17 +1028,16 @@ static void lts_ecs_fm0_dpf0_p6_ilores_dlores_ntsc(void) if (!denise_blank_active) { dpix_val0 = bordercolor; if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl6(); + pix0 = getbpl5(); clxdat |= bplcoltable[pix0]; if (decode_specials) { pix0 = decode_denise_specials(pix0); } - uae_u8 val0 = dpf_lookup[pix0]; - dpix_val0 = denise_colors.acolors[val0]; + dpix_val0 = denise_colors.acolors[pix0]; } last_bpl_pix = pix0; } - shiftbpl6(); + shiftbpl5(); internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; @@ -1253,7 +1054,7 @@ static void lts_ecs_fm0_dpf0_p6_ilores_dlores_ntsc(void) *buf2++ = t0; } if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl6(); + copybpl5(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -1277,11 +1078,11 @@ static void lts_ecs_fm0_dpf0_p6_ilores_dlores_ntsc(void) denise_cck++; } } -static void lts_ecs_fm0_dpf0_p6_ilores_dlores_ntsc_filtered(void) +static void lts_ecs_fm0_n0_p5_ilores_dlores_ntsc_filtered(void) { lts_null(); } -static void lts_ecs_fm0_dpf1_p6_ilores_dlores_ntsc(void) +static void lts_ecs_fm0_n1_p5_ilores_dlores_ntsc(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -1297,17 +1098,16 @@ static void lts_ecs_fm0_dpf1_p6_ilores_dlores_ntsc(void) if (!denise_blank_active) { dpix_val0 = bordercolor; if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl6(); + pix0 = getbpl5(); clxdat |= bplcoltable[pix0]; if (decode_specials) { pix0 = decode_denise_specials(pix0); } - uae_u8 val0 = dpf_lookup[pix0]; - dpix_val0 = denise_colors.acolors[val0]; + dpix_val0 = denise_colors.acolors[pix0]; } last_bpl_pix = pix0; } - shiftbpl6(); + shiftbpl5(); internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; @@ -1324,10 +1124,10 @@ static void lts_ecs_fm0_dpf1_p6_ilores_dlores_ntsc(void) *buf2++ = t0; } if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl6e(); + copybpl5e(); } if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) { - copybpl6o(); + copybpl5o(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -1351,11 +1151,11 @@ static void lts_ecs_fm0_dpf1_p6_ilores_dlores_ntsc(void) denise_cck++; } } -static void lts_ecs_fm0_dpf1_p6_ilores_dlores_ntsc_filtered(void) +static void lts_ecs_fm0_n1_p5_ilores_dlores_ntsc_filtered(void) { lts_null(); } -static void lts_ecs_fm0_ehb0_p6_ilores_dlores_ntsc(void) +static void lts_ecs_fm0_dpf0_p5_ilores_dlores_ntsc(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -1371,21 +1171,17 @@ static void lts_ecs_fm0_ehb0_p6_ilores_dlores_ntsc(void) if (!denise_blank_active) { dpix_val0 = bordercolor; if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl6(); + pix0 = getbpl5(); clxdat |= bplcoltable[pix0]; if (decode_specials) { pix0 = decode_denise_specials(pix0); } - pix0 &= bplehb_mask; - if (pix0 <= 31) { - dpix_val0 = denise_colors.acolors[pix0]; - } else { - dpix_val0 = p_xcolors[(denise_colors.color_regs_ecs[pix0 - 32] >> 1) & 0x777]; - } + uae_u8 val0 = dpf_lookup[pix0]; + dpix_val0 = denise_colors.acolors[val0]; } last_bpl_pix = pix0; } - shiftbpl6(); + shiftbpl5(); internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; @@ -1402,7 +1198,7 @@ static void lts_ecs_fm0_ehb0_p6_ilores_dlores_ntsc(void) *buf2++ = t0; } if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl6(); + copybpl5(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -1426,11 +1222,11 @@ static void lts_ecs_fm0_ehb0_p6_ilores_dlores_ntsc(void) denise_cck++; } } -static void lts_ecs_fm0_ehb0_p6_ilores_dlores_ntsc_filtered(void) +static void lts_ecs_fm0_dpf0_p5_ilores_dlores_ntsc_filtered(void) { lts_null(); } -static void lts_ecs_fm0_ehb1_p6_ilores_dlores_ntsc(void) +static void lts_ecs_fm0_dpf1_p5_ilores_dlores_ntsc(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -1446,21 +1242,17 @@ static void lts_ecs_fm0_ehb1_p6_ilores_dlores_ntsc(void) if (!denise_blank_active) { dpix_val0 = bordercolor; if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl6(); + pix0 = getbpl5(); clxdat |= bplcoltable[pix0]; if (decode_specials) { pix0 = decode_denise_specials(pix0); } - pix0 &= bplehb_mask; - if (pix0 <= 31) { - dpix_val0 = denise_colors.acolors[pix0]; - } else { - dpix_val0 = p_xcolors[(denise_colors.color_regs_ecs[pix0 - 32] >> 1) & 0x777]; - } + uae_u8 val0 = dpf_lookup[pix0]; + dpix_val0 = denise_colors.acolors[val0]; } last_bpl_pix = pix0; } - shiftbpl6(); + shiftbpl5(); internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; @@ -1477,10 +1269,10 @@ static void lts_ecs_fm0_ehb1_p6_ilores_dlores_ntsc(void) *buf2++ = t0; } if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl6e(); + copybpl5e(); } if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) { - copybpl6o(); + copybpl5o(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -1504,11 +1296,11 @@ static void lts_ecs_fm0_ehb1_p6_ilores_dlores_ntsc(void) denise_cck++; } } -static void lts_ecs_fm0_ehb1_p6_ilores_dlores_ntsc_filtered(void) +static void lts_ecs_fm0_dpf1_p5_ilores_dlores_ntsc_filtered(void) { lts_null(); } -static void lts_ecs_fm0_ham0_p6_ilores_dlores_ntsc(void) +static void lts_ecs_fm0_ehb0_p5_ilores_dlores_ntsc(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -1523,17 +1315,7 @@ static void lts_ecs_fm0_ham0_p6_ilores_dlores_ntsc(void) uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl6(); - clxdat |= bplcoltable[pix0]; - if (decode_specials) { - pix0 = decode_denise_specials(pix0); - } - dpix_val0 = decode_ham_pixel(pix0); - } - last_bpl_pix = pix0; } - shiftbpl6(); internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; @@ -1549,9 +1331,6 @@ static void lts_ecs_fm0_ham0_p6_ilores_dlores_ntsc(void) *buf1++ = t0; *buf2++ = t0; } - if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl6(); - } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER *debug_dma_dhpos_odd = denise_hcounter; @@ -1574,11 +1353,11 @@ static void lts_ecs_fm0_ham0_p6_ilores_dlores_ntsc(void) denise_cck++; } } -static void lts_ecs_fm0_ham0_p6_ilores_dlores_ntsc_filtered(void) +static void lts_ecs_fm0_ehb0_p5_ilores_dlores_ntsc_filtered(void) { lts_null(); } -static void lts_ecs_fm0_ham1_p6_ilores_dlores_ntsc(void) +static void lts_ecs_fm0_ehb1_p5_ilores_dlores_ntsc(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -1593,17 +1372,7 @@ static void lts_ecs_fm0_ham1_p6_ilores_dlores_ntsc(void) uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl6(); - clxdat |= bplcoltable[pix0]; - if (decode_specials) { - pix0 = decode_denise_specials(pix0); - } - dpix_val0 = decode_ham_pixel(pix0); - } - last_bpl_pix = pix0; } - shiftbpl6(); internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; @@ -1619,12 +1388,6 @@ static void lts_ecs_fm0_ham1_p6_ilores_dlores_ntsc(void) *buf1++ = t0; *buf2++ = t0; } - if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl6e(); - } - if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) { - copybpl6o(); - } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER *debug_dma_dhpos_odd = denise_hcounter; @@ -1647,11 +1410,11 @@ static void lts_ecs_fm0_ham1_p6_ilores_dlores_ntsc(void) denise_cck++; } } -static void lts_ecs_fm0_ham1_p6_ilores_dlores_ntsc_filtered(void) +static void lts_ecs_fm0_ehb1_p5_ilores_dlores_ntsc_filtered(void) { lts_null(); } -static void lts_ecs_fm0_n0_p2_ilores_dlores_spr_ntsc(void) +static void lts_ecs_fm0_ham0_p5_ilores_dlores_ntsc(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -1662,35 +1425,23 @@ static void lts_ecs_fm0_n0_p2_ilores_dlores_spr_ntsc(void) } int cnt = denise_hcounter << 2; if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl2(); + pix0 = getbpl5(); clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0]; + if (decode_specials) { + pix0 = decode_denise_specials(pix0); + } + dpix_val0 = decode_ham_pixel(pix0); } last_bpl_pix = pix0; } - shiftbpl2(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_lores(); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } - } + shiftbpl5(); internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - } - } dtbuf[h][0] = dpix_val0; uae_u32 t0 = 0; if (!extblank) { @@ -1705,7 +1456,7 @@ static void lts_ecs_fm0_n0_p2_ilores_dlores_spr_ntsc(void) *buf2++ = t0; } if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl2(); + copybpl5(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -1729,11 +1480,11 @@ static void lts_ecs_fm0_n0_p2_ilores_dlores_spr_ntsc(void) denise_cck++; } } -static void lts_ecs_fm0_n0_p2_ilores_dlores_spr_ntsc_filtered(void) +static void lts_ecs_fm0_ham0_p5_ilores_dlores_ntsc_filtered(void) { lts_null(); } -static void lts_ecs_fm0_n1_p2_ilores_dlores_spr_ntsc(void) +static void lts_ecs_fm0_ham1_p5_ilores_dlores_ntsc(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -1744,35 +1495,23 @@ static void lts_ecs_fm0_n1_p2_ilores_dlores_spr_ntsc(void) } int cnt = denise_hcounter << 2; if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl2(); + pix0 = getbpl5(); clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0]; + if (decode_specials) { + pix0 = decode_denise_specials(pix0); + } + dpix_val0 = decode_ham_pixel(pix0); } last_bpl_pix = pix0; } - shiftbpl2(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_lores(); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } - } + shiftbpl5(); internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - } - } dtbuf[h][0] = dpix_val0; uae_u32 t0 = 0; if (!extblank) { @@ -1787,10 +1526,10 @@ static void lts_ecs_fm0_n1_p2_ilores_dlores_spr_ntsc(void) *buf2++ = t0; } if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl2e(); + copybpl5e(); } if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) { - copybpl2o(); + copybpl5o(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -1814,11 +1553,11 @@ static void lts_ecs_fm0_n1_p2_ilores_dlores_spr_ntsc(void) denise_cck++; } } -static void lts_ecs_fm0_n1_p2_ilores_dlores_spr_ntsc_filtered(void) +static void lts_ecs_fm0_ham1_p5_ilores_dlores_ntsc_filtered(void) { lts_null(); } -static void lts_ecs_fm0_dpf0_p2_ilores_dlores_spr_ntsc(void) +static void lts_ecs_fm0_n0_p6_ilores_dlores_ntsc(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -1829,36 +1568,23 @@ static void lts_ecs_fm0_dpf0_p2_ilores_dlores_spr_ntsc(void) } int cnt = denise_hcounter << 2; if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl2(); + pix0 = getbpl6(); clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - dpix_val0 = denise_colors.acolors[val0]; + if (decode_specials) { + pix0 = decode_denise_specials(pix0); + } + dpix_val0 = denise_colors.acolors[pix0]; } last_bpl_pix = pix0; } - shiftbpl2(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_lores(); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } - } + shiftbpl6(); internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - } - } dtbuf[h][0] = dpix_val0; uae_u32 t0 = 0; if (!extblank) { @@ -1873,7 +1599,7 @@ static void lts_ecs_fm0_dpf0_p2_ilores_dlores_spr_ntsc(void) *buf2++ = t0; } if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl2(); + copybpl6(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -1897,11 +1623,11 @@ static void lts_ecs_fm0_dpf0_p2_ilores_dlores_spr_ntsc(void) denise_cck++; } } -static void lts_ecs_fm0_dpf0_p2_ilores_dlores_spr_ntsc_filtered(void) +static void lts_ecs_fm0_n0_p6_ilores_dlores_ntsc_filtered(void) { lts_null(); } -static void lts_ecs_fm0_dpf1_p2_ilores_dlores_spr_ntsc(void) +static void lts_ecs_fm0_n1_p6_ilores_dlores_ntsc(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -1912,36 +1638,23 @@ static void lts_ecs_fm0_dpf1_p2_ilores_dlores_spr_ntsc(void) } int cnt = denise_hcounter << 2; if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl2(); + pix0 = getbpl6(); clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - dpix_val0 = denise_colors.acolors[val0]; + if (decode_specials) { + pix0 = decode_denise_specials(pix0); + } + dpix_val0 = denise_colors.acolors[pix0]; } last_bpl_pix = pix0; } - shiftbpl2(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_lores(); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } - } + shiftbpl6(); internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - } - } dtbuf[h][0] = dpix_val0; uae_u32 t0 = 0; if (!extblank) { @@ -1956,10 +1669,10 @@ static void lts_ecs_fm0_dpf1_p2_ilores_dlores_spr_ntsc(void) *buf2++ = t0; } if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl2e(); + copybpl6e(); } if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) { - copybpl2o(); + copybpl6o(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -1983,43 +1696,11 @@ static void lts_ecs_fm0_dpf1_p2_ilores_dlores_spr_ntsc(void) denise_cck++; } } -static void lts_ecs_fm0_dpf1_p2_ilores_dlores_spr_ntsc_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb0_p2_ilores_dlores_spr_ntsc(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb0_p2_ilores_dlores_spr_ntsc_filtered(void) +static void lts_ecs_fm0_n1_p6_ilores_dlores_ntsc_filtered(void) { lts_null(); } -static void lts_ecs_fm0_ehb1_p2_ilores_dlores_spr_ntsc(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb1_p2_ilores_dlores_spr_ntsc_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham0_p2_ilores_dlores_spr_ntsc(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham0_p2_ilores_dlores_spr_ntsc_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham1_p2_ilores_dlores_spr_ntsc(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham1_p2_ilores_dlores_spr_ntsc_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_n0_p4_ilores_dlores_spr_ntsc(void) +static void lts_ecs_fm0_dpf0_p6_ilores_dlores_ntsc(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -2030,35 +1711,24 @@ static void lts_ecs_fm0_n0_p4_ilores_dlores_spr_ntsc(void) } int cnt = denise_hcounter << 2; if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl4(); + pix0 = getbpl6(); clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0]; + if (decode_specials) { + pix0 = decode_denise_specials(pix0); + } + uae_u8 val0 = dpf_lookup[pix0]; + dpix_val0 = denise_colors.acolors[val0]; } last_bpl_pix = pix0; } - shiftbpl4(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_lores(); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } - } + shiftbpl6(); internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - } - } dtbuf[h][0] = dpix_val0; uae_u32 t0 = 0; if (!extblank) { @@ -2073,7 +1743,7 @@ static void lts_ecs_fm0_n0_p4_ilores_dlores_spr_ntsc(void) *buf2++ = t0; } if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl4(); + copybpl6(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -2097,11 +1767,11 @@ static void lts_ecs_fm0_n0_p4_ilores_dlores_spr_ntsc(void) denise_cck++; } } -static void lts_ecs_fm0_n0_p4_ilores_dlores_spr_ntsc_filtered(void) +static void lts_ecs_fm0_dpf0_p6_ilores_dlores_ntsc_filtered(void) { lts_null(); } -static void lts_ecs_fm0_n1_p4_ilores_dlores_spr_ntsc(void) +static void lts_ecs_fm0_dpf1_p6_ilores_dlores_ntsc(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -2112,35 +1782,24 @@ static void lts_ecs_fm0_n1_p4_ilores_dlores_spr_ntsc(void) } int cnt = denise_hcounter << 2; if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl4(); + pix0 = getbpl6(); clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0]; + if (decode_specials) { + pix0 = decode_denise_specials(pix0); + } + uae_u8 val0 = dpf_lookup[pix0]; + dpix_val0 = denise_colors.acolors[val0]; } last_bpl_pix = pix0; } - shiftbpl4(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_lores(); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } - } + shiftbpl6(); internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - } - } dtbuf[h][0] = dpix_val0; uae_u32 t0 = 0; if (!extblank) { @@ -2155,10 +1814,10 @@ static void lts_ecs_fm0_n1_p4_ilores_dlores_spr_ntsc(void) *buf2++ = t0; } if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl4e(); + copybpl6e(); } if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) { - copybpl4o(); + copybpl6o(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -2182,11 +1841,11 @@ static void lts_ecs_fm0_n1_p4_ilores_dlores_spr_ntsc(void) denise_cck++; } } -static void lts_ecs_fm0_n1_p4_ilores_dlores_spr_ntsc_filtered(void) +static void lts_ecs_fm0_dpf1_p6_ilores_dlores_ntsc_filtered(void) { lts_null(); } -static void lts_ecs_fm0_dpf0_p4_ilores_dlores_spr_ntsc(void) +static void lts_ecs_fm0_ehb0_p6_ilores_dlores_ntsc(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -2197,36 +1856,28 @@ static void lts_ecs_fm0_dpf0_p4_ilores_dlores_spr_ntsc(void) } int cnt = denise_hcounter << 2; if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl4(); + pix0 = getbpl6(); clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - dpix_val0 = denise_colors.acolors[val0]; + if (decode_specials) { + pix0 = decode_denise_specials(pix0); + } + pix0 &= bplehb_mask; + if (pix0 <= 31) { + dpix_val0 = denise_colors.acolors[pix0]; + } else { + dpix_val0 = p_xcolors[(denise_colors.color_regs_ecs[pix0 - 32] >> 1) & 0x777]; + } } last_bpl_pix = pix0; } - shiftbpl4(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_lores(); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } - } + shiftbpl6(); internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - } - } dtbuf[h][0] = dpix_val0; uae_u32 t0 = 0; if (!extblank) { @@ -2241,7 +1892,7 @@ static void lts_ecs_fm0_dpf0_p4_ilores_dlores_spr_ntsc(void) *buf2++ = t0; } if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl4(); + copybpl6(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -2265,11 +1916,11 @@ static void lts_ecs_fm0_dpf0_p4_ilores_dlores_spr_ntsc(void) denise_cck++; } } -static void lts_ecs_fm0_dpf0_p4_ilores_dlores_spr_ntsc_filtered(void) +static void lts_ecs_fm0_ehb0_p6_ilores_dlores_ntsc_filtered(void) { lts_null(); } -static void lts_ecs_fm0_dpf1_p4_ilores_dlores_spr_ntsc(void) +static void lts_ecs_fm0_ehb1_p6_ilores_dlores_ntsc(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -2280,36 +1931,28 @@ static void lts_ecs_fm0_dpf1_p4_ilores_dlores_spr_ntsc(void) } int cnt = denise_hcounter << 2; if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl4(); + pix0 = getbpl6(); clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - dpix_val0 = denise_colors.acolors[val0]; + if (decode_specials) { + pix0 = decode_denise_specials(pix0); + } + pix0 &= bplehb_mask; + if (pix0 <= 31) { + dpix_val0 = denise_colors.acolors[pix0]; + } else { + dpix_val0 = p_xcolors[(denise_colors.color_regs_ecs[pix0 - 32] >> 1) & 0x777]; + } } last_bpl_pix = pix0; } - shiftbpl4(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_lores(); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } - } + shiftbpl6(); internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - } - } dtbuf[h][0] = dpix_val0; uae_u32 t0 = 0; if (!extblank) { @@ -2324,10 +1967,10 @@ static void lts_ecs_fm0_dpf1_p4_ilores_dlores_spr_ntsc(void) *buf2++ = t0; } if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl4e(); + copybpl6e(); } if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) { - copybpl4o(); + copybpl6o(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -2351,43 +1994,11 @@ static void lts_ecs_fm0_dpf1_p4_ilores_dlores_spr_ntsc(void) denise_cck++; } } -static void lts_ecs_fm0_dpf1_p4_ilores_dlores_spr_ntsc_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb0_p4_ilores_dlores_spr_ntsc(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb0_p4_ilores_dlores_spr_ntsc_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb1_p4_ilores_dlores_spr_ntsc(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb1_p4_ilores_dlores_spr_ntsc_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham0_p4_ilores_dlores_spr_ntsc(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham0_p4_ilores_dlores_spr_ntsc_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham1_p4_ilores_dlores_spr_ntsc(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham1_p4_ilores_dlores_spr_ntsc_filtered(void) +static void lts_ecs_fm0_ehb1_p6_ilores_dlores_ntsc_filtered(void) { lts_null(); } -static void lts_ecs_fm0_n0_p5_ilores_dlores_spr_ntsc(void) +static void lts_ecs_fm0_ham0_p6_ilores_dlores_ntsc(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -2398,38 +2009,23 @@ static void lts_ecs_fm0_n0_p5_ilores_dlores_spr_ntsc(void) } int cnt = denise_hcounter << 2; if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl5(); + pix0 = getbpl6(); clxdat |= bplcoltable[pix0]; if (decode_specials) { pix0 = decode_denise_specials(pix0); } - dpix_val0 = denise_colors.acolors[pix0]; + dpix_val0 = decode_ham_pixel(pix0); } last_bpl_pix = pix0; } - shiftbpl5(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_lores(); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } - } + shiftbpl6(); internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - } - } dtbuf[h][0] = dpix_val0; uae_u32 t0 = 0; if (!extblank) { @@ -2444,7 +2040,7 @@ static void lts_ecs_fm0_n0_p5_ilores_dlores_spr_ntsc(void) *buf2++ = t0; } if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl5(); + copybpl6(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -2468,11 +2064,11 @@ static void lts_ecs_fm0_n0_p5_ilores_dlores_spr_ntsc(void) denise_cck++; } } -static void lts_ecs_fm0_n0_p5_ilores_dlores_spr_ntsc_filtered(void) +static void lts_ecs_fm0_ham0_p6_ilores_dlores_ntsc_filtered(void) { lts_null(); } -static void lts_ecs_fm0_n1_p5_ilores_dlores_spr_ntsc(void) +static void lts_ecs_fm0_ham1_p6_ilores_dlores_ntsc(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -2483,38 +2079,23 @@ static void lts_ecs_fm0_n1_p5_ilores_dlores_spr_ntsc(void) } int cnt = denise_hcounter << 2; if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl5(); + pix0 = getbpl6(); clxdat |= bplcoltable[pix0]; if (decode_specials) { pix0 = decode_denise_specials(pix0); } - dpix_val0 = denise_colors.acolors[pix0]; + dpix_val0 = decode_ham_pixel(pix0); } last_bpl_pix = pix0; } - shiftbpl5(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_lores(); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } - } + shiftbpl6(); internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - } - } dtbuf[h][0] = dpix_val0; uae_u32 t0 = 0; if (!extblank) { @@ -2529,10 +2110,10 @@ static void lts_ecs_fm0_n1_p5_ilores_dlores_spr_ntsc(void) *buf2++ = t0; } if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl5e(); + copybpl6e(); } if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) { - copybpl5o(); + copybpl6o(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -2556,11 +2137,11 @@ static void lts_ecs_fm0_n1_p5_ilores_dlores_spr_ntsc(void) denise_cck++; } } -static void lts_ecs_fm0_n1_p5_ilores_dlores_spr_ntsc_filtered(void) +static void lts_ecs_fm0_ham1_p6_ilores_dlores_ntsc_filtered(void) { lts_null(); } -static void lts_ecs_fm0_dpf0_p5_ilores_dlores_spr_ntsc(void) +static void lts_ecs_fm0_n0_p2_ilores_dlores_spr_ntsc(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -2577,17 +2158,13 @@ static void lts_ecs_fm0_dpf0_p5_ilores_dlores_spr_ntsc(void) if (!denise_blank_active) { dpix_val0 = bordercolor; if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl5(); + pix0 = getbpl2(); clxdat |= bplcoltable[pix0]; - if (decode_specials) { - pix0 = decode_denise_specials(pix0); - } - uae_u8 val0 = dpf_lookup[pix0]; - dpix_val0 = denise_colors.acolors[val0]; + dpix_val0 = denise_colors.acolors[pix0]; } last_bpl_pix = pix0; } - shiftbpl5(); + shiftbpl2(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -2618,7 +2195,7 @@ static void lts_ecs_fm0_dpf0_p5_ilores_dlores_spr_ntsc(void) *buf2++ = t0; } if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl5(); + copybpl2(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -2642,11 +2219,11 @@ static void lts_ecs_fm0_dpf0_p5_ilores_dlores_spr_ntsc(void) denise_cck++; } } -static void lts_ecs_fm0_dpf0_p5_ilores_dlores_spr_ntsc_filtered(void) +static void lts_ecs_fm0_n0_p2_ilores_dlores_spr_ntsc_filtered(void) { lts_null(); } -static void lts_ecs_fm0_dpf1_p5_ilores_dlores_spr_ntsc(void) +static void lts_ecs_fm0_n1_p2_ilores_dlores_spr_ntsc(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -2663,17 +2240,13 @@ static void lts_ecs_fm0_dpf1_p5_ilores_dlores_spr_ntsc(void) if (!denise_blank_active) { dpix_val0 = bordercolor; if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl5(); + pix0 = getbpl2(); clxdat |= bplcoltable[pix0]; - if (decode_specials) { - pix0 = decode_denise_specials(pix0); - } - uae_u8 val0 = dpf_lookup[pix0]; - dpix_val0 = denise_colors.acolors[val0]; + dpix_val0 = denise_colors.acolors[pix0]; } last_bpl_pix = pix0; } - shiftbpl5(); + shiftbpl2(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -2704,10 +2277,10 @@ static void lts_ecs_fm0_dpf1_p5_ilores_dlores_spr_ntsc(void) *buf2++ = t0; } if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl5e(); + copybpl2e(); } if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) { - copybpl5o(); + copybpl2o(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -2731,27 +2304,11 @@ static void lts_ecs_fm0_dpf1_p5_ilores_dlores_spr_ntsc(void) denise_cck++; } } -static void lts_ecs_fm0_dpf1_p5_ilores_dlores_spr_ntsc_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb0_p5_ilores_dlores_spr_ntsc(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb0_p5_ilores_dlores_spr_ntsc_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb1_p5_ilores_dlores_spr_ntsc(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb1_p5_ilores_dlores_spr_ntsc_filtered(void) +static void lts_ecs_fm0_n1_p2_ilores_dlores_spr_ntsc_filtered(void) { lts_null(); } -static void lts_ecs_fm0_ham0_p5_ilores_dlores_spr_ntsc(void) +static void lts_ecs_fm0_dpf0_p2_ilores_dlores_spr_ntsc(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -2768,16 +2325,14 @@ static void lts_ecs_fm0_ham0_p5_ilores_dlores_spr_ntsc(void) if (!denise_blank_active) { dpix_val0 = bordercolor; if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl5(); + pix0 = getbpl2(); clxdat |= bplcoltable[pix0]; - if (decode_specials) { - pix0 = decode_denise_specials(pix0); - } - dpix_val0 = decode_ham_pixel(pix0); + uae_u8 val0 = dpf_lookup[pix0]; + dpix_val0 = denise_colors.acolors[val0]; } last_bpl_pix = pix0; } - shiftbpl5(); + shiftbpl2(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -2808,7 +2363,7 @@ static void lts_ecs_fm0_ham0_p5_ilores_dlores_spr_ntsc(void) *buf2++ = t0; } if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl5(); + copybpl2(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -2832,11 +2387,11 @@ static void lts_ecs_fm0_ham0_p5_ilores_dlores_spr_ntsc(void) denise_cck++; } } -static void lts_ecs_fm0_ham0_p5_ilores_dlores_spr_ntsc_filtered(void) +static void lts_ecs_fm0_dpf0_p2_ilores_dlores_spr_ntsc_filtered(void) { lts_null(); } -static void lts_ecs_fm0_ham1_p5_ilores_dlores_spr_ntsc(void) +static void lts_ecs_fm0_dpf1_p2_ilores_dlores_spr_ntsc(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -2853,16 +2408,14 @@ static void lts_ecs_fm0_ham1_p5_ilores_dlores_spr_ntsc(void) if (!denise_blank_active) { dpix_val0 = bordercolor; if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl5(); + pix0 = getbpl2(); clxdat |= bplcoltable[pix0]; - if (decode_specials) { - pix0 = decode_denise_specials(pix0); - } - dpix_val0 = decode_ham_pixel(pix0); + uae_u8 val0 = dpf_lookup[pix0]; + dpix_val0 = denise_colors.acolors[val0]; } last_bpl_pix = pix0; } - shiftbpl5(); + shiftbpl2(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -2893,10 +2446,10 @@ static void lts_ecs_fm0_ham1_p5_ilores_dlores_spr_ntsc(void) *buf2++ = t0; } if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl5e(); + copybpl2e(); } if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) { - copybpl5o(); + copybpl2o(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -2920,11 +2473,11 @@ static void lts_ecs_fm0_ham1_p5_ilores_dlores_spr_ntsc(void) denise_cck++; } } -static void lts_ecs_fm0_ham1_p5_ilores_dlores_spr_ntsc_filtered(void) +static void lts_ecs_fm0_dpf1_p2_ilores_dlores_spr_ntsc_filtered(void) { lts_null(); } -static void lts_ecs_fm0_n0_p6_ilores_dlores_spr_ntsc(void) +static void lts_ecs_fm0_ehb0_p2_ilores_dlores_spr_ntsc(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -2935,38 +2488,13 @@ static void lts_ecs_fm0_n0_p6_ilores_dlores_spr_ntsc(void) } int cnt = denise_hcounter << 2; if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl6(); - clxdat |= bplcoltable[pix0]; - if (decode_specials) { - pix0 = decode_denise_specials(pix0); - } - dpix_val0 = denise_colors.acolors[pix0]; - } - last_bpl_pix = pix0; - } - shiftbpl6(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_lores(); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } } internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - } - } dtbuf[h][0] = dpix_val0; uae_u32 t0 = 0; if (!extblank) { @@ -2980,9 +2508,6 @@ static void lts_ecs_fm0_n0_p6_ilores_dlores_spr_ntsc(void) *buf1++ = t0; *buf2++ = t0; } - if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl6(); - } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER *debug_dma_dhpos_odd = denise_hcounter; @@ -3005,11 +2530,11 @@ static void lts_ecs_fm0_n0_p6_ilores_dlores_spr_ntsc(void) denise_cck++; } } -static void lts_ecs_fm0_n0_p6_ilores_dlores_spr_ntsc_filtered(void) +static void lts_ecs_fm0_ehb0_p2_ilores_dlores_spr_ntsc_filtered(void) { lts_null(); } -static void lts_ecs_fm0_n1_p6_ilores_dlores_spr_ntsc(void) +static void lts_ecs_fm0_ehb1_p2_ilores_dlores_spr_ntsc(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -3020,38 +2545,13 @@ static void lts_ecs_fm0_n1_p6_ilores_dlores_spr_ntsc(void) } int cnt = denise_hcounter << 2; if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl6(); - clxdat |= bplcoltable[pix0]; - if (decode_specials) { - pix0 = decode_denise_specials(pix0); - } - dpix_val0 = denise_colors.acolors[pix0]; - } - last_bpl_pix = pix0; - } - shiftbpl6(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_lores(); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } } internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - } - } dtbuf[h][0] = dpix_val0; uae_u32 t0 = 0; if (!extblank) { @@ -3065,12 +2565,6 @@ static void lts_ecs_fm0_n1_p6_ilores_dlores_spr_ntsc(void) *buf1++ = t0; *buf2++ = t0; } - if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl6e(); - } - if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) { - copybpl6o(); - } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER *debug_dma_dhpos_odd = denise_hcounter; @@ -3093,11 +2587,11 @@ static void lts_ecs_fm0_n1_p6_ilores_dlores_spr_ntsc(void) denise_cck++; } } -static void lts_ecs_fm0_n1_p6_ilores_dlores_spr_ntsc_filtered(void) +static void lts_ecs_fm0_ehb1_p2_ilores_dlores_spr_ntsc_filtered(void) { lts_null(); } -static void lts_ecs_fm0_dpf0_p6_ilores_dlores_spr_ntsc(void) +static void lts_ecs_fm0_ham0_p2_ilores_dlores_spr_ntsc(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -3108,39 +2602,13 @@ static void lts_ecs_fm0_dpf0_p6_ilores_dlores_spr_ntsc(void) } int cnt = denise_hcounter << 2; if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl6(); - clxdat |= bplcoltable[pix0]; - if (decode_specials) { - pix0 = decode_denise_specials(pix0); - } - uae_u8 val0 = dpf_lookup[pix0]; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; - } - shiftbpl6(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_lores(); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } } internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - } - } dtbuf[h][0] = dpix_val0; uae_u32 t0 = 0; if (!extblank) { @@ -3154,9 +2622,6 @@ static void lts_ecs_fm0_dpf0_p6_ilores_dlores_spr_ntsc(void) *buf1++ = t0; *buf2++ = t0; } - if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl6(); - } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER *debug_dma_dhpos_odd = denise_hcounter; @@ -3179,11 +2644,11 @@ static void lts_ecs_fm0_dpf0_p6_ilores_dlores_spr_ntsc(void) denise_cck++; } } -static void lts_ecs_fm0_dpf0_p6_ilores_dlores_spr_ntsc_filtered(void) +static void lts_ecs_fm0_ham0_p2_ilores_dlores_spr_ntsc_filtered(void) { lts_null(); } -static void lts_ecs_fm0_dpf1_p6_ilores_dlores_spr_ntsc(void) +static void lts_ecs_fm0_ham1_p2_ilores_dlores_spr_ntsc(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -3194,39 +2659,13 @@ static void lts_ecs_fm0_dpf1_p6_ilores_dlores_spr_ntsc(void) } int cnt = denise_hcounter << 2; if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl6(); - clxdat |= bplcoltable[pix0]; - if (decode_specials) { - pix0 = decode_denise_specials(pix0); - } - uae_u8 val0 = dpf_lookup[pix0]; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; - } - shiftbpl6(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_lores(); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } } internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - } - } dtbuf[h][0] = dpix_val0; uae_u32 t0 = 0; if (!extblank) { @@ -3240,12 +2679,6 @@ static void lts_ecs_fm0_dpf1_p6_ilores_dlores_spr_ntsc(void) *buf1++ = t0; *buf2++ = t0; } - if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl6e(); - } - if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) { - copybpl6o(); - } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER *debug_dma_dhpos_odd = denise_hcounter; @@ -3268,11 +2701,11 @@ static void lts_ecs_fm0_dpf1_p6_ilores_dlores_spr_ntsc(void) denise_cck++; } } -static void lts_ecs_fm0_dpf1_p6_ilores_dlores_spr_ntsc_filtered(void) +static void lts_ecs_fm0_ham1_p2_ilores_dlores_spr_ntsc_filtered(void) { lts_null(); } -static void lts_ecs_fm0_ehb0_p6_ilores_dlores_spr_ntsc(void) +static void lts_ecs_fm0_n0_p4_ilores_dlores_spr_ntsc(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -3289,21 +2722,13 @@ static void lts_ecs_fm0_ehb0_p6_ilores_dlores_spr_ntsc(void) if (!denise_blank_active) { dpix_val0 = bordercolor; if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl6(); + pix0 = getbpl4(); clxdat |= bplcoltable[pix0]; - if (decode_specials) { - pix0 = decode_denise_specials(pix0); - } - pix0 &= bplehb_mask; - if (pix0 <= 31) { - dpix_val0 = denise_colors.acolors[pix0]; - } else { - dpix_val0 = p_xcolors[(denise_colors.color_regs_ecs[pix0 - 32] >> 1) & 0x777]; - } + dpix_val0 = denise_colors.acolors[pix0]; } last_bpl_pix = pix0; } - shiftbpl6(); + shiftbpl4(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -3334,7 +2759,7 @@ static void lts_ecs_fm0_ehb0_p6_ilores_dlores_spr_ntsc(void) *buf2++ = t0; } if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl6(); + copybpl4(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -3358,11 +2783,11 @@ static void lts_ecs_fm0_ehb0_p6_ilores_dlores_spr_ntsc(void) denise_cck++; } } -static void lts_ecs_fm0_ehb0_p6_ilores_dlores_spr_ntsc_filtered(void) +static void lts_ecs_fm0_n0_p4_ilores_dlores_spr_ntsc_filtered(void) { lts_null(); } -static void lts_ecs_fm0_ehb1_p6_ilores_dlores_spr_ntsc(void) +static void lts_ecs_fm0_n1_p4_ilores_dlores_spr_ntsc(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -3379,21 +2804,13 @@ static void lts_ecs_fm0_ehb1_p6_ilores_dlores_spr_ntsc(void) if (!denise_blank_active) { dpix_val0 = bordercolor; if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl6(); + pix0 = getbpl4(); clxdat |= bplcoltable[pix0]; - if (decode_specials) { - pix0 = decode_denise_specials(pix0); - } - pix0 &= bplehb_mask; - if (pix0 <= 31) { - dpix_val0 = denise_colors.acolors[pix0]; - } else { - dpix_val0 = p_xcolors[(denise_colors.color_regs_ecs[pix0 - 32] >> 1) & 0x777]; - } + dpix_val0 = denise_colors.acolors[pix0]; } last_bpl_pix = pix0; } - shiftbpl6(); + shiftbpl4(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -3424,10 +2841,10 @@ static void lts_ecs_fm0_ehb1_p6_ilores_dlores_spr_ntsc(void) *buf2++ = t0; } if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl6e(); + copybpl4e(); } if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) { - copybpl6o(); + copybpl4o(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -3451,11 +2868,11 @@ static void lts_ecs_fm0_ehb1_p6_ilores_dlores_spr_ntsc(void) denise_cck++; } } -static void lts_ecs_fm0_ehb1_p6_ilores_dlores_spr_ntsc_filtered(void) +static void lts_ecs_fm0_n1_p4_ilores_dlores_spr_ntsc_filtered(void) { lts_null(); } -static void lts_ecs_fm0_ham0_p6_ilores_dlores_spr_ntsc(void) +static void lts_ecs_fm0_dpf0_p4_ilores_dlores_spr_ntsc(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -3472,16 +2889,14 @@ static void lts_ecs_fm0_ham0_p6_ilores_dlores_spr_ntsc(void) if (!denise_blank_active) { dpix_val0 = bordercolor; if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl6(); + pix0 = getbpl4(); clxdat |= bplcoltable[pix0]; - if (decode_specials) { - pix0 = decode_denise_specials(pix0); - } - dpix_val0 = decode_ham_pixel(pix0); + uae_u8 val0 = dpf_lookup[pix0]; + dpix_val0 = denise_colors.acolors[val0]; } last_bpl_pix = pix0; } - shiftbpl6(); + shiftbpl4(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -3512,7 +2927,7 @@ static void lts_ecs_fm0_ham0_p6_ilores_dlores_spr_ntsc(void) *buf2++ = t0; } if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl6(); + copybpl4(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -3536,11 +2951,11 @@ static void lts_ecs_fm0_ham0_p6_ilores_dlores_spr_ntsc(void) denise_cck++; } } -static void lts_ecs_fm0_ham0_p6_ilores_dlores_spr_ntsc_filtered(void) +static void lts_ecs_fm0_dpf0_p4_ilores_dlores_spr_ntsc_filtered(void) { lts_null(); } -static void lts_ecs_fm0_ham1_p6_ilores_dlores_spr_ntsc(void) +static void lts_ecs_fm0_dpf1_p4_ilores_dlores_spr_ntsc(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -3557,16 +2972,14 @@ static void lts_ecs_fm0_ham1_p6_ilores_dlores_spr_ntsc(void) if (!denise_blank_active) { dpix_val0 = bordercolor; if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl6(); + pix0 = getbpl4(); clxdat |= bplcoltable[pix0]; - if (decode_specials) { - pix0 = decode_denise_specials(pix0); - } - dpix_val0 = decode_ham_pixel(pix0); + uae_u8 val0 = dpf_lookup[pix0]; + dpix_val0 = denise_colors.acolors[val0]; } last_bpl_pix = pix0; } - shiftbpl6(); + shiftbpl4(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -3597,10 +3010,10 @@ static void lts_ecs_fm0_ham1_p6_ilores_dlores_spr_ntsc(void) *buf2++ = t0; } if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl6e(); + copybpl4e(); } if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) { - copybpl6o(); + copybpl4o(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -3624,11 +3037,11 @@ static void lts_ecs_fm0_ham1_p6_ilores_dlores_spr_ntsc(void) denise_cck++; } } -static void lts_ecs_fm0_ham1_p6_ilores_dlores_spr_ntsc_filtered(void) +static void lts_ecs_fm0_dpf1_p4_ilores_dlores_spr_ntsc_filtered(void) { lts_null(); } -static void lts_ecs_fm0_n0_p2_ihires_dlores_ntsc(void) +static void lts_ecs_fm0_ehb0_p4_ilores_dlores_spr_ntsc(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -3643,28 +3056,8 @@ static void lts_ecs_fm0_n0_p2_ihires_dlores_ntsc(void) uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl2(); - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0]; - } - last_bpl_pix = pix0; - } - shiftbpl2(); - internal_pixel_cnt += 2; - uae_u8 pix1 = 0; - uae_u32 dpix_val1 = BLANK_COLOR; - if (!denise_blank_active) { - dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = getbpl2(); - clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1]; - } - last_bpl_pix = pix1; } - shiftbpl2(); - internal_pixel_cnt += 2; + internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; uae_u32 t0 = 0; @@ -3679,9 +3072,6 @@ static void lts_ecs_fm0_n0_p2_ihires_dlores_ntsc(void) *buf1++ = t0; *buf2++ = t0; } - if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { - copybpl2(); - } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER *debug_dma_dhpos_odd = denise_hcounter; @@ -3704,7 +3094,11 @@ static void lts_ecs_fm0_n0_p2_ihires_dlores_ntsc(void) denise_cck++; } } -static void lts_ecs_fm0_n0_p2_ihires_dlores_ntsc_filtered(void) +static void lts_ecs_fm0_ehb0_p4_ilores_dlores_spr_ntsc_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_ehb1_p4_ilores_dlores_spr_ntsc(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -3719,30 +3113,9 @@ static void lts_ecs_fm0_n0_p2_ihires_dlores_ntsc_filtered(void) uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl2(); - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0]; - } - last_bpl_pix = pix0; - } - shiftbpl2(); - internal_pixel_cnt += 2; - uae_u8 pix1 = 0; - uae_u32 dpix_val1 = BLANK_COLOR; - if (!denise_blank_active) { - dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = getbpl2(); - clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1]; - } - last_bpl_pix = pix1; } - shiftbpl2(); - internal_pixel_cnt += 2; + internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - dpix_val0 = filter_pixel(dpix_val0, dpix_val1); dtbuf[h][0] = dpix_val0; uae_u32 t0 = 0; if (!extblank) { @@ -3756,9 +3129,6 @@ static void lts_ecs_fm0_n0_p2_ihires_dlores_ntsc_filtered(void) *buf1++ = t0; *buf2++ = t0; } - if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { - copybpl2(); - } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER *debug_dma_dhpos_odd = denise_hcounter; @@ -3781,7 +3151,11 @@ static void lts_ecs_fm0_n0_p2_ihires_dlores_ntsc_filtered(void) denise_cck++; } } -static void lts_ecs_fm0_n1_p2_ihires_dlores_ntsc(void) +static void lts_ecs_fm0_ehb1_p4_ilores_dlores_spr_ntsc_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_ham0_p4_ilores_dlores_spr_ntsc(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -3796,28 +3170,8 @@ static void lts_ecs_fm0_n1_p2_ihires_dlores_ntsc(void) uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl2(); - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0]; - } - last_bpl_pix = pix0; - } - shiftbpl2(); - internal_pixel_cnt += 2; - uae_u8 pix1 = 0; - uae_u32 dpix_val1 = BLANK_COLOR; - if (!denise_blank_active) { - dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = getbpl2(); - clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1]; - } - last_bpl_pix = pix1; } - shiftbpl2(); - internal_pixel_cnt += 2; + internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; uae_u32 t0 = 0; @@ -3832,12 +3186,6 @@ static void lts_ecs_fm0_n1_p2_ihires_dlores_ntsc(void) *buf1++ = t0; *buf2++ = t0; } - if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { - copybpl2e(); - } - if (bpldat_copy[1] && (denise_hcounter_cmp & 7) == bplcon1_shift[1]) { - copybpl2o(); - } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER *debug_dma_dhpos_odd = denise_hcounter; @@ -3860,7 +3208,11 @@ static void lts_ecs_fm0_n1_p2_ihires_dlores_ntsc(void) denise_cck++; } } -static void lts_ecs_fm0_n1_p2_ihires_dlores_ntsc_filtered(void) +static void lts_ecs_fm0_ham0_p4_ilores_dlores_spr_ntsc_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_ham1_p4_ilores_dlores_spr_ntsc(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -3875,30 +3227,9 @@ static void lts_ecs_fm0_n1_p2_ihires_dlores_ntsc_filtered(void) uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl2(); - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0]; - } - last_bpl_pix = pix0; - } - shiftbpl2(); - internal_pixel_cnt += 2; - uae_u8 pix1 = 0; - uae_u32 dpix_val1 = BLANK_COLOR; - if (!denise_blank_active) { - dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = getbpl2(); - clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1]; - } - last_bpl_pix = pix1; } - shiftbpl2(); - internal_pixel_cnt += 2; + internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - dpix_val0 = filter_pixel(dpix_val0, dpix_val1); dtbuf[h][0] = dpix_val0; uae_u32 t0 = 0; if (!extblank) { @@ -3912,12 +3243,6 @@ static void lts_ecs_fm0_n1_p2_ihires_dlores_ntsc_filtered(void) *buf1++ = t0; *buf2++ = t0; } - if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { - copybpl2e(); - } - if (bpldat_copy[1] && (denise_hcounter_cmp & 7) == bplcon1_shift[1]) { - copybpl2o(); - } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER *debug_dma_dhpos_odd = denise_hcounter; @@ -3940,7 +3265,11 @@ static void lts_ecs_fm0_n1_p2_ihires_dlores_ntsc_filtered(void) denise_cck++; } } -static void lts_ecs_fm0_dpf0_p2_ihires_dlores_ntsc(void) +static void lts_ecs_fm0_ham1_p4_ilores_dlores_spr_ntsc_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_n0_p5_ilores_dlores_spr_ntsc(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -3951,35 +3280,38 @@ static void lts_ecs_fm0_dpf0_p2_ihires_dlores_ntsc(void) } int cnt = denise_hcounter << 2; if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl2(); + pix0 = getbpl5(); clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - dpix_val0 = denise_colors.acolors[val0]; + if (decode_specials) { + pix0 = decode_denise_specials(pix0); + } + dpix_val0 = denise_colors.acolors[pix0]; } last_bpl_pix = pix0; } - shiftbpl2(); - internal_pixel_cnt += 2; - uae_u8 pix1 = 0; - uae_u32 dpix_val1 = BLANK_COLOR; - if (!denise_blank_active) { - dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = getbpl2(); - clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - dpix_val1 = denise_colors.acolors[val1]; + shiftbpl5(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_lores(); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; } - last_bpl_pix = pix1; } - shiftbpl2(); - internal_pixel_cnt += 2; + internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } dtbuf[h][0] = dpix_val0; uae_u32 t0 = 0; if (!extblank) { @@ -3993,8 +3325,8 @@ static void lts_ecs_fm0_dpf0_p2_ihires_dlores_ntsc(void) *buf1++ = t0; *buf2++ = t0; } - if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { - copybpl2(); + if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { + copybpl5(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -4018,7 +3350,11 @@ static void lts_ecs_fm0_dpf0_p2_ihires_dlores_ntsc(void) denise_cck++; } } -static void lts_ecs_fm0_dpf0_p2_ihires_dlores_ntsc_filtered(void) +static void lts_ecs_fm0_n0_p5_ilores_dlores_spr_ntsc_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_n1_p5_ilores_dlores_spr_ntsc(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -4029,36 +3365,38 @@ static void lts_ecs_fm0_dpf0_p2_ihires_dlores_ntsc_filtered(void) } int cnt = denise_hcounter << 2; if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl2(); + pix0 = getbpl5(); clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - dpix_val0 = denise_colors.acolors[val0]; + if (decode_specials) { + pix0 = decode_denise_specials(pix0); + } + dpix_val0 = denise_colors.acolors[pix0]; } last_bpl_pix = pix0; } - shiftbpl2(); - internal_pixel_cnt += 2; - uae_u8 pix1 = 0; - uae_u32 dpix_val1 = BLANK_COLOR; - if (!denise_blank_active) { - dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = getbpl2(); - clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - dpix_val1 = denise_colors.acolors[val1]; + shiftbpl5(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_lores(); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; } - last_bpl_pix = pix1; } - shiftbpl2(); - internal_pixel_cnt += 2; + internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } dtbuf[h][0] = dpix_val0; uae_u32 t0 = 0; if (!extblank) { @@ -4072,11 +3410,14 @@ static void lts_ecs_fm0_dpf0_p2_ihires_dlores_ntsc_filtered(void) *buf1++ = t0; *buf2++ = t0; } - if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { - copybpl2(); + if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { + copybpl5e(); } - sprites_hidden = sprites_hidden2; - #ifdef DEBUGGER + 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++; @@ -4097,7 +3438,11 @@ static void lts_ecs_fm0_dpf0_p2_ihires_dlores_ntsc_filtered(void) denise_cck++; } } -static void lts_ecs_fm0_dpf1_p2_ihires_dlores_ntsc(void) +static void lts_ecs_fm0_n1_p5_ilores_dlores_spr_ntsc_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_dpf0_p5_ilores_dlores_spr_ntsc(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -4108,35 +3453,39 @@ static void lts_ecs_fm0_dpf1_p2_ihires_dlores_ntsc(void) } int cnt = denise_hcounter << 2; if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl2(); + pix0 = getbpl5(); clxdat |= bplcoltable[pix0]; + if (decode_specials) { + pix0 = decode_denise_specials(pix0); + } uae_u8 val0 = dpf_lookup[pix0]; dpix_val0 = denise_colors.acolors[val0]; } last_bpl_pix = pix0; } - shiftbpl2(); - internal_pixel_cnt += 2; - uae_u8 pix1 = 0; - uae_u32 dpix_val1 = BLANK_COLOR; - if (!denise_blank_active) { - dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = getbpl2(); - clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - dpix_val1 = denise_colors.acolors[val1]; + shiftbpl5(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_lores(); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; } - last_bpl_pix = pix1; } - shiftbpl2(); - internal_pixel_cnt += 2; + internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } dtbuf[h][0] = dpix_val0; uae_u32 t0 = 0; if (!extblank) { @@ -4150,11 +3499,8 @@ static void lts_ecs_fm0_dpf1_p2_ihires_dlores_ntsc(void) *buf1++ = t0; *buf2++ = t0; } - if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { - copybpl2e(); - } - if (bpldat_copy[1] && (denise_hcounter_cmp & 7) == bplcon1_shift[1]) { - copybpl2o(); + if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { + copybpl5(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -4178,7 +3524,11 @@ static void lts_ecs_fm0_dpf1_p2_ihires_dlores_ntsc(void) denise_cck++; } } -static void lts_ecs_fm0_dpf1_p2_ihires_dlores_ntsc_filtered(void) +static void lts_ecs_fm0_dpf0_p5_ilores_dlores_spr_ntsc_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_dpf1_p5_ilores_dlores_spr_ntsc(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -4189,36 +3539,39 @@ static void lts_ecs_fm0_dpf1_p2_ihires_dlores_ntsc_filtered(void) } int cnt = denise_hcounter << 2; if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl2(); + pix0 = getbpl5(); clxdat |= bplcoltable[pix0]; + if (decode_specials) { + pix0 = decode_denise_specials(pix0); + } uae_u8 val0 = dpf_lookup[pix0]; dpix_val0 = denise_colors.acolors[val0]; } last_bpl_pix = pix0; } - shiftbpl2(); - internal_pixel_cnt += 2; - uae_u8 pix1 = 0; - uae_u32 dpix_val1 = BLANK_COLOR; - if (!denise_blank_active) { - dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = getbpl2(); - clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - dpix_val1 = denise_colors.acolors[val1]; + shiftbpl5(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_lores(); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; } - last_bpl_pix = pix1; } - shiftbpl2(); - internal_pixel_cnt += 2; + internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } dtbuf[h][0] = dpix_val0; uae_u32 t0 = 0; if (!extblank) { @@ -4232,11 +3585,11 @@ static void lts_ecs_fm0_dpf1_p2_ihires_dlores_ntsc_filtered(void) *buf1++ = t0; *buf2++ = t0; } - if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { - copybpl2e(); + if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { + copybpl5e(); } - if (bpldat_copy[1] && (denise_hcounter_cmp & 7) == bplcon1_shift[1]) { - copybpl2o(); + if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) { + copybpl5o(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -4260,39 +3613,11 @@ static void lts_ecs_fm0_dpf1_p2_ihires_dlores_ntsc_filtered(void) denise_cck++; } } -static void lts_ecs_fm0_ehb0_p2_ihires_dlores_ntsc(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb0_p2_ihires_dlores_ntsc_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb1_p2_ihires_dlores_ntsc(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb1_p2_ihires_dlores_ntsc_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham0_p2_ihires_dlores_ntsc(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham0_p2_ihires_dlores_ntsc_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham1_p2_ihires_dlores_ntsc(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham1_p2_ihires_dlores_ntsc_filtered(void) +static void lts_ecs_fm0_dpf1_p5_ilores_dlores_spr_ntsc_filtered(void) { lts_null(); } -static void lts_ecs_fm0_n0_p4_ihires_dlores_ntsc(void) +static void lts_ecs_fm0_ehb0_p5_ilores_dlores_spr_ntsc(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -4307,28 +3632,8 @@ static void lts_ecs_fm0_n0_p4_ihires_dlores_ntsc(void) uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl4(); - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0]; - } - last_bpl_pix = pix0; - } - shiftbpl4(); - internal_pixel_cnt += 2; - uae_u8 pix1 = 0; - uae_u32 dpix_val1 = BLANK_COLOR; - if (!denise_blank_active) { - dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = getbpl4(); - clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1]; - } - last_bpl_pix = pix1; } - shiftbpl4(); - internal_pixel_cnt += 2; + internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; uae_u32 t0 = 0; @@ -4343,9 +3648,6 @@ static void lts_ecs_fm0_n0_p4_ihires_dlores_ntsc(void) *buf1++ = t0; *buf2++ = t0; } - if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { - copybpl4(); - } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER *debug_dma_dhpos_odd = denise_hcounter; @@ -4368,7 +3670,11 @@ static void lts_ecs_fm0_n0_p4_ihires_dlores_ntsc(void) denise_cck++; } } -static void lts_ecs_fm0_n0_p4_ihires_dlores_ntsc_filtered(void) +static void lts_ecs_fm0_ehb0_p5_ilores_dlores_spr_ntsc_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_ehb1_p5_ilores_dlores_spr_ntsc(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -4383,30 +3689,9 @@ static void lts_ecs_fm0_n0_p4_ihires_dlores_ntsc_filtered(void) uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl4(); - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0]; - } - last_bpl_pix = pix0; - } - shiftbpl4(); - internal_pixel_cnt += 2; - uae_u8 pix1 = 0; - uae_u32 dpix_val1 = BLANK_COLOR; - if (!denise_blank_active) { - dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = getbpl4(); - clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1]; - } - last_bpl_pix = pix1; } - shiftbpl4(); - internal_pixel_cnt += 2; + internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - dpix_val0 = filter_pixel(dpix_val0, dpix_val1); dtbuf[h][0] = dpix_val0; uae_u32 t0 = 0; if (!extblank) { @@ -4420,9 +3705,6 @@ static void lts_ecs_fm0_n0_p4_ihires_dlores_ntsc_filtered(void) *buf1++ = t0; *buf2++ = t0; } - if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { - copybpl4(); - } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER *debug_dma_dhpos_odd = denise_hcounter; @@ -4445,7 +3727,11 @@ static void lts_ecs_fm0_n0_p4_ihires_dlores_ntsc_filtered(void) denise_cck++; } } -static void lts_ecs_fm0_n1_p4_ihires_dlores_ntsc(void) +static void lts_ecs_fm0_ehb1_p5_ilores_dlores_spr_ntsc_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_ham0_p5_ilores_dlores_spr_ntsc(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -4456,33 +3742,38 @@ static void lts_ecs_fm0_n1_p4_ihires_dlores_ntsc(void) } int cnt = denise_hcounter << 2; if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl4(); + pix0 = getbpl5(); clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0]; + if (decode_specials) { + pix0 = decode_denise_specials(pix0); + } + dpix_val0 = decode_ham_pixel(pix0); } last_bpl_pix = pix0; } - shiftbpl4(); - internal_pixel_cnt += 2; - uae_u8 pix1 = 0; - uae_u32 dpix_val1 = BLANK_COLOR; - if (!denise_blank_active) { - dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = getbpl4(); - clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1]; + shiftbpl5(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_lores(); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; } - last_bpl_pix = pix1; } - shiftbpl4(); - internal_pixel_cnt += 2; + internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } dtbuf[h][0] = dpix_val0; uae_u32 t0 = 0; if (!extblank) { @@ -4496,11 +3787,8 @@ static void lts_ecs_fm0_n1_p4_ihires_dlores_ntsc(void) *buf1++ = t0; *buf2++ = t0; } - if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { - copybpl4e(); - } - if (bpldat_copy[1] && (denise_hcounter_cmp & 7) == bplcon1_shift[1]) { - copybpl4o(); + if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { + copybpl5(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -4524,7 +3812,11 @@ static void lts_ecs_fm0_n1_p4_ihires_dlores_ntsc(void) denise_cck++; } } -static void lts_ecs_fm0_n1_p4_ihires_dlores_ntsc_filtered(void) +static void lts_ecs_fm0_ham0_p5_ilores_dlores_spr_ntsc_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_ham1_p5_ilores_dlores_spr_ntsc(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -4535,34 +3827,38 @@ static void lts_ecs_fm0_n1_p4_ihires_dlores_ntsc_filtered(void) } int cnt = denise_hcounter << 2; if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl4(); + pix0 = getbpl5(); clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0]; + if (decode_specials) { + pix0 = decode_denise_specials(pix0); + } + dpix_val0 = decode_ham_pixel(pix0); } last_bpl_pix = pix0; } - shiftbpl4(); - internal_pixel_cnt += 2; - uae_u8 pix1 = 0; - uae_u32 dpix_val1 = BLANK_COLOR; - if (!denise_blank_active) { - dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = getbpl4(); - clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1]; + shiftbpl5(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_lores(); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; } - last_bpl_pix = pix1; } - shiftbpl4(); - internal_pixel_cnt += 2; + internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } dtbuf[h][0] = dpix_val0; uae_u32 t0 = 0; if (!extblank) { @@ -4576,11 +3872,11 @@ static void lts_ecs_fm0_n1_p4_ihires_dlores_ntsc_filtered(void) *buf1++ = t0; *buf2++ = t0; } - if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { - copybpl4e(); + if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { + copybpl5e(); } - if (bpldat_copy[1] && (denise_hcounter_cmp & 7) == bplcon1_shift[1]) { - copybpl4o(); + if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) { + copybpl5o(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -4604,7 +3900,11 @@ static void lts_ecs_fm0_n1_p4_ihires_dlores_ntsc_filtered(void) denise_cck++; } } -static void lts_ecs_fm0_dpf0_p4_ihires_dlores_ntsc(void) +static void lts_ecs_fm0_ham1_p5_ilores_dlores_spr_ntsc_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_n0_p6_ilores_dlores_spr_ntsc(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -4615,35 +3915,38 @@ static void lts_ecs_fm0_dpf0_p4_ihires_dlores_ntsc(void) } int cnt = denise_hcounter << 2; if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl4(); + pix0 = getbpl6(); clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - dpix_val0 = denise_colors.acolors[val0]; + if (decode_specials) { + pix0 = decode_denise_specials(pix0); + } + dpix_val0 = denise_colors.acolors[pix0]; } last_bpl_pix = pix0; } - shiftbpl4(); - internal_pixel_cnt += 2; - uae_u8 pix1 = 0; - uae_u32 dpix_val1 = BLANK_COLOR; - if (!denise_blank_active) { - dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = getbpl4(); - clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - dpix_val1 = denise_colors.acolors[val1]; + shiftbpl6(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_lores(); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; } - last_bpl_pix = pix1; } - shiftbpl4(); - internal_pixel_cnt += 2; + internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } dtbuf[h][0] = dpix_val0; uae_u32 t0 = 0; if (!extblank) { @@ -4657,8 +3960,8 @@ static void lts_ecs_fm0_dpf0_p4_ihires_dlores_ntsc(void) *buf1++ = t0; *buf2++ = t0; } - if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { - copybpl4(); + if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { + copybpl6(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -4682,7 +3985,11 @@ static void lts_ecs_fm0_dpf0_p4_ihires_dlores_ntsc(void) denise_cck++; } } -static void lts_ecs_fm0_dpf0_p4_ihires_dlores_ntsc_filtered(void) +static void lts_ecs_fm0_n0_p6_ilores_dlores_spr_ntsc_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_n1_p6_ilores_dlores_spr_ntsc(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -4693,36 +4000,38 @@ static void lts_ecs_fm0_dpf0_p4_ihires_dlores_ntsc_filtered(void) } int cnt = denise_hcounter << 2; if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl4(); + pix0 = getbpl6(); clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - dpix_val0 = denise_colors.acolors[val0]; + if (decode_specials) { + pix0 = decode_denise_specials(pix0); + } + dpix_val0 = denise_colors.acolors[pix0]; } last_bpl_pix = pix0; } - shiftbpl4(); - internal_pixel_cnt += 2; - uae_u8 pix1 = 0; - uae_u32 dpix_val1 = BLANK_COLOR; - if (!denise_blank_active) { - dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = getbpl4(); - clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - dpix_val1 = denise_colors.acolors[val1]; + shiftbpl6(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_lores(); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; } - last_bpl_pix = pix1; } - shiftbpl4(); - internal_pixel_cnt += 2; + internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } dtbuf[h][0] = dpix_val0; uae_u32 t0 = 0; if (!extblank) { @@ -4736,8 +4045,11 @@ static void lts_ecs_fm0_dpf0_p4_ihires_dlores_ntsc_filtered(void) *buf1++ = t0; *buf2++ = t0; } - if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { - copybpl4(); + if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { + copybpl6e(); + } + if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) { + copybpl6o(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -4761,7 +4073,11 @@ static void lts_ecs_fm0_dpf0_p4_ihires_dlores_ntsc_filtered(void) denise_cck++; } } -static void lts_ecs_fm0_dpf1_p4_ihires_dlores_ntsc(void) +static void lts_ecs_fm0_n1_p6_ilores_dlores_spr_ntsc_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_dpf0_p6_ilores_dlores_spr_ntsc(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -4772,35 +4088,39 @@ static void lts_ecs_fm0_dpf1_p4_ihires_dlores_ntsc(void) } int cnt = denise_hcounter << 2; if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl4(); + pix0 = getbpl6(); clxdat |= bplcoltable[pix0]; + if (decode_specials) { + pix0 = decode_denise_specials(pix0); + } uae_u8 val0 = dpf_lookup[pix0]; dpix_val0 = denise_colors.acolors[val0]; } last_bpl_pix = pix0; } - shiftbpl4(); - internal_pixel_cnt += 2; - uae_u8 pix1 = 0; - uae_u32 dpix_val1 = BLANK_COLOR; - if (!denise_blank_active) { - dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = getbpl4(); - clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - dpix_val1 = denise_colors.acolors[val1]; + shiftbpl6(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_lores(); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; } - last_bpl_pix = pix1; } - shiftbpl4(); - internal_pixel_cnt += 2; + internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } dtbuf[h][0] = dpix_val0; uae_u32 t0 = 0; if (!extblank) { @@ -4814,11 +4134,8 @@ static void lts_ecs_fm0_dpf1_p4_ihires_dlores_ntsc(void) *buf1++ = t0; *buf2++ = t0; } - if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { - copybpl4e(); - } - if (bpldat_copy[1] && (denise_hcounter_cmp & 7) == bplcon1_shift[1]) { - copybpl4o(); + if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { + copybpl6(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -4842,7 +4159,11 @@ static void lts_ecs_fm0_dpf1_p4_ihires_dlores_ntsc(void) denise_cck++; } } -static void lts_ecs_fm0_dpf1_p4_ihires_dlores_ntsc_filtered(void) +static void lts_ecs_fm0_dpf0_p6_ilores_dlores_spr_ntsc_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_dpf1_p6_ilores_dlores_spr_ntsc(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -4853,36 +4174,39 @@ static void lts_ecs_fm0_dpf1_p4_ihires_dlores_ntsc_filtered(void) } int cnt = denise_hcounter << 2; if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl4(); + pix0 = getbpl6(); clxdat |= bplcoltable[pix0]; + if (decode_specials) { + pix0 = decode_denise_specials(pix0); + } uae_u8 val0 = dpf_lookup[pix0]; dpix_val0 = denise_colors.acolors[val0]; } last_bpl_pix = pix0; } - shiftbpl4(); - internal_pixel_cnt += 2; - uae_u8 pix1 = 0; - uae_u32 dpix_val1 = BLANK_COLOR; - if (!denise_blank_active) { - dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = getbpl4(); - clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - dpix_val1 = denise_colors.acolors[val1]; + shiftbpl6(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_lores(); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; } - last_bpl_pix = pix1; } - shiftbpl4(); - internal_pixel_cnt += 2; + internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } dtbuf[h][0] = dpix_val0; uae_u32 t0 = 0; if (!extblank) { @@ -4896,11 +4220,11 @@ static void lts_ecs_fm0_dpf1_p4_ihires_dlores_ntsc_filtered(void) *buf1++ = t0; *buf2++ = t0; } - if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { - copybpl4e(); + if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { + copybpl6e(); } - if (bpldat_copy[1] && (denise_hcounter_cmp & 7) == bplcon1_shift[1]) { - copybpl4o(); + if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) { + copybpl6o(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -4924,167 +4248,11 @@ static void lts_ecs_fm0_dpf1_p4_ihires_dlores_ntsc_filtered(void) denise_cck++; } } -static void lts_ecs_fm0_ehb0_p4_ihires_dlores_ntsc(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb0_p4_ihires_dlores_ntsc_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb1_p4_ihires_dlores_ntsc(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb1_p4_ihires_dlores_ntsc_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham0_p4_ihires_dlores_ntsc(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham0_p4_ihires_dlores_ntsc_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham1_p4_ihires_dlores_ntsc(void) +static void lts_ecs_fm0_dpf1_p6_ilores_dlores_spr_ntsc_filtered(void) { lts_null(); } -static void lts_ecs_fm0_ham1_p4_ihires_dlores_ntsc_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_n0_p5_ihires_dlores_ntsc(void) -{ - lts_null(); -} -static void lts_ecs_fm0_n0_p5_ihires_dlores_ntsc_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_n1_p5_ihires_dlores_ntsc(void) -{ - lts_null(); -} -static void lts_ecs_fm0_n1_p5_ihires_dlores_ntsc_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_dpf0_p5_ihires_dlores_ntsc(void) -{ - lts_null(); -} -static void lts_ecs_fm0_dpf0_p5_ihires_dlores_ntsc_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_dpf1_p5_ihires_dlores_ntsc(void) -{ - lts_null(); -} -static void lts_ecs_fm0_dpf1_p5_ihires_dlores_ntsc_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb0_p5_ihires_dlores_ntsc(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb0_p5_ihires_dlores_ntsc_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb1_p5_ihires_dlores_ntsc(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb1_p5_ihires_dlores_ntsc_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham0_p5_ihires_dlores_ntsc(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham0_p5_ihires_dlores_ntsc_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham1_p5_ihires_dlores_ntsc(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham1_p5_ihires_dlores_ntsc_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_n0_p6_ihires_dlores_ntsc(void) -{ - lts_null(); -} -static void lts_ecs_fm0_n0_p6_ihires_dlores_ntsc_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_n1_p6_ihires_dlores_ntsc(void) -{ - lts_null(); -} -static void lts_ecs_fm0_n1_p6_ihires_dlores_ntsc_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_dpf0_p6_ihires_dlores_ntsc(void) -{ - lts_null(); -} -static void lts_ecs_fm0_dpf0_p6_ihires_dlores_ntsc_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_dpf1_p6_ihires_dlores_ntsc(void) -{ - lts_null(); -} -static void lts_ecs_fm0_dpf1_p6_ihires_dlores_ntsc_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb0_p6_ihires_dlores_ntsc(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb0_p6_ihires_dlores_ntsc_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb1_p6_ihires_dlores_ntsc(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb1_p6_ihires_dlores_ntsc_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham0_p6_ihires_dlores_ntsc(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham0_p6_ihires_dlores_ntsc_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham1_p6_ihires_dlores_ntsc(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham1_p6_ihires_dlores_ntsc_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_n0_p2_ihires_dlores_spr_ntsc(void) +static void lts_ecs_fm0_ehb0_p6_ilores_dlores_spr_ntsc(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -5101,13 +4269,21 @@ static void lts_ecs_fm0_n0_p2_ihires_dlores_spr_ntsc(void) if (!denise_blank_active) { dpix_val0 = bordercolor; if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl2(); + pix0 = getbpl6(); clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0]; + if (decode_specials) { + pix0 = decode_denise_specials(pix0); + } + pix0 &= bplehb_mask; + if (pix0 <= 31) { + dpix_val0 = denise_colors.acolors[pix0]; + } else { + dpix_val0 = p_xcolors[(denise_colors.color_regs_ecs[pix0 - 32] >> 1) & 0x777]; + } } last_bpl_pix = pix0; } - shiftbpl2(); + shiftbpl6(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -5116,20 +4292,7 @@ static void lts_ecs_fm0_n0_p2_ihires_dlores_spr_ntsc(void) sv0 = svt; } } - internal_pixel_cnt += 2; - uae_u8 pix1 = 0; - uae_u32 dpix_val1 = BLANK_COLOR; - if (!denise_blank_active) { - dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = getbpl2(); - clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1]; - } - last_bpl_pix = pix1; - } - shiftbpl2(); - internal_pixel_cnt += 2; + internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { uae_u32 spix0 = denise_render_sprites2(pix0, sv0); @@ -5150,8 +4313,8 @@ static void lts_ecs_fm0_n0_p2_ihires_dlores_spr_ntsc(void) *buf1++ = t0; *buf2++ = t0; } - if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { - copybpl2(); + if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { + copybpl6(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -5175,7 +4338,11 @@ static void lts_ecs_fm0_n0_p2_ihires_dlores_spr_ntsc(void) denise_cck++; } } -static void lts_ecs_fm0_n0_p2_ihires_dlores_spr_ntsc_filtered(void) +static void lts_ecs_fm0_ehb0_p6_ilores_dlores_spr_ntsc_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_ehb1_p6_ilores_dlores_spr_ntsc(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -5192,13 +4359,21 @@ static void lts_ecs_fm0_n0_p2_ihires_dlores_spr_ntsc_filtered(void) if (!denise_blank_active) { dpix_val0 = bordercolor; if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl2(); + pix0 = getbpl6(); clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0]; + if (decode_specials) { + pix0 = decode_denise_specials(pix0); + } + pix0 &= bplehb_mask; + if (pix0 <= 31) { + dpix_val0 = denise_colors.acolors[pix0]; + } else { + dpix_val0 = p_xcolors[(denise_colors.color_regs_ecs[pix0 - 32] >> 1) & 0x777]; + } } last_bpl_pix = pix0; } - shiftbpl2(); + shiftbpl6(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -5207,27 +4382,12 @@ static void lts_ecs_fm0_n0_p2_ihires_dlores_spr_ntsc_filtered(void) sv0 = svt; } } - internal_pixel_cnt += 2; - uae_u8 pix1 = 0; - uae_u32 dpix_val1 = BLANK_COLOR; - if (!denise_blank_active) { - dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = getbpl2(); - clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1]; - } - last_bpl_pix = pix1; - } - shiftbpl2(); - internal_pixel_cnt += 2; + internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - dpix_val0 = filter_pixel(dpix_val0, dpix_val1); if (sv0) { uae_u32 spix0 = denise_render_sprites2(pix0, sv0); if (spix0) { dpix_val0 = denise_colors.acolors[spix0]; - dpix_val1 = dpix_val0; } } dtbuf[h][0] = dpix_val0; @@ -5243,8 +4403,11 @@ static void lts_ecs_fm0_n0_p2_ihires_dlores_spr_ntsc_filtered(void) *buf1++ = t0; *buf2++ = t0; } - if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { - copybpl2(); + if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { + copybpl6e(); + } + if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) { + copybpl6o(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -5268,7 +4431,11 @@ static void lts_ecs_fm0_n0_p2_ihires_dlores_spr_ntsc_filtered(void) denise_cck++; } } -static void lts_ecs_fm0_n1_p2_ihires_dlores_spr_ntsc(void) +static void lts_ecs_fm0_ehb1_p6_ilores_dlores_spr_ntsc_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_ham0_p6_ilores_dlores_spr_ntsc(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -5285,13 +4452,16 @@ static void lts_ecs_fm0_n1_p2_ihires_dlores_spr_ntsc(void) if (!denise_blank_active) { dpix_val0 = bordercolor; if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl2(); + pix0 = getbpl6(); clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0]; + if (decode_specials) { + pix0 = decode_denise_specials(pix0); + } + dpix_val0 = decode_ham_pixel(pix0); } last_bpl_pix = pix0; } - shiftbpl2(); + shiftbpl6(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -5300,20 +4470,7 @@ static void lts_ecs_fm0_n1_p2_ihires_dlores_spr_ntsc(void) sv0 = svt; } } - internal_pixel_cnt += 2; - uae_u8 pix1 = 0; - uae_u32 dpix_val1 = BLANK_COLOR; - if (!denise_blank_active) { - dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = getbpl2(); - clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1]; - } - last_bpl_pix = pix1; - } - shiftbpl2(); - internal_pixel_cnt += 2; + internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { uae_u32 spix0 = denise_render_sprites2(pix0, sv0); @@ -5334,11 +4491,8 @@ static void lts_ecs_fm0_n1_p2_ihires_dlores_spr_ntsc(void) *buf1++ = t0; *buf2++ = t0; } - if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { - copybpl2e(); - } - if (bpldat_copy[1] && (denise_hcounter_cmp & 7) == bplcon1_shift[1]) { - copybpl2o(); + if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { + copybpl6(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -5362,7 +4516,11 @@ static void lts_ecs_fm0_n1_p2_ihires_dlores_spr_ntsc(void) denise_cck++; } } -static void lts_ecs_fm0_n1_p2_ihires_dlores_spr_ntsc_filtered(void) +static void lts_ecs_fm0_ham0_p6_ilores_dlores_spr_ntsc_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_ham1_p6_ilores_dlores_spr_ntsc(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -5379,13 +4537,16 @@ static void lts_ecs_fm0_n1_p2_ihires_dlores_spr_ntsc_filtered(void) if (!denise_blank_active) { dpix_val0 = bordercolor; if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl2(); + pix0 = getbpl6(); clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0]; - } - last_bpl_pix = pix0; - } - shiftbpl2(); + if (decode_specials) { + pix0 = decode_denise_specials(pix0); + } + dpix_val0 = decode_ham_pixel(pix0); + } + last_bpl_pix = pix0; + } + shiftbpl6(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -5394,27 +4555,12 @@ static void lts_ecs_fm0_n1_p2_ihires_dlores_spr_ntsc_filtered(void) sv0 = svt; } } - internal_pixel_cnt += 2; - uae_u8 pix1 = 0; - uae_u32 dpix_val1 = BLANK_COLOR; - if (!denise_blank_active) { - dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = getbpl2(); - clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1]; - } - last_bpl_pix = pix1; - } - shiftbpl2(); - internal_pixel_cnt += 2; + internal_pixel_cnt += 4; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - dpix_val0 = filter_pixel(dpix_val0, dpix_val1); if (sv0) { uae_u32 spix0 = denise_render_sprites2(pix0, sv0); if (spix0) { dpix_val0 = denise_colors.acolors[spix0]; - dpix_val1 = dpix_val0; } } dtbuf[h][0] = dpix_val0; @@ -5430,11 +4576,11 @@ static void lts_ecs_fm0_n1_p2_ihires_dlores_spr_ntsc_filtered(void) *buf1++ = t0; *buf2++ = t0; } - if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { - copybpl2e(); + if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { + copybpl6e(); } - if (bpldat_copy[1] && (denise_hcounter_cmp & 7) == bplcon1_shift[1]) { - copybpl2o(); + if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) { + copybpl6o(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -5458,7 +4604,11 @@ static void lts_ecs_fm0_n1_p2_ihires_dlores_spr_ntsc_filtered(void) denise_cck++; } } -static void lts_ecs_fm0_dpf0_p2_ihires_dlores_spr_ntsc(void) +static void lts_ecs_fm0_ham1_p6_ilores_dlores_spr_ntsc_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_n0_p2_ihires_dlores_ntsc(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -5469,7 +4619,6 @@ static void lts_ecs_fm0_dpf0_p2_ihires_dlores_spr_ntsc(void) } int cnt = denise_hcounter << 2; if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -5477,20 +4626,11 @@ static void lts_ecs_fm0_dpf0_p2_ihires_dlores_spr_ntsc(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = getbpl2(); clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - dpix_val0 = denise_colors.acolors[val0]; + dpix_val0 = denise_colors.acolors[pix0]; } last_bpl_pix = pix0; } shiftbpl2(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_lores(); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } - } internal_pixel_cnt += 2; uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; @@ -5499,20 +4639,13 @@ static void lts_ecs_fm0_dpf0_p2_ihires_dlores_spr_ntsc(void) if (denise_hdiw && bpl1dat_trigger) { pix1 = getbpl2(); clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - dpix_val1 = denise_colors.acolors[val1]; + dpix_val1 = denise_colors.acolors[pix1]; } last_bpl_pix = pix1; } shiftbpl2(); internal_pixel_cnt += 2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - } - } dtbuf[h][0] = dpix_val0; uae_u32 t0 = 0; if (!extblank) { @@ -5551,7 +4684,7 @@ static void lts_ecs_fm0_dpf0_p2_ihires_dlores_spr_ntsc(void) denise_cck++; } } -static void lts_ecs_fm0_dpf0_p2_ihires_dlores_spr_ntsc_filtered(void) +static void lts_ecs_fm0_n0_p2_ihires_dlores_ntsc_filtered(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -5562,7 +4695,6 @@ static void lts_ecs_fm0_dpf0_p2_ihires_dlores_spr_ntsc_filtered(void) } int cnt = denise_hcounter << 2; if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -5570,20 +4702,11 @@ static void lts_ecs_fm0_dpf0_p2_ihires_dlores_spr_ntsc_filtered(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = getbpl2(); clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - dpix_val0 = denise_colors.acolors[val0]; + dpix_val0 = denise_colors.acolors[pix0]; } last_bpl_pix = pix0; } shiftbpl2(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_lores(); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } - } internal_pixel_cnt += 2; uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; @@ -5592,8 +4715,7 @@ static void lts_ecs_fm0_dpf0_p2_ihires_dlores_spr_ntsc_filtered(void) if (denise_hdiw && bpl1dat_trigger) { pix1 = getbpl2(); clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - dpix_val1 = denise_colors.acolors[val1]; + dpix_val1 = denise_colors.acolors[pix1]; } last_bpl_pix = pix1; } @@ -5601,13 +4723,6 @@ static void lts_ecs_fm0_dpf0_p2_ihires_dlores_spr_ntsc_filtered(void) internal_pixel_cnt += 2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dpix_val0 = filter_pixel(dpix_val0, dpix_val1); - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - dpix_val1 = dpix_val0; - } - } dtbuf[h][0] = dpix_val0; uae_u32 t0 = 0; if (!extblank) { @@ -5646,7 +4761,7 @@ static void lts_ecs_fm0_dpf0_p2_ihires_dlores_spr_ntsc_filtered(void) denise_cck++; } } -static void lts_ecs_fm0_dpf1_p2_ihires_dlores_spr_ntsc(void) +static void lts_ecs_fm0_n1_p2_ihires_dlores_ntsc(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -5657,7 +4772,6 @@ static void lts_ecs_fm0_dpf1_p2_ihires_dlores_spr_ntsc(void) } int cnt = denise_hcounter << 2; if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -5665,20 +4779,11 @@ static void lts_ecs_fm0_dpf1_p2_ihires_dlores_spr_ntsc(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = getbpl2(); clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - dpix_val0 = denise_colors.acolors[val0]; + dpix_val0 = denise_colors.acolors[pix0]; } last_bpl_pix = pix0; } shiftbpl2(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_lores(); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } - } internal_pixel_cnt += 2; uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; @@ -5687,20 +4792,13 @@ static void lts_ecs_fm0_dpf1_p2_ihires_dlores_spr_ntsc(void) if (denise_hdiw && bpl1dat_trigger) { pix1 = getbpl2(); clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - dpix_val1 = denise_colors.acolors[val1]; + dpix_val1 = denise_colors.acolors[pix1]; } last_bpl_pix = pix1; } shiftbpl2(); internal_pixel_cnt += 2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - } - } dtbuf[h][0] = dpix_val0; uae_u32 t0 = 0; if (!extblank) { @@ -5742,7 +4840,7 @@ static void lts_ecs_fm0_dpf1_p2_ihires_dlores_spr_ntsc(void) denise_cck++; } } -static void lts_ecs_fm0_dpf1_p2_ihires_dlores_spr_ntsc_filtered(void) +static void lts_ecs_fm0_n1_p2_ihires_dlores_ntsc_filtered(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -5753,7 +4851,6 @@ static void lts_ecs_fm0_dpf1_p2_ihires_dlores_spr_ntsc_filtered(void) } int cnt = denise_hcounter << 2; if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { @@ -5761,20 +4858,11 @@ static void lts_ecs_fm0_dpf1_p2_ihires_dlores_spr_ntsc_filtered(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = getbpl2(); clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - dpix_val0 = denise_colors.acolors[val0]; + dpix_val0 = denise_colors.acolors[pix0]; } last_bpl_pix = pix0; } shiftbpl2(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_lores(); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } - } internal_pixel_cnt += 2; uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; @@ -5783,8 +4871,7 @@ static void lts_ecs_fm0_dpf1_p2_ihires_dlores_spr_ntsc_filtered(void) if (denise_hdiw && bpl1dat_trigger) { pix1 = getbpl2(); clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - dpix_val1 = denise_colors.acolors[val1]; + dpix_val1 = denise_colors.acolors[pix1]; } last_bpl_pix = pix1; } @@ -5792,13 +4879,6 @@ static void lts_ecs_fm0_dpf1_p2_ihires_dlores_spr_ntsc_filtered(void) internal_pixel_cnt += 2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dpix_val0 = filter_pixel(dpix_val0, dpix_val1); - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - dpix_val1 = dpix_val0; - } - } dtbuf[h][0] = dpix_val0; uae_u32 t0 = 0; if (!extblank) { @@ -5840,39 +4920,7 @@ static void lts_ecs_fm0_dpf1_p2_ihires_dlores_spr_ntsc_filtered(void) denise_cck++; } } -static void lts_ecs_fm0_ehb0_p2_ihires_dlores_spr_ntsc(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb0_p2_ihires_dlores_spr_ntsc_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb1_p2_ihires_dlores_spr_ntsc(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb1_p2_ihires_dlores_spr_ntsc_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham0_p2_ihires_dlores_spr_ntsc(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham0_p2_ihires_dlores_spr_ntsc_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham1_p2_ihires_dlores_spr_ntsc(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham1_p2_ihires_dlores_spr_ntsc_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_n0_p4_ihires_dlores_spr_ntsc(void) +static void lts_ecs_fm0_dpf0_p2_ihires_dlores_ntsc(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -5883,48 +4931,35 @@ static void lts_ecs_fm0_n0_p4_ihires_dlores_spr_ntsc(void) } int cnt = denise_hcounter << 2; if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl4(); + pix0 = getbpl2(); clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + dpix_val0 = denise_colors.acolors[val0]; } last_bpl_pix = pix0; } - shiftbpl4(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_lores(); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } - } + shiftbpl2(); internal_pixel_cnt += 2; uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; if (denise_hdiw && bpl1dat_trigger) { - pix1 = getbpl4(); + pix1 = getbpl2(); clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1]; + uae_u8 val1 = dpf_lookup[pix1]; + dpix_val1 = denise_colors.acolors[val1]; } last_bpl_pix = pix1; } - shiftbpl4(); + shiftbpl2(); internal_pixel_cnt += 2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - } - } dtbuf[h][0] = dpix_val0; uae_u32 t0 = 0; if (!extblank) { @@ -5939,7 +4974,7 @@ static void lts_ecs_fm0_n0_p4_ihires_dlores_spr_ntsc(void) *buf2++ = t0; } if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { - copybpl4(); + copybpl2(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -5963,7 +4998,7 @@ static void lts_ecs_fm0_n0_p4_ihires_dlores_spr_ntsc(void) denise_cck++; } } -static void lts_ecs_fm0_n0_p4_ihires_dlores_spr_ntsc_filtered(void) +static void lts_ecs_fm0_dpf0_p2_ihires_dlores_ntsc_filtered(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -5974,50 +5009,36 @@ static void lts_ecs_fm0_n0_p4_ihires_dlores_spr_ntsc_filtered(void) } int cnt = denise_hcounter << 2; if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl4(); + pix0 = getbpl2(); clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + dpix_val0 = denise_colors.acolors[val0]; } last_bpl_pix = pix0; } - shiftbpl4(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_lores(); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } - } + shiftbpl2(); internal_pixel_cnt += 2; uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; if (denise_hdiw && bpl1dat_trigger) { - pix1 = getbpl4(); + pix1 = getbpl2(); clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1]; + uae_u8 val1 = dpf_lookup[pix1]; + dpix_val1 = denise_colors.acolors[val1]; } last_bpl_pix = pix1; } - shiftbpl4(); + shiftbpl2(); internal_pixel_cnt += 2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dpix_val0 = filter_pixel(dpix_val0, dpix_val1); - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - dpix_val1 = dpix_val0; - } - } dtbuf[h][0] = dpix_val0; uae_u32 t0 = 0; if (!extblank) { @@ -6032,7 +5053,7 @@ static void lts_ecs_fm0_n0_p4_ihires_dlores_spr_ntsc_filtered(void) *buf2++ = t0; } if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { - copybpl4(); + copybpl2(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -6056,7 +5077,7 @@ static void lts_ecs_fm0_n0_p4_ihires_dlores_spr_ntsc_filtered(void) denise_cck++; } } -static void lts_ecs_fm0_n1_p4_ihires_dlores_spr_ntsc(void) +static void lts_ecs_fm0_dpf1_p2_ihires_dlores_ntsc(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -6067,48 +5088,35 @@ static void lts_ecs_fm0_n1_p4_ihires_dlores_spr_ntsc(void) } int cnt = denise_hcounter << 2; if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl4(); + pix0 = getbpl2(); clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + dpix_val0 = denise_colors.acolors[val0]; } last_bpl_pix = pix0; } - shiftbpl4(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_lores(); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } - } + shiftbpl2(); internal_pixel_cnt += 2; uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; if (denise_hdiw && bpl1dat_trigger) { - pix1 = getbpl4(); + pix1 = getbpl2(); clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1]; + uae_u8 val1 = dpf_lookup[pix1]; + dpix_val1 = denise_colors.acolors[val1]; } last_bpl_pix = pix1; } - shiftbpl4(); + shiftbpl2(); internal_pixel_cnt += 2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - } - } dtbuf[h][0] = dpix_val0; uae_u32 t0 = 0; if (!extblank) { @@ -6123,10 +5131,10 @@ static void lts_ecs_fm0_n1_p4_ihires_dlores_spr_ntsc(void) *buf2++ = t0; } if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { - copybpl4e(); + copybpl2e(); } if (bpldat_copy[1] && (denise_hcounter_cmp & 7) == bplcon1_shift[1]) { - copybpl4o(); + copybpl2o(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -6150,7 +5158,7 @@ static void lts_ecs_fm0_n1_p4_ihires_dlores_spr_ntsc(void) denise_cck++; } } -static void lts_ecs_fm0_n1_p4_ihires_dlores_spr_ntsc_filtered(void) +static void lts_ecs_fm0_dpf1_p2_ihires_dlores_ntsc_filtered(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -6161,50 +5169,36 @@ static void lts_ecs_fm0_n1_p4_ihires_dlores_spr_ntsc_filtered(void) } int cnt = denise_hcounter << 2; if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl4(); + pix0 = getbpl2(); clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + dpix_val0 = denise_colors.acolors[val0]; } last_bpl_pix = pix0; } - shiftbpl4(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_lores(); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } - } + shiftbpl2(); internal_pixel_cnt += 2; uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; if (denise_hdiw && bpl1dat_trigger) { - pix1 = getbpl4(); + pix1 = getbpl2(); clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1]; + uae_u8 val1 = dpf_lookup[pix1]; + dpix_val1 = denise_colors.acolors[val1]; } last_bpl_pix = pix1; } - shiftbpl4(); + shiftbpl2(); internal_pixel_cnt += 2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dpix_val0 = filter_pixel(dpix_val0, dpix_val1); - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - dpix_val1 = dpix_val0; - } - } dtbuf[h][0] = dpix_val0; uae_u32 t0 = 0; if (!extblank) { @@ -6219,10 +5213,10 @@ static void lts_ecs_fm0_n1_p4_ihires_dlores_spr_ntsc_filtered(void) *buf2++ = t0; } if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { - copybpl4e(); + copybpl2e(); } if (bpldat_copy[1] && (denise_hcounter_cmp & 7) == bplcon1_shift[1]) { - copybpl4o(); + copybpl2o(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -6246,7 +5240,7 @@ static void lts_ecs_fm0_n1_p4_ihires_dlores_spr_ntsc_filtered(void) denise_cck++; } } -static void lts_ecs_fm0_dpf0_p4_ihires_dlores_spr_ntsc(void) +static void lts_ecs_fm0_ehb0_p2_ihires_dlores_ntsc(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -6257,50 +5251,19 @@ static void lts_ecs_fm0_dpf0_p4_ihires_dlores_spr_ntsc(void) } int cnt = denise_hcounter << 2; if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl4(); - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; - } - shiftbpl4(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_lores(); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } } internal_pixel_cnt += 2; uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = getbpl4(); - clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - dpix_val1 = denise_colors.acolors[val1]; - } - last_bpl_pix = pix1; } - shiftbpl4(); internal_pixel_cnt += 2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - } - } dtbuf[h][0] = dpix_val0; uae_u32 t0 = 0; if (!extblank) { @@ -6314,9 +5277,6 @@ static void lts_ecs_fm0_dpf0_p4_ihires_dlores_spr_ntsc(void) *buf1++ = t0; *buf2++ = t0; } - if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { - copybpl4(); - } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER *debug_dma_dhpos_odd = denise_hcounter; @@ -6339,7 +5299,7 @@ static void lts_ecs_fm0_dpf0_p4_ihires_dlores_spr_ntsc(void) denise_cck++; } } -static void lts_ecs_fm0_dpf0_p4_ihires_dlores_spr_ntsc_filtered(void) +static void lts_ecs_fm0_ehb0_p2_ihires_dlores_ntsc_filtered(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -6350,52 +5310,20 @@ static void lts_ecs_fm0_dpf0_p4_ihires_dlores_spr_ntsc_filtered(void) } int cnt = denise_hcounter << 2; if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl4(); - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; - } - shiftbpl4(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_lores(); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } } internal_pixel_cnt += 2; uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = getbpl4(); - clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - dpix_val1 = denise_colors.acolors[val1]; - } - last_bpl_pix = pix1; } - shiftbpl4(); internal_pixel_cnt += 2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dpix_val0 = filter_pixel(dpix_val0, dpix_val1); - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - dpix_val1 = dpix_val0; - } - } dtbuf[h][0] = dpix_val0; uae_u32 t0 = 0; if (!extblank) { @@ -6409,9 +5337,6 @@ static void lts_ecs_fm0_dpf0_p4_ihires_dlores_spr_ntsc_filtered(void) *buf1++ = t0; *buf2++ = t0; } - if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { - copybpl4(); - } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER *debug_dma_dhpos_odd = denise_hcounter; @@ -6434,7 +5359,7 @@ static void lts_ecs_fm0_dpf0_p4_ihires_dlores_spr_ntsc_filtered(void) denise_cck++; } } -static void lts_ecs_fm0_dpf1_p4_ihires_dlores_spr_ntsc(void) +static void lts_ecs_fm0_ehb1_p2_ihires_dlores_ntsc(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -6445,50 +5370,19 @@ static void lts_ecs_fm0_dpf1_p4_ihires_dlores_spr_ntsc(void) } int cnt = denise_hcounter << 2; if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl4(); - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; - } - shiftbpl4(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_lores(); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } } internal_pixel_cnt += 2; uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = getbpl4(); - clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - dpix_val1 = denise_colors.acolors[val1]; - } - last_bpl_pix = pix1; } - shiftbpl4(); internal_pixel_cnt += 2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - } - } dtbuf[h][0] = dpix_val0; uae_u32 t0 = 0; if (!extblank) { @@ -6502,12 +5396,6 @@ static void lts_ecs_fm0_dpf1_p4_ihires_dlores_spr_ntsc(void) *buf1++ = t0; *buf2++ = t0; } - if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { - copybpl4e(); - } - if (bpldat_copy[1] && (denise_hcounter_cmp & 7) == bplcon1_shift[1]) { - copybpl4o(); - } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER *debug_dma_dhpos_odd = denise_hcounter; @@ -6530,7 +5418,7 @@ static void lts_ecs_fm0_dpf1_p4_ihires_dlores_spr_ntsc(void) denise_cck++; } } -static void lts_ecs_fm0_dpf1_p4_ihires_dlores_spr_ntsc_filtered(void) +static void lts_ecs_fm0_ehb1_p2_ihires_dlores_ntsc_filtered(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -6541,52 +5429,20 @@ static void lts_ecs_fm0_dpf1_p4_ihires_dlores_spr_ntsc_filtered(void) } int cnt = denise_hcounter << 2; if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl4(); - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; - } - shiftbpl4(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_lores(); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } } internal_pixel_cnt += 2; uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = getbpl4(); - clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - dpix_val1 = denise_colors.acolors[val1]; - } - last_bpl_pix = pix1; } - shiftbpl4(); internal_pixel_cnt += 2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dpix_val0 = filter_pixel(dpix_val0, dpix_val1); - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - dpix_val1 = dpix_val0; - } - } dtbuf[h][0] = dpix_val0; uae_u32 t0 = 0; if (!extblank) { @@ -6600,11 +5456,64 @@ static void lts_ecs_fm0_dpf1_p4_ihires_dlores_spr_ntsc_filtered(void) *buf1++ = t0; *buf2++ = t0; } - if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { - copybpl4e(); + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ham0_p2_ihires_dlores_ntsc(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; } - if (bpldat_copy[1] && (denise_hcounter_cmp & 7) == bplcon1_shift[1]) { - copybpl4o(); + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -6628,167 +5537,7 @@ static void lts_ecs_fm0_dpf1_p4_ihires_dlores_spr_ntsc_filtered(void) denise_cck++; } } -static void lts_ecs_fm0_ehb0_p4_ihires_dlores_spr_ntsc(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb0_p4_ihires_dlores_spr_ntsc_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb1_p4_ihires_dlores_spr_ntsc(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb1_p4_ihires_dlores_spr_ntsc_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham0_p4_ihires_dlores_spr_ntsc(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham0_p4_ihires_dlores_spr_ntsc_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham1_p4_ihires_dlores_spr_ntsc(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham1_p4_ihires_dlores_spr_ntsc_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_n0_p5_ihires_dlores_spr_ntsc(void) -{ - lts_null(); -} -static void lts_ecs_fm0_n0_p5_ihires_dlores_spr_ntsc_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_n1_p5_ihires_dlores_spr_ntsc(void) -{ - lts_null(); -} -static void lts_ecs_fm0_n1_p5_ihires_dlores_spr_ntsc_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_dpf0_p5_ihires_dlores_spr_ntsc(void) -{ - lts_null(); -} -static void lts_ecs_fm0_dpf0_p5_ihires_dlores_spr_ntsc_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_dpf1_p5_ihires_dlores_spr_ntsc(void) -{ - lts_null(); -} -static void lts_ecs_fm0_dpf1_p5_ihires_dlores_spr_ntsc_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb0_p5_ihires_dlores_spr_ntsc(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb0_p5_ihires_dlores_spr_ntsc_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb1_p5_ihires_dlores_spr_ntsc(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb1_p5_ihires_dlores_spr_ntsc_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham0_p5_ihires_dlores_spr_ntsc(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham0_p5_ihires_dlores_spr_ntsc_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham1_p5_ihires_dlores_spr_ntsc(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham1_p5_ihires_dlores_spr_ntsc_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_n0_p6_ihires_dlores_spr_ntsc(void) -{ - lts_null(); -} -static void lts_ecs_fm0_n0_p6_ihires_dlores_spr_ntsc_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_n1_p6_ihires_dlores_spr_ntsc(void) -{ - lts_null(); -} -static void lts_ecs_fm0_n1_p6_ihires_dlores_spr_ntsc_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_dpf0_p6_ihires_dlores_spr_ntsc(void) -{ - lts_null(); -} -static void lts_ecs_fm0_dpf0_p6_ihires_dlores_spr_ntsc_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_dpf1_p6_ihires_dlores_spr_ntsc(void) -{ - lts_null(); -} -static void lts_ecs_fm0_dpf1_p6_ihires_dlores_spr_ntsc_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb0_p6_ihires_dlores_spr_ntsc(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb0_p6_ihires_dlores_spr_ntsc_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb1_p6_ihires_dlores_spr_ntsc(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb1_p6_ihires_dlores_spr_ntsc_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham0_p6_ihires_dlores_spr_ntsc(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham0_p6_ihires_dlores_spr_ntsc_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham1_p6_ihires_dlores_spr_ntsc(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham1_p6_ihires_dlores_spr_ntsc_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_n0_p2_ilores_dhires_ntsc(void) +static void lts_ecs_fm0_ham0_p2_ihires_dlores_ntsc_filtered(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -6803,21 +5552,17 @@ static void lts_ecs_fm0_n0_p2_ilores_dhires_ntsc(void) uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl2(); - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0]; - } - last_bpl_pix = pix0; } - shiftbpl2(); internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } internal_pixel_cnt += 2; - uae_u32 dpix_val1 = dpix_val0; - uae_u8 pix1 = pix0; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); dtbuf[h][0] = dpix_val0; - dtbuf[h][1] = dpix_val1; uae_u32 t0 = 0; if (!extblank) { t0 = dtbuf[h ^ lol][0]; @@ -6829,20 +5574,6 @@ static void lts_ecs_fm0_n0_p2_ilores_dhires_ntsc(void) #endif *buf1++ = t0; *buf2++ = t0; - uae_u32 t1 = 0; - if (!extblank) { - t1 = dtbuf[h ^ lol][1]; - } - #ifdef DEBUGGER - if (decode_specials_debug) { - t1 = decode_denise_specials_debug(t1, cnt + 2); - } - #endif - *buf1++ = t1; - *buf2++ = t1; - } - if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl2(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -6866,11 +5597,7 @@ static void lts_ecs_fm0_n0_p2_ilores_dhires_ntsc(void) denise_cck++; } } -static void lts_ecs_fm0_n0_p2_ilores_dhires_ntsc_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_n1_p2_ilores_dhires_ntsc(void) +static void lts_ecs_fm0_ham1_p2_ihires_dlores_ntsc(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -6885,21 +5612,16 @@ static void lts_ecs_fm0_n1_p2_ilores_dhires_ntsc(void) uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl2(); - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0]; - } - last_bpl_pix = pix0; } - shiftbpl2(); internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } internal_pixel_cnt += 2; - uae_u32 dpix_val1 = dpix_val0; - uae_u8 pix1 = pix0; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; - dtbuf[h][1] = dpix_val1; uae_u32 t0 = 0; if (!extblank) { t0 = dtbuf[h ^ lol][0]; @@ -6911,23 +5633,6 @@ static void lts_ecs_fm0_n1_p2_ilores_dhires_ntsc(void) #endif *buf1++ = t0; *buf2++ = t0; - uae_u32 t1 = 0; - if (!extblank) { - t1 = dtbuf[h ^ lol][1]; - } - #ifdef DEBUGGER - if (decode_specials_debug) { - t1 = decode_denise_specials_debug(t1, cnt + 2); - } - #endif - *buf1++ = t1; - *buf2++ = t1; - } - if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl2e(); - } - if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) { - copybpl2o(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -6951,11 +5656,7 @@ static void lts_ecs_fm0_n1_p2_ilores_dhires_ntsc(void) denise_cck++; } } -static void lts_ecs_fm0_n1_p2_ilores_dhires_ntsc_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_dpf0_p2_ilores_dhires_ntsc(void) +static void lts_ecs_fm0_ham1_p2_ihires_dlores_ntsc_filtered(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -6970,22 +5671,17 @@ static void lts_ecs_fm0_dpf0_p2_ilores_dhires_ntsc(void) uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl2(); - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; } - shiftbpl2(); internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } internal_pixel_cnt += 2; - uae_u32 dpix_val1 = dpix_val0; - uae_u8 pix1 = pix0; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); dtbuf[h][0] = dpix_val0; - dtbuf[h][1] = dpix_val1; uae_u32 t0 = 0; if (!extblank) { t0 = dtbuf[h ^ lol][0]; @@ -6997,20 +5693,6 @@ static void lts_ecs_fm0_dpf0_p2_ilores_dhires_ntsc(void) #endif *buf1++ = t0; *buf2++ = t0; - uae_u32 t1 = 0; - if (!extblank) { - t1 = dtbuf[h ^ lol][1]; - } - #ifdef DEBUGGER - if (decode_specials_debug) { - t1 = decode_denise_specials_debug(t1, cnt + 2); - } - #endif - *buf1++ = t1; - *buf2++ = t1; - } - if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl2(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -7034,11 +5716,7 @@ static void lts_ecs_fm0_dpf0_p2_ilores_dhires_ntsc(void) denise_cck++; } } -static void lts_ecs_fm0_dpf0_p2_ilores_dhires_ntsc_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_dpf1_p2_ilores_dhires_ntsc(void) +static void lts_ecs_fm0_n0_p4_ihires_dlores_ntsc(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -7054,21 +5732,29 @@ static void lts_ecs_fm0_dpf1_p2_ilores_dhires_ntsc(void) if (!denise_blank_active) { dpix_val0 = bordercolor; if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl2(); + pix0 = getbpl4(); clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - dpix_val0 = denise_colors.acolors[val0]; + dpix_val0 = denise_colors.acolors[pix0]; } last_bpl_pix = pix0; } - shiftbpl2(); + shiftbpl4(); internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = getbpl4(); + clxdat |= bplcoltable[pix1]; + dpix_val1 = denise_colors.acolors[pix1]; + } + last_bpl_pix = pix1; + } + shiftbpl4(); internal_pixel_cnt += 2; - uae_u32 dpix_val1 = dpix_val0; - uae_u8 pix1 = pix0; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; - dtbuf[h][1] = dpix_val1; uae_u32 t0 = 0; if (!extblank) { t0 = dtbuf[h ^ lol][0]; @@ -7080,23 +5766,9 @@ static void lts_ecs_fm0_dpf1_p2_ilores_dhires_ntsc(void) #endif *buf1++ = t0; *buf2++ = t0; - uae_u32 t1 = 0; - if (!extblank) { - t1 = dtbuf[h ^ lol][1]; - } - #ifdef DEBUGGER - if (decode_specials_debug) { - t1 = decode_denise_specials_debug(t1, cnt + 2); - } - #endif - *buf1++ = t1; - *buf2++ = t1; - } - if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl2e(); } - if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) { - copybpl2o(); + if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { + copybpl4(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -7120,43 +5792,7 @@ static void lts_ecs_fm0_dpf1_p2_ilores_dhires_ntsc(void) denise_cck++; } } -static void lts_ecs_fm0_dpf1_p2_ilores_dhires_ntsc_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb0_p2_ilores_dhires_ntsc(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb0_p2_ilores_dhires_ntsc_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb1_p2_ilores_dhires_ntsc(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb1_p2_ilores_dhires_ntsc_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham0_p2_ilores_dhires_ntsc(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham0_p2_ilores_dhires_ntsc_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham1_p2_ilores_dhires_ntsc(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham1_p2_ilores_dhires_ntsc_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_n0_p4_ilores_dhires_ntsc(void) +static void lts_ecs_fm0_n0_p4_ihires_dlores_ntsc_filtered(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -7180,12 +5816,22 @@ static void lts_ecs_fm0_n0_p4_ilores_dhires_ntsc(void) } shiftbpl4(); internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = getbpl4(); + clxdat |= bplcoltable[pix1]; + dpix_val1 = denise_colors.acolors[pix1]; + } + last_bpl_pix = pix1; + } + shiftbpl4(); internal_pixel_cnt += 2; - uae_u32 dpix_val1 = dpix_val0; - uae_u8 pix1 = pix0; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); dtbuf[h][0] = dpix_val0; - dtbuf[h][1] = dpix_val1; uae_u32 t0 = 0; if (!extblank) { t0 = dtbuf[h ^ lol][0]; @@ -7197,19 +5843,8 @@ static void lts_ecs_fm0_n0_p4_ilores_dhires_ntsc(void) #endif *buf1++ = t0; *buf2++ = t0; - uae_u32 t1 = 0; - if (!extblank) { - t1 = dtbuf[h ^ lol][1]; - } - #ifdef DEBUGGER - if (decode_specials_debug) { - t1 = decode_denise_specials_debug(t1, cnt + 2); - } - #endif - *buf1++ = t1; - *buf2++ = t1; } - if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { + if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { copybpl4(); } sprites_hidden = sprites_hidden2; @@ -7234,11 +5869,7 @@ static void lts_ecs_fm0_n0_p4_ilores_dhires_ntsc(void) denise_cck++; } } -static void lts_ecs_fm0_n0_p4_ilores_dhires_ntsc_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_n1_p4_ilores_dhires_ntsc(void) +static void lts_ecs_fm0_n1_p4_ihires_dlores_ntsc(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -7262,12 +5893,21 @@ static void lts_ecs_fm0_n1_p4_ilores_dhires_ntsc(void) } shiftbpl4(); internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = getbpl4(); + clxdat |= bplcoltable[pix1]; + dpix_val1 = denise_colors.acolors[pix1]; + } + last_bpl_pix = pix1; + } + shiftbpl4(); internal_pixel_cnt += 2; - uae_u32 dpix_val1 = dpix_val0; - uae_u8 pix1 = pix0; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; - dtbuf[h][1] = dpix_val1; uae_u32 t0 = 0; if (!extblank) { t0 = dtbuf[h ^ lol][0]; @@ -7279,22 +5919,11 @@ static void lts_ecs_fm0_n1_p4_ilores_dhires_ntsc(void) #endif *buf1++ = t0; *buf2++ = t0; - uae_u32 t1 = 0; - if (!extblank) { - t1 = dtbuf[h ^ lol][1]; - } - #ifdef DEBUGGER - if (decode_specials_debug) { - t1 = decode_denise_specials_debug(t1, cnt + 2); - } - #endif - *buf1++ = t1; - *buf2++ = t1; } - if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { + if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { copybpl4e(); } - if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) { + if (bpldat_copy[1] && (denise_hcounter_cmp & 7) == bplcon1_shift[1]) { copybpl4o(); } sprites_hidden = sprites_hidden2; @@ -7319,11 +5948,7 @@ static void lts_ecs_fm0_n1_p4_ilores_dhires_ntsc(void) denise_cck++; } } -static void lts_ecs_fm0_n1_p4_ilores_dhires_ntsc_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_dpf0_p4_ilores_dhires_ntsc(void) +static void lts_ecs_fm0_n1_p4_ihires_dlores_ntsc_filtered(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -7341,19 +5966,28 @@ static void lts_ecs_fm0_dpf0_p4_ilores_dhires_ntsc(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = getbpl4(); clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - dpix_val0 = denise_colors.acolors[val0]; + dpix_val0 = denise_colors.acolors[pix0]; } last_bpl_pix = pix0; } shiftbpl4(); internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = getbpl4(); + clxdat |= bplcoltable[pix1]; + dpix_val1 = denise_colors.acolors[pix1]; + } + last_bpl_pix = pix1; + } + shiftbpl4(); internal_pixel_cnt += 2; - uae_u32 dpix_val1 = dpix_val0; - uae_u8 pix1 = pix0; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); dtbuf[h][0] = dpix_val0; - dtbuf[h][1] = dpix_val1; uae_u32 t0 = 0; if (!extblank) { t0 = dtbuf[h ^ lol][0]; @@ -7365,20 +5999,12 @@ static void lts_ecs_fm0_dpf0_p4_ilores_dhires_ntsc(void) #endif *buf1++ = t0; *buf2++ = t0; - uae_u32 t1 = 0; - if (!extblank) { - t1 = dtbuf[h ^ lol][1]; - } - #ifdef DEBUGGER - if (decode_specials_debug) { - t1 = decode_denise_specials_debug(t1, cnt + 2); - } - #endif - *buf1++ = t1; - *buf2++ = t1; } - if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl4(); + if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { + copybpl4e(); + } + if (bpldat_copy[1] && (denise_hcounter_cmp & 7) == bplcon1_shift[1]) { + copybpl4o(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -7402,11 +6028,7 @@ static void lts_ecs_fm0_dpf0_p4_ilores_dhires_ntsc(void) denise_cck++; } } -static void lts_ecs_fm0_dpf0_p4_ilores_dhires_ntsc_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_dpf1_p4_ilores_dhires_ntsc(void) +static void lts_ecs_fm0_dpf0_p4_ihires_dlores_ntsc(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -7431,12 +6053,22 @@ static void lts_ecs_fm0_dpf1_p4_ilores_dhires_ntsc(void) } shiftbpl4(); internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = getbpl4(); + clxdat |= bplcoltable[pix1]; + uae_u8 val1 = dpf_lookup[pix1]; + dpix_val1 = denise_colors.acolors[val1]; + } + last_bpl_pix = pix1; + } + shiftbpl4(); internal_pixel_cnt += 2; - uae_u32 dpix_val1 = dpix_val0; - uae_u8 pix1 = pix0; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; - dtbuf[h][1] = dpix_val1; uae_u32 t0 = 0; if (!extblank) { t0 = dtbuf[h ^ lol][0]; @@ -7448,23 +6080,9 @@ static void lts_ecs_fm0_dpf1_p4_ilores_dhires_ntsc(void) #endif *buf1++ = t0; *buf2++ = t0; - uae_u32 t1 = 0; - if (!extblank) { - t1 = dtbuf[h ^ lol][1]; - } - #ifdef DEBUGGER - if (decode_specials_debug) { - t1 = decode_denise_specials_debug(t1, cnt + 2); - } - #endif - *buf1++ = t1; - *buf2++ = t1; - } - if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl4e(); } - if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) { - copybpl4o(); + if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { + copybpl4(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -7488,43 +6106,7 @@ static void lts_ecs_fm0_dpf1_p4_ilores_dhires_ntsc(void) denise_cck++; } } -static void lts_ecs_fm0_dpf1_p4_ilores_dhires_ntsc_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb0_p4_ilores_dhires_ntsc(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb0_p4_ilores_dhires_ntsc_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb1_p4_ilores_dhires_ntsc(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb1_p4_ilores_dhires_ntsc_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham0_p4_ilores_dhires_ntsc(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham0_p4_ilores_dhires_ntsc_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham1_p4_ilores_dhires_ntsc(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham1_p4_ilores_dhires_ntsc_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_n0_p5_ilores_dhires_ntsc(void) +static void lts_ecs_fm0_dpf0_p4_ihires_dlores_ntsc_filtered(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -7540,23 +6122,32 @@ static void lts_ecs_fm0_n0_p5_ilores_dhires_ntsc(void) if (!denise_blank_active) { dpix_val0 = bordercolor; if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl5(); + pix0 = getbpl4(); clxdat |= bplcoltable[pix0]; - if (decode_specials) { - pix0 = decode_denise_specials(pix0); - } - dpix_val0 = denise_colors.acolors[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + dpix_val0 = denise_colors.acolors[val0]; } last_bpl_pix = pix0; } - shiftbpl5(); + shiftbpl4(); internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = getbpl4(); + clxdat |= bplcoltable[pix1]; + uae_u8 val1 = dpf_lookup[pix1]; + dpix_val1 = denise_colors.acolors[val1]; + } + last_bpl_pix = pix1; + } + shiftbpl4(); internal_pixel_cnt += 2; - uae_u32 dpix_val1 = dpix_val0; - uae_u8 pix1 = pix0; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); dtbuf[h][0] = dpix_val0; - dtbuf[h][1] = dpix_val1; uae_u32 t0 = 0; if (!extblank) { t0 = dtbuf[h ^ lol][0]; @@ -7568,20 +6159,9 @@ static void lts_ecs_fm0_n0_p5_ilores_dhires_ntsc(void) #endif *buf1++ = t0; *buf2++ = t0; - uae_u32 t1 = 0; - if (!extblank) { - t1 = dtbuf[h ^ lol][1]; - } - #ifdef DEBUGGER - if (decode_specials_debug) { - t1 = decode_denise_specials_debug(t1, cnt + 2); - } - #endif - *buf1++ = t1; - *buf2++ = t1; } - if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl5(); + if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { + copybpl4(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -7605,11 +6185,7 @@ static void lts_ecs_fm0_n0_p5_ilores_dhires_ntsc(void) denise_cck++; } } -static void lts_ecs_fm0_n0_p5_ilores_dhires_ntsc_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_n1_p5_ilores_dhires_ntsc(void) +static void lts_ecs_fm0_dpf1_p4_ihires_dlores_ntsc(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -7625,23 +6201,31 @@ static void lts_ecs_fm0_n1_p5_ilores_dhires_ntsc(void) if (!denise_blank_active) { dpix_val0 = bordercolor; if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl5(); + pix0 = getbpl4(); clxdat |= bplcoltable[pix0]; - if (decode_specials) { - pix0 = decode_denise_specials(pix0); - } - dpix_val0 = denise_colors.acolors[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + dpix_val0 = denise_colors.acolors[val0]; } last_bpl_pix = pix0; } - shiftbpl5(); + shiftbpl4(); internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = getbpl4(); + clxdat |= bplcoltable[pix1]; + uae_u8 val1 = dpf_lookup[pix1]; + dpix_val1 = denise_colors.acolors[val1]; + } + last_bpl_pix = pix1; + } + shiftbpl4(); internal_pixel_cnt += 2; - uae_u32 dpix_val1 = dpix_val0; - uae_u8 pix1 = pix0; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; - dtbuf[h][1] = dpix_val1; uae_u32 t0 = 0; if (!extblank) { t0 = dtbuf[h ^ lol][0]; @@ -7653,23 +6237,12 @@ static void lts_ecs_fm0_n1_p5_ilores_dhires_ntsc(void) #endif *buf1++ = t0; *buf2++ = t0; - uae_u32 t1 = 0; - if (!extblank) { - t1 = dtbuf[h ^ lol][1]; - } - #ifdef DEBUGGER - if (decode_specials_debug) { - t1 = decode_denise_specials_debug(t1, cnt + 2); - } - #endif - *buf1++ = t1; - *buf2++ = t1; } - if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl5e(); + if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { + copybpl4e(); } - if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) { - copybpl5o(); + if (bpldat_copy[1] && (denise_hcounter_cmp & 7) == bplcon1_shift[1]) { + copybpl4o(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -7693,11 +6266,7 @@ static void lts_ecs_fm0_n1_p5_ilores_dhires_ntsc(void) denise_cck++; } } -static void lts_ecs_fm0_n1_p5_ilores_dhires_ntsc_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_dpf0_p5_ilores_dhires_ntsc(void) +static void lts_ecs_fm0_dpf1_p4_ihires_dlores_ntsc_filtered(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -7713,24 +6282,32 @@ static void lts_ecs_fm0_dpf0_p5_ilores_dhires_ntsc(void) if (!denise_blank_active) { dpix_val0 = bordercolor; if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl5(); + pix0 = getbpl4(); clxdat |= bplcoltable[pix0]; - if (decode_specials) { - pix0 = decode_denise_specials(pix0); - } uae_u8 val0 = dpf_lookup[pix0]; dpix_val0 = denise_colors.acolors[val0]; } last_bpl_pix = pix0; } - shiftbpl5(); + shiftbpl4(); internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = getbpl4(); + clxdat |= bplcoltable[pix1]; + uae_u8 val1 = dpf_lookup[pix1]; + dpix_val1 = denise_colors.acolors[val1]; + } + last_bpl_pix = pix1; + } + shiftbpl4(); internal_pixel_cnt += 2; - uae_u32 dpix_val1 = dpix_val0; - uae_u8 pix1 = pix0; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); dtbuf[h][0] = dpix_val0; - dtbuf[h][1] = dpix_val1; uae_u32 t0 = 0; if (!extblank) { t0 = dtbuf[h ^ lol][0]; @@ -7742,20 +6319,12 @@ static void lts_ecs_fm0_dpf0_p5_ilores_dhires_ntsc(void) #endif *buf1++ = t0; *buf2++ = t0; - uae_u32 t1 = 0; - if (!extblank) { - t1 = dtbuf[h ^ lol][1]; - } - #ifdef DEBUGGER - if (decode_specials_debug) { - t1 = decode_denise_specials_debug(t1, cnt + 2); - } - #endif - *buf1++ = t1; - *buf2++ = t1; } - if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl5(); + if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { + copybpl4e(); + } + if (bpldat_copy[1] && (denise_hcounter_cmp & 7) == bplcon1_shift[1]) { + copybpl4o(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -7779,11 +6348,7 @@ static void lts_ecs_fm0_dpf0_p5_ilores_dhires_ntsc(void) denise_cck++; } } -static void lts_ecs_fm0_dpf0_p5_ilores_dhires_ntsc_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_dpf1_p5_ilores_dhires_ntsc(void) +static void lts_ecs_fm0_ehb0_p4_ihires_dlores_ntsc(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -7798,25 +6363,16 @@ static void lts_ecs_fm0_dpf1_p5_ilores_dhires_ntsc(void) uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl5(); - clxdat |= bplcoltable[pix0]; - if (decode_specials) { - pix0 = decode_denise_specials(pix0); - } - uae_u8 val0 = dpf_lookup[pix0]; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; } - shiftbpl5(); internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } internal_pixel_cnt += 2; - uae_u32 dpix_val1 = dpix_val0; - uae_u8 pix1 = pix0; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; - dtbuf[h][1] = dpix_val1; uae_u32 t0 = 0; if (!extblank) { t0 = dtbuf[h ^ lol][0]; @@ -7828,23 +6384,6 @@ static void lts_ecs_fm0_dpf1_p5_ilores_dhires_ntsc(void) #endif *buf1++ = t0; *buf2++ = t0; - uae_u32 t1 = 0; - if (!extblank) { - t1 = dtbuf[h ^ lol][1]; - } - #ifdef DEBUGGER - if (decode_specials_debug) { - t1 = decode_denise_specials_debug(t1, cnt + 2); - } - #endif - *buf1++ = t1; - *buf2++ = t1; - } - if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl5e(); - } - if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) { - copybpl5o(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -7868,27 +6407,7 @@ static void lts_ecs_fm0_dpf1_p5_ilores_dhires_ntsc(void) denise_cck++; } } -static void lts_ecs_fm0_dpf1_p5_ilores_dhires_ntsc_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb0_p5_ilores_dhires_ntsc(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb0_p5_ilores_dhires_ntsc_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb1_p5_ilores_dhires_ntsc(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb1_p5_ilores_dhires_ntsc_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham0_p5_ilores_dhires_ntsc(void) +static void lts_ecs_fm0_ehb0_p4_ihires_dlores_ntsc_filtered(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -7903,24 +6422,17 @@ static void lts_ecs_fm0_ham0_p5_ilores_dhires_ntsc(void) uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl5(); - clxdat |= bplcoltable[pix0]; - if (decode_specials) { - pix0 = decode_denise_specials(pix0); - } - dpix_val0 = decode_ham_pixel(pix0); - } - last_bpl_pix = pix0; } - shiftbpl5(); internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } internal_pixel_cnt += 2; - uae_u32 dpix_val1 = dpix_val0; - uae_u8 pix1 = pix0; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); dtbuf[h][0] = dpix_val0; - dtbuf[h][1] = dpix_val1; uae_u32 t0 = 0; if (!extblank) { t0 = dtbuf[h ^ lol][0]; @@ -7932,20 +6444,6 @@ static void lts_ecs_fm0_ham0_p5_ilores_dhires_ntsc(void) #endif *buf1++ = t0; *buf2++ = t0; - uae_u32 t1 = 0; - if (!extblank) { - t1 = dtbuf[h ^ lol][1]; - } - #ifdef DEBUGGER - if (decode_specials_debug) { - t1 = decode_denise_specials_debug(t1, cnt + 2); - } - #endif - *buf1++ = t1; - *buf2++ = t1; - } - if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl5(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -7969,11 +6467,7 @@ static void lts_ecs_fm0_ham0_p5_ilores_dhires_ntsc(void) denise_cck++; } } -static void lts_ecs_fm0_ham0_p5_ilores_dhires_ntsc_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham1_p5_ilores_dhires_ntsc(void) +static void lts_ecs_fm0_ehb1_p4_ihires_dlores_ntsc(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -7988,24 +6482,16 @@ static void lts_ecs_fm0_ham1_p5_ilores_dhires_ntsc(void) uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl5(); - clxdat |= bplcoltable[pix0]; - if (decode_specials) { - pix0 = decode_denise_specials(pix0); - } - dpix_val0 = decode_ham_pixel(pix0); - } - last_bpl_pix = pix0; } - shiftbpl5(); internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } internal_pixel_cnt += 2; - uae_u32 dpix_val1 = dpix_val0; - uae_u8 pix1 = pix0; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; - dtbuf[h][1] = dpix_val1; uae_u32 t0 = 0; if (!extblank) { t0 = dtbuf[h ^ lol][0]; @@ -8017,23 +6503,6 @@ static void lts_ecs_fm0_ham1_p5_ilores_dhires_ntsc(void) #endif *buf1++ = t0; *buf2++ = t0; - uae_u32 t1 = 0; - if (!extblank) { - t1 = dtbuf[h ^ lol][1]; - } - #ifdef DEBUGGER - if (decode_specials_debug) { - t1 = decode_denise_specials_debug(t1, cnt + 2); - } - #endif - *buf1++ = t1; - *buf2++ = t1; - } - if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl5e(); - } - if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) { - copybpl5o(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -8057,11 +6526,7 @@ static void lts_ecs_fm0_ham1_p5_ilores_dhires_ntsc(void) denise_cck++; } } -static void lts_ecs_fm0_ham1_p5_ilores_dhires_ntsc_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_n0_p6_ilores_dhires_ntsc(void) +static void lts_ecs_fm0_ehb1_p4_ihires_dlores_ntsc_filtered(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -8076,24 +6541,17 @@ static void lts_ecs_fm0_n0_p6_ilores_dhires_ntsc(void) uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl6(); - clxdat |= bplcoltable[pix0]; - if (decode_specials) { - pix0 = decode_denise_specials(pix0); - } - dpix_val0 = denise_colors.acolors[pix0]; - } - last_bpl_pix = pix0; } - shiftbpl6(); internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } internal_pixel_cnt += 2; - uae_u32 dpix_val1 = dpix_val0; - uae_u8 pix1 = pix0; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); dtbuf[h][0] = dpix_val0; - dtbuf[h][1] = dpix_val1; uae_u32 t0 = 0; if (!extblank) { t0 = dtbuf[h ^ lol][0]; @@ -8105,20 +6563,6 @@ static void lts_ecs_fm0_n0_p6_ilores_dhires_ntsc(void) #endif *buf1++ = t0; *buf2++ = t0; - uae_u32 t1 = 0; - if (!extblank) { - t1 = dtbuf[h ^ lol][1]; - } - #ifdef DEBUGGER - if (decode_specials_debug) { - t1 = decode_denise_specials_debug(t1, cnt + 2); - } - #endif - *buf1++ = t1; - *buf2++ = t1; - } - if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl6(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -8142,11 +6586,7 @@ static void lts_ecs_fm0_n0_p6_ilores_dhires_ntsc(void) denise_cck++; } } -static void lts_ecs_fm0_n0_p6_ilores_dhires_ntsc_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_n1_p6_ilores_dhires_ntsc(void) +static void lts_ecs_fm0_ham0_p4_ihires_dlores_ntsc(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -8161,24 +6601,16 @@ static void lts_ecs_fm0_n1_p6_ilores_dhires_ntsc(void) uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl6(); - clxdat |= bplcoltable[pix0]; - if (decode_specials) { - pix0 = decode_denise_specials(pix0); - } - dpix_val0 = denise_colors.acolors[pix0]; - } - last_bpl_pix = pix0; } - shiftbpl6(); internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } internal_pixel_cnt += 2; - uae_u32 dpix_val1 = dpix_val0; - uae_u8 pix1 = pix0; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; - dtbuf[h][1] = dpix_val1; uae_u32 t0 = 0; if (!extblank) { t0 = dtbuf[h ^ lol][0]; @@ -8190,23 +6622,6 @@ static void lts_ecs_fm0_n1_p6_ilores_dhires_ntsc(void) #endif *buf1++ = t0; *buf2++ = t0; - uae_u32 t1 = 0; - if (!extblank) { - t1 = dtbuf[h ^ lol][1]; - } - #ifdef DEBUGGER - if (decode_specials_debug) { - t1 = decode_denise_specials_debug(t1, cnt + 2); - } - #endif - *buf1++ = t1; - *buf2++ = t1; - } - if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl6e(); - } - if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) { - copybpl6o(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -8230,11 +6645,7 @@ static void lts_ecs_fm0_n1_p6_ilores_dhires_ntsc(void) denise_cck++; } } -static void lts_ecs_fm0_n1_p6_ilores_dhires_ntsc_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_dpf0_p6_ilores_dhires_ntsc(void) +static void lts_ecs_fm0_ham0_p4_ihires_dlores_ntsc_filtered(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -8249,25 +6660,17 @@ static void lts_ecs_fm0_dpf0_p6_ilores_dhires_ntsc(void) uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl6(); - clxdat |= bplcoltable[pix0]; - if (decode_specials) { - pix0 = decode_denise_specials(pix0); - } - uae_u8 val0 = dpf_lookup[pix0]; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; } - shiftbpl6(); internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } internal_pixel_cnt += 2; - uae_u32 dpix_val1 = dpix_val0; - uae_u8 pix1 = pix0; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); dtbuf[h][0] = dpix_val0; - dtbuf[h][1] = dpix_val1; uae_u32 t0 = 0; if (!extblank) { t0 = dtbuf[h ^ lol][0]; @@ -8279,20 +6682,6 @@ static void lts_ecs_fm0_dpf0_p6_ilores_dhires_ntsc(void) #endif *buf1++ = t0; *buf2++ = t0; - uae_u32 t1 = 0; - if (!extblank) { - t1 = dtbuf[h ^ lol][1]; - } - #ifdef DEBUGGER - if (decode_specials_debug) { - t1 = decode_denise_specials_debug(t1, cnt + 2); - } - #endif - *buf1++ = t1; - *buf2++ = t1; - } - if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl6(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -8316,11 +6705,7 @@ static void lts_ecs_fm0_dpf0_p6_ilores_dhires_ntsc(void) denise_cck++; } } -static void lts_ecs_fm0_dpf0_p6_ilores_dhires_ntsc_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_dpf1_p6_ilores_dhires_ntsc(void) +static void lts_ecs_fm0_ham1_p4_ihires_dlores_ntsc(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -8335,25 +6720,16 @@ static void lts_ecs_fm0_dpf1_p6_ilores_dhires_ntsc(void) uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl6(); - clxdat |= bplcoltable[pix0]; - if (decode_specials) { - pix0 = decode_denise_specials(pix0); - } - uae_u8 val0 = dpf_lookup[pix0]; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; } - shiftbpl6(); internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } internal_pixel_cnt += 2; - uae_u32 dpix_val1 = dpix_val0; - uae_u8 pix1 = pix0; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; - dtbuf[h][1] = dpix_val1; uae_u32 t0 = 0; if (!extblank) { t0 = dtbuf[h ^ lol][0]; @@ -8365,23 +6741,6 @@ static void lts_ecs_fm0_dpf1_p6_ilores_dhires_ntsc(void) #endif *buf1++ = t0; *buf2++ = t0; - uae_u32 t1 = 0; - if (!extblank) { - t1 = dtbuf[h ^ lol][1]; - } - #ifdef DEBUGGER - if (decode_specials_debug) { - t1 = decode_denise_specials_debug(t1, cnt + 2); - } - #endif - *buf1++ = t1; - *buf2++ = t1; - } - if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl6e(); - } - if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) { - copybpl6o(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -8405,11 +6764,7 @@ static void lts_ecs_fm0_dpf1_p6_ilores_dhires_ntsc(void) denise_cck++; } } -static void lts_ecs_fm0_dpf1_p6_ilores_dhires_ntsc_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb0_p6_ilores_dhires_ntsc(void) +static void lts_ecs_fm0_ham1_p4_ihires_dlores_ntsc_filtered(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -8424,29 +6779,17 @@ static void lts_ecs_fm0_ehb0_p6_ilores_dhires_ntsc(void) uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl6(); - clxdat |= bplcoltable[pix0]; - if (decode_specials) { - pix0 = decode_denise_specials(pix0); - } - pix0 &= bplehb_mask; - if (pix0 <= 31) { - dpix_val0 = denise_colors.acolors[pix0]; - } else { - dpix_val0 = p_xcolors[(denise_colors.color_regs_ecs[pix0 - 32] >> 1) & 0x777]; - } - } - last_bpl_pix = pix0; } - shiftbpl6(); internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } internal_pixel_cnt += 2; - uae_u32 dpix_val1 = dpix_val0; - uae_u8 pix1 = pix0; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); dtbuf[h][0] = dpix_val0; - dtbuf[h][1] = dpix_val1; uae_u32 t0 = 0; if (!extblank) { t0 = dtbuf[h ^ lol][0]; @@ -8458,20 +6801,6 @@ static void lts_ecs_fm0_ehb0_p6_ilores_dhires_ntsc(void) #endif *buf1++ = t0; *buf2++ = t0; - uae_u32 t1 = 0; - if (!extblank) { - t1 = dtbuf[h ^ lol][1]; - } - #ifdef DEBUGGER - if (decode_specials_debug) { - t1 = decode_denise_specials_debug(t1, cnt + 2); - } - #endif - *buf1++ = t1; - *buf2++ = t1; - } - if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl6(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -8495,11 +6824,7 @@ static void lts_ecs_fm0_ehb0_p6_ilores_dhires_ntsc(void) denise_cck++; } } -static void lts_ecs_fm0_ehb0_p6_ilores_dhires_ntsc_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb1_p6_ilores_dhires_ntsc(void) +static void lts_ecs_fm0_n0_p5_ihires_dlores_ntsc(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -8514,29 +6839,16 @@ static void lts_ecs_fm0_ehb1_p6_ilores_dhires_ntsc(void) uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl6(); - clxdat |= bplcoltable[pix0]; - if (decode_specials) { - pix0 = decode_denise_specials(pix0); - } - pix0 &= bplehb_mask; - if (pix0 <= 31) { - dpix_val0 = denise_colors.acolors[pix0]; - } else { - dpix_val0 = p_xcolors[(denise_colors.color_regs_ecs[pix0 - 32] >> 1) & 0x777]; - } - } - last_bpl_pix = pix0; } - shiftbpl6(); internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } internal_pixel_cnt += 2; - uae_u32 dpix_val1 = dpix_val0; - uae_u8 pix1 = pix0; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; - dtbuf[h][1] = dpix_val1; uae_u32 t0 = 0; if (!extblank) { t0 = dtbuf[h ^ lol][0]; @@ -8548,23 +6860,6 @@ static void lts_ecs_fm0_ehb1_p6_ilores_dhires_ntsc(void) #endif *buf1++ = t0; *buf2++ = t0; - uae_u32 t1 = 0; - if (!extblank) { - t1 = dtbuf[h ^ lol][1]; - } - #ifdef DEBUGGER - if (decode_specials_debug) { - t1 = decode_denise_specials_debug(t1, cnt + 2); - } - #endif - *buf1++ = t1; - *buf2++ = t1; - } - if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl6e(); - } - if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) { - copybpl6o(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -8588,11 +6883,7 @@ static void lts_ecs_fm0_ehb1_p6_ilores_dhires_ntsc(void) denise_cck++; } } -static void lts_ecs_fm0_ehb1_p6_ilores_dhires_ntsc_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham0_p6_ilores_dhires_ntsc(void) +static void lts_ecs_fm0_n0_p5_ihires_dlores_ntsc_filtered(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -8607,24 +6898,17 @@ static void lts_ecs_fm0_ham0_p6_ilores_dhires_ntsc(void) uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl6(); - clxdat |= bplcoltable[pix0]; - if (decode_specials) { - pix0 = decode_denise_specials(pix0); - } - dpix_val0 = decode_ham_pixel(pix0); - } - last_bpl_pix = pix0; } - shiftbpl6(); internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } internal_pixel_cnt += 2; - uae_u32 dpix_val1 = dpix_val0; - uae_u8 pix1 = pix0; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); dtbuf[h][0] = dpix_val0; - dtbuf[h][1] = dpix_val1; uae_u32 t0 = 0; if (!extblank) { t0 = dtbuf[h ^ lol][0]; @@ -8636,20 +6920,6 @@ static void lts_ecs_fm0_ham0_p6_ilores_dhires_ntsc(void) #endif *buf1++ = t0; *buf2++ = t0; - uae_u32 t1 = 0; - if (!extblank) { - t1 = dtbuf[h ^ lol][1]; - } - #ifdef DEBUGGER - if (decode_specials_debug) { - t1 = decode_denise_specials_debug(t1, cnt + 2); - } - #endif - *buf1++ = t1; - *buf2++ = t1; - } - if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl6(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -8673,11 +6943,7 @@ static void lts_ecs_fm0_ham0_p6_ilores_dhires_ntsc(void) denise_cck++; } } -static void lts_ecs_fm0_ham0_p6_ilores_dhires_ntsc_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham1_p6_ilores_dhires_ntsc(void) +static void lts_ecs_fm0_n1_p5_ihires_dlores_ntsc(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -8692,24 +6958,16 @@ static void lts_ecs_fm0_ham1_p6_ilores_dhires_ntsc(void) uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl6(); - clxdat |= bplcoltable[pix0]; - if (decode_specials) { - pix0 = decode_denise_specials(pix0); - } - dpix_val0 = decode_ham_pixel(pix0); - } - last_bpl_pix = pix0; } - shiftbpl6(); internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } internal_pixel_cnt += 2; - uae_u32 dpix_val1 = dpix_val0; - uae_u8 pix1 = pix0; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; - dtbuf[h][1] = dpix_val1; uae_u32 t0 = 0; if (!extblank) { t0 = dtbuf[h ^ lol][0]; @@ -8721,23 +6979,6 @@ static void lts_ecs_fm0_ham1_p6_ilores_dhires_ntsc(void) #endif *buf1++ = t0; *buf2++ = t0; - uae_u32 t1 = 0; - if (!extblank) { - t1 = dtbuf[h ^ lol][1]; - } - #ifdef DEBUGGER - if (decode_specials_debug) { - t1 = decode_denise_specials_debug(t1, cnt + 2); - } - #endif - *buf1++ = t1; - *buf2++ = t1; - } - if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl6e(); - } - if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) { - copybpl6o(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -8761,11 +7002,7 @@ static void lts_ecs_fm0_ham1_p6_ilores_dhires_ntsc(void) denise_cck++; } } -static void lts_ecs_fm0_ham1_p6_ilores_dhires_ntsc_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_n0_p2_ilores_dhires_spr_ntsc(void) +static void lts_ecs_fm0_n1_p5_ihires_dlores_ntsc_filtered(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -8776,41 +7013,21 @@ static void lts_ecs_fm0_n0_p2_ilores_dhires_spr_ntsc(void) } int cnt = denise_hcounter << 2; if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl2(); - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0]; - } - last_bpl_pix = pix0; - } - shiftbpl2(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_lores(); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } } internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } internal_pixel_cnt += 2; - uae_u32 dpix_val1 = dpix_val0; - uae_u8 pix1 = pix0; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - dpix_val1 = dpix_val0; - } - } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); dtbuf[h][0] = dpix_val0; - dtbuf[h][1] = dpix_val1; uae_u32 t0 = 0; if (!extblank) { t0 = dtbuf[h ^ lol][0]; @@ -8822,20 +7039,6 @@ static void lts_ecs_fm0_n0_p2_ilores_dhires_spr_ntsc(void) #endif *buf1++ = t0; *buf2++ = t0; - uae_u32 t1 = 0; - if (!extblank) { - t1 = dtbuf[h ^ lol][1]; - } - #ifdef DEBUGGER - if (decode_specials_debug) { - t1 = decode_denise_specials_debug(t1, cnt + 2); - } - #endif - *buf1++ = t1; - *buf2++ = t1; - } - if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl2(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -8859,11 +7062,7 @@ static void lts_ecs_fm0_n0_p2_ilores_dhires_spr_ntsc(void) denise_cck++; } } -static void lts_ecs_fm0_n0_p2_ilores_dhires_spr_ntsc_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_n1_p2_ilores_dhires_spr_ntsc(void) +static void lts_ecs_fm0_dpf0_p5_ihires_dlores_ntsc(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -8874,41 +7073,20 @@ static void lts_ecs_fm0_n1_p2_ilores_dhires_spr_ntsc(void) } int cnt = denise_hcounter << 2; if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl2(); - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0]; - } - last_bpl_pix = pix0; - } - shiftbpl2(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_lores(); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } } internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } internal_pixel_cnt += 2; - uae_u32 dpix_val1 = dpix_val0; - uae_u8 pix1 = pix0; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - dpix_val1 = dpix_val0; - } - } dtbuf[h][0] = dpix_val0; - dtbuf[h][1] = dpix_val1; uae_u32 t0 = 0; if (!extblank) { t0 = dtbuf[h ^ lol][0]; @@ -8920,23 +7098,6 @@ static void lts_ecs_fm0_n1_p2_ilores_dhires_spr_ntsc(void) #endif *buf1++ = t0; *buf2++ = t0; - uae_u32 t1 = 0; - if (!extblank) { - t1 = dtbuf[h ^ lol][1]; - } - #ifdef DEBUGGER - if (decode_specials_debug) { - t1 = decode_denise_specials_debug(t1, cnt + 2); - } - #endif - *buf1++ = t1; - *buf2++ = t1; - } - if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl2e(); - } - if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) { - copybpl2o(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -8960,11 +7121,7 @@ static void lts_ecs_fm0_n1_p2_ilores_dhires_spr_ntsc(void) denise_cck++; } } -static void lts_ecs_fm0_n1_p2_ilores_dhires_spr_ntsc_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_dpf0_p2_ilores_dhires_spr_ntsc(void) +static void lts_ecs_fm0_dpf0_p5_ihires_dlores_ntsc_filtered(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -8975,42 +7132,21 @@ static void lts_ecs_fm0_dpf0_p2_ilores_dhires_spr_ntsc(void) } int cnt = denise_hcounter << 2; if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl2(); - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; - } - shiftbpl2(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_lores(); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } } internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } internal_pixel_cnt += 2; - uae_u32 dpix_val1 = dpix_val0; - uae_u8 pix1 = pix0; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - dpix_val1 = dpix_val0; - } - } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); dtbuf[h][0] = dpix_val0; - dtbuf[h][1] = dpix_val1; uae_u32 t0 = 0; if (!extblank) { t0 = dtbuf[h ^ lol][0]; @@ -9022,20 +7158,6 @@ static void lts_ecs_fm0_dpf0_p2_ilores_dhires_spr_ntsc(void) #endif *buf1++ = t0; *buf2++ = t0; - uae_u32 t1 = 0; - if (!extblank) { - t1 = dtbuf[h ^ lol][1]; - } - #ifdef DEBUGGER - if (decode_specials_debug) { - t1 = decode_denise_specials_debug(t1, cnt + 2); - } - #endif - *buf1++ = t1; - *buf2++ = t1; - } - if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl2(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -9059,11 +7181,7 @@ static void lts_ecs_fm0_dpf0_p2_ilores_dhires_spr_ntsc(void) denise_cck++; } } -static void lts_ecs_fm0_dpf0_p2_ilores_dhires_spr_ntsc_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_dpf1_p2_ilores_dhires_spr_ntsc(void) +static void lts_ecs_fm0_dpf1_p5_ihires_dlores_ntsc(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -9074,42 +7192,20 @@ static void lts_ecs_fm0_dpf1_p2_ilores_dhires_spr_ntsc(void) } int cnt = denise_hcounter << 2; if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl2(); - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; - } - shiftbpl2(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_lores(); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } } internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } internal_pixel_cnt += 2; - uae_u32 dpix_val1 = dpix_val0; - uae_u8 pix1 = pix0; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - dpix_val1 = dpix_val0; - } - } dtbuf[h][0] = dpix_val0; - dtbuf[h][1] = dpix_val1; uae_u32 t0 = 0; if (!extblank) { t0 = dtbuf[h ^ lol][0]; @@ -9121,23 +7217,6 @@ static void lts_ecs_fm0_dpf1_p2_ilores_dhires_spr_ntsc(void) #endif *buf1++ = t0; *buf2++ = t0; - uae_u32 t1 = 0; - if (!extblank) { - t1 = dtbuf[h ^ lol][1]; - } - #ifdef DEBUGGER - if (decode_specials_debug) { - t1 = decode_denise_specials_debug(t1, cnt + 2); - } - #endif - *buf1++ = t1; - *buf2++ = t1; - } - if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl2e(); - } - if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) { - copybpl2o(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -9161,43 +7240,7 @@ static void lts_ecs_fm0_dpf1_p2_ilores_dhires_spr_ntsc(void) denise_cck++; } } -static void lts_ecs_fm0_dpf1_p2_ilores_dhires_spr_ntsc_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb0_p2_ilores_dhires_spr_ntsc(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb0_p2_ilores_dhires_spr_ntsc_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb1_p2_ilores_dhires_spr_ntsc(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb1_p2_ilores_dhires_spr_ntsc_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham0_p2_ilores_dhires_spr_ntsc(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham0_p2_ilores_dhires_spr_ntsc_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham1_p2_ilores_dhires_spr_ntsc(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham1_p2_ilores_dhires_spr_ntsc_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_n0_p4_ilores_dhires_spr_ntsc(void) +static void lts_ecs_fm0_dpf1_p5_ihires_dlores_ntsc_filtered(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -9208,41 +7251,21 @@ static void lts_ecs_fm0_n0_p4_ilores_dhires_spr_ntsc(void) } int cnt = denise_hcounter << 2; if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl4(); - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0]; - } - last_bpl_pix = pix0; - } - shiftbpl4(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_lores(); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } } internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } internal_pixel_cnt += 2; - uae_u32 dpix_val1 = dpix_val0; - uae_u8 pix1 = pix0; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - dpix_val1 = dpix_val0; - } - } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); dtbuf[h][0] = dpix_val0; - dtbuf[h][1] = dpix_val1; uae_u32 t0 = 0; if (!extblank) { t0 = dtbuf[h ^ lol][0]; @@ -9254,20 +7277,6 @@ static void lts_ecs_fm0_n0_p4_ilores_dhires_spr_ntsc(void) #endif *buf1++ = t0; *buf2++ = t0; - uae_u32 t1 = 0; - if (!extblank) { - t1 = dtbuf[h ^ lol][1]; - } - #ifdef DEBUGGER - if (decode_specials_debug) { - t1 = decode_denise_specials_debug(t1, cnt + 2); - } - #endif - *buf1++ = t1; - *buf2++ = t1; - } - if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl4(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -9291,11 +7300,7 @@ static void lts_ecs_fm0_n0_p4_ilores_dhires_spr_ntsc(void) denise_cck++; } } -static void lts_ecs_fm0_n0_p4_ilores_dhires_spr_ntsc_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_n1_p4_ilores_dhires_spr_ntsc(void) +static void lts_ecs_fm0_ehb0_p5_ihires_dlores_ntsc(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -9306,41 +7311,20 @@ static void lts_ecs_fm0_n1_p4_ilores_dhires_spr_ntsc(void) } int cnt = denise_hcounter << 2; if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl4(); - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0]; - } - last_bpl_pix = pix0; - } - shiftbpl4(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_lores(); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } } internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } internal_pixel_cnt += 2; - uae_u32 dpix_val1 = dpix_val0; - uae_u8 pix1 = pix0; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - dpix_val1 = dpix_val0; - } - } dtbuf[h][0] = dpix_val0; - dtbuf[h][1] = dpix_val1; uae_u32 t0 = 0; if (!extblank) { t0 = dtbuf[h ^ lol][0]; @@ -9352,23 +7336,6 @@ static void lts_ecs_fm0_n1_p4_ilores_dhires_spr_ntsc(void) #endif *buf1++ = t0; *buf2++ = t0; - uae_u32 t1 = 0; - if (!extblank) { - t1 = dtbuf[h ^ lol][1]; - } - #ifdef DEBUGGER - if (decode_specials_debug) { - t1 = decode_denise_specials_debug(t1, cnt + 2); - } - #endif - *buf1++ = t1; - *buf2++ = t1; - } - if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl4e(); - } - if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) { - copybpl4o(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -9392,11 +7359,7 @@ static void lts_ecs_fm0_n1_p4_ilores_dhires_spr_ntsc(void) denise_cck++; } } -static void lts_ecs_fm0_n1_p4_ilores_dhires_spr_ntsc_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_dpf0_p4_ilores_dhires_spr_ntsc(void) +static void lts_ecs_fm0_ehb0_p5_ihires_dlores_ntsc_filtered(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -9407,42 +7370,21 @@ static void lts_ecs_fm0_dpf0_p4_ilores_dhires_spr_ntsc(void) } int cnt = denise_hcounter << 2; if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl4(); - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; - } - shiftbpl4(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_lores(); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } } internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } internal_pixel_cnt += 2; - uae_u32 dpix_val1 = dpix_val0; - uae_u8 pix1 = pix0; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - dpix_val1 = dpix_val0; - } - } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); dtbuf[h][0] = dpix_val0; - dtbuf[h][1] = dpix_val1; uae_u32 t0 = 0; if (!extblank) { t0 = dtbuf[h ^ lol][0]; @@ -9454,20 +7396,6 @@ static void lts_ecs_fm0_dpf0_p4_ilores_dhires_spr_ntsc(void) #endif *buf1++ = t0; *buf2++ = t0; - uae_u32 t1 = 0; - if (!extblank) { - t1 = dtbuf[h ^ lol][1]; - } - #ifdef DEBUGGER - if (decode_specials_debug) { - t1 = decode_denise_specials_debug(t1, cnt + 2); - } - #endif - *buf1++ = t1; - *buf2++ = t1; - } - if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl4(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -9491,11 +7419,7 @@ static void lts_ecs_fm0_dpf0_p4_ilores_dhires_spr_ntsc(void) denise_cck++; } } -static void lts_ecs_fm0_dpf0_p4_ilores_dhires_spr_ntsc_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_dpf1_p4_ilores_dhires_spr_ntsc(void) +static void lts_ecs_fm0_ehb1_p5_ihires_dlores_ntsc(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -9506,42 +7430,20 @@ static void lts_ecs_fm0_dpf1_p4_ilores_dhires_spr_ntsc(void) } int cnt = denise_hcounter << 2; if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl4(); - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; - } - shiftbpl4(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_lores(); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } } internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } internal_pixel_cnt += 2; - uae_u32 dpix_val1 = dpix_val0; - uae_u8 pix1 = pix0; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - dpix_val1 = dpix_val0; - } - } dtbuf[h][0] = dpix_val0; - dtbuf[h][1] = dpix_val1; uae_u32 t0 = 0; if (!extblank) { t0 = dtbuf[h ^ lol][0]; @@ -9553,23 +7455,6 @@ static void lts_ecs_fm0_dpf1_p4_ilores_dhires_spr_ntsc(void) #endif *buf1++ = t0; *buf2++ = t0; - uae_u32 t1 = 0; - if (!extblank) { - t1 = dtbuf[h ^ lol][1]; - } - #ifdef DEBUGGER - if (decode_specials_debug) { - t1 = decode_denise_specials_debug(t1, cnt + 2); - } - #endif - *buf1++ = t1; - *buf2++ = t1; - } - if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl4e(); - } - if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) { - copybpl4o(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -9593,43 +7478,7 @@ static void lts_ecs_fm0_dpf1_p4_ilores_dhires_spr_ntsc(void) denise_cck++; } } -static void lts_ecs_fm0_dpf1_p4_ilores_dhires_spr_ntsc_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb0_p4_ilores_dhires_spr_ntsc(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb0_p4_ilores_dhires_spr_ntsc_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb1_p4_ilores_dhires_spr_ntsc(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb1_p4_ilores_dhires_spr_ntsc_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham0_p4_ilores_dhires_spr_ntsc(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham0_p4_ilores_dhires_spr_ntsc_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham1_p4_ilores_dhires_spr_ntsc(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham1_p4_ilores_dhires_spr_ntsc_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_n0_p5_ilores_dhires_spr_ntsc(void) +static void lts_ecs_fm0_ehb1_p5_ihires_dlores_ntsc_filtered(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -9640,44 +7489,21 @@ static void lts_ecs_fm0_n0_p5_ilores_dhires_spr_ntsc(void) } int cnt = denise_hcounter << 2; if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl5(); - clxdat |= bplcoltable[pix0]; - if (decode_specials) { - pix0 = decode_denise_specials(pix0); - } - dpix_val0 = denise_colors.acolors[pix0]; - } - last_bpl_pix = pix0; - } - shiftbpl5(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_lores(); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } } internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } internal_pixel_cnt += 2; - uae_u32 dpix_val1 = dpix_val0; - uae_u8 pix1 = pix0; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - dpix_val1 = dpix_val0; - } - } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); dtbuf[h][0] = dpix_val0; - dtbuf[h][1] = dpix_val1; uae_u32 t0 = 0; if (!extblank) { t0 = dtbuf[h ^ lol][0]; @@ -9689,20 +7515,6 @@ static void lts_ecs_fm0_n0_p5_ilores_dhires_spr_ntsc(void) #endif *buf1++ = t0; *buf2++ = t0; - uae_u32 t1 = 0; - if (!extblank) { - t1 = dtbuf[h ^ lol][1]; - } - #ifdef DEBUGGER - if (decode_specials_debug) { - t1 = decode_denise_specials_debug(t1, cnt + 2); - } - #endif - *buf1++ = t1; - *buf2++ = t1; - } - if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl5(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -9726,11 +7538,7 @@ static void lts_ecs_fm0_n0_p5_ilores_dhires_spr_ntsc(void) denise_cck++; } } -static void lts_ecs_fm0_n0_p5_ilores_dhires_spr_ntsc_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_n1_p5_ilores_dhires_spr_ntsc(void) +static void lts_ecs_fm0_ham0_p5_ihires_dlores_ntsc(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -9741,44 +7549,20 @@ static void lts_ecs_fm0_n1_p5_ilores_dhires_spr_ntsc(void) } int cnt = denise_hcounter << 2; if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl5(); - clxdat |= bplcoltable[pix0]; - if (decode_specials) { - pix0 = decode_denise_specials(pix0); - } - dpix_val0 = denise_colors.acolors[pix0]; - } - last_bpl_pix = pix0; - } - shiftbpl5(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_lores(); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } } internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } internal_pixel_cnt += 2; - uae_u32 dpix_val1 = dpix_val0; - uae_u8 pix1 = pix0; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - dpix_val1 = dpix_val0; - } - } dtbuf[h][0] = dpix_val0; - dtbuf[h][1] = dpix_val1; uae_u32 t0 = 0; if (!extblank) { t0 = dtbuf[h ^ lol][0]; @@ -9790,23 +7574,6 @@ static void lts_ecs_fm0_n1_p5_ilores_dhires_spr_ntsc(void) #endif *buf1++ = t0; *buf2++ = t0; - uae_u32 t1 = 0; - if (!extblank) { - t1 = dtbuf[h ^ lol][1]; - } - #ifdef DEBUGGER - if (decode_specials_debug) { - t1 = decode_denise_specials_debug(t1, cnt + 2); - } - #endif - *buf1++ = t1; - *buf2++ = t1; - } - if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl5e(); - } - if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) { - copybpl5o(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -9830,11 +7597,7 @@ static void lts_ecs_fm0_n1_p5_ilores_dhires_spr_ntsc(void) denise_cck++; } } -static void lts_ecs_fm0_n1_p5_ilores_dhires_spr_ntsc_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_dpf0_p5_ilores_dhires_spr_ntsc(void) +static void lts_ecs_fm0_ham0_p5_ihires_dlores_ntsc_filtered(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -9845,45 +7608,21 @@ static void lts_ecs_fm0_dpf0_p5_ilores_dhires_spr_ntsc(void) } int cnt = denise_hcounter << 2; if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl5(); - clxdat |= bplcoltable[pix0]; - if (decode_specials) { - pix0 = decode_denise_specials(pix0); - } - uae_u8 val0 = dpf_lookup[pix0]; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; - } - shiftbpl5(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_lores(); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } } internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } internal_pixel_cnt += 2; - uae_u32 dpix_val1 = dpix_val0; - uae_u8 pix1 = pix0; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - dpix_val1 = dpix_val0; - } - } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); dtbuf[h][0] = dpix_val0; - dtbuf[h][1] = dpix_val1; uae_u32 t0 = 0; if (!extblank) { t0 = dtbuf[h ^ lol][0]; @@ -9895,20 +7634,6 @@ static void lts_ecs_fm0_dpf0_p5_ilores_dhires_spr_ntsc(void) #endif *buf1++ = t0; *buf2++ = t0; - uae_u32 t1 = 0; - if (!extblank) { - t1 = dtbuf[h ^ lol][1]; - } - #ifdef DEBUGGER - if (decode_specials_debug) { - t1 = decode_denise_specials_debug(t1, cnt + 2); - } - #endif - *buf1++ = t1; - *buf2++ = t1; - } - if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl5(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -9932,11 +7657,7 @@ static void lts_ecs_fm0_dpf0_p5_ilores_dhires_spr_ntsc(void) denise_cck++; } } -static void lts_ecs_fm0_dpf0_p5_ilores_dhires_spr_ntsc_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_dpf1_p5_ilores_dhires_spr_ntsc(void) +static void lts_ecs_fm0_ham1_p5_ihires_dlores_ntsc(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -9947,45 +7668,20 @@ static void lts_ecs_fm0_dpf1_p5_ilores_dhires_spr_ntsc(void) } int cnt = denise_hcounter << 2; if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl5(); - clxdat |= bplcoltable[pix0]; - if (decode_specials) { - pix0 = decode_denise_specials(pix0); - } - uae_u8 val0 = dpf_lookup[pix0]; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; - } - shiftbpl5(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_lores(); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } } internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } internal_pixel_cnt += 2; - uae_u32 dpix_val1 = dpix_val0; - uae_u8 pix1 = pix0; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - dpix_val1 = dpix_val0; - } - } dtbuf[h][0] = dpix_val0; - dtbuf[h][1] = dpix_val1; uae_u32 t0 = 0; if (!extblank) { t0 = dtbuf[h ^ lol][0]; @@ -9997,23 +7693,6 @@ static void lts_ecs_fm0_dpf1_p5_ilores_dhires_spr_ntsc(void) #endif *buf1++ = t0; *buf2++ = t0; - uae_u32 t1 = 0; - if (!extblank) { - t1 = dtbuf[h ^ lol][1]; - } - #ifdef DEBUGGER - if (decode_specials_debug) { - t1 = decode_denise_specials_debug(t1, cnt + 2); - } - #endif - *buf1++ = t1; - *buf2++ = t1; - } - if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl5e(); - } - if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) { - copybpl5o(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -10037,27 +7716,7 @@ static void lts_ecs_fm0_dpf1_p5_ilores_dhires_spr_ntsc(void) denise_cck++; } } -static void lts_ecs_fm0_dpf1_p5_ilores_dhires_spr_ntsc_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb0_p5_ilores_dhires_spr_ntsc(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb0_p5_ilores_dhires_spr_ntsc_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb1_p5_ilores_dhires_spr_ntsc(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb1_p5_ilores_dhires_spr_ntsc_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham0_p5_ilores_dhires_spr_ntsc(void) +static void lts_ecs_fm0_ham1_p5_ihires_dlores_ntsc_filtered(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -10068,44 +7727,21 @@ static void lts_ecs_fm0_ham0_p5_ilores_dhires_spr_ntsc(void) } int cnt = denise_hcounter << 2; if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl5(); - clxdat |= bplcoltable[pix0]; - if (decode_specials) { - pix0 = decode_denise_specials(pix0); - } - dpix_val0 = decode_ham_pixel(pix0); - } - last_bpl_pix = pix0; - } - shiftbpl5(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_lores(); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } } internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } internal_pixel_cnt += 2; - uae_u32 dpix_val1 = dpix_val0; - uae_u8 pix1 = pix0; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - dpix_val1 = dpix_val0; - } - } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); dtbuf[h][0] = dpix_val0; - dtbuf[h][1] = dpix_val1; uae_u32 t0 = 0; if (!extblank) { t0 = dtbuf[h ^ lol][0]; @@ -10117,20 +7753,6 @@ static void lts_ecs_fm0_ham0_p5_ilores_dhires_spr_ntsc(void) #endif *buf1++ = t0; *buf2++ = t0; - uae_u32 t1 = 0; - if (!extblank) { - t1 = dtbuf[h ^ lol][1]; - } - #ifdef DEBUGGER - if (decode_specials_debug) { - t1 = decode_denise_specials_debug(t1, cnt + 2); - } - #endif - *buf1++ = t1; - *buf2++ = t1; - } - if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl5(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -10154,11 +7776,7 @@ static void lts_ecs_fm0_ham0_p5_ilores_dhires_spr_ntsc(void) denise_cck++; } } -static void lts_ecs_fm0_ham0_p5_ilores_dhires_spr_ntsc_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham1_p5_ilores_dhires_spr_ntsc(void) +static void lts_ecs_fm0_n0_p6_ihires_dlores_ntsc(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -10169,44 +7787,20 @@ static void lts_ecs_fm0_ham1_p5_ilores_dhires_spr_ntsc(void) } int cnt = denise_hcounter << 2; if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl5(); - clxdat |= bplcoltable[pix0]; - if (decode_specials) { - pix0 = decode_denise_specials(pix0); - } - dpix_val0 = decode_ham_pixel(pix0); - } - last_bpl_pix = pix0; - } - shiftbpl5(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_lores(); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } } internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } internal_pixel_cnt += 2; - uae_u32 dpix_val1 = dpix_val0; - uae_u8 pix1 = pix0; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - dpix_val1 = dpix_val0; - } - } dtbuf[h][0] = dpix_val0; - dtbuf[h][1] = dpix_val1; uae_u32 t0 = 0; if (!extblank) { t0 = dtbuf[h ^ lol][0]; @@ -10218,23 +7812,6 @@ static void lts_ecs_fm0_ham1_p5_ilores_dhires_spr_ntsc(void) #endif *buf1++ = t0; *buf2++ = t0; - uae_u32 t1 = 0; - if (!extblank) { - t1 = dtbuf[h ^ lol][1]; - } - #ifdef DEBUGGER - if (decode_specials_debug) { - t1 = decode_denise_specials_debug(t1, cnt + 2); - } - #endif - *buf1++ = t1; - *buf2++ = t1; - } - if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl5e(); - } - if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) { - copybpl5o(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -10258,11 +7835,7 @@ static void lts_ecs_fm0_ham1_p5_ilores_dhires_spr_ntsc(void) denise_cck++; } } -static void lts_ecs_fm0_ham1_p5_ilores_dhires_spr_ntsc_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_n0_p6_ilores_dhires_spr_ntsc(void) +static void lts_ecs_fm0_n0_p6_ihires_dlores_ntsc_filtered(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -10273,44 +7846,21 @@ static void lts_ecs_fm0_n0_p6_ilores_dhires_spr_ntsc(void) } int cnt = denise_hcounter << 2; if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl6(); - clxdat |= bplcoltable[pix0]; - if (decode_specials) { - pix0 = decode_denise_specials(pix0); - } - dpix_val0 = denise_colors.acolors[pix0]; - } - last_bpl_pix = pix0; - } - shiftbpl6(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_lores(); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } } internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } internal_pixel_cnt += 2; - uae_u32 dpix_val1 = dpix_val0; - uae_u8 pix1 = pix0; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - dpix_val1 = dpix_val0; - } - } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); dtbuf[h][0] = dpix_val0; - dtbuf[h][1] = dpix_val1; uae_u32 t0 = 0; if (!extblank) { t0 = dtbuf[h ^ lol][0]; @@ -10322,20 +7872,6 @@ static void lts_ecs_fm0_n0_p6_ilores_dhires_spr_ntsc(void) #endif *buf1++ = t0; *buf2++ = t0; - uae_u32 t1 = 0; - if (!extblank) { - t1 = dtbuf[h ^ lol][1]; - } - #ifdef DEBUGGER - if (decode_specials_debug) { - t1 = decode_denise_specials_debug(t1, cnt + 2); - } - #endif - *buf1++ = t1; - *buf2++ = t1; - } - if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl6(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -10359,11 +7895,7 @@ static void lts_ecs_fm0_n0_p6_ilores_dhires_spr_ntsc(void) denise_cck++; } } -static void lts_ecs_fm0_n0_p6_ilores_dhires_spr_ntsc_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_n1_p6_ilores_dhires_spr_ntsc(void) +static void lts_ecs_fm0_n1_p6_ihires_dlores_ntsc(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -10374,44 +7906,20 @@ static void lts_ecs_fm0_n1_p6_ilores_dhires_spr_ntsc(void) } int cnt = denise_hcounter << 2; if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl6(); - clxdat |= bplcoltable[pix0]; - if (decode_specials) { - pix0 = decode_denise_specials(pix0); - } - dpix_val0 = denise_colors.acolors[pix0]; - } - last_bpl_pix = pix0; - } - shiftbpl6(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_lores(); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } } internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } internal_pixel_cnt += 2; - uae_u32 dpix_val1 = dpix_val0; - uae_u8 pix1 = pix0; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - dpix_val1 = dpix_val0; - } - } dtbuf[h][0] = dpix_val0; - dtbuf[h][1] = dpix_val1; uae_u32 t0 = 0; if (!extblank) { t0 = dtbuf[h ^ lol][0]; @@ -10423,23 +7931,6 @@ static void lts_ecs_fm0_n1_p6_ilores_dhires_spr_ntsc(void) #endif *buf1++ = t0; *buf2++ = t0; - uae_u32 t1 = 0; - if (!extblank) { - t1 = dtbuf[h ^ lol][1]; - } - #ifdef DEBUGGER - if (decode_specials_debug) { - t1 = decode_denise_specials_debug(t1, cnt + 2); - } - #endif - *buf1++ = t1; - *buf2++ = t1; - } - if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl6e(); - } - if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) { - copybpl6o(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -10463,11 +7954,7 @@ static void lts_ecs_fm0_n1_p6_ilores_dhires_spr_ntsc(void) denise_cck++; } } -static void lts_ecs_fm0_n1_p6_ilores_dhires_spr_ntsc_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_dpf0_p6_ilores_dhires_spr_ntsc(void) +static void lts_ecs_fm0_n1_p6_ihires_dlores_ntsc_filtered(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -10478,45 +7965,21 @@ static void lts_ecs_fm0_dpf0_p6_ilores_dhires_spr_ntsc(void) } int cnt = denise_hcounter << 2; if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl6(); - clxdat |= bplcoltable[pix0]; - if (decode_specials) { - pix0 = decode_denise_specials(pix0); - } - uae_u8 val0 = dpf_lookup[pix0]; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; - } - shiftbpl6(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_lores(); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } } internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } internal_pixel_cnt += 2; - uae_u32 dpix_val1 = dpix_val0; - uae_u8 pix1 = pix0; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - dpix_val1 = dpix_val0; - } - } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); dtbuf[h][0] = dpix_val0; - dtbuf[h][1] = dpix_val1; uae_u32 t0 = 0; if (!extblank) { t0 = dtbuf[h ^ lol][0]; @@ -10528,20 +7991,6 @@ static void lts_ecs_fm0_dpf0_p6_ilores_dhires_spr_ntsc(void) #endif *buf1++ = t0; *buf2++ = t0; - uae_u32 t1 = 0; - if (!extblank) { - t1 = dtbuf[h ^ lol][1]; - } - #ifdef DEBUGGER - if (decode_specials_debug) { - t1 = decode_denise_specials_debug(t1, cnt + 2); - } - #endif - *buf1++ = t1; - *buf2++ = t1; - } - if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl6(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -10565,11 +8014,7 @@ static void lts_ecs_fm0_dpf0_p6_ilores_dhires_spr_ntsc(void) denise_cck++; } } -static void lts_ecs_fm0_dpf0_p6_ilores_dhires_spr_ntsc_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_dpf1_p6_ilores_dhires_spr_ntsc(void) +static void lts_ecs_fm0_dpf0_p6_ihires_dlores_ntsc(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -10580,45 +8025,20 @@ static void lts_ecs_fm0_dpf1_p6_ilores_dhires_spr_ntsc(void) } int cnt = denise_hcounter << 2; if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl6(); - clxdat |= bplcoltable[pix0]; - if (decode_specials) { - pix0 = decode_denise_specials(pix0); - } - uae_u8 val0 = dpf_lookup[pix0]; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; - } - shiftbpl6(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_lores(); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } } internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } internal_pixel_cnt += 2; - uae_u32 dpix_val1 = dpix_val0; - uae_u8 pix1 = pix0; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - dpix_val1 = dpix_val0; - } - } dtbuf[h][0] = dpix_val0; - dtbuf[h][1] = dpix_val1; uae_u32 t0 = 0; if (!extblank) { t0 = dtbuf[h ^ lol][0]; @@ -10630,23 +8050,6 @@ static void lts_ecs_fm0_dpf1_p6_ilores_dhires_spr_ntsc(void) #endif *buf1++ = t0; *buf2++ = t0; - uae_u32 t1 = 0; - if (!extblank) { - t1 = dtbuf[h ^ lol][1]; - } - #ifdef DEBUGGER - if (decode_specials_debug) { - t1 = decode_denise_specials_debug(t1, cnt + 2); - } - #endif - *buf1++ = t1; - *buf2++ = t1; - } - if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl6e(); - } - if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) { - copybpl6o(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -10670,11 +8073,7 @@ static void lts_ecs_fm0_dpf1_p6_ilores_dhires_spr_ntsc(void) denise_cck++; } } -static void lts_ecs_fm0_dpf1_p6_ilores_dhires_spr_ntsc_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb0_p6_ilores_dhires_spr_ntsc(void) +static void lts_ecs_fm0_dpf0_p6_ihires_dlores_ntsc_filtered(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -10685,49 +8084,21 @@ static void lts_ecs_fm0_ehb0_p6_ilores_dhires_spr_ntsc(void) } int cnt = denise_hcounter << 2; if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl6(); - clxdat |= bplcoltable[pix0]; - if (decode_specials) { - pix0 = decode_denise_specials(pix0); - } - pix0 &= bplehb_mask; - if (pix0 <= 31) { - dpix_val0 = denise_colors.acolors[pix0]; - } else { - dpix_val0 = p_xcolors[(denise_colors.color_regs_ecs[pix0 - 32] >> 1) & 0x777]; - } - } - last_bpl_pix = pix0; - } - shiftbpl6(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_lores(); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } } internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } internal_pixel_cnt += 2; - uae_u32 dpix_val1 = dpix_val0; - uae_u8 pix1 = pix0; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - dpix_val1 = dpix_val0; - } - } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); dtbuf[h][0] = dpix_val0; - dtbuf[h][1] = dpix_val1; uae_u32 t0 = 0; if (!extblank) { t0 = dtbuf[h ^ lol][0]; @@ -10739,20 +8110,6 @@ static void lts_ecs_fm0_ehb0_p6_ilores_dhires_spr_ntsc(void) #endif *buf1++ = t0; *buf2++ = t0; - uae_u32 t1 = 0; - if (!extblank) { - t1 = dtbuf[h ^ lol][1]; - } - #ifdef DEBUGGER - if (decode_specials_debug) { - t1 = decode_denise_specials_debug(t1, cnt + 2); - } - #endif - *buf1++ = t1; - *buf2++ = t1; - } - if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl6(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -10776,11 +8133,7 @@ static void lts_ecs_fm0_ehb0_p6_ilores_dhires_spr_ntsc(void) denise_cck++; } } -static void lts_ecs_fm0_ehb0_p6_ilores_dhires_spr_ntsc_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb1_p6_ilores_dhires_spr_ntsc(void) +static void lts_ecs_fm0_dpf1_p6_ihires_dlores_ntsc(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -10791,49 +8144,20 @@ static void lts_ecs_fm0_ehb1_p6_ilores_dhires_spr_ntsc(void) } int cnt = denise_hcounter << 2; if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl6(); - clxdat |= bplcoltable[pix0]; - if (decode_specials) { - pix0 = decode_denise_specials(pix0); - } - pix0 &= bplehb_mask; - if (pix0 <= 31) { - dpix_val0 = denise_colors.acolors[pix0]; - } else { - dpix_val0 = p_xcolors[(denise_colors.color_regs_ecs[pix0 - 32] >> 1) & 0x777]; - } - } - last_bpl_pix = pix0; - } - shiftbpl6(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_lores(); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } } internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } internal_pixel_cnt += 2; - uae_u32 dpix_val1 = dpix_val0; - uae_u8 pix1 = pix0; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - dpix_val1 = dpix_val0; - } - } dtbuf[h][0] = dpix_val0; - dtbuf[h][1] = dpix_val1; uae_u32 t0 = 0; if (!extblank) { t0 = dtbuf[h ^ lol][0]; @@ -10845,23 +8169,6 @@ static void lts_ecs_fm0_ehb1_p6_ilores_dhires_spr_ntsc(void) #endif *buf1++ = t0; *buf2++ = t0; - uae_u32 t1 = 0; - if (!extblank) { - t1 = dtbuf[h ^ lol][1]; - } - #ifdef DEBUGGER - if (decode_specials_debug) { - t1 = decode_denise_specials_debug(t1, cnt + 2); - } - #endif - *buf1++ = t1; - *buf2++ = t1; - } - if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl6e(); - } - if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) { - copybpl6o(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -10885,11 +8192,7 @@ static void lts_ecs_fm0_ehb1_p6_ilores_dhires_spr_ntsc(void) denise_cck++; } } -static void lts_ecs_fm0_ehb1_p6_ilores_dhires_spr_ntsc_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham0_p6_ilores_dhires_spr_ntsc(void) +static void lts_ecs_fm0_dpf1_p6_ihires_dlores_ntsc_filtered(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -10900,44 +8203,21 @@ static void lts_ecs_fm0_ham0_p6_ilores_dhires_spr_ntsc(void) } int cnt = denise_hcounter << 2; if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl6(); - clxdat |= bplcoltable[pix0]; - if (decode_specials) { - pix0 = decode_denise_specials(pix0); - } - dpix_val0 = decode_ham_pixel(pix0); - } - last_bpl_pix = pix0; - } - shiftbpl6(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_lores(); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } } internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } internal_pixel_cnt += 2; - uae_u32 dpix_val1 = dpix_val0; - uae_u8 pix1 = pix0; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - dpix_val1 = dpix_val0; - } - } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); dtbuf[h][0] = dpix_val0; - dtbuf[h][1] = dpix_val1; uae_u32 t0 = 0; if (!extblank) { t0 = dtbuf[h ^ lol][0]; @@ -10949,20 +8229,6 @@ static void lts_ecs_fm0_ham0_p6_ilores_dhires_spr_ntsc(void) #endif *buf1++ = t0; *buf2++ = t0; - uae_u32 t1 = 0; - if (!extblank) { - t1 = dtbuf[h ^ lol][1]; - } - #ifdef DEBUGGER - if (decode_specials_debug) { - t1 = decode_denise_specials_debug(t1, cnt + 2); - } - #endif - *buf1++ = t1; - *buf2++ = t1; - } - if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl6(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -10986,11 +8252,7 @@ static void lts_ecs_fm0_ham0_p6_ilores_dhires_spr_ntsc(void) denise_cck++; } } -static void lts_ecs_fm0_ham0_p6_ilores_dhires_spr_ntsc_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham1_p6_ilores_dhires_spr_ntsc(void) +static void lts_ecs_fm0_ehb0_p6_ihires_dlores_ntsc(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -11001,44 +8263,20 @@ static void lts_ecs_fm0_ham1_p6_ilores_dhires_spr_ntsc(void) } int cnt = denise_hcounter << 2; if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl6(); - clxdat |= bplcoltable[pix0]; - if (decode_specials) { - pix0 = decode_denise_specials(pix0); - } - dpix_val0 = decode_ham_pixel(pix0); - } - last_bpl_pix = pix0; - } - shiftbpl6(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_lores(); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } } internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } internal_pixel_cnt += 2; - uae_u32 dpix_val1 = dpix_val0; - uae_u8 pix1 = pix0; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - dpix_val1 = dpix_val0; - } - } dtbuf[h][0] = dpix_val0; - dtbuf[h][1] = dpix_val1; uae_u32 t0 = 0; if (!extblank) { t0 = dtbuf[h ^ lol][0]; @@ -11050,23 +8288,6 @@ static void lts_ecs_fm0_ham1_p6_ilores_dhires_spr_ntsc(void) #endif *buf1++ = t0; *buf2++ = t0; - uae_u32 t1 = 0; - if (!extblank) { - t1 = dtbuf[h ^ lol][1]; - } - #ifdef DEBUGGER - if (decode_specials_debug) { - t1 = decode_denise_specials_debug(t1, cnt + 2); - } - #endif - *buf1++ = t1; - *buf2++ = t1; - } - if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl6e(); - } - if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) { - copybpl6o(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -11090,11 +8311,7 @@ static void lts_ecs_fm0_ham1_p6_ilores_dhires_spr_ntsc(void) denise_cck++; } } -static void lts_ecs_fm0_ham1_p6_ilores_dhires_spr_ntsc_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_n0_p2_ihires_dhires_ntsc(void) +static void lts_ecs_fm0_ehb0_p6_ihires_dlores_ntsc_filtered(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -11109,31 +8326,17 @@ static void lts_ecs_fm0_n0_p2_ihires_dhires_ntsc(void) uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl2(); - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0]; - } - last_bpl_pix = pix0; } - shiftbpl2(); internal_pixel_cnt += 2; uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = getbpl2(); - clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1]; - } - last_bpl_pix = pix1; } - shiftbpl2(); internal_pixel_cnt += 2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); dtbuf[h][0] = dpix_val0; - dtbuf[h][1] = dpix_val1; uae_u32 t0 = 0; if (!extblank) { t0 = dtbuf[h ^ lol][0]; @@ -11145,20 +8348,6 @@ static void lts_ecs_fm0_n0_p2_ihires_dhires_ntsc(void) #endif *buf1++ = t0; *buf2++ = t0; - uae_u32 t1 = 0; - if (!extblank) { - t1 = dtbuf[h ^ lol][1]; - } - #ifdef DEBUGGER - if (decode_specials_debug) { - t1 = decode_denise_specials_debug(t1, cnt + 2); - } - #endif - *buf1++ = t1; - *buf2++ = t1; - } - if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { - copybpl2(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -11182,11 +8371,7 @@ static void lts_ecs_fm0_n0_p2_ihires_dhires_ntsc(void) denise_cck++; } } -static void lts_ecs_fm0_n0_p2_ihires_dhires_ntsc_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_n1_p2_ihires_dhires_ntsc(void) +static void lts_ecs_fm0_ehb1_p6_ihires_dlores_ntsc(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -11201,31 +8386,16 @@ static void lts_ecs_fm0_n1_p2_ihires_dhires_ntsc(void) uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl2(); - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0]; - } - last_bpl_pix = pix0; } - shiftbpl2(); internal_pixel_cnt += 2; uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = getbpl2(); - clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1]; - } - last_bpl_pix = pix1; } - shiftbpl2(); internal_pixel_cnt += 2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; - dtbuf[h][1] = dpix_val1; uae_u32 t0 = 0; if (!extblank) { t0 = dtbuf[h ^ lol][0]; @@ -11237,23 +8407,6 @@ static void lts_ecs_fm0_n1_p2_ihires_dhires_ntsc(void) #endif *buf1++ = t0; *buf2++ = t0; - uae_u32 t1 = 0; - if (!extblank) { - t1 = dtbuf[h ^ lol][1]; - } - #ifdef DEBUGGER - if (decode_specials_debug) { - t1 = decode_denise_specials_debug(t1, cnt + 2); - } - #endif - *buf1++ = t1; - *buf2++ = t1; - } - if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { - copybpl2e(); - } - if (bpldat_copy[1] && (denise_hcounter_cmp & 7) == bplcon1_shift[1]) { - copybpl2o(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -11277,11 +8430,7 @@ static void lts_ecs_fm0_n1_p2_ihires_dhires_ntsc(void) denise_cck++; } } -static void lts_ecs_fm0_n1_p2_ihires_dhires_ntsc_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_dpf0_p2_ihires_dhires_ntsc(void) +static void lts_ecs_fm0_ehb1_p6_ihires_dlores_ntsc_filtered(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -11296,33 +8445,17 @@ static void lts_ecs_fm0_dpf0_p2_ihires_dhires_ntsc(void) uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl2(); - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; } - shiftbpl2(); internal_pixel_cnt += 2; uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = getbpl2(); - clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - dpix_val1 = denise_colors.acolors[val1]; - } - last_bpl_pix = pix1; } - shiftbpl2(); internal_pixel_cnt += 2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); dtbuf[h][0] = dpix_val0; - dtbuf[h][1] = dpix_val1; uae_u32 t0 = 0; if (!extblank) { t0 = dtbuf[h ^ lol][0]; @@ -11334,20 +8467,6 @@ static void lts_ecs_fm0_dpf0_p2_ihires_dhires_ntsc(void) #endif *buf1++ = t0; *buf2++ = t0; - uae_u32 t1 = 0; - if (!extblank) { - t1 = dtbuf[h ^ lol][1]; - } - #ifdef DEBUGGER - if (decode_specials_debug) { - t1 = decode_denise_specials_debug(t1, cnt + 2); - } - #endif - *buf1++ = t1; - *buf2++ = t1; - } - if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { - copybpl2(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -11371,11 +8490,7 @@ static void lts_ecs_fm0_dpf0_p2_ihires_dhires_ntsc(void) denise_cck++; } } -static void lts_ecs_fm0_dpf0_p2_ihires_dhires_ntsc_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_dpf1_p2_ihires_dhires_ntsc(void) +static void lts_ecs_fm0_ham0_p6_ihires_dlores_ntsc(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -11390,33 +8505,16 @@ static void lts_ecs_fm0_dpf1_p2_ihires_dhires_ntsc(void) uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl2(); - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; } - shiftbpl2(); internal_pixel_cnt += 2; uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = getbpl2(); - clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - dpix_val1 = denise_colors.acolors[val1]; - } - last_bpl_pix = pix1; } - shiftbpl2(); internal_pixel_cnt += 2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; - dtbuf[h][1] = dpix_val1; uae_u32 t0 = 0; if (!extblank) { t0 = dtbuf[h ^ lol][0]; @@ -11428,23 +8526,6 @@ static void lts_ecs_fm0_dpf1_p2_ihires_dhires_ntsc(void) #endif *buf1++ = t0; *buf2++ = t0; - uae_u32 t1 = 0; - if (!extblank) { - t1 = dtbuf[h ^ lol][1]; - } - #ifdef DEBUGGER - if (decode_specials_debug) { - t1 = decode_denise_specials_debug(t1, cnt + 2); - } - #endif - *buf1++ = t1; - *buf2++ = t1; - } - if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { - copybpl2e(); - } - if (bpldat_copy[1] && (denise_hcounter_cmp & 7) == bplcon1_shift[1]) { - copybpl2o(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -11468,43 +8549,7 @@ static void lts_ecs_fm0_dpf1_p2_ihires_dhires_ntsc(void) denise_cck++; } } -static void lts_ecs_fm0_dpf1_p2_ihires_dhires_ntsc_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb0_p2_ihires_dhires_ntsc(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb0_p2_ihires_dhires_ntsc_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb1_p2_ihires_dhires_ntsc(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb1_p2_ihires_dhires_ntsc_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham0_p2_ihires_dhires_ntsc(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham0_p2_ihires_dhires_ntsc_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham1_p2_ihires_dhires_ntsc(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham1_p2_ihires_dhires_ntsc_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_n0_p4_ihires_dhires_ntsc(void) +static void lts_ecs_fm0_ham0_p6_ihires_dlores_ntsc_filtered(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -11519,31 +8564,17 @@ static void lts_ecs_fm0_n0_p4_ihires_dhires_ntsc(void) uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl4(); - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0]; - } - last_bpl_pix = pix0; } - shiftbpl4(); internal_pixel_cnt += 2; uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = getbpl4(); - clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1]; - } - last_bpl_pix = pix1; } - shiftbpl4(); internal_pixel_cnt += 2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); dtbuf[h][0] = dpix_val0; - dtbuf[h][1] = dpix_val1; uae_u32 t0 = 0; if (!extblank) { t0 = dtbuf[h ^ lol][0]; @@ -11555,20 +8586,6 @@ static void lts_ecs_fm0_n0_p4_ihires_dhires_ntsc(void) #endif *buf1++ = t0; *buf2++ = t0; - uae_u32 t1 = 0; - if (!extblank) { - t1 = dtbuf[h ^ lol][1]; - } - #ifdef DEBUGGER - if (decode_specials_debug) { - t1 = decode_denise_specials_debug(t1, cnt + 2); - } - #endif - *buf1++ = t1; - *buf2++ = t1; - } - if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { - copybpl4(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -11592,11 +8609,7 @@ static void lts_ecs_fm0_n0_p4_ihires_dhires_ntsc(void) denise_cck++; } } -static void lts_ecs_fm0_n0_p4_ihires_dhires_ntsc_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_n1_p4_ihires_dhires_ntsc(void) +static void lts_ecs_fm0_ham1_p6_ihires_dlores_ntsc(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -11611,31 +8624,16 @@ static void lts_ecs_fm0_n1_p4_ihires_dhires_ntsc(void) uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl4(); - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0]; - } - last_bpl_pix = pix0; } - shiftbpl4(); internal_pixel_cnt += 2; uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = getbpl4(); - clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1]; - } - last_bpl_pix = pix1; } - shiftbpl4(); internal_pixel_cnt += 2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; - dtbuf[h][1] = dpix_val1; uae_u32 t0 = 0; if (!extblank) { t0 = dtbuf[h ^ lol][0]; @@ -11647,23 +8645,6 @@ static void lts_ecs_fm0_n1_p4_ihires_dhires_ntsc(void) #endif *buf1++ = t0; *buf2++ = t0; - uae_u32 t1 = 0; - if (!extblank) { - t1 = dtbuf[h ^ lol][1]; - } - #ifdef DEBUGGER - if (decode_specials_debug) { - t1 = decode_denise_specials_debug(t1, cnt + 2); - } - #endif - *buf1++ = t1; - *buf2++ = t1; - } - if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { - copybpl4e(); - } - if (bpldat_copy[1] && (denise_hcounter_cmp & 7) == bplcon1_shift[1]) { - copybpl4o(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -11687,11 +8668,7 @@ static void lts_ecs_fm0_n1_p4_ihires_dhires_ntsc(void) denise_cck++; } } -static void lts_ecs_fm0_n1_p4_ihires_dhires_ntsc_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_dpf0_p4_ihires_dhires_ntsc(void) +static void lts_ecs_fm0_ham1_p6_ihires_dlores_ntsc_filtered(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -11706,33 +8683,17 @@ static void lts_ecs_fm0_dpf0_p4_ihires_dhires_ntsc(void) uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl4(); - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; } - shiftbpl4(); internal_pixel_cnt += 2; uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = getbpl4(); - clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - dpix_val1 = denise_colors.acolors[val1]; - } - last_bpl_pix = pix1; } - shiftbpl4(); internal_pixel_cnt += 2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); dtbuf[h][0] = dpix_val0; - dtbuf[h][1] = dpix_val1; uae_u32 t0 = 0; if (!extblank) { t0 = dtbuf[h ^ lol][0]; @@ -11744,20 +8705,6 @@ static void lts_ecs_fm0_dpf0_p4_ihires_dhires_ntsc(void) #endif *buf1++ = t0; *buf2++ = t0; - uae_u32 t1 = 0; - if (!extblank) { - t1 = dtbuf[h ^ lol][1]; - } - #ifdef DEBUGGER - if (decode_specials_debug) { - t1 = decode_denise_specials_debug(t1, cnt + 2); - } - #endif - *buf1++ = t1; - *buf2++ = t1; - } - if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { - copybpl4(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -11781,11 +8728,7 @@ static void lts_ecs_fm0_dpf0_p4_ihires_dhires_ntsc(void) denise_cck++; } } -static void lts_ecs_fm0_dpf0_p4_ihires_dhires_ntsc_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_dpf1_p4_ihires_dhires_ntsc(void) +static void lts_ecs_fm0_n0_p2_ihires_dlores_spr_ntsc(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -11796,37 +8739,49 @@ static void lts_ecs_fm0_dpf1_p4_ihires_dhires_ntsc(void) } int cnt = denise_hcounter << 2; if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl4(); + pix0 = getbpl2(); clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - dpix_val0 = denise_colors.acolors[val0]; + dpix_val0 = denise_colors.acolors[pix0]; } last_bpl_pix = pix0; } - shiftbpl4(); + shiftbpl2(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_lores(); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } internal_pixel_cnt += 2; uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; if (denise_hdiw && bpl1dat_trigger) { - pix1 = getbpl4(); + pix1 = getbpl2(); clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - dpix_val1 = denise_colors.acolors[val1]; + dpix_val1 = denise_colors.acolors[pix1]; } last_bpl_pix = pix1; } - shiftbpl4(); + shiftbpl2(); internal_pixel_cnt += 2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } dtbuf[h][0] = dpix_val0; - dtbuf[h][1] = dpix_val1; uae_u32 t0 = 0; if (!extblank) { t0 = dtbuf[h ^ lol][0]; @@ -11838,23 +8793,9 @@ static void lts_ecs_fm0_dpf1_p4_ihires_dhires_ntsc(void) #endif *buf1++ = t0; *buf2++ = t0; - uae_u32 t1 = 0; - if (!extblank) { - t1 = dtbuf[h ^ lol][1]; - } - #ifdef DEBUGGER - if (decode_specials_debug) { - t1 = decode_denise_specials_debug(t1, cnt + 2); - } - #endif - *buf1++ = t1; - *buf2++ = t1; } if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { - copybpl4e(); - } - if (bpldat_copy[1] && (denise_hcounter_cmp & 7) == bplcon1_shift[1]) { - copybpl4o(); + copybpl2(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -11878,171 +8819,7 @@ static void lts_ecs_fm0_dpf1_p4_ihires_dhires_ntsc(void) denise_cck++; } } -static void lts_ecs_fm0_dpf1_p4_ihires_dhires_ntsc_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb0_p4_ihires_dhires_ntsc(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb0_p4_ihires_dhires_ntsc_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb1_p4_ihires_dhires_ntsc(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb1_p4_ihires_dhires_ntsc_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham0_p4_ihires_dhires_ntsc(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham0_p4_ihires_dhires_ntsc_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham1_p4_ihires_dhires_ntsc(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham1_p4_ihires_dhires_ntsc_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_n0_p5_ihires_dhires_ntsc(void) -{ - lts_null(); -} -static void lts_ecs_fm0_n0_p5_ihires_dhires_ntsc_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_n1_p5_ihires_dhires_ntsc(void) -{ - lts_null(); -} -static void lts_ecs_fm0_n1_p5_ihires_dhires_ntsc_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_dpf0_p5_ihires_dhires_ntsc(void) -{ - lts_null(); -} -static void lts_ecs_fm0_dpf0_p5_ihires_dhires_ntsc_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_dpf1_p5_ihires_dhires_ntsc(void) -{ - lts_null(); -} -static void lts_ecs_fm0_dpf1_p5_ihires_dhires_ntsc_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb0_p5_ihires_dhires_ntsc(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb0_p5_ihires_dhires_ntsc_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb1_p5_ihires_dhires_ntsc(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb1_p5_ihires_dhires_ntsc_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham0_p5_ihires_dhires_ntsc(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham0_p5_ihires_dhires_ntsc_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham1_p5_ihires_dhires_ntsc(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham1_p5_ihires_dhires_ntsc_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_n0_p6_ihires_dhires_ntsc(void) -{ - lts_null(); -} -static void lts_ecs_fm0_n0_p6_ihires_dhires_ntsc_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_n1_p6_ihires_dhires_ntsc(void) -{ - lts_null(); -} -static void lts_ecs_fm0_n1_p6_ihires_dhires_ntsc_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_dpf0_p6_ihires_dhires_ntsc(void) -{ - lts_null(); -} -static void lts_ecs_fm0_dpf0_p6_ihires_dhires_ntsc_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_dpf1_p6_ihires_dhires_ntsc(void) -{ - lts_null(); -} -static void lts_ecs_fm0_dpf1_p6_ihires_dhires_ntsc_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb0_p6_ihires_dhires_ntsc(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb0_p6_ihires_dhires_ntsc_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb1_p6_ihires_dhires_ntsc(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb1_p6_ihires_dhires_ntsc_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham0_p6_ihires_dhires_ntsc(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham0_p6_ihires_dhires_ntsc_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham1_p6_ihires_dhires_ntsc(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham1_p6_ihires_dhires_ntsc_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_n0_p2_ihires_dhires_spr_ntsc(void) +static void lts_ecs_fm0_n0_p2_ihires_dlores_spr_ntsc_filtered(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -12089,21 +8866,15 @@ static void lts_ecs_fm0_n0_p2_ihires_dhires_spr_ntsc(void) shiftbpl2(); internal_pixel_cnt += 2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); if (sv0) { uae_u32 spix0 = denise_render_sprites2(pix0, sv0); if (spix0) { dpix_val0 = denise_colors.acolors[spix0]; - } - } - uae_u32 sv1 = sv0; - if (sv1) { - uae_u32 spix1 = denise_render_sprites2(pix1, sv1); - if (spix1) { - dpix_val1 = denise_colors.acolors[spix1]; + dpix_val1 = dpix_val0; } } dtbuf[h][0] = dpix_val0; - dtbuf[h][1] = dpix_val1; uae_u32 t0 = 0; if (!extblank) { t0 = dtbuf[h ^ lol][0]; @@ -12115,17 +8886,6 @@ static void lts_ecs_fm0_n0_p2_ihires_dhires_spr_ntsc(void) #endif *buf1++ = t0; *buf2++ = t0; - uae_u32 t1 = 0; - if (!extblank) { - t1 = dtbuf[h ^ lol][1]; - } - #ifdef DEBUGGER - if (decode_specials_debug) { - t1 = decode_denise_specials_debug(t1, cnt + 2); - } - #endif - *buf1++ = t1; - *buf2++ = t1; } if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { copybpl2(); @@ -12152,11 +8912,7 @@ static void lts_ecs_fm0_n0_p2_ihires_dhires_spr_ntsc(void) denise_cck++; } } -static void lts_ecs_fm0_n0_p2_ihires_dhires_spr_ntsc_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_n1_p2_ihires_dhires_spr_ntsc(void) +static void lts_ecs_fm0_n1_p2_ihires_dlores_spr_ntsc(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -12209,15 +8965,7 @@ static void lts_ecs_fm0_n1_p2_ihires_dhires_spr_ntsc(void) dpix_val0 = denise_colors.acolors[spix0]; } } - uae_u32 sv1 = sv0; - if (sv1) { - uae_u32 spix1 = denise_render_sprites2(pix1, sv1); - if (spix1) { - dpix_val1 = denise_colors.acolors[spix1]; - } - } dtbuf[h][0] = dpix_val0; - dtbuf[h][1] = dpix_val1; uae_u32 t0 = 0; if (!extblank) { t0 = dtbuf[h ^ lol][0]; @@ -12229,17 +8977,6 @@ static void lts_ecs_fm0_n1_p2_ihires_dhires_spr_ntsc(void) #endif *buf1++ = t0; *buf2++ = t0; - uae_u32 t1 = 0; - if (!extblank) { - t1 = dtbuf[h ^ lol][1]; - } - #ifdef DEBUGGER - if (decode_specials_debug) { - t1 = decode_denise_specials_debug(t1, cnt + 2); - } - #endif - *buf1++ = t1; - *buf2++ = t1; } if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { copybpl2e(); @@ -12269,11 +9006,7 @@ static void lts_ecs_fm0_n1_p2_ihires_dhires_spr_ntsc(void) denise_cck++; } } -static void lts_ecs_fm0_n1_p2_ihires_dhires_spr_ntsc_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_dpf0_p2_ihires_dhires_spr_ntsc(void) +static void lts_ecs_fm0_n1_p2_ihires_dlores_spr_ntsc_filtered(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -12292,8 +9025,7 @@ static void lts_ecs_fm0_dpf0_p2_ihires_dhires_spr_ntsc(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = getbpl2(); clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - dpix_val0 = denise_colors.acolors[val0]; + dpix_val0 = denise_colors.acolors[pix0]; } last_bpl_pix = pix0; } @@ -12314,29 +9046,22 @@ static void lts_ecs_fm0_dpf0_p2_ihires_dhires_spr_ntsc(void) if (denise_hdiw && bpl1dat_trigger) { pix1 = getbpl2(); clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - dpix_val1 = denise_colors.acolors[val1]; + dpix_val1 = denise_colors.acolors[pix1]; } last_bpl_pix = pix1; } shiftbpl2(); internal_pixel_cnt += 2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); if (sv0) { uae_u32 spix0 = denise_render_sprites2(pix0, sv0); if (spix0) { dpix_val0 = denise_colors.acolors[spix0]; - } - } - uae_u32 sv1 = sv0; - if (sv1) { - uae_u32 spix1 = denise_render_sprites2(pix1, sv1); - if (spix1) { - dpix_val1 = denise_colors.acolors[spix1]; + dpix_val1 = dpix_val0; } } dtbuf[h][0] = dpix_val0; - dtbuf[h][1] = dpix_val1; uae_u32 t0 = 0; if (!extblank) { t0 = dtbuf[h ^ lol][0]; @@ -12348,20 +9073,12 @@ static void lts_ecs_fm0_dpf0_p2_ihires_dhires_spr_ntsc(void) #endif *buf1++ = t0; *buf2++ = t0; - uae_u32 t1 = 0; - if (!extblank) { - t1 = dtbuf[h ^ lol][1]; - } - #ifdef DEBUGGER - if (decode_specials_debug) { - t1 = decode_denise_specials_debug(t1, cnt + 2); - } - #endif - *buf1++ = t1; - *buf2++ = t1; } if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { - copybpl2(); + copybpl2e(); + } + if (bpldat_copy[1] && (denise_hcounter_cmp & 7) == bplcon1_shift[1]) { + copybpl2o(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -12385,11 +9102,7 @@ static void lts_ecs_fm0_dpf0_p2_ihires_dhires_spr_ntsc(void) denise_cck++; } } -static void lts_ecs_fm0_dpf0_p2_ihires_dhires_spr_ntsc_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_dpf1_p2_ihires_dhires_spr_ntsc(void) +static void lts_ecs_fm0_dpf0_p2_ihires_dlores_spr_ntsc(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -12444,15 +9157,7 @@ static void lts_ecs_fm0_dpf1_p2_ihires_dhires_spr_ntsc(void) dpix_val0 = denise_colors.acolors[spix0]; } } - uae_u32 sv1 = sv0; - if (sv1) { - uae_u32 spix1 = denise_render_sprites2(pix1, sv1); - if (spix1) { - dpix_val1 = denise_colors.acolors[spix1]; - } - } dtbuf[h][0] = dpix_val0; - dtbuf[h][1] = dpix_val1; uae_u32 t0 = 0; if (!extblank) { t0 = dtbuf[h ^ lol][0]; @@ -12464,23 +9169,9 @@ static void lts_ecs_fm0_dpf1_p2_ihires_dhires_spr_ntsc(void) #endif *buf1++ = t0; *buf2++ = t0; - uae_u32 t1 = 0; - if (!extblank) { - t1 = dtbuf[h ^ lol][1]; - } - #ifdef DEBUGGER - if (decode_specials_debug) { - t1 = decode_denise_specials_debug(t1, cnt + 2); - } - #endif - *buf1++ = t1; - *buf2++ = t1; } if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { - copybpl2e(); - } - if (bpldat_copy[1] && (denise_hcounter_cmp & 7) == bplcon1_shift[1]) { - copybpl2o(); + copybpl2(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -12504,43 +9195,7 @@ static void lts_ecs_fm0_dpf1_p2_ihires_dhires_spr_ntsc(void) denise_cck++; } } -static void lts_ecs_fm0_dpf1_p2_ihires_dhires_spr_ntsc_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb0_p2_ihires_dhires_spr_ntsc(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb0_p2_ihires_dhires_spr_ntsc_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb1_p2_ihires_dhires_spr_ntsc(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb1_p2_ihires_dhires_spr_ntsc_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham0_p2_ihires_dhires_spr_ntsc(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham0_p2_ihires_dhires_spr_ntsc_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham1_p2_ihires_dhires_spr_ntsc(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham1_p2_ihires_dhires_spr_ntsc_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_n0_p4_ihires_dhires_spr_ntsc(void) +static void lts_ecs_fm0_dpf0_p2_ihires_dlores_spr_ntsc_filtered(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -12557,13 +9212,14 @@ static void lts_ecs_fm0_n0_p4_ihires_dhires_spr_ntsc(void) if (!denise_blank_active) { dpix_val0 = bordercolor; if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl4(); + pix0 = getbpl2(); clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + dpix_val0 = denise_colors.acolors[val0]; } last_bpl_pix = pix0; } - shiftbpl4(); + shiftbpl2(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -12578,30 +9234,25 @@ static void lts_ecs_fm0_n0_p4_ihires_dhires_spr_ntsc(void) if (!denise_blank_active) { dpix_val1 = bordercolor; if (denise_hdiw && bpl1dat_trigger) { - pix1 = getbpl4(); + pix1 = getbpl2(); clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1]; + uae_u8 val1 = dpf_lookup[pix1]; + dpix_val1 = denise_colors.acolors[val1]; } last_bpl_pix = pix1; } - shiftbpl4(); + shiftbpl2(); internal_pixel_cnt += 2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); if (sv0) { uae_u32 spix0 = denise_render_sprites2(pix0, sv0); if (spix0) { dpix_val0 = denise_colors.acolors[spix0]; - } - } - uae_u32 sv1 = sv0; - if (sv1) { - uae_u32 spix1 = denise_render_sprites2(pix1, sv1); - if (spix1) { - dpix_val1 = denise_colors.acolors[spix1]; + dpix_val1 = dpix_val0; } } dtbuf[h][0] = dpix_val0; - dtbuf[h][1] = dpix_val1; uae_u32 t0 = 0; if (!extblank) { t0 = dtbuf[h ^ lol][0]; @@ -12613,20 +9264,9 @@ static void lts_ecs_fm0_n0_p4_ihires_dhires_spr_ntsc(void) #endif *buf1++ = t0; *buf2++ = t0; - uae_u32 t1 = 0; - if (!extblank) { - t1 = dtbuf[h ^ lol][1]; - } - #ifdef DEBUGGER - if (decode_specials_debug) { - t1 = decode_denise_specials_debug(t1, cnt + 2); - } - #endif - *buf1++ = t1; - *buf2++ = t1; } if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { - copybpl4(); + copybpl2(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -12650,11 +9290,7 @@ static void lts_ecs_fm0_n0_p4_ihires_dhires_spr_ntsc(void) denise_cck++; } } -static void lts_ecs_fm0_n0_p4_ihires_dhires_spr_ntsc_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_n1_p4_ihires_dhires_spr_ntsc(void) +static void lts_ecs_fm0_dpf1_p2_ihires_dlores_spr_ntsc(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -12671,13 +9307,14 @@ static void lts_ecs_fm0_n1_p4_ihires_dhires_spr_ntsc(void) if (!denise_blank_active) { dpix_val0 = bordercolor; if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl4(); + pix0 = getbpl2(); clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + dpix_val0 = denise_colors.acolors[val0]; } last_bpl_pix = pix0; } - shiftbpl4(); + shiftbpl2(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -12692,13 +9329,14 @@ static void lts_ecs_fm0_n1_p4_ihires_dhires_spr_ntsc(void) if (!denise_blank_active) { dpix_val1 = bordercolor; if (denise_hdiw && bpl1dat_trigger) { - pix1 = getbpl4(); + pix1 = getbpl2(); clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1]; + uae_u8 val1 = dpf_lookup[pix1]; + dpix_val1 = denise_colors.acolors[val1]; } last_bpl_pix = pix1; } - shiftbpl4(); + shiftbpl2(); internal_pixel_cnt += 2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { @@ -12707,15 +9345,7 @@ static void lts_ecs_fm0_n1_p4_ihires_dhires_spr_ntsc(void) dpix_val0 = denise_colors.acolors[spix0]; } } - uae_u32 sv1 = sv0; - if (sv1) { - uae_u32 spix1 = denise_render_sprites2(pix1, sv1); - if (spix1) { - dpix_val1 = denise_colors.acolors[spix1]; - } - } dtbuf[h][0] = dpix_val0; - dtbuf[h][1] = dpix_val1; uae_u32 t0 = 0; if (!extblank) { t0 = dtbuf[h ^ lol][0]; @@ -12727,23 +9357,12 @@ static void lts_ecs_fm0_n1_p4_ihires_dhires_spr_ntsc(void) #endif *buf1++ = t0; *buf2++ = t0; - uae_u32 t1 = 0; - if (!extblank) { - t1 = dtbuf[h ^ lol][1]; - } - #ifdef DEBUGGER - if (decode_specials_debug) { - t1 = decode_denise_specials_debug(t1, cnt + 2); - } - #endif - *buf1++ = t1; - *buf2++ = t1; } if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { - copybpl4e(); + copybpl2e(); } if (bpldat_copy[1] && (denise_hcounter_cmp & 7) == bplcon1_shift[1]) { - copybpl4o(); + copybpl2o(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -12767,11 +9386,7 @@ static void lts_ecs_fm0_n1_p4_ihires_dhires_spr_ntsc(void) denise_cck++; } } -static void lts_ecs_fm0_n1_p4_ihires_dhires_spr_ntsc_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_dpf0_p4_ihires_dhires_spr_ntsc(void) +static void lts_ecs_fm0_dpf1_p2_ihires_dlores_spr_ntsc_filtered(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -12788,14 +9403,14 @@ static void lts_ecs_fm0_dpf0_p4_ihires_dhires_spr_ntsc(void) if (!denise_blank_active) { dpix_val0 = bordercolor; if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl4(); + pix0 = getbpl2(); clxdat |= bplcoltable[pix0]; uae_u8 val0 = dpf_lookup[pix0]; dpix_val0 = denise_colors.acolors[val0]; } last_bpl_pix = pix0; } - shiftbpl4(); + shiftbpl2(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -12810,31 +9425,25 @@ static void lts_ecs_fm0_dpf0_p4_ihires_dhires_spr_ntsc(void) if (!denise_blank_active) { dpix_val1 = bordercolor; if (denise_hdiw && bpl1dat_trigger) { - pix1 = getbpl4(); + pix1 = getbpl2(); clxdat |= bplcoltable[pix1]; uae_u8 val1 = dpf_lookup[pix1]; dpix_val1 = denise_colors.acolors[val1]; } last_bpl_pix = pix1; } - shiftbpl4(); + shiftbpl2(); internal_pixel_cnt += 2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); if (sv0) { uae_u32 spix0 = denise_render_sprites2(pix0, sv0); if (spix0) { dpix_val0 = denise_colors.acolors[spix0]; - } - } - uae_u32 sv1 = sv0; - if (sv1) { - uae_u32 spix1 = denise_render_sprites2(pix1, sv1); - if (spix1) { - dpix_val1 = denise_colors.acolors[spix1]; + dpix_val1 = dpix_val0; } } dtbuf[h][0] = dpix_val0; - dtbuf[h][1] = dpix_val1; uae_u32 t0 = 0; if (!extblank) { t0 = dtbuf[h ^ lol][0]; @@ -12846,20 +9455,12 @@ static void lts_ecs_fm0_dpf0_p4_ihires_dhires_spr_ntsc(void) #endif *buf1++ = t0; *buf2++ = t0; - uae_u32 t1 = 0; - if (!extblank) { - t1 = dtbuf[h ^ lol][1]; - } - #ifdef DEBUGGER - if (decode_specials_debug) { - t1 = decode_denise_specials_debug(t1, cnt + 2); - } - #endif - *buf1++ = t1; - *buf2++ = t1; } if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { - copybpl4(); + copybpl2e(); + } + if (bpldat_copy[1] && (denise_hcounter_cmp & 7) == bplcon1_shift[1]) { + copybpl2o(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -12883,11 +9484,7 @@ static void lts_ecs_fm0_dpf0_p4_ihires_dhires_spr_ntsc(void) denise_cck++; } } -static void lts_ecs_fm0_dpf0_p4_ihires_dhires_spr_ntsc_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_dpf1_p4_ihires_dhires_spr_ntsc(void) +static void lts_ecs_fm0_ehb0_p2_ihires_dlores_spr_ntsc(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -12898,59 +9495,20 @@ static void lts_ecs_fm0_dpf1_p4_ihires_dhires_spr_ntsc(void) } int cnt = denise_hcounter << 2; if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl4(); - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; - } - shiftbpl4(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_lores(); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } } internal_pixel_cnt += 2; uae_u8 pix1 = 0; uae_u32 dpix_val1 = BLANK_COLOR; if (!denise_blank_active) { dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = getbpl4(); - clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - dpix_val1 = denise_colors.acolors[val1]; - } - last_bpl_pix = pix1; } - shiftbpl4(); internal_pixel_cnt += 2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - } - } - uae_u32 sv1 = sv0; - if (sv1) { - uae_u32 spix1 = denise_render_sprites2(pix1, sv1); - if (spix1) { - dpix_val1 = denise_colors.acolors[spix1]; - } - } dtbuf[h][0] = dpix_val0; - dtbuf[h][1] = dpix_val1; uae_u32 t0 = 0; if (!extblank) { t0 = dtbuf[h ^ lol][0]; @@ -12962,23 +9520,6 @@ static void lts_ecs_fm0_dpf1_p4_ihires_dhires_spr_ntsc(void) #endif *buf1++ = t0; *buf2++ = t0; - uae_u32 t1 = 0; - if (!extblank) { - t1 = dtbuf[h ^ lol][1]; - } - #ifdef DEBUGGER - if (decode_specials_debug) { - t1 = decode_denise_specials_debug(t1, cnt + 2); - } - #endif - *buf1++ = t1; - *buf2++ = t1; - } - if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { - copybpl4e(); - } - if (bpldat_copy[1] && (denise_hcounter_cmp & 7) == bplcon1_shift[1]) { - copybpl4o(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -13002,171 +9543,22355 @@ static void lts_ecs_fm0_dpf1_p4_ihires_dhires_spr_ntsc(void) denise_cck++; } } -static void lts_ecs_fm0_dpf1_p4_ihires_dhires_spr_ntsc_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb0_p4_ihires_dhires_spr_ntsc(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb0_p4_ihires_dhires_spr_ntsc_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb1_p4_ihires_dhires_spr_ntsc(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb1_p4_ihires_dhires_spr_ntsc_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham0_p4_ihires_dhires_spr_ntsc(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham0_p4_ihires_dhires_spr_ntsc_filtered(void) +static void lts_ecs_fm0_ehb0_p2_ihires_dlores_spr_ntsc_filtered(void) { - lts_null(); -} -static void lts_ecs_fm0_ham1_p4_ihires_dhires_spr_ntsc(void) + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ehb1_p2_ihires_dlores_spr_ntsc(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ehb1_p2_ihires_dlores_spr_ntsc_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ham0_p2_ihires_dlores_spr_ntsc(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ham0_p2_ihires_dlores_spr_ntsc_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ham1_p2_ihires_dlores_spr_ntsc(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ham1_p2_ihires_dlores_spr_ntsc_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_n0_p4_ihires_dlores_spr_ntsc(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl4(); + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0]; + } + last_bpl_pix = pix0; + } + shiftbpl4(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_lores(); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = getbpl4(); + clxdat |= bplcoltable[pix1]; + dpix_val1 = denise_colors.acolors[pix1]; + } + last_bpl_pix = pix1; + } + shiftbpl4(); + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_n0_p4_ihires_dlores_spr_ntsc_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl4(); + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0]; + } + last_bpl_pix = pix0; + } + shiftbpl4(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_lores(); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = getbpl4(); + clxdat |= bplcoltable[pix1]; + dpix_val1 = denise_colors.acolors[pix1]; + } + last_bpl_pix = pix1; + } + shiftbpl4(); + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + } + } + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_n1_p4_ihires_dlores_spr_ntsc(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl4(); + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0]; + } + last_bpl_pix = pix0; + } + shiftbpl4(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_lores(); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = getbpl4(); + clxdat |= bplcoltable[pix1]; + dpix_val1 = denise_colors.acolors[pix1]; + } + last_bpl_pix = pix1; + } + shiftbpl4(); + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { + copybpl4e(); + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_n1_p4_ihires_dlores_spr_ntsc_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl4(); + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0]; + } + last_bpl_pix = pix0; + } + shiftbpl4(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_lores(); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = getbpl4(); + clxdat |= bplcoltable[pix1]; + dpix_val1 = denise_colors.acolors[pix1]; + } + last_bpl_pix = pix1; + } + shiftbpl4(); + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + } + } + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { + copybpl4e(); + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_dpf0_p4_ihires_dlores_spr_ntsc(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl4(); + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + shiftbpl4(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_lores(); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = getbpl4(); + clxdat |= bplcoltable[pix1]; + uae_u8 val1 = dpf_lookup[pix1]; + dpix_val1 = denise_colors.acolors[val1]; + } + last_bpl_pix = pix1; + } + shiftbpl4(); + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_dpf0_p4_ihires_dlores_spr_ntsc_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl4(); + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + shiftbpl4(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_lores(); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = getbpl4(); + clxdat |= bplcoltable[pix1]; + uae_u8 val1 = dpf_lookup[pix1]; + dpix_val1 = denise_colors.acolors[val1]; + } + last_bpl_pix = pix1; + } + shiftbpl4(); + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + } + } + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_dpf1_p4_ihires_dlores_spr_ntsc(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl4(); + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + shiftbpl4(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_lores(); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = getbpl4(); + clxdat |= bplcoltable[pix1]; + uae_u8 val1 = dpf_lookup[pix1]; + dpix_val1 = denise_colors.acolors[val1]; + } + last_bpl_pix = pix1; + } + shiftbpl4(); + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { + copybpl4e(); + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_dpf1_p4_ihires_dlores_spr_ntsc_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl4(); + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + shiftbpl4(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_lores(); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = getbpl4(); + clxdat |= bplcoltable[pix1]; + uae_u8 val1 = dpf_lookup[pix1]; + dpix_val1 = denise_colors.acolors[val1]; + } + last_bpl_pix = pix1; + } + shiftbpl4(); + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + } + } + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { + copybpl4e(); + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ehb0_p4_ihires_dlores_spr_ntsc(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ehb0_p4_ihires_dlores_spr_ntsc_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ehb1_p4_ihires_dlores_spr_ntsc(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ehb1_p4_ihires_dlores_spr_ntsc_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ham0_p4_ihires_dlores_spr_ntsc(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ham0_p4_ihires_dlores_spr_ntsc_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ham1_p4_ihires_dlores_spr_ntsc(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ham1_p4_ihires_dlores_spr_ntsc_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_n0_p5_ihires_dlores_spr_ntsc(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_n0_p5_ihires_dlores_spr_ntsc_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_n1_p5_ihires_dlores_spr_ntsc(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_n1_p5_ihires_dlores_spr_ntsc_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_dpf0_p5_ihires_dlores_spr_ntsc(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_dpf0_p5_ihires_dlores_spr_ntsc_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_dpf1_p5_ihires_dlores_spr_ntsc(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_dpf1_p5_ihires_dlores_spr_ntsc_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ehb0_p5_ihires_dlores_spr_ntsc(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ehb0_p5_ihires_dlores_spr_ntsc_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ehb1_p5_ihires_dlores_spr_ntsc(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ehb1_p5_ihires_dlores_spr_ntsc_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ham0_p5_ihires_dlores_spr_ntsc(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ham0_p5_ihires_dlores_spr_ntsc_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ham1_p5_ihires_dlores_spr_ntsc(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ham1_p5_ihires_dlores_spr_ntsc_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_n0_p6_ihires_dlores_spr_ntsc(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_n0_p6_ihires_dlores_spr_ntsc_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_n1_p6_ihires_dlores_spr_ntsc(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_n1_p6_ihires_dlores_spr_ntsc_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_dpf0_p6_ihires_dlores_spr_ntsc(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_dpf0_p6_ihires_dlores_spr_ntsc_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_dpf1_p6_ihires_dlores_spr_ntsc(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_dpf1_p6_ihires_dlores_spr_ntsc_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ehb0_p6_ihires_dlores_spr_ntsc(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ehb0_p6_ihires_dlores_spr_ntsc_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ehb1_p6_ihires_dlores_spr_ntsc(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ehb1_p6_ihires_dlores_spr_ntsc_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ham0_p6_ihires_dlores_spr_ntsc(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ham0_p6_ihires_dlores_spr_ntsc_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ham1_p6_ihires_dlores_spr_ntsc(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ham1_p6_ihires_dlores_spr_ntsc_filtered(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + dtbuf[h][0] = dpix_val0; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_n0_p2_ilores_dhires_ntsc(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl2(); + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0]; + } + last_bpl_pix = pix0; + } + shiftbpl2(); + internal_pixel_cnt += 2; + internal_pixel_cnt += 2; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dtbuf[h ^ lol][1]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_n0_p2_ilores_dhires_ntsc_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_n1_p2_ilores_dhires_ntsc(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl2(); + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0]; + } + last_bpl_pix = pix0; + } + shiftbpl2(); + internal_pixel_cnt += 2; + internal_pixel_cnt += 2; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dtbuf[h ^ lol][1]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + } + if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { + copybpl2e(); + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_n1_p2_ilores_dhires_ntsc_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_dpf0_p2_ilores_dhires_ntsc(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl2(); + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + shiftbpl2(); + internal_pixel_cnt += 2; + internal_pixel_cnt += 2; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dtbuf[h ^ lol][1]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_dpf0_p2_ilores_dhires_ntsc_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_dpf1_p2_ilores_dhires_ntsc(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl2(); + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + shiftbpl2(); + internal_pixel_cnt += 2; + internal_pixel_cnt += 2; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dtbuf[h ^ lol][1]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + } + if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { + copybpl2e(); + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_dpf1_p2_ilores_dhires_ntsc_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_ehb0_p2_ilores_dhires_ntsc(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + internal_pixel_cnt += 2; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dtbuf[h ^ lol][1]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ehb0_p2_ilores_dhires_ntsc_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_ehb1_p2_ilores_dhires_ntsc(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + internal_pixel_cnt += 2; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dtbuf[h ^ lol][1]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ehb1_p2_ilores_dhires_ntsc_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_ham0_p2_ilores_dhires_ntsc(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + internal_pixel_cnt += 2; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dtbuf[h ^ lol][1]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ham0_p2_ilores_dhires_ntsc_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_ham1_p2_ilores_dhires_ntsc(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + internal_pixel_cnt += 2; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dtbuf[h ^ lol][1]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ham1_p2_ilores_dhires_ntsc_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_n0_p4_ilores_dhires_ntsc(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl4(); + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0]; + } + last_bpl_pix = pix0; + } + shiftbpl4(); + internal_pixel_cnt += 2; + internal_pixel_cnt += 2; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dtbuf[h ^ lol][1]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_n0_p4_ilores_dhires_ntsc_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_n1_p4_ilores_dhires_ntsc(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl4(); + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0]; + } + last_bpl_pix = pix0; + } + shiftbpl4(); + internal_pixel_cnt += 2; + internal_pixel_cnt += 2; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dtbuf[h ^ lol][1]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + } + if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { + copybpl4e(); + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_n1_p4_ilores_dhires_ntsc_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_dpf0_p4_ilores_dhires_ntsc(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl4(); + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + shiftbpl4(); + internal_pixel_cnt += 2; + internal_pixel_cnt += 2; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dtbuf[h ^ lol][1]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_dpf0_p4_ilores_dhires_ntsc_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_dpf1_p4_ilores_dhires_ntsc(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl4(); + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + shiftbpl4(); + internal_pixel_cnt += 2; + internal_pixel_cnt += 2; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dtbuf[h ^ lol][1]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + } + if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { + copybpl4e(); + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_dpf1_p4_ilores_dhires_ntsc_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_ehb0_p4_ilores_dhires_ntsc(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + internal_pixel_cnt += 2; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dtbuf[h ^ lol][1]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ehb0_p4_ilores_dhires_ntsc_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_ehb1_p4_ilores_dhires_ntsc(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + internal_pixel_cnt += 2; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dtbuf[h ^ lol][1]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ehb1_p4_ilores_dhires_ntsc_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_ham0_p4_ilores_dhires_ntsc(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + internal_pixel_cnt += 2; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dtbuf[h ^ lol][1]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ham0_p4_ilores_dhires_ntsc_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_ham1_p4_ilores_dhires_ntsc(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + internal_pixel_cnt += 2; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dtbuf[h ^ lol][1]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ham1_p4_ilores_dhires_ntsc_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_n0_p5_ilores_dhires_ntsc(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl5(); + clxdat |= bplcoltable[pix0]; + if (decode_specials) { + pix0 = decode_denise_specials(pix0); + } + dpix_val0 = denise_colors.acolors[pix0]; + } + last_bpl_pix = pix0; + } + shiftbpl5(); + internal_pixel_cnt += 2; + internal_pixel_cnt += 2; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dtbuf[h ^ lol][1]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_n0_p5_ilores_dhires_ntsc_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_n1_p5_ilores_dhires_ntsc(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl5(); + clxdat |= bplcoltable[pix0]; + if (decode_specials) { + pix0 = decode_denise_specials(pix0); + } + dpix_val0 = denise_colors.acolors[pix0]; + } + last_bpl_pix = pix0; + } + shiftbpl5(); + internal_pixel_cnt += 2; + internal_pixel_cnt += 2; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dtbuf[h ^ lol][1]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + } + if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { + copybpl5e(); + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_n1_p5_ilores_dhires_ntsc_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_dpf0_p5_ilores_dhires_ntsc(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl5(); + clxdat |= bplcoltable[pix0]; + if (decode_specials) { + pix0 = decode_denise_specials(pix0); + } + uae_u8 val0 = dpf_lookup[pix0]; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + shiftbpl5(); + internal_pixel_cnt += 2; + internal_pixel_cnt += 2; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dtbuf[h ^ lol][1]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_dpf0_p5_ilores_dhires_ntsc_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_dpf1_p5_ilores_dhires_ntsc(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl5(); + clxdat |= bplcoltable[pix0]; + if (decode_specials) { + pix0 = decode_denise_specials(pix0); + } + uae_u8 val0 = dpf_lookup[pix0]; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + shiftbpl5(); + internal_pixel_cnt += 2; + internal_pixel_cnt += 2; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dtbuf[h ^ lol][1]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + } + if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { + copybpl5e(); + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_dpf1_p5_ilores_dhires_ntsc_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_ehb0_p5_ilores_dhires_ntsc(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + internal_pixel_cnt += 2; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dtbuf[h ^ lol][1]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ehb0_p5_ilores_dhires_ntsc_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_ehb1_p5_ilores_dhires_ntsc(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + internal_pixel_cnt += 2; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dtbuf[h ^ lol][1]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ehb1_p5_ilores_dhires_ntsc_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_ham0_p5_ilores_dhires_ntsc(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl5(); + clxdat |= bplcoltable[pix0]; + if (decode_specials) { + pix0 = decode_denise_specials(pix0); + } + dpix_val0 = decode_ham_pixel(pix0); + } + last_bpl_pix = pix0; + } + shiftbpl5(); + internal_pixel_cnt += 2; + internal_pixel_cnt += 2; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dtbuf[h ^ lol][1]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ham0_p5_ilores_dhires_ntsc_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_ham1_p5_ilores_dhires_ntsc(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl5(); + clxdat |= bplcoltable[pix0]; + if (decode_specials) { + pix0 = decode_denise_specials(pix0); + } + dpix_val0 = decode_ham_pixel(pix0); + } + last_bpl_pix = pix0; + } + shiftbpl5(); + internal_pixel_cnt += 2; + internal_pixel_cnt += 2; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dtbuf[h ^ lol][1]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + } + if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { + copybpl5e(); + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ham1_p5_ilores_dhires_ntsc_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_n0_p6_ilores_dhires_ntsc(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl6(); + clxdat |= bplcoltable[pix0]; + if (decode_specials) { + pix0 = decode_denise_specials(pix0); + } + dpix_val0 = denise_colors.acolors[pix0]; + } + last_bpl_pix = pix0; + } + shiftbpl6(); + internal_pixel_cnt += 2; + internal_pixel_cnt += 2; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dtbuf[h ^ lol][1]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_n0_p6_ilores_dhires_ntsc_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_n1_p6_ilores_dhires_ntsc(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl6(); + clxdat |= bplcoltable[pix0]; + if (decode_specials) { + pix0 = decode_denise_specials(pix0); + } + dpix_val0 = denise_colors.acolors[pix0]; + } + last_bpl_pix = pix0; + } + shiftbpl6(); + internal_pixel_cnt += 2; + internal_pixel_cnt += 2; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dtbuf[h ^ lol][1]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + } + if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { + copybpl6e(); + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_n1_p6_ilores_dhires_ntsc_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_dpf0_p6_ilores_dhires_ntsc(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl6(); + clxdat |= bplcoltable[pix0]; + if (decode_specials) { + pix0 = decode_denise_specials(pix0); + } + uae_u8 val0 = dpf_lookup[pix0]; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + shiftbpl6(); + internal_pixel_cnt += 2; + internal_pixel_cnt += 2; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dtbuf[h ^ lol][1]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_dpf0_p6_ilores_dhires_ntsc_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_dpf1_p6_ilores_dhires_ntsc(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl6(); + clxdat |= bplcoltable[pix0]; + if (decode_specials) { + pix0 = decode_denise_specials(pix0); + } + uae_u8 val0 = dpf_lookup[pix0]; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + shiftbpl6(); + internal_pixel_cnt += 2; + internal_pixel_cnt += 2; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dtbuf[h ^ lol][1]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + } + if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { + copybpl6e(); + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_dpf1_p6_ilores_dhires_ntsc_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_ehb0_p6_ilores_dhires_ntsc(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl6(); + clxdat |= bplcoltable[pix0]; + if (decode_specials) { + pix0 = decode_denise_specials(pix0); + } + pix0 &= bplehb_mask; + if (pix0 <= 31) { + dpix_val0 = denise_colors.acolors[pix0]; + } else { + dpix_val0 = p_xcolors[(denise_colors.color_regs_ecs[pix0 - 32] >> 1) & 0x777]; + } + } + last_bpl_pix = pix0; + } + shiftbpl6(); + internal_pixel_cnt += 2; + internal_pixel_cnt += 2; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dtbuf[h ^ lol][1]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ehb0_p6_ilores_dhires_ntsc_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_ehb1_p6_ilores_dhires_ntsc(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl6(); + clxdat |= bplcoltable[pix0]; + if (decode_specials) { + pix0 = decode_denise_specials(pix0); + } + pix0 &= bplehb_mask; + if (pix0 <= 31) { + dpix_val0 = denise_colors.acolors[pix0]; + } else { + dpix_val0 = p_xcolors[(denise_colors.color_regs_ecs[pix0 - 32] >> 1) & 0x777]; + } + } + last_bpl_pix = pix0; + } + shiftbpl6(); + internal_pixel_cnt += 2; + internal_pixel_cnt += 2; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dtbuf[h ^ lol][1]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + } + if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { + copybpl6e(); + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ehb1_p6_ilores_dhires_ntsc_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_ham0_p6_ilores_dhires_ntsc(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl6(); + clxdat |= bplcoltable[pix0]; + if (decode_specials) { + pix0 = decode_denise_specials(pix0); + } + dpix_val0 = decode_ham_pixel(pix0); + } + last_bpl_pix = pix0; + } + shiftbpl6(); + internal_pixel_cnt += 2; + internal_pixel_cnt += 2; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dtbuf[h ^ lol][1]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ham0_p6_ilores_dhires_ntsc_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_ham1_p6_ilores_dhires_ntsc(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl6(); + clxdat |= bplcoltable[pix0]; + if (decode_specials) { + pix0 = decode_denise_specials(pix0); + } + dpix_val0 = decode_ham_pixel(pix0); + } + last_bpl_pix = pix0; + } + shiftbpl6(); + internal_pixel_cnt += 2; + internal_pixel_cnt += 2; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dtbuf[h ^ lol][1]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + } + if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { + copybpl6e(); + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ham1_p6_ilores_dhires_ntsc_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_n0_p2_ilores_dhires_spr_ntsc(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl2(); + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0]; + } + last_bpl_pix = pix0; + } + shiftbpl2(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_lores(); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + internal_pixel_cnt += 2; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + } + } + dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dtbuf[h ^ lol][1]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_n0_p2_ilores_dhires_spr_ntsc_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_n1_p2_ilores_dhires_spr_ntsc(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl2(); + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0]; + } + last_bpl_pix = pix0; + } + shiftbpl2(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_lores(); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + internal_pixel_cnt += 2; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + } + } + dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dtbuf[h ^ lol][1]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + } + if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { + copybpl2e(); + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_n1_p2_ilores_dhires_spr_ntsc_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_dpf0_p2_ilores_dhires_spr_ntsc(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl2(); + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + shiftbpl2(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_lores(); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + internal_pixel_cnt += 2; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + } + } + dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dtbuf[h ^ lol][1]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_dpf0_p2_ilores_dhires_spr_ntsc_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_dpf1_p2_ilores_dhires_spr_ntsc(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl2(); + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + shiftbpl2(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_lores(); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + internal_pixel_cnt += 2; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + } + } + dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dtbuf[h ^ lol][1]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + } + if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { + copybpl2e(); + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_dpf1_p2_ilores_dhires_spr_ntsc_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_ehb0_p2_ilores_dhires_spr_ntsc(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + internal_pixel_cnt += 2; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dtbuf[h ^ lol][1]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ehb0_p2_ilores_dhires_spr_ntsc_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_ehb1_p2_ilores_dhires_spr_ntsc(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + internal_pixel_cnt += 2; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dtbuf[h ^ lol][1]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ehb1_p2_ilores_dhires_spr_ntsc_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_ham0_p2_ilores_dhires_spr_ntsc(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + internal_pixel_cnt += 2; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dtbuf[h ^ lol][1]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ham0_p2_ilores_dhires_spr_ntsc_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_ham1_p2_ilores_dhires_spr_ntsc(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + internal_pixel_cnt += 2; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dtbuf[h ^ lol][1]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ham1_p2_ilores_dhires_spr_ntsc_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_n0_p4_ilores_dhires_spr_ntsc(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl4(); + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0]; + } + last_bpl_pix = pix0; + } + shiftbpl4(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_lores(); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + internal_pixel_cnt += 2; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + } + } + dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dtbuf[h ^ lol][1]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_n0_p4_ilores_dhires_spr_ntsc_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_n1_p4_ilores_dhires_spr_ntsc(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl4(); + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0]; + } + last_bpl_pix = pix0; + } + shiftbpl4(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_lores(); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + internal_pixel_cnt += 2; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + } + } + dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dtbuf[h ^ lol][1]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + } + if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { + copybpl4e(); + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_n1_p4_ilores_dhires_spr_ntsc_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_dpf0_p4_ilores_dhires_spr_ntsc(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl4(); + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + shiftbpl4(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_lores(); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + internal_pixel_cnt += 2; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + } + } + dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dtbuf[h ^ lol][1]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_dpf0_p4_ilores_dhires_spr_ntsc_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_dpf1_p4_ilores_dhires_spr_ntsc(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl4(); + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + shiftbpl4(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_lores(); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + internal_pixel_cnt += 2; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + } + } + dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dtbuf[h ^ lol][1]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + } + if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { + copybpl4e(); + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_dpf1_p4_ilores_dhires_spr_ntsc_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_ehb0_p4_ilores_dhires_spr_ntsc(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + internal_pixel_cnt += 2; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dtbuf[h ^ lol][1]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ehb0_p4_ilores_dhires_spr_ntsc_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_ehb1_p4_ilores_dhires_spr_ntsc(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + internal_pixel_cnt += 2; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dtbuf[h ^ lol][1]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ehb1_p4_ilores_dhires_spr_ntsc_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_ham0_p4_ilores_dhires_spr_ntsc(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + internal_pixel_cnt += 2; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dtbuf[h ^ lol][1]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ham0_p4_ilores_dhires_spr_ntsc_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_ham1_p4_ilores_dhires_spr_ntsc(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + internal_pixel_cnt += 2; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dtbuf[h ^ lol][1]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ham1_p4_ilores_dhires_spr_ntsc_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_n0_p5_ilores_dhires_spr_ntsc(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl5(); + clxdat |= bplcoltable[pix0]; + if (decode_specials) { + pix0 = decode_denise_specials(pix0); + } + dpix_val0 = denise_colors.acolors[pix0]; + } + last_bpl_pix = pix0; + } + shiftbpl5(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_lores(); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + internal_pixel_cnt += 2; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + } + } + dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dtbuf[h ^ lol][1]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_n0_p5_ilores_dhires_spr_ntsc_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_n1_p5_ilores_dhires_spr_ntsc(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl5(); + clxdat |= bplcoltable[pix0]; + if (decode_specials) { + pix0 = decode_denise_specials(pix0); + } + dpix_val0 = denise_colors.acolors[pix0]; + } + last_bpl_pix = pix0; + } + shiftbpl5(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_lores(); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + internal_pixel_cnt += 2; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + } + } + dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dtbuf[h ^ lol][1]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + } + if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { + copybpl5e(); + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_n1_p5_ilores_dhires_spr_ntsc_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_dpf0_p5_ilores_dhires_spr_ntsc(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl5(); + clxdat |= bplcoltable[pix0]; + if (decode_specials) { + pix0 = decode_denise_specials(pix0); + } + uae_u8 val0 = dpf_lookup[pix0]; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + shiftbpl5(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_lores(); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + internal_pixel_cnt += 2; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + } + } + dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dtbuf[h ^ lol][1]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_dpf0_p5_ilores_dhires_spr_ntsc_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_dpf1_p5_ilores_dhires_spr_ntsc(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl5(); + clxdat |= bplcoltable[pix0]; + if (decode_specials) { + pix0 = decode_denise_specials(pix0); + } + uae_u8 val0 = dpf_lookup[pix0]; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + shiftbpl5(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_lores(); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + internal_pixel_cnt += 2; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + } + } + dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dtbuf[h ^ lol][1]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + } + if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { + copybpl5e(); + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_dpf1_p5_ilores_dhires_spr_ntsc_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_ehb0_p5_ilores_dhires_spr_ntsc(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + internal_pixel_cnt += 2; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dtbuf[h ^ lol][1]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ehb0_p5_ilores_dhires_spr_ntsc_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_ehb1_p5_ilores_dhires_spr_ntsc(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + internal_pixel_cnt += 2; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dtbuf[h ^ lol][1]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ehb1_p5_ilores_dhires_spr_ntsc_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_ham0_p5_ilores_dhires_spr_ntsc(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl5(); + clxdat |= bplcoltable[pix0]; + if (decode_specials) { + pix0 = decode_denise_specials(pix0); + } + dpix_val0 = decode_ham_pixel(pix0); + } + last_bpl_pix = pix0; + } + shiftbpl5(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_lores(); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + internal_pixel_cnt += 2; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + } + } + dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dtbuf[h ^ lol][1]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ham0_p5_ilores_dhires_spr_ntsc_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_ham1_p5_ilores_dhires_spr_ntsc(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl5(); + clxdat |= bplcoltable[pix0]; + if (decode_specials) { + pix0 = decode_denise_specials(pix0); + } + dpix_val0 = decode_ham_pixel(pix0); + } + last_bpl_pix = pix0; + } + shiftbpl5(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_lores(); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + internal_pixel_cnt += 2; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + } + } + dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dtbuf[h ^ lol][1]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + } + if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { + copybpl5e(); + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ham1_p5_ilores_dhires_spr_ntsc_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_n0_p6_ilores_dhires_spr_ntsc(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl6(); + clxdat |= bplcoltable[pix0]; + if (decode_specials) { + pix0 = decode_denise_specials(pix0); + } + dpix_val0 = denise_colors.acolors[pix0]; + } + last_bpl_pix = pix0; + } + shiftbpl6(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_lores(); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + internal_pixel_cnt += 2; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + } + } + dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dtbuf[h ^ lol][1]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_n0_p6_ilores_dhires_spr_ntsc_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_n1_p6_ilores_dhires_spr_ntsc(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl6(); + clxdat |= bplcoltable[pix0]; + if (decode_specials) { + pix0 = decode_denise_specials(pix0); + } + dpix_val0 = denise_colors.acolors[pix0]; + } + last_bpl_pix = pix0; + } + shiftbpl6(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_lores(); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + internal_pixel_cnt += 2; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + } + } + dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dtbuf[h ^ lol][1]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + } + if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { + copybpl6e(); + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_n1_p6_ilores_dhires_spr_ntsc_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_dpf0_p6_ilores_dhires_spr_ntsc(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl6(); + clxdat |= bplcoltable[pix0]; + if (decode_specials) { + pix0 = decode_denise_specials(pix0); + } + uae_u8 val0 = dpf_lookup[pix0]; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + shiftbpl6(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_lores(); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + internal_pixel_cnt += 2; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + } + } + dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dtbuf[h ^ lol][1]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_dpf0_p6_ilores_dhires_spr_ntsc_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_dpf1_p6_ilores_dhires_spr_ntsc(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl6(); + clxdat |= bplcoltable[pix0]; + if (decode_specials) { + pix0 = decode_denise_specials(pix0); + } + uae_u8 val0 = dpf_lookup[pix0]; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + shiftbpl6(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_lores(); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + internal_pixel_cnt += 2; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + } + } + dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dtbuf[h ^ lol][1]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + } + if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { + copybpl6e(); + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_dpf1_p6_ilores_dhires_spr_ntsc_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_ehb0_p6_ilores_dhires_spr_ntsc(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl6(); + clxdat |= bplcoltable[pix0]; + if (decode_specials) { + pix0 = decode_denise_specials(pix0); + } + pix0 &= bplehb_mask; + if (pix0 <= 31) { + dpix_val0 = denise_colors.acolors[pix0]; + } else { + dpix_val0 = p_xcolors[(denise_colors.color_regs_ecs[pix0 - 32] >> 1) & 0x777]; + } + } + last_bpl_pix = pix0; + } + shiftbpl6(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_lores(); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + internal_pixel_cnt += 2; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + } + } + dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dtbuf[h ^ lol][1]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ehb0_p6_ilores_dhires_spr_ntsc_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_ehb1_p6_ilores_dhires_spr_ntsc(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl6(); + clxdat |= bplcoltable[pix0]; + if (decode_specials) { + pix0 = decode_denise_specials(pix0); + } + pix0 &= bplehb_mask; + if (pix0 <= 31) { + dpix_val0 = denise_colors.acolors[pix0]; + } else { + dpix_val0 = p_xcolors[(denise_colors.color_regs_ecs[pix0 - 32] >> 1) & 0x777]; + } + } + last_bpl_pix = pix0; + } + shiftbpl6(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_lores(); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + internal_pixel_cnt += 2; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + } + } + dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dtbuf[h ^ lol][1]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + } + if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { + copybpl6e(); + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ehb1_p6_ilores_dhires_spr_ntsc_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_ham0_p6_ilores_dhires_spr_ntsc(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl6(); + clxdat |= bplcoltable[pix0]; + if (decode_specials) { + pix0 = decode_denise_specials(pix0); + } + dpix_val0 = decode_ham_pixel(pix0); + } + last_bpl_pix = pix0; + } + shiftbpl6(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_lores(); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + internal_pixel_cnt += 2; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + } + } + dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dtbuf[h ^ lol][1]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ham0_p6_ilores_dhires_spr_ntsc_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_ham1_p6_ilores_dhires_spr_ntsc(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl6(); + clxdat |= bplcoltable[pix0]; + if (decode_specials) { + pix0 = decode_denise_specials(pix0); + } + dpix_val0 = decode_ham_pixel(pix0); + } + last_bpl_pix = pix0; + } + shiftbpl6(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_lores(); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + internal_pixel_cnt += 2; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + } + } + dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dtbuf[h ^ lol][1]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + } + if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { + copybpl6e(); + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ham1_p6_ilores_dhires_spr_ntsc_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_n0_p2_ihires_dhires_ntsc(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl2(); + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0]; + } + last_bpl_pix = pix0; + } + shiftbpl2(); + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = getbpl2(); + clxdat |= bplcoltable[pix1]; + dpix_val1 = denise_colors.acolors[pix1]; + } + last_bpl_pix = pix1; + } + shiftbpl2(); + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dtbuf[h ^ lol][1]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_n0_p2_ihires_dhires_ntsc_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_n1_p2_ihires_dhires_ntsc(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl2(); + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0]; + } + last_bpl_pix = pix0; + } + shiftbpl2(); + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = getbpl2(); + clxdat |= bplcoltable[pix1]; + dpix_val1 = denise_colors.acolors[pix1]; + } + last_bpl_pix = pix1; + } + shiftbpl2(); + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dtbuf[h ^ lol][1]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + } + if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { + copybpl2e(); + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_n1_p2_ihires_dhires_ntsc_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_dpf0_p2_ihires_dhires_ntsc(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl2(); + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + shiftbpl2(); + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = getbpl2(); + clxdat |= bplcoltable[pix1]; + uae_u8 val1 = dpf_lookup[pix1]; + dpix_val1 = denise_colors.acolors[val1]; + } + last_bpl_pix = pix1; + } + shiftbpl2(); + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dtbuf[h ^ lol][1]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_dpf0_p2_ihires_dhires_ntsc_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_dpf1_p2_ihires_dhires_ntsc(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl2(); + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + shiftbpl2(); + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = getbpl2(); + clxdat |= bplcoltable[pix1]; + uae_u8 val1 = dpf_lookup[pix1]; + dpix_val1 = denise_colors.acolors[val1]; + } + last_bpl_pix = pix1; + } + shiftbpl2(); + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dtbuf[h ^ lol][1]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + } + if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { + copybpl2e(); + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_dpf1_p2_ihires_dhires_ntsc_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_ehb0_p2_ihires_dhires_ntsc(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dtbuf[h ^ lol][1]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ehb0_p2_ihires_dhires_ntsc_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_ehb1_p2_ihires_dhires_ntsc(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dtbuf[h ^ lol][1]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ehb1_p2_ihires_dhires_ntsc_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_ham0_p2_ihires_dhires_ntsc(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dtbuf[h ^ lol][1]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ham0_p2_ihires_dhires_ntsc_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_ham1_p2_ihires_dhires_ntsc(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dtbuf[h ^ lol][1]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ham1_p2_ihires_dhires_ntsc_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_n0_p4_ihires_dhires_ntsc(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl4(); + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0]; + } + last_bpl_pix = pix0; + } + shiftbpl4(); + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = getbpl4(); + clxdat |= bplcoltable[pix1]; + dpix_val1 = denise_colors.acolors[pix1]; + } + last_bpl_pix = pix1; + } + shiftbpl4(); + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dtbuf[h ^ lol][1]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_n0_p4_ihires_dhires_ntsc_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_n1_p4_ihires_dhires_ntsc(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl4(); + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0]; + } + last_bpl_pix = pix0; + } + shiftbpl4(); + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = getbpl4(); + clxdat |= bplcoltable[pix1]; + dpix_val1 = denise_colors.acolors[pix1]; + } + last_bpl_pix = pix1; + } + shiftbpl4(); + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dtbuf[h ^ lol][1]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + } + if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { + copybpl4e(); + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_n1_p4_ihires_dhires_ntsc_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_dpf0_p4_ihires_dhires_ntsc(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl4(); + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + shiftbpl4(); + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = getbpl4(); + clxdat |= bplcoltable[pix1]; + uae_u8 val1 = dpf_lookup[pix1]; + dpix_val1 = denise_colors.acolors[val1]; + } + last_bpl_pix = pix1; + } + shiftbpl4(); + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dtbuf[h ^ lol][1]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_dpf0_p4_ihires_dhires_ntsc_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_dpf1_p4_ihires_dhires_ntsc(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl4(); + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + shiftbpl4(); + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = getbpl4(); + clxdat |= bplcoltable[pix1]; + uae_u8 val1 = dpf_lookup[pix1]; + dpix_val1 = denise_colors.acolors[val1]; + } + last_bpl_pix = pix1; + } + shiftbpl4(); + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dtbuf[h ^ lol][1]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + } + if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { + copybpl4e(); + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_dpf1_p4_ihires_dhires_ntsc_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_ehb0_p4_ihires_dhires_ntsc(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dtbuf[h ^ lol][1]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ehb0_p4_ihires_dhires_ntsc_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_ehb1_p4_ihires_dhires_ntsc(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dtbuf[h ^ lol][1]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ehb1_p4_ihires_dhires_ntsc_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_ham0_p4_ihires_dhires_ntsc(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dtbuf[h ^ lol][1]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ham0_p4_ihires_dhires_ntsc_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_ham1_p4_ihires_dhires_ntsc(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dtbuf[h ^ lol][1]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ham1_p4_ihires_dhires_ntsc_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_n0_p5_ihires_dhires_ntsc(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dtbuf[h ^ lol][1]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_n0_p5_ihires_dhires_ntsc_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_n1_p5_ihires_dhires_ntsc(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dtbuf[h ^ lol][1]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_n1_p5_ihires_dhires_ntsc_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_dpf0_p5_ihires_dhires_ntsc(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dtbuf[h ^ lol][1]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_dpf0_p5_ihires_dhires_ntsc_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_dpf1_p5_ihires_dhires_ntsc(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dtbuf[h ^ lol][1]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_dpf1_p5_ihires_dhires_ntsc_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_ehb0_p5_ihires_dhires_ntsc(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dtbuf[h ^ lol][1]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ehb0_p5_ihires_dhires_ntsc_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_ehb1_p5_ihires_dhires_ntsc(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dtbuf[h ^ lol][1]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ehb1_p5_ihires_dhires_ntsc_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_ham0_p5_ihires_dhires_ntsc(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dtbuf[h ^ lol][1]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ham0_p5_ihires_dhires_ntsc_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_ham1_p5_ihires_dhires_ntsc(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dtbuf[h ^ lol][1]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ham1_p5_ihires_dhires_ntsc_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_n0_p6_ihires_dhires_ntsc(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dtbuf[h ^ lol][1]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_n0_p6_ihires_dhires_ntsc_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_n1_p6_ihires_dhires_ntsc(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dtbuf[h ^ lol][1]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_n1_p6_ihires_dhires_ntsc_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_dpf0_p6_ihires_dhires_ntsc(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dtbuf[h ^ lol][1]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_dpf0_p6_ihires_dhires_ntsc_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_dpf1_p6_ihires_dhires_ntsc(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dtbuf[h ^ lol][1]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_dpf1_p6_ihires_dhires_ntsc_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_ehb0_p6_ihires_dhires_ntsc(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dtbuf[h ^ lol][1]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ehb0_p6_ihires_dhires_ntsc_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_ehb1_p6_ihires_dhires_ntsc(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dtbuf[h ^ lol][1]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ehb1_p6_ihires_dhires_ntsc_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_ham0_p6_ihires_dhires_ntsc(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dtbuf[h ^ lol][1]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ham0_p6_ihires_dhires_ntsc_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_ham1_p6_ihires_dhires_ntsc(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dtbuf[h ^ lol][1]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ham1_p6_ihires_dhires_ntsc_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_n0_p2_ihires_dhires_spr_ntsc(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl2(); + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0]; + } + last_bpl_pix = pix0; + } + shiftbpl2(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_lores(); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = getbpl2(); + clxdat |= bplcoltable[pix1]; + dpix_val1 = denise_colors.acolors[pix1]; + } + last_bpl_pix = pix1; + } + shiftbpl2(); + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + uae_u32 sv1 = sv0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } + dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dtbuf[h ^ lol][1]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_n0_p2_ihires_dhires_spr_ntsc_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_n1_p2_ihires_dhires_spr_ntsc(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl2(); + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0]; + } + last_bpl_pix = pix0; + } + shiftbpl2(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_lores(); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = getbpl2(); + clxdat |= bplcoltable[pix1]; + dpix_val1 = denise_colors.acolors[pix1]; + } + last_bpl_pix = pix1; + } + shiftbpl2(); + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + uae_u32 sv1 = sv0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } + dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dtbuf[h ^ lol][1]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + } + if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { + copybpl2e(); + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_n1_p2_ihires_dhires_spr_ntsc_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_dpf0_p2_ihires_dhires_spr_ntsc(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl2(); + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + shiftbpl2(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_lores(); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = getbpl2(); + clxdat |= bplcoltable[pix1]; + uae_u8 val1 = dpf_lookup[pix1]; + dpix_val1 = denise_colors.acolors[val1]; + } + last_bpl_pix = pix1; + } + shiftbpl2(); + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + uae_u32 sv1 = sv0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } + dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dtbuf[h ^ lol][1]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_dpf0_p2_ihires_dhires_spr_ntsc_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_dpf1_p2_ihires_dhires_spr_ntsc(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl2(); + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + shiftbpl2(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_lores(); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = getbpl2(); + clxdat |= bplcoltable[pix1]; + uae_u8 val1 = dpf_lookup[pix1]; + dpix_val1 = denise_colors.acolors[val1]; + } + last_bpl_pix = pix1; + } + shiftbpl2(); + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + uae_u32 sv1 = sv0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } + dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dtbuf[h ^ lol][1]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + } + if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { + copybpl2e(); + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_dpf1_p2_ihires_dhires_spr_ntsc_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_ehb0_p2_ihires_dhires_spr_ntsc(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dtbuf[h ^ lol][1]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ehb0_p2_ihires_dhires_spr_ntsc_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_ehb1_p2_ihires_dhires_spr_ntsc(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dtbuf[h ^ lol][1]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ehb1_p2_ihires_dhires_spr_ntsc_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_ham0_p2_ihires_dhires_spr_ntsc(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dtbuf[h ^ lol][1]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ham0_p2_ihires_dhires_spr_ntsc_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_ham1_p2_ihires_dhires_spr_ntsc(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dtbuf[h ^ lol][1]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ham1_p2_ihires_dhires_spr_ntsc_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_n0_p4_ihires_dhires_spr_ntsc(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl4(); + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0]; + } + last_bpl_pix = pix0; + } + shiftbpl4(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_lores(); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = getbpl4(); + clxdat |= bplcoltable[pix1]; + dpix_val1 = denise_colors.acolors[pix1]; + } + last_bpl_pix = pix1; + } + shiftbpl4(); + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + uae_u32 sv1 = sv0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } + dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dtbuf[h ^ lol][1]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_n0_p4_ihires_dhires_spr_ntsc_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_n1_p4_ihires_dhires_spr_ntsc(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl4(); + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0]; + } + last_bpl_pix = pix0; + } + shiftbpl4(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_lores(); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = getbpl4(); + clxdat |= bplcoltable[pix1]; + dpix_val1 = denise_colors.acolors[pix1]; + } + last_bpl_pix = pix1; + } + shiftbpl4(); + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + uae_u32 sv1 = sv0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } + dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dtbuf[h ^ lol][1]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + } + if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { + copybpl4e(); + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_n1_p4_ihires_dhires_spr_ntsc_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_dpf0_p4_ihires_dhires_spr_ntsc(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl4(); + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + shiftbpl4(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_lores(); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = getbpl4(); + clxdat |= bplcoltable[pix1]; + uae_u8 val1 = dpf_lookup[pix1]; + dpix_val1 = denise_colors.acolors[val1]; + } + last_bpl_pix = pix1; + } + shiftbpl4(); + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + uae_u32 sv1 = sv0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } + dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dtbuf[h ^ lol][1]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_dpf0_p4_ihires_dhires_spr_ntsc_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_dpf1_p4_ihires_dhires_spr_ntsc(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl4(); + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + shiftbpl4(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_lores(); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = getbpl4(); + clxdat |= bplcoltable[pix1]; + uae_u8 val1 = dpf_lookup[pix1]; + dpix_val1 = denise_colors.acolors[val1]; + } + last_bpl_pix = pix1; + } + shiftbpl4(); + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + } + } + uae_u32 sv1 = sv0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } + dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dtbuf[h ^ lol][1]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + } + if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { + copybpl4e(); + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_dpf1_p4_ihires_dhires_spr_ntsc_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_ehb0_p4_ihires_dhires_spr_ntsc(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dtbuf[h ^ lol][1]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ehb0_p4_ihires_dhires_spr_ntsc_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_ehb1_p4_ihires_dhires_spr_ntsc(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dtbuf[h ^ lol][1]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ehb1_p4_ihires_dhires_spr_ntsc_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_ham0_p4_ihires_dhires_spr_ntsc(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dtbuf[h ^ lol][1]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ham0_p4_ihires_dhires_spr_ntsc_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_ham1_p4_ihires_dhires_spr_ntsc(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dtbuf[h ^ lol][1]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ham1_p4_ihires_dhires_spr_ntsc_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_n0_p5_ihires_dhires_spr_ntsc(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dtbuf[h ^ lol][1]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_n0_p5_ihires_dhires_spr_ntsc_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_n1_p5_ihires_dhires_spr_ntsc(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dtbuf[h ^ lol][1]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_n1_p5_ihires_dhires_spr_ntsc_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_dpf0_p5_ihires_dhires_spr_ntsc(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dtbuf[h ^ lol][1]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_dpf0_p5_ihires_dhires_spr_ntsc_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_dpf1_p5_ihires_dhires_spr_ntsc(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dtbuf[h ^ lol][1]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_dpf1_p5_ihires_dhires_spr_ntsc_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_ehb0_p5_ihires_dhires_spr_ntsc(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dtbuf[h ^ lol][1]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ehb0_p5_ihires_dhires_spr_ntsc_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_ehb1_p5_ihires_dhires_spr_ntsc(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dtbuf[h ^ lol][1]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ehb1_p5_ihires_dhires_spr_ntsc_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_ham0_p5_ihires_dhires_spr_ntsc(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dtbuf[h ^ lol][1]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ham0_p5_ihires_dhires_spr_ntsc_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_ham1_p5_ihires_dhires_spr_ntsc(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dtbuf[h ^ lol][1]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ham1_p5_ihires_dhires_spr_ntsc_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_n0_p6_ihires_dhires_spr_ntsc(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dtbuf[h ^ lol][1]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_n0_p6_ihires_dhires_spr_ntsc_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_n1_p6_ihires_dhires_spr_ntsc(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dtbuf[h ^ lol][1]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_n1_p6_ihires_dhires_spr_ntsc_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_dpf0_p6_ihires_dhires_spr_ntsc(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dtbuf[h ^ lol][1]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_dpf0_p6_ihires_dhires_spr_ntsc_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_dpf1_p6_ihires_dhires_spr_ntsc(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dtbuf[h ^ lol][1]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_dpf1_p6_ihires_dhires_spr_ntsc_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_ehb0_p6_ihires_dhires_spr_ntsc(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dtbuf[h ^ lol][1]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ehb0_p6_ihires_dhires_spr_ntsc_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_ehb1_p6_ihires_dhires_spr_ntsc(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dtbuf[h ^ lol][1]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ehb1_p6_ihires_dhires_spr_ntsc_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_ham0_p6_ihires_dhires_spr_ntsc(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dtbuf[h ^ lol][1]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ham0_p6_ihires_dhires_spr_ntsc_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_ham1_p6_ihires_dhires_spr_ntsc(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dtbuf[h ^ lol][1]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ham1_p6_ihires_dhires_spr_ntsc_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_n0_p2_ilores_dshres_ntsc(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl2(); + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0]; + } + last_bpl_pix = pix0; + } + shiftbpl2(); + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + uae_u32 dpix_val2 = dpix_val1; + uae_u8 pix2 = pix1; + uae_u32 dpix_val3 = dpix_val2; + uae_u8 pix3 = pix2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; + dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dtbuf[h ^ lol][1]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + uae_u32 t2 = 0; + if (!extblank) { + t2 = dtbuf[h ^ lol][2]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + uae_u32 t3 = 0; + if (!extblank) { + t3 = dtbuf[h ^ lol][3]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_n0_p2_ilores_dshres_ntsc_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_n1_p2_ilores_dshres_ntsc(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl2(); + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0]; + } + last_bpl_pix = pix0; + } + shiftbpl2(); + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + uae_u32 dpix_val2 = dpix_val1; + uae_u8 pix2 = pix1; + uae_u32 dpix_val3 = dpix_val2; + uae_u8 pix3 = pix2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; + dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dtbuf[h ^ lol][1]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + uae_u32 t2 = 0; + if (!extblank) { + t2 = dtbuf[h ^ lol][2]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + uae_u32 t3 = 0; + if (!extblank) { + t3 = dtbuf[h ^ lol][3]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + } + if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { + copybpl2e(); + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_n1_p2_ilores_dshres_ntsc_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_dpf0_p2_ilores_dshres_ntsc(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl2(); + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + shiftbpl2(); + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + uae_u32 dpix_val2 = dpix_val1; + uae_u8 pix2 = pix1; + uae_u32 dpix_val3 = dpix_val2; + uae_u8 pix3 = pix2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; + dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dtbuf[h ^ lol][1]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + uae_u32 t2 = 0; + if (!extblank) { + t2 = dtbuf[h ^ lol][2]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + uae_u32 t3 = 0; + if (!extblank) { + t3 = dtbuf[h ^ lol][3]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_dpf0_p2_ilores_dshres_ntsc_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_dpf1_p2_ilores_dshres_ntsc(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl2(); + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + shiftbpl2(); + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + uae_u32 dpix_val2 = dpix_val1; + uae_u8 pix2 = pix1; + uae_u32 dpix_val3 = dpix_val2; + uae_u8 pix3 = pix2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; + dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dtbuf[h ^ lol][1]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + uae_u32 t2 = 0; + if (!extblank) { + t2 = dtbuf[h ^ lol][2]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + uae_u32 t3 = 0; + if (!extblank) { + t3 = dtbuf[h ^ lol][3]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + } + if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { + copybpl2e(); + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_dpf1_p2_ilores_dshres_ntsc_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_ehb0_p2_ilores_dshres_ntsc(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + uae_u32 dpix_val2 = dpix_val1; + uae_u8 pix2 = pix1; + uae_u32 dpix_val3 = dpix_val2; + uae_u8 pix3 = pix2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; + dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dtbuf[h ^ lol][1]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + uae_u32 t2 = 0; + if (!extblank) { + t2 = dtbuf[h ^ lol][2]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + uae_u32 t3 = 0; + if (!extblank) { + t3 = dtbuf[h ^ lol][3]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ehb0_p2_ilores_dshres_ntsc_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_ehb1_p2_ilores_dshres_ntsc(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + uae_u32 dpix_val2 = dpix_val1; + uae_u8 pix2 = pix1; + uae_u32 dpix_val3 = dpix_val2; + uae_u8 pix3 = pix2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; + dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dtbuf[h ^ lol][1]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + uae_u32 t2 = 0; + if (!extblank) { + t2 = dtbuf[h ^ lol][2]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + uae_u32 t3 = 0; + if (!extblank) { + t3 = dtbuf[h ^ lol][3]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ehb1_p2_ilores_dshres_ntsc_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_ham0_p2_ilores_dshres_ntsc(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + uae_u32 dpix_val2 = dpix_val1; + uae_u8 pix2 = pix1; + uae_u32 dpix_val3 = dpix_val2; + uae_u8 pix3 = pix2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; + dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dtbuf[h ^ lol][1]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + uae_u32 t2 = 0; + if (!extblank) { + t2 = dtbuf[h ^ lol][2]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + uae_u32 t3 = 0; + if (!extblank) { + t3 = dtbuf[h ^ lol][3]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ham0_p2_ilores_dshres_ntsc_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_ham1_p2_ilores_dshres_ntsc(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + uae_u32 dpix_val2 = dpix_val1; + uae_u8 pix2 = pix1; + uae_u32 dpix_val3 = dpix_val2; + uae_u8 pix3 = pix2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; + dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dtbuf[h ^ lol][1]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + uae_u32 t2 = 0; + if (!extblank) { + t2 = dtbuf[h ^ lol][2]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + uae_u32 t3 = 0; + if (!extblank) { + t3 = dtbuf[h ^ lol][3]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ham1_p2_ilores_dshres_ntsc_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_n0_p4_ilores_dshres_ntsc(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl4(); + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0]; + } + last_bpl_pix = pix0; + } + shiftbpl4(); + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + uae_u32 dpix_val2 = dpix_val1; + uae_u8 pix2 = pix1; + uae_u32 dpix_val3 = dpix_val2; + uae_u8 pix3 = pix2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; + dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dtbuf[h ^ lol][1]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + uae_u32 t2 = 0; + if (!extblank) { + t2 = dtbuf[h ^ lol][2]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + uae_u32 t3 = 0; + if (!extblank) { + t3 = dtbuf[h ^ lol][3]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_n0_p4_ilores_dshres_ntsc_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_n1_p4_ilores_dshres_ntsc(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl4(); + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0]; + } + last_bpl_pix = pix0; + } + shiftbpl4(); + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + uae_u32 dpix_val2 = dpix_val1; + uae_u8 pix2 = pix1; + uae_u32 dpix_val3 = dpix_val2; + uae_u8 pix3 = pix2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; + dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dtbuf[h ^ lol][1]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + uae_u32 t2 = 0; + if (!extblank) { + t2 = dtbuf[h ^ lol][2]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + uae_u32 t3 = 0; + if (!extblank) { + t3 = dtbuf[h ^ lol][3]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + } + if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { + copybpl4e(); + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_n1_p4_ilores_dshres_ntsc_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_dpf0_p4_ilores_dshres_ntsc(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl4(); + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + shiftbpl4(); + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + uae_u32 dpix_val2 = dpix_val1; + uae_u8 pix2 = pix1; + uae_u32 dpix_val3 = dpix_val2; + uae_u8 pix3 = pix2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; + dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dtbuf[h ^ lol][1]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + uae_u32 t2 = 0; + if (!extblank) { + t2 = dtbuf[h ^ lol][2]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + uae_u32 t3 = 0; + if (!extblank) { + t3 = dtbuf[h ^ lol][3]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_dpf0_p4_ilores_dshres_ntsc_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_dpf1_p4_ilores_dshres_ntsc(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl4(); + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + shiftbpl4(); + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + uae_u32 dpix_val2 = dpix_val1; + uae_u8 pix2 = pix1; + uae_u32 dpix_val3 = dpix_val2; + uae_u8 pix3 = pix2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; + dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dtbuf[h ^ lol][1]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + uae_u32 t2 = 0; + if (!extblank) { + t2 = dtbuf[h ^ lol][2]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + uae_u32 t3 = 0; + if (!extblank) { + t3 = dtbuf[h ^ lol][3]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + } + if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { + copybpl4e(); + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_dpf1_p4_ilores_dshres_ntsc_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_ehb0_p4_ilores_dshres_ntsc(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + uae_u32 dpix_val2 = dpix_val1; + uae_u8 pix2 = pix1; + uae_u32 dpix_val3 = dpix_val2; + uae_u8 pix3 = pix2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; + dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dtbuf[h ^ lol][1]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + uae_u32 t2 = 0; + if (!extblank) { + t2 = dtbuf[h ^ lol][2]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + uae_u32 t3 = 0; + if (!extblank) { + t3 = dtbuf[h ^ lol][3]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ehb0_p4_ilores_dshres_ntsc_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_ehb1_p4_ilores_dshres_ntsc(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + uae_u32 dpix_val2 = dpix_val1; + uae_u8 pix2 = pix1; + uae_u32 dpix_val3 = dpix_val2; + uae_u8 pix3 = pix2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; + dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dtbuf[h ^ lol][1]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + uae_u32 t2 = 0; + if (!extblank) { + t2 = dtbuf[h ^ lol][2]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + uae_u32 t3 = 0; + if (!extblank) { + t3 = dtbuf[h ^ lol][3]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ehb1_p4_ilores_dshres_ntsc_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_ham0_p4_ilores_dshres_ntsc(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + uae_u32 dpix_val2 = dpix_val1; + uae_u8 pix2 = pix1; + uae_u32 dpix_val3 = dpix_val2; + uae_u8 pix3 = pix2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; + dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dtbuf[h ^ lol][1]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + uae_u32 t2 = 0; + if (!extblank) { + t2 = dtbuf[h ^ lol][2]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + uae_u32 t3 = 0; + if (!extblank) { + t3 = dtbuf[h ^ lol][3]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ham0_p4_ilores_dshres_ntsc_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_ham1_p4_ilores_dshres_ntsc(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + uae_u32 dpix_val2 = dpix_val1; + uae_u8 pix2 = pix1; + uae_u32 dpix_val3 = dpix_val2; + uae_u8 pix3 = pix2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; + dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dtbuf[h ^ lol][1]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + uae_u32 t2 = 0; + if (!extblank) { + t2 = dtbuf[h ^ lol][2]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + uae_u32 t3 = 0; + if (!extblank) { + t3 = dtbuf[h ^ lol][3]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ham1_p4_ilores_dshres_ntsc_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_n0_p5_ilores_dshres_ntsc(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl5(); + clxdat |= bplcoltable[pix0]; + if (decode_specials) { + pix0 = decode_denise_specials(pix0); + } + dpix_val0 = denise_colors.acolors[pix0]; + } + last_bpl_pix = pix0; + } + shiftbpl5(); + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + uae_u32 dpix_val2 = dpix_val1; + uae_u8 pix2 = pix1; + uae_u32 dpix_val3 = dpix_val2; + uae_u8 pix3 = pix2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; + dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dtbuf[h ^ lol][1]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + uae_u32 t2 = 0; + if (!extblank) { + t2 = dtbuf[h ^ lol][2]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + uae_u32 t3 = 0; + if (!extblank) { + t3 = dtbuf[h ^ lol][3]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_n0_p5_ilores_dshres_ntsc_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_n1_p5_ilores_dshres_ntsc(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl5(); + clxdat |= bplcoltable[pix0]; + if (decode_specials) { + pix0 = decode_denise_specials(pix0); + } + dpix_val0 = denise_colors.acolors[pix0]; + } + last_bpl_pix = pix0; + } + shiftbpl5(); + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + uae_u32 dpix_val2 = dpix_val1; + uae_u8 pix2 = pix1; + uae_u32 dpix_val3 = dpix_val2; + uae_u8 pix3 = pix2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; + dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dtbuf[h ^ lol][1]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + uae_u32 t2 = 0; + if (!extblank) { + t2 = dtbuf[h ^ lol][2]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + uae_u32 t3 = 0; + if (!extblank) { + t3 = dtbuf[h ^ lol][3]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + } + if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { + copybpl5e(); + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_n1_p5_ilores_dshres_ntsc_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_dpf0_p5_ilores_dshres_ntsc(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl5(); + clxdat |= bplcoltable[pix0]; + if (decode_specials) { + pix0 = decode_denise_specials(pix0); + } + uae_u8 val0 = dpf_lookup[pix0]; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + shiftbpl5(); + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + uae_u32 dpix_val2 = dpix_val1; + uae_u8 pix2 = pix1; + uae_u32 dpix_val3 = dpix_val2; + uae_u8 pix3 = pix2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; + dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dtbuf[h ^ lol][1]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + uae_u32 t2 = 0; + if (!extblank) { + t2 = dtbuf[h ^ lol][2]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + uae_u32 t3 = 0; + if (!extblank) { + t3 = dtbuf[h ^ lol][3]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_dpf0_p5_ilores_dshres_ntsc_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_dpf1_p5_ilores_dshres_ntsc(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl5(); + clxdat |= bplcoltable[pix0]; + if (decode_specials) { + pix0 = decode_denise_specials(pix0); + } + uae_u8 val0 = dpf_lookup[pix0]; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + shiftbpl5(); + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + uae_u32 dpix_val2 = dpix_val1; + uae_u8 pix2 = pix1; + uae_u32 dpix_val3 = dpix_val2; + uae_u8 pix3 = pix2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; + dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dtbuf[h ^ lol][1]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + uae_u32 t2 = 0; + if (!extblank) { + t2 = dtbuf[h ^ lol][2]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + uae_u32 t3 = 0; + if (!extblank) { + t3 = dtbuf[h ^ lol][3]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + } + if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { + copybpl5e(); + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_dpf1_p5_ilores_dshres_ntsc_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_ehb0_p5_ilores_dshres_ntsc(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + uae_u32 dpix_val2 = dpix_val1; + uae_u8 pix2 = pix1; + uae_u32 dpix_val3 = dpix_val2; + uae_u8 pix3 = pix2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; + dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dtbuf[h ^ lol][1]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + uae_u32 t2 = 0; + if (!extblank) { + t2 = dtbuf[h ^ lol][2]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + uae_u32 t3 = 0; + if (!extblank) { + t3 = dtbuf[h ^ lol][3]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ehb0_p5_ilores_dshres_ntsc_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_ehb1_p5_ilores_dshres_ntsc(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + uae_u32 dpix_val2 = dpix_val1; + uae_u8 pix2 = pix1; + uae_u32 dpix_val3 = dpix_val2; + uae_u8 pix3 = pix2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; + dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dtbuf[h ^ lol][1]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + uae_u32 t2 = 0; + if (!extblank) { + t2 = dtbuf[h ^ lol][2]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + uae_u32 t3 = 0; + if (!extblank) { + t3 = dtbuf[h ^ lol][3]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ehb1_p5_ilores_dshres_ntsc_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_ham0_p5_ilores_dshres_ntsc(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl5(); + clxdat |= bplcoltable[pix0]; + if (decode_specials) { + pix0 = decode_denise_specials(pix0); + } + dpix_val0 = decode_ham_pixel(pix0); + } + last_bpl_pix = pix0; + } + shiftbpl5(); + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + uae_u32 dpix_val2 = dpix_val1; + uae_u8 pix2 = pix1; + uae_u32 dpix_val3 = dpix_val2; + uae_u8 pix3 = pix2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; + dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dtbuf[h ^ lol][1]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + uae_u32 t2 = 0; + if (!extblank) { + t2 = dtbuf[h ^ lol][2]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + uae_u32 t3 = 0; + if (!extblank) { + t3 = dtbuf[h ^ lol][3]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ham0_p5_ilores_dshres_ntsc_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_ham1_p5_ilores_dshres_ntsc(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl5(); + clxdat |= bplcoltable[pix0]; + if (decode_specials) { + pix0 = decode_denise_specials(pix0); + } + dpix_val0 = decode_ham_pixel(pix0); + } + last_bpl_pix = pix0; + } + shiftbpl5(); + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + uae_u32 dpix_val2 = dpix_val1; + uae_u8 pix2 = pix1; + uae_u32 dpix_val3 = dpix_val2; + uae_u8 pix3 = pix2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; + dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dtbuf[h ^ lol][1]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + uae_u32 t2 = 0; + if (!extblank) { + t2 = dtbuf[h ^ lol][2]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + uae_u32 t3 = 0; + if (!extblank) { + t3 = dtbuf[h ^ lol][3]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + } + if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { + copybpl5e(); + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ham1_p5_ilores_dshres_ntsc_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_n0_p6_ilores_dshres_ntsc(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl6(); + clxdat |= bplcoltable[pix0]; + if (decode_specials) { + pix0 = decode_denise_specials(pix0); + } + dpix_val0 = denise_colors.acolors[pix0]; + } + last_bpl_pix = pix0; + } + shiftbpl6(); + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + uae_u32 dpix_val2 = dpix_val1; + uae_u8 pix2 = pix1; + uae_u32 dpix_val3 = dpix_val2; + uae_u8 pix3 = pix2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; + dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dtbuf[h ^ lol][1]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + uae_u32 t2 = 0; + if (!extblank) { + t2 = dtbuf[h ^ lol][2]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + uae_u32 t3 = 0; + if (!extblank) { + t3 = dtbuf[h ^ lol][3]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_n0_p6_ilores_dshres_ntsc_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_n1_p6_ilores_dshres_ntsc(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl6(); + clxdat |= bplcoltable[pix0]; + if (decode_specials) { + pix0 = decode_denise_specials(pix0); + } + dpix_val0 = denise_colors.acolors[pix0]; + } + last_bpl_pix = pix0; + } + shiftbpl6(); + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + uae_u32 dpix_val2 = dpix_val1; + uae_u8 pix2 = pix1; + uae_u32 dpix_val3 = dpix_val2; + uae_u8 pix3 = pix2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; + dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dtbuf[h ^ lol][1]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + uae_u32 t2 = 0; + if (!extblank) { + t2 = dtbuf[h ^ lol][2]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + uae_u32 t3 = 0; + if (!extblank) { + t3 = dtbuf[h ^ lol][3]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + } + if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { + copybpl6e(); + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_n1_p6_ilores_dshres_ntsc_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_dpf0_p6_ilores_dshres_ntsc(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl6(); + clxdat |= bplcoltable[pix0]; + if (decode_specials) { + pix0 = decode_denise_specials(pix0); + } + uae_u8 val0 = dpf_lookup[pix0]; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + shiftbpl6(); + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + uae_u32 dpix_val2 = dpix_val1; + uae_u8 pix2 = pix1; + uae_u32 dpix_val3 = dpix_val2; + uae_u8 pix3 = pix2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; + dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dtbuf[h ^ lol][1]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + uae_u32 t2 = 0; + if (!extblank) { + t2 = dtbuf[h ^ lol][2]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + uae_u32 t3 = 0; + if (!extblank) { + t3 = dtbuf[h ^ lol][3]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_dpf0_p6_ilores_dshres_ntsc_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_dpf1_p6_ilores_dshres_ntsc(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl6(); + clxdat |= bplcoltable[pix0]; + if (decode_specials) { + pix0 = decode_denise_specials(pix0); + } + uae_u8 val0 = dpf_lookup[pix0]; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + shiftbpl6(); + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + uae_u32 dpix_val2 = dpix_val1; + uae_u8 pix2 = pix1; + uae_u32 dpix_val3 = dpix_val2; + uae_u8 pix3 = pix2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; + dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dtbuf[h ^ lol][1]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + uae_u32 t2 = 0; + if (!extblank) { + t2 = dtbuf[h ^ lol][2]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + uae_u32 t3 = 0; + if (!extblank) { + t3 = dtbuf[h ^ lol][3]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + } + if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { + copybpl6e(); + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_dpf1_p6_ilores_dshres_ntsc_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_ehb0_p6_ilores_dshres_ntsc(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl6(); + clxdat |= bplcoltable[pix0]; + if (decode_specials) { + pix0 = decode_denise_specials(pix0); + } + pix0 &= bplehb_mask; + if (pix0 <= 31) { + dpix_val0 = denise_colors.acolors[pix0]; + } else { + dpix_val0 = p_xcolors[(denise_colors.color_regs_ecs[pix0 - 32] >> 1) & 0x777]; + } + } + last_bpl_pix = pix0; + } + shiftbpl6(); + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + uae_u32 dpix_val2 = dpix_val1; + uae_u8 pix2 = pix1; + uae_u32 dpix_val3 = dpix_val2; + uae_u8 pix3 = pix2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; + dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dtbuf[h ^ lol][1]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + uae_u32 t2 = 0; + if (!extblank) { + t2 = dtbuf[h ^ lol][2]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + uae_u32 t3 = 0; + if (!extblank) { + t3 = dtbuf[h ^ lol][3]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ehb0_p6_ilores_dshres_ntsc_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_ehb1_p6_ilores_dshres_ntsc(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl6(); + clxdat |= bplcoltable[pix0]; + if (decode_specials) { + pix0 = decode_denise_specials(pix0); + } + pix0 &= bplehb_mask; + if (pix0 <= 31) { + dpix_val0 = denise_colors.acolors[pix0]; + } else { + dpix_val0 = p_xcolors[(denise_colors.color_regs_ecs[pix0 - 32] >> 1) & 0x777]; + } + } + last_bpl_pix = pix0; + } + shiftbpl6(); + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + uae_u32 dpix_val2 = dpix_val1; + uae_u8 pix2 = pix1; + uae_u32 dpix_val3 = dpix_val2; + uae_u8 pix3 = pix2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; + dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dtbuf[h ^ lol][1]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + uae_u32 t2 = 0; + if (!extblank) { + t2 = dtbuf[h ^ lol][2]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + uae_u32 t3 = 0; + if (!extblank) { + t3 = dtbuf[h ^ lol][3]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + } + if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { + copybpl6e(); + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ehb1_p6_ilores_dshres_ntsc_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_ham0_p6_ilores_dshres_ntsc(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl6(); + clxdat |= bplcoltable[pix0]; + if (decode_specials) { + pix0 = decode_denise_specials(pix0); + } + dpix_val0 = decode_ham_pixel(pix0); + } + last_bpl_pix = pix0; + } + shiftbpl6(); + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + uae_u32 dpix_val2 = dpix_val1; + uae_u8 pix2 = pix1; + uae_u32 dpix_val3 = dpix_val2; + uae_u8 pix3 = pix2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; + dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dtbuf[h ^ lol][1]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + uae_u32 t2 = 0; + if (!extblank) { + t2 = dtbuf[h ^ lol][2]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + uae_u32 t3 = 0; + if (!extblank) { + t3 = dtbuf[h ^ lol][3]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ham0_p6_ilores_dshres_ntsc_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_ham1_p6_ilores_dshres_ntsc(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl6(); + clxdat |= bplcoltable[pix0]; + if (decode_specials) { + pix0 = decode_denise_specials(pix0); + } + dpix_val0 = decode_ham_pixel(pix0); + } + last_bpl_pix = pix0; + } + shiftbpl6(); + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + uae_u32 dpix_val2 = dpix_val1; + uae_u8 pix2 = pix1; + uae_u32 dpix_val3 = dpix_val2; + uae_u8 pix3 = pix2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; + dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dtbuf[h ^ lol][1]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + uae_u32 t2 = 0; + if (!extblank) { + t2 = dtbuf[h ^ lol][2]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + uae_u32 t3 = 0; + if (!extblank) { + t3 = dtbuf[h ^ lol][3]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + } + if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { + copybpl6e(); + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ham1_p6_ilores_dshres_ntsc_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_n0_p2_ilores_dshres_spr_ntsc(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl2(); + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0]; + } + last_bpl_pix = pix0; + } + shiftbpl2(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_lores(); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + uae_u32 dpix_val2 = dpix_val1; + uae_u8 pix2 = pix1; + uae_u32 dpix_val3 = dpix_val2; + uae_u8 pix3 = pix2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + dpix_val2 = dpix_val0; + dpix_val3 = dpix_val0; + } + } + dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; + dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dtbuf[h ^ lol][1]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + uae_u32 t2 = 0; + if (!extblank) { + t2 = dtbuf[h ^ lol][2]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + uae_u32 t3 = 0; + if (!extblank) { + t3 = dtbuf[h ^ lol][3]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_n0_p2_ilores_dshres_spr_ntsc_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_n1_p2_ilores_dshres_spr_ntsc(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl2(); + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0]; + } + last_bpl_pix = pix0; + } + shiftbpl2(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_lores(); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + uae_u32 dpix_val2 = dpix_val1; + uae_u8 pix2 = pix1; + uae_u32 dpix_val3 = dpix_val2; + uae_u8 pix3 = pix2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + dpix_val2 = dpix_val0; + dpix_val3 = dpix_val0; + } + } + dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; + dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dtbuf[h ^ lol][1]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + uae_u32 t2 = 0; + if (!extblank) { + t2 = dtbuf[h ^ lol][2]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + uae_u32 t3 = 0; + if (!extblank) { + t3 = dtbuf[h ^ lol][3]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + } + if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { + copybpl2e(); + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_n1_p2_ilores_dshres_spr_ntsc_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_dpf0_p2_ilores_dshres_spr_ntsc(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl2(); + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + shiftbpl2(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_lores(); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + uae_u32 dpix_val2 = dpix_val1; + uae_u8 pix2 = pix1; + uae_u32 dpix_val3 = dpix_val2; + uae_u8 pix3 = pix2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + dpix_val2 = dpix_val0; + dpix_val3 = dpix_val0; + } + } + dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; + dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dtbuf[h ^ lol][1]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + uae_u32 t2 = 0; + if (!extblank) { + t2 = dtbuf[h ^ lol][2]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + uae_u32 t3 = 0; + if (!extblank) { + t3 = dtbuf[h ^ lol][3]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_dpf0_p2_ilores_dshres_spr_ntsc_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_dpf1_p2_ilores_dshres_spr_ntsc(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl2(); + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + shiftbpl2(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_lores(); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + uae_u32 dpix_val2 = dpix_val1; + uae_u8 pix2 = pix1; + uae_u32 dpix_val3 = dpix_val2; + uae_u8 pix3 = pix2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + dpix_val2 = dpix_val0; + dpix_val3 = dpix_val0; + } + } + dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; + dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dtbuf[h ^ lol][1]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + uae_u32 t2 = 0; + if (!extblank) { + t2 = dtbuf[h ^ lol][2]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + uae_u32 t3 = 0; + if (!extblank) { + t3 = dtbuf[h ^ lol][3]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + } + if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { + copybpl2e(); + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_dpf1_p2_ilores_dshres_spr_ntsc_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_ehb0_p2_ilores_dshres_spr_ntsc(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + uae_u32 dpix_val2 = dpix_val1; + uae_u8 pix2 = pix1; + uae_u32 dpix_val3 = dpix_val2; + uae_u8 pix3 = pix2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; + dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dtbuf[h ^ lol][1]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + uae_u32 t2 = 0; + if (!extblank) { + t2 = dtbuf[h ^ lol][2]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + uae_u32 t3 = 0; + if (!extblank) { + t3 = dtbuf[h ^ lol][3]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ehb0_p2_ilores_dshres_spr_ntsc_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_ehb1_p2_ilores_dshres_spr_ntsc(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + uae_u32 dpix_val2 = dpix_val1; + uae_u8 pix2 = pix1; + uae_u32 dpix_val3 = dpix_val2; + uae_u8 pix3 = pix2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; + dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dtbuf[h ^ lol][1]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + uae_u32 t2 = 0; + if (!extblank) { + t2 = dtbuf[h ^ lol][2]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + uae_u32 t3 = 0; + if (!extblank) { + t3 = dtbuf[h ^ lol][3]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ehb1_p2_ilores_dshres_spr_ntsc_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_ham0_p2_ilores_dshres_spr_ntsc(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + uae_u32 dpix_val2 = dpix_val1; + uae_u8 pix2 = pix1; + uae_u32 dpix_val3 = dpix_val2; + uae_u8 pix3 = pix2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; + dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dtbuf[h ^ lol][1]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + uae_u32 t2 = 0; + if (!extblank) { + t2 = dtbuf[h ^ lol][2]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + uae_u32 t3 = 0; + if (!extblank) { + t3 = dtbuf[h ^ lol][3]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ham0_p2_ilores_dshres_spr_ntsc_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_ham1_p2_ilores_dshres_spr_ntsc(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + uae_u32 dpix_val2 = dpix_val1; + uae_u8 pix2 = pix1; + uae_u32 dpix_val3 = dpix_val2; + uae_u8 pix3 = pix2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; + dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dtbuf[h ^ lol][1]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + uae_u32 t2 = 0; + if (!extblank) { + t2 = dtbuf[h ^ lol][2]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + uae_u32 t3 = 0; + if (!extblank) { + t3 = dtbuf[h ^ lol][3]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ham1_p2_ilores_dshres_spr_ntsc_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_n0_p4_ilores_dshres_spr_ntsc(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl4(); + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0]; + } + last_bpl_pix = pix0; + } + shiftbpl4(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_lores(); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + uae_u32 dpix_val2 = dpix_val1; + uae_u8 pix2 = pix1; + uae_u32 dpix_val3 = dpix_val2; + uae_u8 pix3 = pix2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + dpix_val2 = dpix_val0; + dpix_val3 = dpix_val0; + } + } + dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; + dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dtbuf[h ^ lol][1]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + uae_u32 t2 = 0; + if (!extblank) { + t2 = dtbuf[h ^ lol][2]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + uae_u32 t3 = 0; + if (!extblank) { + t3 = dtbuf[h ^ lol][3]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_n0_p4_ilores_dshres_spr_ntsc_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_n1_p4_ilores_dshres_spr_ntsc(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl4(); + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0]; + } + last_bpl_pix = pix0; + } + shiftbpl4(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_lores(); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + uae_u32 dpix_val2 = dpix_val1; + uae_u8 pix2 = pix1; + uae_u32 dpix_val3 = dpix_val2; + uae_u8 pix3 = pix2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + dpix_val2 = dpix_val0; + dpix_val3 = dpix_val0; + } + } + dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; + dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dtbuf[h ^ lol][1]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + uae_u32 t2 = 0; + if (!extblank) { + t2 = dtbuf[h ^ lol][2]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + uae_u32 t3 = 0; + if (!extblank) { + t3 = dtbuf[h ^ lol][3]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + } + if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { + copybpl4e(); + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_n1_p4_ilores_dshres_spr_ntsc_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_dpf0_p4_ilores_dshres_spr_ntsc(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl4(); + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + shiftbpl4(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_lores(); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + uae_u32 dpix_val2 = dpix_val1; + uae_u8 pix2 = pix1; + uae_u32 dpix_val3 = dpix_val2; + uae_u8 pix3 = pix2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + dpix_val2 = dpix_val0; + dpix_val3 = dpix_val0; + } + } + dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; + dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dtbuf[h ^ lol][1]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + uae_u32 t2 = 0; + if (!extblank) { + t2 = dtbuf[h ^ lol][2]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + uae_u32 t3 = 0; + if (!extblank) { + t3 = dtbuf[h ^ lol][3]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_dpf0_p4_ilores_dshres_spr_ntsc_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_dpf1_p4_ilores_dshres_spr_ntsc(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl4(); + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + shiftbpl4(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_lores(); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + uae_u32 dpix_val2 = dpix_val1; + uae_u8 pix2 = pix1; + uae_u32 dpix_val3 = dpix_val2; + uae_u8 pix3 = pix2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + dpix_val2 = dpix_val0; + dpix_val3 = dpix_val0; + } + } + dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; + dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dtbuf[h ^ lol][1]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + uae_u32 t2 = 0; + if (!extblank) { + t2 = dtbuf[h ^ lol][2]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + uae_u32 t3 = 0; + if (!extblank) { + t3 = dtbuf[h ^ lol][3]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + } + if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { + copybpl4e(); + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_dpf1_p4_ilores_dshres_spr_ntsc_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_ehb0_p4_ilores_dshres_spr_ntsc(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + uae_u32 dpix_val2 = dpix_val1; + uae_u8 pix2 = pix1; + uae_u32 dpix_val3 = dpix_val2; + uae_u8 pix3 = pix2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; + dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dtbuf[h ^ lol][1]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + uae_u32 t2 = 0; + if (!extblank) { + t2 = dtbuf[h ^ lol][2]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + uae_u32 t3 = 0; + if (!extblank) { + t3 = dtbuf[h ^ lol][3]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ehb0_p4_ilores_dshres_spr_ntsc_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_ehb1_p4_ilores_dshres_spr_ntsc(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + uae_u32 dpix_val2 = dpix_val1; + uae_u8 pix2 = pix1; + uae_u32 dpix_val3 = dpix_val2; + uae_u8 pix3 = pix2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; + dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dtbuf[h ^ lol][1]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + uae_u32 t2 = 0; + if (!extblank) { + t2 = dtbuf[h ^ lol][2]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + uae_u32 t3 = 0; + if (!extblank) { + t3 = dtbuf[h ^ lol][3]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ehb1_p4_ilores_dshres_spr_ntsc_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_ham0_p4_ilores_dshres_spr_ntsc(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + uae_u32 dpix_val2 = dpix_val1; + uae_u8 pix2 = pix1; + uae_u32 dpix_val3 = dpix_val2; + uae_u8 pix3 = pix2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; + dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dtbuf[h ^ lol][1]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + uae_u32 t2 = 0; + if (!extblank) { + t2 = dtbuf[h ^ lol][2]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + uae_u32 t3 = 0; + if (!extblank) { + t3 = dtbuf[h ^ lol][3]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ham0_p4_ilores_dshres_spr_ntsc_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_ham1_p4_ilores_dshres_spr_ntsc(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + uae_u32 dpix_val2 = dpix_val1; + uae_u8 pix2 = pix1; + uae_u32 dpix_val3 = dpix_val2; + uae_u8 pix3 = pix2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; + dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dtbuf[h ^ lol][1]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + uae_u32 t2 = 0; + if (!extblank) { + t2 = dtbuf[h ^ lol][2]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + uae_u32 t3 = 0; + if (!extblank) { + t3 = dtbuf[h ^ lol][3]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ham1_p4_ilores_dshres_spr_ntsc_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_n0_p5_ilores_dshres_spr_ntsc(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl5(); + clxdat |= bplcoltable[pix0]; + if (decode_specials) { + pix0 = decode_denise_specials(pix0); + } + dpix_val0 = denise_colors.acolors[pix0]; + } + last_bpl_pix = pix0; + } + shiftbpl5(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_lores(); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + uae_u32 dpix_val2 = dpix_val1; + uae_u8 pix2 = pix1; + uae_u32 dpix_val3 = dpix_val2; + uae_u8 pix3 = pix2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + dpix_val2 = dpix_val0; + dpix_val3 = dpix_val0; + } + } + dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; + dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dtbuf[h ^ lol][1]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + uae_u32 t2 = 0; + if (!extblank) { + t2 = dtbuf[h ^ lol][2]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + uae_u32 t3 = 0; + if (!extblank) { + t3 = dtbuf[h ^ lol][3]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_n0_p5_ilores_dshres_spr_ntsc_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_n1_p5_ilores_dshres_spr_ntsc(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl5(); + clxdat |= bplcoltable[pix0]; + if (decode_specials) { + pix0 = decode_denise_specials(pix0); + } + dpix_val0 = denise_colors.acolors[pix0]; + } + last_bpl_pix = pix0; + } + shiftbpl5(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_lores(); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + uae_u32 dpix_val2 = dpix_val1; + uae_u8 pix2 = pix1; + uae_u32 dpix_val3 = dpix_val2; + uae_u8 pix3 = pix2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + dpix_val2 = dpix_val0; + dpix_val3 = dpix_val0; + } + } + dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; + dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dtbuf[h ^ lol][1]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + uae_u32 t2 = 0; + if (!extblank) { + t2 = dtbuf[h ^ lol][2]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + uae_u32 t3 = 0; + if (!extblank) { + t3 = dtbuf[h ^ lol][3]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + } + if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { + copybpl5e(); + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_n1_p5_ilores_dshres_spr_ntsc_filtered(void) { lts_null(); } -static void lts_ecs_fm0_ham1_p4_ihires_dhires_spr_ntsc_filtered(void) +static void lts_ecs_fm0_dpf0_p5_ilores_dshres_spr_ntsc(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl5(); + clxdat |= bplcoltable[pix0]; + if (decode_specials) { + pix0 = decode_denise_specials(pix0); + } + uae_u8 val0 = dpf_lookup[pix0]; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + shiftbpl5(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_lores(); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + uae_u32 dpix_val2 = dpix_val1; + uae_u8 pix2 = pix1; + uae_u32 dpix_val3 = dpix_val2; + uae_u8 pix3 = pix2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + dpix_val2 = dpix_val0; + dpix_val3 = dpix_val0; + } + } + dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; + dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dtbuf[h ^ lol][1]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + uae_u32 t2 = 0; + if (!extblank) { + t2 = dtbuf[h ^ lol][2]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + uae_u32 t3 = 0; + if (!extblank) { + t3 = dtbuf[h ^ lol][3]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_dpf0_p5_ilores_dshres_spr_ntsc_filtered(void) { lts_null(); } -static void lts_ecs_fm0_n0_p5_ihires_dhires_spr_ntsc(void) +static void lts_ecs_fm0_dpf1_p5_ilores_dshres_spr_ntsc(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl5(); + clxdat |= bplcoltable[pix0]; + if (decode_specials) { + pix0 = decode_denise_specials(pix0); + } + uae_u8 val0 = dpf_lookup[pix0]; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + shiftbpl5(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_lores(); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + uae_u32 dpix_val2 = dpix_val1; + uae_u8 pix2 = pix1; + uae_u32 dpix_val3 = dpix_val2; + uae_u8 pix3 = pix2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + dpix_val2 = dpix_val0; + dpix_val3 = dpix_val0; + } + } + dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; + dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dtbuf[h ^ lol][1]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + uae_u32 t2 = 0; + if (!extblank) { + t2 = dtbuf[h ^ lol][2]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + uae_u32 t3 = 0; + if (!extblank) { + t3 = dtbuf[h ^ lol][3]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + } + if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { + copybpl5e(); + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_ecs_fm0_n0_p5_ihires_dhires_spr_ntsc_filtered(void) +static void lts_ecs_fm0_dpf1_p5_ilores_dshres_spr_ntsc_filtered(void) { lts_null(); } -static void lts_ecs_fm0_n1_p5_ihires_dhires_spr_ntsc(void) +static void lts_ecs_fm0_ehb0_p5_ilores_dshres_spr_ntsc(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + uae_u32 dpix_val2 = dpix_val1; + uae_u8 pix2 = pix1; + uae_u32 dpix_val3 = dpix_val2; + uae_u8 pix3 = pix2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; + dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dtbuf[h ^ lol][1]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + uae_u32 t2 = 0; + if (!extblank) { + t2 = dtbuf[h ^ lol][2]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + uae_u32 t3 = 0; + if (!extblank) { + t3 = dtbuf[h ^ lol][3]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_ecs_fm0_n1_p5_ihires_dhires_spr_ntsc_filtered(void) +static void lts_ecs_fm0_ehb0_p5_ilores_dshres_spr_ntsc_filtered(void) { lts_null(); } -static void lts_ecs_fm0_dpf0_p5_ihires_dhires_spr_ntsc(void) +static void lts_ecs_fm0_ehb1_p5_ilores_dshres_spr_ntsc(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + uae_u32 dpix_val2 = dpix_val1; + uae_u8 pix2 = pix1; + uae_u32 dpix_val3 = dpix_val2; + uae_u8 pix3 = pix2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; + dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dtbuf[h ^ lol][1]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + uae_u32 t2 = 0; + if (!extblank) { + t2 = dtbuf[h ^ lol][2]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + uae_u32 t3 = 0; + if (!extblank) { + t3 = dtbuf[h ^ lol][3]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_ecs_fm0_dpf0_p5_ihires_dhires_spr_ntsc_filtered(void) +static void lts_ecs_fm0_ehb1_p5_ilores_dshres_spr_ntsc_filtered(void) { lts_null(); } -static void lts_ecs_fm0_dpf1_p5_ihires_dhires_spr_ntsc(void) +static void lts_ecs_fm0_ham0_p5_ilores_dshres_spr_ntsc(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl5(); + clxdat |= bplcoltable[pix0]; + if (decode_specials) { + pix0 = decode_denise_specials(pix0); + } + dpix_val0 = decode_ham_pixel(pix0); + } + last_bpl_pix = pix0; + } + shiftbpl5(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_lores(); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + uae_u32 dpix_val2 = dpix_val1; + uae_u8 pix2 = pix1; + uae_u32 dpix_val3 = dpix_val2; + uae_u8 pix3 = pix2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + dpix_val2 = dpix_val0; + dpix_val3 = dpix_val0; + } + } + dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; + dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dtbuf[h ^ lol][1]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + uae_u32 t2 = 0; + if (!extblank) { + t2 = dtbuf[h ^ lol][2]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + uae_u32 t3 = 0; + if (!extblank) { + t3 = dtbuf[h ^ lol][3]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_ecs_fm0_dpf1_p5_ihires_dhires_spr_ntsc_filtered(void) +static void lts_ecs_fm0_ham0_p5_ilores_dshres_spr_ntsc_filtered(void) { lts_null(); } -static void lts_ecs_fm0_ehb0_p5_ihires_dhires_spr_ntsc(void) +static void lts_ecs_fm0_ham1_p5_ilores_dshres_spr_ntsc(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl5(); + clxdat |= bplcoltable[pix0]; + if (decode_specials) { + pix0 = decode_denise_specials(pix0); + } + dpix_val0 = decode_ham_pixel(pix0); + } + last_bpl_pix = pix0; + } + shiftbpl5(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_lores(); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + uae_u32 dpix_val2 = dpix_val1; + uae_u8 pix2 = pix1; + uae_u32 dpix_val3 = dpix_val2; + uae_u8 pix3 = pix2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + dpix_val2 = dpix_val0; + dpix_val3 = dpix_val0; + } + } + dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; + dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dtbuf[h ^ lol][1]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + uae_u32 t2 = 0; + if (!extblank) { + t2 = dtbuf[h ^ lol][2]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + uae_u32 t3 = 0; + if (!extblank) { + t3 = dtbuf[h ^ lol][3]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + } + if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { + copybpl5e(); + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_ecs_fm0_ehb0_p5_ihires_dhires_spr_ntsc_filtered(void) +static void lts_ecs_fm0_ham1_p5_ilores_dshres_spr_ntsc_filtered(void) { lts_null(); } -static void lts_ecs_fm0_ehb1_p5_ihires_dhires_spr_ntsc(void) +static void lts_ecs_fm0_n0_p6_ilores_dshres_spr_ntsc(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl6(); + clxdat |= bplcoltable[pix0]; + if (decode_specials) { + pix0 = decode_denise_specials(pix0); + } + dpix_val0 = denise_colors.acolors[pix0]; + } + last_bpl_pix = pix0; + } + shiftbpl6(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_lores(); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + uae_u32 dpix_val2 = dpix_val1; + uae_u8 pix2 = pix1; + uae_u32 dpix_val3 = dpix_val2; + uae_u8 pix3 = pix2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + dpix_val2 = dpix_val0; + dpix_val3 = dpix_val0; + } + } + dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; + dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dtbuf[h ^ lol][1]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + uae_u32 t2 = 0; + if (!extblank) { + t2 = dtbuf[h ^ lol][2]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + uae_u32 t3 = 0; + if (!extblank) { + t3 = dtbuf[h ^ lol][3]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_ecs_fm0_ehb1_p5_ihires_dhires_spr_ntsc_filtered(void) +static void lts_ecs_fm0_n0_p6_ilores_dshres_spr_ntsc_filtered(void) { lts_null(); } -static void lts_ecs_fm0_ham0_p5_ihires_dhires_spr_ntsc(void) +static void lts_ecs_fm0_n1_p6_ilores_dshres_spr_ntsc(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl6(); + clxdat |= bplcoltable[pix0]; + if (decode_specials) { + pix0 = decode_denise_specials(pix0); + } + dpix_val0 = denise_colors.acolors[pix0]; + } + last_bpl_pix = pix0; + } + shiftbpl6(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_lores(); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + uae_u32 dpix_val2 = dpix_val1; + uae_u8 pix2 = pix1; + uae_u32 dpix_val3 = dpix_val2; + uae_u8 pix3 = pix2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + dpix_val2 = dpix_val0; + dpix_val3 = dpix_val0; + } + } + dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; + dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dtbuf[h ^ lol][1]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + uae_u32 t2 = 0; + if (!extblank) { + t2 = dtbuf[h ^ lol][2]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + uae_u32 t3 = 0; + if (!extblank) { + t3 = dtbuf[h ^ lol][3]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + } + if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { + copybpl6e(); + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_ecs_fm0_ham0_p5_ihires_dhires_spr_ntsc_filtered(void) +static void lts_ecs_fm0_n1_p6_ilores_dshres_spr_ntsc_filtered(void) { lts_null(); } -static void lts_ecs_fm0_ham1_p5_ihires_dhires_spr_ntsc(void) +static void lts_ecs_fm0_dpf0_p6_ilores_dshres_spr_ntsc(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl6(); + clxdat |= bplcoltable[pix0]; + if (decode_specials) { + pix0 = decode_denise_specials(pix0); + } + uae_u8 val0 = dpf_lookup[pix0]; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + shiftbpl6(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_lores(); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + uae_u32 dpix_val2 = dpix_val1; + uae_u8 pix2 = pix1; + uae_u32 dpix_val3 = dpix_val2; + uae_u8 pix3 = pix2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + dpix_val2 = dpix_val0; + dpix_val3 = dpix_val0; + } + } + dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; + dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dtbuf[h ^ lol][1]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + uae_u32 t2 = 0; + if (!extblank) { + t2 = dtbuf[h ^ lol][2]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + uae_u32 t3 = 0; + if (!extblank) { + t3 = dtbuf[h ^ lol][3]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_ecs_fm0_ham1_p5_ihires_dhires_spr_ntsc_filtered(void) +static void lts_ecs_fm0_dpf0_p6_ilores_dshres_spr_ntsc_filtered(void) { lts_null(); } -static void lts_ecs_fm0_n0_p6_ihires_dhires_spr_ntsc(void) +static void lts_ecs_fm0_dpf1_p6_ilores_dshres_spr_ntsc(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl6(); + clxdat |= bplcoltable[pix0]; + if (decode_specials) { + pix0 = decode_denise_specials(pix0); + } + uae_u8 val0 = dpf_lookup[pix0]; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + shiftbpl6(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_lores(); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + uae_u32 dpix_val2 = dpix_val1; + uae_u8 pix2 = pix1; + uae_u32 dpix_val3 = dpix_val2; + uae_u8 pix3 = pix2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + dpix_val2 = dpix_val0; + dpix_val3 = dpix_val0; + } + } + dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; + dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dtbuf[h ^ lol][1]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + uae_u32 t2 = 0; + if (!extblank) { + t2 = dtbuf[h ^ lol][2]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + uae_u32 t3 = 0; + if (!extblank) { + t3 = dtbuf[h ^ lol][3]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + } + if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { + copybpl6e(); + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_ecs_fm0_n0_p6_ihires_dhires_spr_ntsc_filtered(void) +static void lts_ecs_fm0_dpf1_p6_ilores_dshres_spr_ntsc_filtered(void) { lts_null(); } -static void lts_ecs_fm0_n1_p6_ihires_dhires_spr_ntsc(void) +static void lts_ecs_fm0_ehb0_p6_ilores_dshres_spr_ntsc(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl6(); + clxdat |= bplcoltable[pix0]; + if (decode_specials) { + pix0 = decode_denise_specials(pix0); + } + pix0 &= bplehb_mask; + if (pix0 <= 31) { + dpix_val0 = denise_colors.acolors[pix0]; + } else { + dpix_val0 = p_xcolors[(denise_colors.color_regs_ecs[pix0 - 32] >> 1) & 0x777]; + } + } + last_bpl_pix = pix0; + } + shiftbpl6(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_lores(); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + uae_u32 dpix_val2 = dpix_val1; + uae_u8 pix2 = pix1; + uae_u32 dpix_val3 = dpix_val2; + uae_u8 pix3 = pix2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + dpix_val2 = dpix_val0; + dpix_val3 = dpix_val0; + } + } + dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; + dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dtbuf[h ^ lol][1]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + uae_u32 t2 = 0; + if (!extblank) { + t2 = dtbuf[h ^ lol][2]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + uae_u32 t3 = 0; + if (!extblank) { + t3 = dtbuf[h ^ lol][3]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_ecs_fm0_n1_p6_ihires_dhires_spr_ntsc_filtered(void) +static void lts_ecs_fm0_ehb0_p6_ilores_dshres_spr_ntsc_filtered(void) { lts_null(); } -static void lts_ecs_fm0_dpf0_p6_ihires_dhires_spr_ntsc(void) +static void lts_ecs_fm0_ehb1_p6_ilores_dshres_spr_ntsc(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl6(); + clxdat |= bplcoltable[pix0]; + if (decode_specials) { + pix0 = decode_denise_specials(pix0); + } + pix0 &= bplehb_mask; + if (pix0 <= 31) { + dpix_val0 = denise_colors.acolors[pix0]; + } else { + dpix_val0 = p_xcolors[(denise_colors.color_regs_ecs[pix0 - 32] >> 1) & 0x777]; + } + } + last_bpl_pix = pix0; + } + shiftbpl6(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_lores(); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + uae_u32 dpix_val2 = dpix_val1; + uae_u8 pix2 = pix1; + uae_u32 dpix_val3 = dpix_val2; + uae_u8 pix3 = pix2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + dpix_val2 = dpix_val0; + dpix_val3 = dpix_val0; + } + } + dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; + dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dtbuf[h ^ lol][1]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + uae_u32 t2 = 0; + if (!extblank) { + t2 = dtbuf[h ^ lol][2]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + uae_u32 t3 = 0; + if (!extblank) { + t3 = dtbuf[h ^ lol][3]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + } + if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { + copybpl6e(); + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_ecs_fm0_dpf0_p6_ihires_dhires_spr_ntsc_filtered(void) +static void lts_ecs_fm0_ehb1_p6_ilores_dshres_spr_ntsc_filtered(void) { lts_null(); } -static void lts_ecs_fm0_dpf1_p6_ihires_dhires_spr_ntsc(void) +static void lts_ecs_fm0_ham0_p6_ilores_dshres_spr_ntsc(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl6(); + clxdat |= bplcoltable[pix0]; + if (decode_specials) { + pix0 = decode_denise_specials(pix0); + } + dpix_val0 = decode_ham_pixel(pix0); + } + last_bpl_pix = pix0; + } + shiftbpl6(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_lores(); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + uae_u32 dpix_val2 = dpix_val1; + uae_u8 pix2 = pix1; + uae_u32 dpix_val3 = dpix_val2; + uae_u8 pix3 = pix2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + dpix_val2 = dpix_val0; + dpix_val3 = dpix_val0; + } + } + dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; + dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dtbuf[h ^ lol][1]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + uae_u32 t2 = 0; + if (!extblank) { + t2 = dtbuf[h ^ lol][2]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + uae_u32 t3 = 0; + if (!extblank) { + t3 = dtbuf[h ^ lol][3]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_ecs_fm0_dpf1_p6_ihires_dhires_spr_ntsc_filtered(void) +static void lts_ecs_fm0_ham0_p6_ilores_dshres_spr_ntsc_filtered(void) { lts_null(); } -static void lts_ecs_fm0_ehb0_p6_ihires_dhires_spr_ntsc(void) +static void lts_ecs_fm0_ham1_p6_ilores_dshres_spr_ntsc(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites(cnt + 0); + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl6(); + clxdat |= bplcoltable[pix0]; + if (decode_specials) { + pix0 = decode_denise_specials(pix0); + } + dpix_val0 = decode_ham_pixel(pix0); + } + last_bpl_pix = pix0; + } + shiftbpl6(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_lores(); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + uae_u32 dpix_val2 = dpix_val1; + uae_u8 pix2 = pix1; + uae_u32 dpix_val3 = dpix_val2; + uae_u8 pix3 = pix2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + dpix_val1 = dpix_val0; + dpix_val2 = dpix_val0; + dpix_val3 = dpix_val0; + } + } + dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; + dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dtbuf[h ^ lol][1]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + uae_u32 t2 = 0; + if (!extblank) { + t2 = dtbuf[h ^ lol][2]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + uae_u32 t3 = 0; + if (!extblank) { + t3 = dtbuf[h ^ lol][3]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + } + if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { + copybpl6e(); + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_ecs_fm0_ehb0_p6_ihires_dhires_spr_ntsc_filtered(void) +static void lts_ecs_fm0_ham1_p6_ilores_dshres_spr_ntsc_filtered(void) { lts_null(); } -static void lts_ecs_fm0_ehb1_p6_ihires_dhires_spr_ntsc(void) +static void lts_ecs_fm0_n0_p2_ihires_dshres_ntsc(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl2(); + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0]; + } + last_bpl_pix = pix0; + } + shiftbpl2(); + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = getbpl2(); + clxdat |= bplcoltable[pix2]; + dpix_val2 = denise_colors.acolors[pix2]; + } + last_bpl_pix = pix2; + } + shiftbpl2(); + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + uae_u32 dpix_val3 = dpix_val2; + uae_u8 pix3 = pix2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; + dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dtbuf[h ^ lol][1]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + uae_u32 t2 = 0; + if (!extblank) { + t2 = dtbuf[h ^ lol][2]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + uae_u32 t3 = 0; + if (!extblank) { + t3 = dtbuf[h ^ lol][3]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_ecs_fm0_ehb1_p6_ihires_dhires_spr_ntsc_filtered(void) +static void lts_ecs_fm0_n0_p2_ihires_dshres_ntsc_filtered(void) { lts_null(); } -static void lts_ecs_fm0_ham0_p6_ihires_dhires_spr_ntsc(void) +static void lts_ecs_fm0_n1_p2_ihires_dshres_ntsc(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl2(); + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0]; + } + last_bpl_pix = pix0; + } + shiftbpl2(); + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = getbpl2(); + clxdat |= bplcoltable[pix2]; + dpix_val2 = denise_colors.acolors[pix2]; + } + last_bpl_pix = pix2; + } + shiftbpl2(); + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + uae_u32 dpix_val3 = dpix_val2; + uae_u8 pix3 = pix2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; + dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dtbuf[h ^ lol][1]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + uae_u32 t2 = 0; + if (!extblank) { + t2 = dtbuf[h ^ lol][2]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + uae_u32 t3 = 0; + if (!extblank) { + t3 = dtbuf[h ^ lol][3]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + } + if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { + copybpl2e(); + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_ecs_fm0_ham0_p6_ihires_dhires_spr_ntsc_filtered(void) +static void lts_ecs_fm0_n1_p2_ihires_dshres_ntsc_filtered(void) { lts_null(); } -static void lts_ecs_fm0_ham1_p6_ihires_dhires_spr_ntsc(void) +static void lts_ecs_fm0_dpf0_p2_ihires_dshres_ntsc(void) { - lts_null(); + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl2(); + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + dpix_val0 = denise_colors.acolors[val0]; + } + last_bpl_pix = pix0; + } + shiftbpl2(); + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = getbpl2(); + clxdat |= bplcoltable[pix2]; + uae_u8 val2 = dpf_lookup[pix2]; + dpix_val2 = denise_colors.acolors[val2]; + } + last_bpl_pix = pix2; + } + shiftbpl2(); + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + uae_u32 dpix_val3 = dpix_val2; + uae_u8 pix3 = pix2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; + dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dtbuf[h ^ lol][1]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + uae_u32 t2 = 0; + if (!extblank) { + t2 = dtbuf[h ^ lol][2]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + uae_u32 t3 = 0; + if (!extblank) { + t3 = dtbuf[h ^ lol][3]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } } -static void lts_ecs_fm0_ham1_p6_ihires_dhires_spr_ntsc_filtered(void) +static void lts_ecs_fm0_dpf0_p2_ihires_dshres_ntsc_filtered(void) { lts_null(); } -static void lts_ecs_fm0_n0_p2_ilores_dshres_ntsc(void) +static void lts_ecs_fm0_dpf1_p2_ihires_dshres_ntsc(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -13184,19 +31909,31 @@ static void lts_ecs_fm0_n0_p2_ilores_dshres_ntsc(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = getbpl2(); clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + dpix_val0 = denise_colors.acolors[val0]; } last_bpl_pix = pix0; } shiftbpl2(); internal_pixel_cnt += 1; internal_pixel_cnt += 1; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = getbpl2(); + clxdat |= bplcoltable[pix2]; + uae_u8 val2 = dpf_lookup[pix2]; + dpix_val2 = denise_colors.acolors[val2]; + } + last_bpl_pix = pix2; + } + shiftbpl2(); internal_pixel_cnt += 1; internal_pixel_cnt += 1; uae_u32 dpix_val1 = dpix_val0; uae_u8 pix1 = pix0; - uae_u32 dpix_val2 = dpix_val1; - uae_u8 pix2 = pix1; uae_u32 dpix_val3 = dpix_val2; uae_u8 pix3 = pix2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { @@ -13249,8 +31986,11 @@ static void lts_ecs_fm0_n0_p2_ilores_dshres_ntsc(void) *buf1++ = t3; *buf2++ = t3; } - if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl2(); + if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { + copybpl2e(); + } + if (bpldat_copy[1] && (denise_hcounter_cmp & 7) == bplcon1_shift[1]) { + copybpl2o(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -13274,11 +32014,11 @@ static void lts_ecs_fm0_n0_p2_ilores_dshres_ntsc(void) denise_cck++; } } -static void lts_ecs_fm0_n0_p2_ilores_dshres_ntsc_filtered(void) +static void lts_ecs_fm0_dpf1_p2_ihires_dshres_ntsc_filtered(void) { lts_null(); } -static void lts_ecs_fm0_n1_p2_ilores_dshres_ntsc(void) +static void lts_ecs_fm0_ehb0_p2_ihires_dshres_ntsc(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -13293,22 +32033,18 @@ static void lts_ecs_fm0_n1_p2_ilores_dshres_ntsc(void) uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl2(); - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0]; - } - last_bpl_pix = pix0; } - shiftbpl2(); internal_pixel_cnt += 1; internal_pixel_cnt += 1; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } internal_pixel_cnt += 1; internal_pixel_cnt += 1; uae_u32 dpix_val1 = dpix_val0; uae_u8 pix1 = pix0; - uae_u32 dpix_val2 = dpix_val1; - uae_u8 pix2 = pix1; uae_u32 dpix_val3 = dpix_val2; uae_u8 pix3 = pix2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { @@ -13361,12 +32097,6 @@ static void lts_ecs_fm0_n1_p2_ilores_dshres_ntsc(void) *buf1++ = t3; *buf2++ = t3; } - if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl2e(); - } - if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) { - copybpl2o(); - } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER *debug_dma_dhpos_odd = denise_hcounter; @@ -13389,11 +32119,11 @@ static void lts_ecs_fm0_n1_p2_ilores_dshres_ntsc(void) denise_cck++; } } -static void lts_ecs_fm0_n1_p2_ilores_dshres_ntsc_filtered(void) +static void lts_ecs_fm0_ehb0_p2_ihires_dshres_ntsc_filtered(void) { lts_null(); } -static void lts_ecs_fm0_dpf0_p2_ilores_dshres_ntsc(void) +static void lts_ecs_fm0_ehb1_p2_ihires_dshres_ntsc(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -13408,23 +32138,18 @@ static void lts_ecs_fm0_dpf0_p2_ilores_dshres_ntsc(void) uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl2(); - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; } - shiftbpl2(); internal_pixel_cnt += 1; internal_pixel_cnt += 1; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } internal_pixel_cnt += 1; internal_pixel_cnt += 1; uae_u32 dpix_val1 = dpix_val0; uae_u8 pix1 = pix0; - uae_u32 dpix_val2 = dpix_val1; - uae_u8 pix2 = pix1; uae_u32 dpix_val3 = dpix_val2; uae_u8 pix3 = pix2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { @@ -13477,9 +32202,6 @@ static void lts_ecs_fm0_dpf0_p2_ilores_dshres_ntsc(void) *buf1++ = t3; *buf2++ = t3; } - if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl2(); - } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER *debug_dma_dhpos_odd = denise_hcounter; @@ -13502,11 +32224,11 @@ static void lts_ecs_fm0_dpf0_p2_ilores_dshres_ntsc(void) denise_cck++; } } -static void lts_ecs_fm0_dpf0_p2_ilores_dshres_ntsc_filtered(void) +static void lts_ecs_fm0_ehb1_p2_ihires_dshres_ntsc_filtered(void) { lts_null(); } -static void lts_ecs_fm0_dpf1_p2_ilores_dshres_ntsc(void) +static void lts_ecs_fm0_ham0_p2_ihires_dshres_ntsc(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -13521,23 +32243,18 @@ static void lts_ecs_fm0_dpf1_p2_ilores_dshres_ntsc(void) uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl2(); - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; } - shiftbpl2(); internal_pixel_cnt += 1; internal_pixel_cnt += 1; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } internal_pixel_cnt += 1; internal_pixel_cnt += 1; uae_u32 dpix_val1 = dpix_val0; uae_u8 pix1 = pix0; - uae_u32 dpix_val2 = dpix_val1; - uae_u8 pix2 = pix1; uae_u32 dpix_val3 = dpix_val2; uae_u8 pix3 = pix2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { @@ -13590,12 +32307,6 @@ static void lts_ecs_fm0_dpf1_p2_ilores_dshres_ntsc(void) *buf1++ = t3; *buf2++ = t3; } - if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl2e(); - } - if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) { - copybpl2o(); - } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER *debug_dma_dhpos_odd = denise_hcounter; @@ -13618,43 +32329,11 @@ static void lts_ecs_fm0_dpf1_p2_ilores_dshres_ntsc(void) denise_cck++; } } -static void lts_ecs_fm0_dpf1_p2_ilores_dshres_ntsc_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb0_p2_ilores_dshres_ntsc(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb0_p2_ilores_dshres_ntsc_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb1_p2_ilores_dshres_ntsc(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb1_p2_ilores_dshres_ntsc_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham0_p2_ilores_dshres_ntsc(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham0_p2_ilores_dshres_ntsc_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham1_p2_ilores_dshres_ntsc(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham1_p2_ilores_dshres_ntsc_filtered(void) +static void lts_ecs_fm0_ham0_p2_ihires_dshres_ntsc_filtered(void) { lts_null(); } -static void lts_ecs_fm0_n0_p4_ilores_dshres_ntsc(void) +static void lts_ecs_fm0_ham1_p2_ihires_dshres_ntsc(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -13669,22 +32348,18 @@ static void lts_ecs_fm0_n0_p4_ilores_dshres_ntsc(void) uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl4(); - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0]; - } - last_bpl_pix = pix0; } - shiftbpl4(); internal_pixel_cnt += 1; internal_pixel_cnt += 1; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } internal_pixel_cnt += 1; internal_pixel_cnt += 1; uae_u32 dpix_val1 = dpix_val0; uae_u8 pix1 = pix0; - uae_u32 dpix_val2 = dpix_val1; - uae_u8 pix2 = pix1; uae_u32 dpix_val3 = dpix_val2; uae_u8 pix3 = pix2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { @@ -13737,9 +32412,6 @@ static void lts_ecs_fm0_n0_p4_ilores_dshres_ntsc(void) *buf1++ = t3; *buf2++ = t3; } - if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl4(); - } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER *debug_dma_dhpos_odd = denise_hcounter; @@ -13762,11 +32434,11 @@ static void lts_ecs_fm0_n0_p4_ilores_dshres_ntsc(void) denise_cck++; } } -static void lts_ecs_fm0_n0_p4_ilores_dshres_ntsc_filtered(void) +static void lts_ecs_fm0_ham1_p2_ihires_dshres_ntsc_filtered(void) { lts_null(); } -static void lts_ecs_fm0_n1_p4_ilores_dshres_ntsc(void) +static void lts_ecs_fm0_n0_p4_ihires_dshres_ntsc(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -13791,12 +32463,22 @@ static void lts_ecs_fm0_n1_p4_ilores_dshres_ntsc(void) shiftbpl4(); internal_pixel_cnt += 1; internal_pixel_cnt += 1; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = getbpl4(); + clxdat |= bplcoltable[pix2]; + dpix_val2 = denise_colors.acolors[pix2]; + } + last_bpl_pix = pix2; + } + shiftbpl4(); internal_pixel_cnt += 1; internal_pixel_cnt += 1; uae_u32 dpix_val1 = dpix_val0; uae_u8 pix1 = pix0; - uae_u32 dpix_val2 = dpix_val1; - uae_u8 pix2 = pix1; uae_u32 dpix_val3 = dpix_val2; uae_u8 pix3 = pix2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { @@ -13849,11 +32531,8 @@ static void lts_ecs_fm0_n1_p4_ilores_dshres_ntsc(void) *buf1++ = t3; *buf2++ = t3; } - if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl4e(); - } - if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) { - copybpl4o(); + if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { + copybpl4(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -13877,11 +32556,11 @@ static void lts_ecs_fm0_n1_p4_ilores_dshres_ntsc(void) denise_cck++; } } -static void lts_ecs_fm0_n1_p4_ilores_dshres_ntsc_filtered(void) +static void lts_ecs_fm0_n0_p4_ihires_dshres_ntsc_filtered(void) { lts_null(); } -static void lts_ecs_fm0_dpf0_p4_ilores_dshres_ntsc(void) +static void lts_ecs_fm0_n1_p4_ihires_dshres_ntsc(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -13899,20 +32578,29 @@ static void lts_ecs_fm0_dpf0_p4_ilores_dshres_ntsc(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = getbpl4(); clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - dpix_val0 = denise_colors.acolors[val0]; + dpix_val0 = denise_colors.acolors[pix0]; } last_bpl_pix = pix0; } shiftbpl4(); internal_pixel_cnt += 1; internal_pixel_cnt += 1; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = getbpl4(); + clxdat |= bplcoltable[pix2]; + dpix_val2 = denise_colors.acolors[pix2]; + } + last_bpl_pix = pix2; + } + shiftbpl4(); internal_pixel_cnt += 1; internal_pixel_cnt += 1; uae_u32 dpix_val1 = dpix_val0; uae_u8 pix1 = pix0; - uae_u32 dpix_val2 = dpix_val1; - uae_u8 pix2 = pix1; uae_u32 dpix_val3 = dpix_val2; uae_u8 pix3 = pix2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { @@ -13965,8 +32653,11 @@ static void lts_ecs_fm0_dpf0_p4_ilores_dshres_ntsc(void) *buf1++ = t3; *buf2++ = t3; } - if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl4(); + if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { + copybpl4e(); + } + if (bpldat_copy[1] && (denise_hcounter_cmp & 7) == bplcon1_shift[1]) { + copybpl4o(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -13990,11 +32681,11 @@ static void lts_ecs_fm0_dpf0_p4_ilores_dshres_ntsc(void) denise_cck++; } } -static void lts_ecs_fm0_dpf0_p4_ilores_dshres_ntsc_filtered(void) +static void lts_ecs_fm0_n1_p4_ihires_dshres_ntsc_filtered(void) { lts_null(); } -static void lts_ecs_fm0_dpf1_p4_ilores_dshres_ntsc(void) +static void lts_ecs_fm0_dpf0_p4_ihires_dshres_ntsc(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -14020,12 +32711,23 @@ static void lts_ecs_fm0_dpf1_p4_ilores_dshres_ntsc(void) shiftbpl4(); internal_pixel_cnt += 1; internal_pixel_cnt += 1; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = getbpl4(); + clxdat |= bplcoltable[pix2]; + uae_u8 val2 = dpf_lookup[pix2]; + dpix_val2 = denise_colors.acolors[val2]; + } + last_bpl_pix = pix2; + } + shiftbpl4(); internal_pixel_cnt += 1; internal_pixel_cnt += 1; uae_u32 dpix_val1 = dpix_val0; uae_u8 pix1 = pix0; - uae_u32 dpix_val2 = dpix_val1; - uae_u8 pix2 = pix1; uae_u32 dpix_val3 = dpix_val2; uae_u8 pix3 = pix2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { @@ -14078,11 +32780,8 @@ static void lts_ecs_fm0_dpf1_p4_ilores_dshres_ntsc(void) *buf1++ = t3; *buf2++ = t3; } - if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl4e(); - } - if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) { - copybpl4o(); + if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { + copybpl4(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -14106,43 +32805,11 @@ static void lts_ecs_fm0_dpf1_p4_ilores_dshres_ntsc(void) denise_cck++; } } -static void lts_ecs_fm0_dpf1_p4_ilores_dshres_ntsc_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb0_p4_ilores_dshres_ntsc(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb0_p4_ilores_dshres_ntsc_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb1_p4_ilores_dshres_ntsc(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb1_p4_ilores_dshres_ntsc_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham0_p4_ilores_dshres_ntsc(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham0_p4_ilores_dshres_ntsc_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham1_p4_ilores_dshres_ntsc(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham1_p4_ilores_dshres_ntsc_filtered(void) +static void lts_ecs_fm0_dpf0_p4_ihires_dshres_ntsc_filtered(void) { lts_null(); } -static void lts_ecs_fm0_n0_p5_ilores_dshres_ntsc(void) +static void lts_ecs_fm0_dpf1_p4_ihires_dshres_ntsc(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -14158,24 +32825,33 @@ static void lts_ecs_fm0_n0_p5_ilores_dshres_ntsc(void) if (!denise_blank_active) { dpix_val0 = bordercolor; if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl5(); + pix0 = getbpl4(); clxdat |= bplcoltable[pix0]; - if (decode_specials) { - pix0 = decode_denise_specials(pix0); - } - dpix_val0 = denise_colors.acolors[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + dpix_val0 = denise_colors.acolors[val0]; } last_bpl_pix = pix0; } - shiftbpl5(); + shiftbpl4(); internal_pixel_cnt += 1; internal_pixel_cnt += 1; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = getbpl4(); + clxdat |= bplcoltable[pix2]; + uae_u8 val2 = dpf_lookup[pix2]; + dpix_val2 = denise_colors.acolors[val2]; + } + last_bpl_pix = pix2; + } + shiftbpl4(); internal_pixel_cnt += 1; internal_pixel_cnt += 1; uae_u32 dpix_val1 = dpix_val0; uae_u8 pix1 = pix0; - uae_u32 dpix_val2 = dpix_val1; - uae_u8 pix2 = pix1; uae_u32 dpix_val3 = dpix_val2; uae_u8 pix3 = pix2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { @@ -14228,8 +32904,11 @@ static void lts_ecs_fm0_n0_p5_ilores_dshres_ntsc(void) *buf1++ = t3; *buf2++ = t3; } - if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl5(); + if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { + copybpl4e(); + } + if (bpldat_copy[1] && (denise_hcounter_cmp & 7) == bplcon1_shift[1]) { + copybpl4o(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -14253,11 +32932,11 @@ static void lts_ecs_fm0_n0_p5_ilores_dshres_ntsc(void) denise_cck++; } } -static void lts_ecs_fm0_n0_p5_ilores_dshres_ntsc_filtered(void) +static void lts_ecs_fm0_dpf1_p4_ihires_dshres_ntsc_filtered(void) { lts_null(); } -static void lts_ecs_fm0_n1_p5_ilores_dshres_ntsc(void) +static void lts_ecs_fm0_ehb0_p4_ihires_dshres_ntsc(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -14272,25 +32951,18 @@ static void lts_ecs_fm0_n1_p5_ilores_dshres_ntsc(void) uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl5(); - clxdat |= bplcoltable[pix0]; - if (decode_specials) { - pix0 = decode_denise_specials(pix0); - } - dpix_val0 = denise_colors.acolors[pix0]; - } - last_bpl_pix = pix0; } - shiftbpl5(); internal_pixel_cnt += 1; internal_pixel_cnt += 1; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } internal_pixel_cnt += 1; internal_pixel_cnt += 1; uae_u32 dpix_val1 = dpix_val0; uae_u8 pix1 = pix0; - uae_u32 dpix_val2 = dpix_val1; - uae_u8 pix2 = pix1; uae_u32 dpix_val3 = dpix_val2; uae_u8 pix3 = pix2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { @@ -14343,12 +33015,6 @@ static void lts_ecs_fm0_n1_p5_ilores_dshres_ntsc(void) *buf1++ = t3; *buf2++ = t3; } - if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl5e(); - } - if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) { - copybpl5o(); - } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER *debug_dma_dhpos_odd = denise_hcounter; @@ -14371,11 +33037,11 @@ static void lts_ecs_fm0_n1_p5_ilores_dshres_ntsc(void) denise_cck++; } } -static void lts_ecs_fm0_n1_p5_ilores_dshres_ntsc_filtered(void) +static void lts_ecs_fm0_ehb0_p4_ihires_dshres_ntsc_filtered(void) { lts_null(); } -static void lts_ecs_fm0_dpf0_p5_ilores_dshres_ntsc(void) +static void lts_ecs_fm0_ehb1_p4_ihires_dshres_ntsc(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -14390,26 +33056,18 @@ static void lts_ecs_fm0_dpf0_p5_ilores_dshres_ntsc(void) uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl5(); - clxdat |= bplcoltable[pix0]; - if (decode_specials) { - pix0 = decode_denise_specials(pix0); - } - uae_u8 val0 = dpf_lookup[pix0]; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; } - shiftbpl5(); internal_pixel_cnt += 1; internal_pixel_cnt += 1; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } internal_pixel_cnt += 1; internal_pixel_cnt += 1; uae_u32 dpix_val1 = dpix_val0; uae_u8 pix1 = pix0; - uae_u32 dpix_val2 = dpix_val1; - uae_u8 pix2 = pix1; uae_u32 dpix_val3 = dpix_val2; uae_u8 pix3 = pix2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { @@ -14462,9 +33120,6 @@ static void lts_ecs_fm0_dpf0_p5_ilores_dshres_ntsc(void) *buf1++ = t3; *buf2++ = t3; } - if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl5(); - } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER *debug_dma_dhpos_odd = denise_hcounter; @@ -14487,11 +33142,11 @@ static void lts_ecs_fm0_dpf0_p5_ilores_dshres_ntsc(void) denise_cck++; } } -static void lts_ecs_fm0_dpf0_p5_ilores_dshres_ntsc_filtered(void) +static void lts_ecs_fm0_ehb1_p4_ihires_dshres_ntsc_filtered(void) { lts_null(); } -static void lts_ecs_fm0_dpf1_p5_ilores_dshres_ntsc(void) +static void lts_ecs_fm0_ham0_p4_ihires_dshres_ntsc(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -14506,26 +33161,18 @@ static void lts_ecs_fm0_dpf1_p5_ilores_dshres_ntsc(void) uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl5(); - clxdat |= bplcoltable[pix0]; - if (decode_specials) { - pix0 = decode_denise_specials(pix0); - } - uae_u8 val0 = dpf_lookup[pix0]; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; } - shiftbpl5(); internal_pixel_cnt += 1; internal_pixel_cnt += 1; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } internal_pixel_cnt += 1; internal_pixel_cnt += 1; uae_u32 dpix_val1 = dpix_val0; uae_u8 pix1 = pix0; - uae_u32 dpix_val2 = dpix_val1; - uae_u8 pix2 = pix1; uae_u32 dpix_val3 = dpix_val2; uae_u8 pix3 = pix2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { @@ -14578,12 +33225,6 @@ static void lts_ecs_fm0_dpf1_p5_ilores_dshres_ntsc(void) *buf1++ = t3; *buf2++ = t3; } - if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl5e(); - } - if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) { - copybpl5o(); - } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER *debug_dma_dhpos_odd = denise_hcounter; @@ -14606,27 +33247,11 @@ static void lts_ecs_fm0_dpf1_p5_ilores_dshres_ntsc(void) denise_cck++; } } -static void lts_ecs_fm0_dpf1_p5_ilores_dshres_ntsc_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb0_p5_ilores_dshres_ntsc(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb0_p5_ilores_dshres_ntsc_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb1_p5_ilores_dshres_ntsc(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb1_p5_ilores_dshres_ntsc_filtered(void) +static void lts_ecs_fm0_ham0_p4_ihires_dshres_ntsc_filtered(void) { lts_null(); } -static void lts_ecs_fm0_ham0_p5_ilores_dshres_ntsc(void) +static void lts_ecs_fm0_ham1_p4_ihires_dshres_ntsc(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -14641,25 +33266,18 @@ static void lts_ecs_fm0_ham0_p5_ilores_dshres_ntsc(void) uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl5(); - clxdat |= bplcoltable[pix0]; - if (decode_specials) { - pix0 = decode_denise_specials(pix0); - } - dpix_val0 = decode_ham_pixel(pix0); - } - last_bpl_pix = pix0; } - shiftbpl5(); internal_pixel_cnt += 1; internal_pixel_cnt += 1; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } internal_pixel_cnt += 1; internal_pixel_cnt += 1; uae_u32 dpix_val1 = dpix_val0; uae_u8 pix1 = pix0; - uae_u32 dpix_val2 = dpix_val1; - uae_u8 pix2 = pix1; uae_u32 dpix_val3 = dpix_val2; uae_u8 pix3 = pix2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { @@ -14712,9 +33330,6 @@ static void lts_ecs_fm0_ham0_p5_ilores_dshres_ntsc(void) *buf1++ = t3; *buf2++ = t3; } - if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl5(); - } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER *debug_dma_dhpos_odd = denise_hcounter; @@ -14737,11 +33352,11 @@ static void lts_ecs_fm0_ham0_p5_ilores_dshres_ntsc(void) denise_cck++; } } -static void lts_ecs_fm0_ham0_p5_ilores_dshres_ntsc_filtered(void) +static void lts_ecs_fm0_ham1_p4_ihires_dshres_ntsc_filtered(void) { lts_null(); } -static void lts_ecs_fm0_ham1_p5_ilores_dshres_ntsc(void) +static void lts_ecs_fm0_n0_p5_ihires_dshres_ntsc(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -14754,27 +33369,20 @@ static void lts_ecs_fm0_ham1_p5_ilores_dshres_ntsc(void) if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; - if (!denise_blank_active) { - dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl5(); - clxdat |= bplcoltable[pix0]; - if (decode_specials) { - pix0 = decode_denise_specials(pix0); - } - dpix_val0 = decode_ham_pixel(pix0); - } - last_bpl_pix = pix0; + if (!denise_blank_active) { + dpix_val0 = bordercolor; } - shiftbpl5(); internal_pixel_cnt += 1; internal_pixel_cnt += 1; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } internal_pixel_cnt += 1; internal_pixel_cnt += 1; uae_u32 dpix_val1 = dpix_val0; uae_u8 pix1 = pix0; - uae_u32 dpix_val2 = dpix_val1; - uae_u8 pix2 = pix1; uae_u32 dpix_val3 = dpix_val2; uae_u8 pix3 = pix2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { @@ -14827,12 +33435,6 @@ static void lts_ecs_fm0_ham1_p5_ilores_dshres_ntsc(void) *buf1++ = t3; *buf2++ = t3; } - if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl5e(); - } - if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) { - copybpl5o(); - } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER *debug_dma_dhpos_odd = denise_hcounter; @@ -14855,11 +33457,11 @@ static void lts_ecs_fm0_ham1_p5_ilores_dshres_ntsc(void) denise_cck++; } } -static void lts_ecs_fm0_ham1_p5_ilores_dshres_ntsc_filtered(void) +static void lts_ecs_fm0_n0_p5_ihires_dshres_ntsc_filtered(void) { lts_null(); } -static void lts_ecs_fm0_n0_p6_ilores_dshres_ntsc(void) +static void lts_ecs_fm0_n1_p5_ihires_dshres_ntsc(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -14874,25 +33476,18 @@ static void lts_ecs_fm0_n0_p6_ilores_dshres_ntsc(void) uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl6(); - clxdat |= bplcoltable[pix0]; - if (decode_specials) { - pix0 = decode_denise_specials(pix0); - } - dpix_val0 = denise_colors.acolors[pix0]; - } - last_bpl_pix = pix0; } - shiftbpl6(); internal_pixel_cnt += 1; internal_pixel_cnt += 1; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } internal_pixel_cnt += 1; internal_pixel_cnt += 1; uae_u32 dpix_val1 = dpix_val0; uae_u8 pix1 = pix0; - uae_u32 dpix_val2 = dpix_val1; - uae_u8 pix2 = pix1; uae_u32 dpix_val3 = dpix_val2; uae_u8 pix3 = pix2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { @@ -14945,9 +33540,6 @@ static void lts_ecs_fm0_n0_p6_ilores_dshres_ntsc(void) *buf1++ = t3; *buf2++ = t3; } - if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl6(); - } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER *debug_dma_dhpos_odd = denise_hcounter; @@ -14970,11 +33562,11 @@ static void lts_ecs_fm0_n0_p6_ilores_dshres_ntsc(void) denise_cck++; } } -static void lts_ecs_fm0_n0_p6_ilores_dshres_ntsc_filtered(void) +static void lts_ecs_fm0_n1_p5_ihires_dshres_ntsc_filtered(void) { lts_null(); } -static void lts_ecs_fm0_n1_p6_ilores_dshres_ntsc(void) +static void lts_ecs_fm0_dpf0_p5_ihires_dshres_ntsc(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -14989,25 +33581,18 @@ static void lts_ecs_fm0_n1_p6_ilores_dshres_ntsc(void) uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl6(); - clxdat |= bplcoltable[pix0]; - if (decode_specials) { - pix0 = decode_denise_specials(pix0); - } - dpix_val0 = denise_colors.acolors[pix0]; - } - last_bpl_pix = pix0; } - shiftbpl6(); internal_pixel_cnt += 1; internal_pixel_cnt += 1; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } internal_pixel_cnt += 1; internal_pixel_cnt += 1; uae_u32 dpix_val1 = dpix_val0; uae_u8 pix1 = pix0; - uae_u32 dpix_val2 = dpix_val1; - uae_u8 pix2 = pix1; uae_u32 dpix_val3 = dpix_val2; uae_u8 pix3 = pix2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { @@ -15060,12 +33645,6 @@ static void lts_ecs_fm0_n1_p6_ilores_dshres_ntsc(void) *buf1++ = t3; *buf2++ = t3; } - if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl6e(); - } - if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) { - copybpl6o(); - } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER *debug_dma_dhpos_odd = denise_hcounter; @@ -15088,11 +33667,11 @@ static void lts_ecs_fm0_n1_p6_ilores_dshres_ntsc(void) denise_cck++; } } -static void lts_ecs_fm0_n1_p6_ilores_dshres_ntsc_filtered(void) +static void lts_ecs_fm0_dpf0_p5_ihires_dshres_ntsc_filtered(void) { lts_null(); } -static void lts_ecs_fm0_dpf0_p6_ilores_dshres_ntsc(void) +static void lts_ecs_fm0_dpf1_p5_ihires_dshres_ntsc(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -15107,26 +33686,18 @@ static void lts_ecs_fm0_dpf0_p6_ilores_dshres_ntsc(void) uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl6(); - clxdat |= bplcoltable[pix0]; - if (decode_specials) { - pix0 = decode_denise_specials(pix0); - } - uae_u8 val0 = dpf_lookup[pix0]; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; } - shiftbpl6(); internal_pixel_cnt += 1; internal_pixel_cnt += 1; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } internal_pixel_cnt += 1; internal_pixel_cnt += 1; uae_u32 dpix_val1 = dpix_val0; uae_u8 pix1 = pix0; - uae_u32 dpix_val2 = dpix_val1; - uae_u8 pix2 = pix1; uae_u32 dpix_val3 = dpix_val2; uae_u8 pix3 = pix2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { @@ -15179,9 +33750,6 @@ static void lts_ecs_fm0_dpf0_p6_ilores_dshres_ntsc(void) *buf1++ = t3; *buf2++ = t3; } - if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl6(); - } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER *debug_dma_dhpos_odd = denise_hcounter; @@ -15204,11 +33772,11 @@ static void lts_ecs_fm0_dpf0_p6_ilores_dshres_ntsc(void) denise_cck++; } } -static void lts_ecs_fm0_dpf0_p6_ilores_dshres_ntsc_filtered(void) +static void lts_ecs_fm0_dpf1_p5_ihires_dshres_ntsc_filtered(void) { lts_null(); } -static void lts_ecs_fm0_dpf1_p6_ilores_dshres_ntsc(void) +static void lts_ecs_fm0_ehb0_p5_ihires_dshres_ntsc(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -15223,26 +33791,18 @@ static void lts_ecs_fm0_dpf1_p6_ilores_dshres_ntsc(void) uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl6(); - clxdat |= bplcoltable[pix0]; - if (decode_specials) { - pix0 = decode_denise_specials(pix0); - } - uae_u8 val0 = dpf_lookup[pix0]; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; } - shiftbpl6(); internal_pixel_cnt += 1; internal_pixel_cnt += 1; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } internal_pixel_cnt += 1; internal_pixel_cnt += 1; uae_u32 dpix_val1 = dpix_val0; uae_u8 pix1 = pix0; - uae_u32 dpix_val2 = dpix_val1; - uae_u8 pix2 = pix1; uae_u32 dpix_val3 = dpix_val2; uae_u8 pix3 = pix2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { @@ -15295,12 +33855,6 @@ static void lts_ecs_fm0_dpf1_p6_ilores_dshres_ntsc(void) *buf1++ = t3; *buf2++ = t3; } - if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl6e(); - } - if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) { - copybpl6o(); - } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER *debug_dma_dhpos_odd = denise_hcounter; @@ -15323,11 +33877,11 @@ static void lts_ecs_fm0_dpf1_p6_ilores_dshres_ntsc(void) denise_cck++; } } -static void lts_ecs_fm0_dpf1_p6_ilores_dshres_ntsc_filtered(void) +static void lts_ecs_fm0_ehb0_p5_ihires_dshres_ntsc_filtered(void) { lts_null(); } -static void lts_ecs_fm0_ehb0_p6_ilores_dshres_ntsc(void) +static void lts_ecs_fm0_ehb1_p5_ihires_dshres_ntsc(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -15342,30 +33896,18 @@ static void lts_ecs_fm0_ehb0_p6_ilores_dshres_ntsc(void) uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl6(); - clxdat |= bplcoltable[pix0]; - if (decode_specials) { - pix0 = decode_denise_specials(pix0); - } - pix0 &= bplehb_mask; - if (pix0 <= 31) { - dpix_val0 = denise_colors.acolors[pix0]; - } else { - dpix_val0 = p_xcolors[(denise_colors.color_regs_ecs[pix0 - 32] >> 1) & 0x777]; - } - } - last_bpl_pix = pix0; } - shiftbpl6(); internal_pixel_cnt += 1; internal_pixel_cnt += 1; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } internal_pixel_cnt += 1; internal_pixel_cnt += 1; uae_u32 dpix_val1 = dpix_val0; uae_u8 pix1 = pix0; - uae_u32 dpix_val2 = dpix_val1; - uae_u8 pix2 = pix1; uae_u32 dpix_val3 = dpix_val2; uae_u8 pix3 = pix2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { @@ -15418,9 +33960,6 @@ static void lts_ecs_fm0_ehb0_p6_ilores_dshres_ntsc(void) *buf1++ = t3; *buf2++ = t3; } - if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl6(); - } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER *debug_dma_dhpos_odd = denise_hcounter; @@ -15443,11 +33982,11 @@ static void lts_ecs_fm0_ehb0_p6_ilores_dshres_ntsc(void) denise_cck++; } } -static void lts_ecs_fm0_ehb0_p6_ilores_dshres_ntsc_filtered(void) +static void lts_ecs_fm0_ehb1_p5_ihires_dshres_ntsc_filtered(void) { lts_null(); } -static void lts_ecs_fm0_ehb1_p6_ilores_dshres_ntsc(void) +static void lts_ecs_fm0_ham0_p5_ihires_dshres_ntsc(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -15462,30 +34001,18 @@ static void lts_ecs_fm0_ehb1_p6_ilores_dshres_ntsc(void) uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl6(); - clxdat |= bplcoltable[pix0]; - if (decode_specials) { - pix0 = decode_denise_specials(pix0); - } - pix0 &= bplehb_mask; - if (pix0 <= 31) { - dpix_val0 = denise_colors.acolors[pix0]; - } else { - dpix_val0 = p_xcolors[(denise_colors.color_regs_ecs[pix0 - 32] >> 1) & 0x777]; - } - } - last_bpl_pix = pix0; } - shiftbpl6(); internal_pixel_cnt += 1; internal_pixel_cnt += 1; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } internal_pixel_cnt += 1; internal_pixel_cnt += 1; uae_u32 dpix_val1 = dpix_val0; uae_u8 pix1 = pix0; - uae_u32 dpix_val2 = dpix_val1; - uae_u8 pix2 = pix1; uae_u32 dpix_val3 = dpix_val2; uae_u8 pix3 = pix2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { @@ -15538,12 +34065,6 @@ static void lts_ecs_fm0_ehb1_p6_ilores_dshres_ntsc(void) *buf1++ = t3; *buf2++ = t3; } - if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl6e(); - } - if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) { - copybpl6o(); - } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER *debug_dma_dhpos_odd = denise_hcounter; @@ -15566,11 +34087,11 @@ static void lts_ecs_fm0_ehb1_p6_ilores_dshres_ntsc(void) denise_cck++; } } -static void lts_ecs_fm0_ehb1_p6_ilores_dshres_ntsc_filtered(void) +static void lts_ecs_fm0_ham0_p5_ihires_dshres_ntsc_filtered(void) { lts_null(); } -static void lts_ecs_fm0_ham0_p6_ilores_dshres_ntsc(void) +static void lts_ecs_fm0_ham1_p5_ihires_dshres_ntsc(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -15585,25 +34106,18 @@ static void lts_ecs_fm0_ham0_p6_ilores_dshres_ntsc(void) uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl6(); - clxdat |= bplcoltable[pix0]; - if (decode_specials) { - pix0 = decode_denise_specials(pix0); - } - dpix_val0 = decode_ham_pixel(pix0); - } - last_bpl_pix = pix0; } - shiftbpl6(); internal_pixel_cnt += 1; internal_pixel_cnt += 1; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } internal_pixel_cnt += 1; internal_pixel_cnt += 1; uae_u32 dpix_val1 = dpix_val0; uae_u8 pix1 = pix0; - uae_u32 dpix_val2 = dpix_val1; - uae_u8 pix2 = pix1; uae_u32 dpix_val3 = dpix_val2; uae_u8 pix3 = pix2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { @@ -15656,9 +34170,6 @@ static void lts_ecs_fm0_ham0_p6_ilores_dshres_ntsc(void) *buf1++ = t3; *buf2++ = t3; } - if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl6(); - } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER *debug_dma_dhpos_odd = denise_hcounter; @@ -15681,11 +34192,11 @@ static void lts_ecs_fm0_ham0_p6_ilores_dshres_ntsc(void) denise_cck++; } } -static void lts_ecs_fm0_ham0_p6_ilores_dshres_ntsc_filtered(void) +static void lts_ecs_fm0_ham1_p5_ihires_dshres_ntsc_filtered(void) { lts_null(); } -static void lts_ecs_fm0_ham1_p6_ilores_dshres_ntsc(void) +static void lts_ecs_fm0_n0_p6_ihires_dshres_ntsc(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -15700,25 +34211,18 @@ static void lts_ecs_fm0_ham1_p6_ilores_dshres_ntsc(void) uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl6(); - clxdat |= bplcoltable[pix0]; - if (decode_specials) { - pix0 = decode_denise_specials(pix0); - } - dpix_val0 = decode_ham_pixel(pix0); - } - last_bpl_pix = pix0; } - shiftbpl6(); internal_pixel_cnt += 1; internal_pixel_cnt += 1; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } internal_pixel_cnt += 1; internal_pixel_cnt += 1; uae_u32 dpix_val1 = dpix_val0; uae_u8 pix1 = pix0; - uae_u32 dpix_val2 = dpix_val1; - uae_u8 pix2 = pix1; uae_u32 dpix_val3 = dpix_val2; uae_u8 pix3 = pix2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { @@ -15771,12 +34275,6 @@ static void lts_ecs_fm0_ham1_p6_ilores_dshres_ntsc(void) *buf1++ = t3; *buf2++ = t3; } - if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl6e(); - } - if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) { - copybpl6o(); - } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER *debug_dma_dhpos_odd = denise_hcounter; @@ -15799,11 +34297,11 @@ static void lts_ecs_fm0_ham1_p6_ilores_dshres_ntsc(void) denise_cck++; } } -static void lts_ecs_fm0_ham1_p6_ilores_dshres_ntsc_filtered(void) +static void lts_ecs_fm0_n0_p6_ihires_dshres_ntsc_filtered(void) { lts_null(); } -static void lts_ecs_fm0_n0_p2_ilores_dshres_spr_ntsc(void) +static void lts_ecs_fm0_n1_p6_ihires_dshres_ntsc(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -15814,47 +34312,25 @@ static void lts_ecs_fm0_n0_p2_ilores_dshres_spr_ntsc(void) } int cnt = denise_hcounter << 2; if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl2(); - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0]; - } - last_bpl_pix = pix0; - } - shiftbpl2(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_lores(); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } } internal_pixel_cnt += 1; internal_pixel_cnt += 1; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } internal_pixel_cnt += 1; internal_pixel_cnt += 1; uae_u32 dpix_val1 = dpix_val0; uae_u8 pix1 = pix0; - uae_u32 dpix_val2 = dpix_val1; - uae_u8 pix2 = pix1; uae_u32 dpix_val3 = dpix_val2; uae_u8 pix3 = pix2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - dpix_val1 = dpix_val0; - dpix_val2 = dpix_val0; - dpix_val3 = dpix_val0; - } - } dtbuf[h][0] = dpix_val0; dtbuf[h][1] = dpix_val1; dtbuf[h][2] = dpix_val2; @@ -15904,9 +34380,6 @@ static void lts_ecs_fm0_n0_p2_ilores_dshres_spr_ntsc(void) *buf1++ = t3; *buf2++ = t3; } - if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl2(); - } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER *debug_dma_dhpos_odd = denise_hcounter; @@ -15929,11 +34402,11 @@ static void lts_ecs_fm0_n0_p2_ilores_dshres_spr_ntsc(void) denise_cck++; } } -static void lts_ecs_fm0_n0_p2_ilores_dshres_spr_ntsc_filtered(void) +static void lts_ecs_fm0_n1_p6_ihires_dshres_ntsc_filtered(void) { lts_null(); } -static void lts_ecs_fm0_n1_p2_ilores_dshres_spr_ntsc(void) +static void lts_ecs_fm0_dpf0_p6_ihires_dshres_ntsc(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -15944,47 +34417,25 @@ static void lts_ecs_fm0_n1_p2_ilores_dshres_spr_ntsc(void) } int cnt = denise_hcounter << 2; if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl2(); - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0]; - } - last_bpl_pix = pix0; - } - shiftbpl2(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_lores(); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } } internal_pixel_cnt += 1; internal_pixel_cnt += 1; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } internal_pixel_cnt += 1; internal_pixel_cnt += 1; uae_u32 dpix_val1 = dpix_val0; uae_u8 pix1 = pix0; - uae_u32 dpix_val2 = dpix_val1; - uae_u8 pix2 = pix1; uae_u32 dpix_val3 = dpix_val2; uae_u8 pix3 = pix2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - dpix_val1 = dpix_val0; - dpix_val2 = dpix_val0; - dpix_val3 = dpix_val0; - } - } dtbuf[h][0] = dpix_val0; dtbuf[h][1] = dpix_val1; dtbuf[h][2] = dpix_val2; @@ -16034,12 +34485,6 @@ static void lts_ecs_fm0_n1_p2_ilores_dshres_spr_ntsc(void) *buf1++ = t3; *buf2++ = t3; } - if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl2e(); - } - if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) { - copybpl2o(); - } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER *debug_dma_dhpos_odd = denise_hcounter; @@ -16062,11 +34507,11 @@ static void lts_ecs_fm0_n1_p2_ilores_dshres_spr_ntsc(void) denise_cck++; } } -static void lts_ecs_fm0_n1_p2_ilores_dshres_spr_ntsc_filtered(void) +static void lts_ecs_fm0_dpf0_p6_ihires_dshres_ntsc_filtered(void) { lts_null(); } -static void lts_ecs_fm0_dpf0_p2_ilores_dshres_spr_ntsc(void) +static void lts_ecs_fm0_dpf1_p6_ihires_dshres_ntsc(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -16077,48 +34522,25 @@ static void lts_ecs_fm0_dpf0_p2_ilores_dshres_spr_ntsc(void) } int cnt = denise_hcounter << 2; if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl2(); - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; - } - shiftbpl2(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_lores(); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } } internal_pixel_cnt += 1; internal_pixel_cnt += 1; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } internal_pixel_cnt += 1; internal_pixel_cnt += 1; uae_u32 dpix_val1 = dpix_val0; uae_u8 pix1 = pix0; - uae_u32 dpix_val2 = dpix_val1; - uae_u8 pix2 = pix1; uae_u32 dpix_val3 = dpix_val2; uae_u8 pix3 = pix2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - dpix_val1 = dpix_val0; - dpix_val2 = dpix_val0; - dpix_val3 = dpix_val0; - } - } dtbuf[h][0] = dpix_val0; dtbuf[h][1] = dpix_val1; dtbuf[h][2] = dpix_val2; @@ -16168,9 +34590,6 @@ static void lts_ecs_fm0_dpf0_p2_ilores_dshres_spr_ntsc(void) *buf1++ = t3; *buf2++ = t3; } - if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl2(); - } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER *debug_dma_dhpos_odd = denise_hcounter; @@ -16193,11 +34612,11 @@ static void lts_ecs_fm0_dpf0_p2_ilores_dshres_spr_ntsc(void) denise_cck++; } } -static void lts_ecs_fm0_dpf0_p2_ilores_dshres_spr_ntsc_filtered(void) +static void lts_ecs_fm0_dpf1_p6_ihires_dshres_ntsc_filtered(void) { lts_null(); } -static void lts_ecs_fm0_dpf1_p2_ilores_dshres_spr_ntsc(void) +static void lts_ecs_fm0_ehb0_p6_ihires_dshres_ntsc(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -16208,48 +34627,25 @@ static void lts_ecs_fm0_dpf1_p2_ilores_dshres_spr_ntsc(void) } int cnt = denise_hcounter << 2; if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl2(); - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; - } - shiftbpl2(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_lores(); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } } internal_pixel_cnt += 1; internal_pixel_cnt += 1; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } internal_pixel_cnt += 1; internal_pixel_cnt += 1; uae_u32 dpix_val1 = dpix_val0; uae_u8 pix1 = pix0; - uae_u32 dpix_val2 = dpix_val1; - uae_u8 pix2 = pix1; uae_u32 dpix_val3 = dpix_val2; uae_u8 pix3 = pix2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - dpix_val1 = dpix_val0; - dpix_val2 = dpix_val0; - dpix_val3 = dpix_val0; - } - } dtbuf[h][0] = dpix_val0; dtbuf[h][1] = dpix_val1; dtbuf[h][2] = dpix_val2; @@ -16299,12 +34695,6 @@ static void lts_ecs_fm0_dpf1_p2_ilores_dshres_spr_ntsc(void) *buf1++ = t3; *buf2++ = t3; } - if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl2e(); - } - if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) { - copybpl2o(); - } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER *debug_dma_dhpos_odd = denise_hcounter; @@ -16327,43 +34717,11 @@ static void lts_ecs_fm0_dpf1_p2_ilores_dshres_spr_ntsc(void) denise_cck++; } } -static void lts_ecs_fm0_dpf1_p2_ilores_dshres_spr_ntsc_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb0_p2_ilores_dshres_spr_ntsc(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb0_p2_ilores_dshres_spr_ntsc_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb1_p2_ilores_dshres_spr_ntsc(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb1_p2_ilores_dshres_spr_ntsc_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham0_p2_ilores_dshres_spr_ntsc(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham0_p2_ilores_dshres_spr_ntsc_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham1_p2_ilores_dshres_spr_ntsc(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham1_p2_ilores_dshres_spr_ntsc_filtered(void) +static void lts_ecs_fm0_ehb0_p6_ihires_dshres_ntsc_filtered(void) { lts_null(); } -static void lts_ecs_fm0_n0_p4_ilores_dshres_spr_ntsc(void) +static void lts_ecs_fm0_ehb1_p6_ihires_dshres_ntsc(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -16374,47 +34732,25 @@ static void lts_ecs_fm0_n0_p4_ilores_dshres_spr_ntsc(void) } int cnt = denise_hcounter << 2; if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl4(); - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0]; - } - last_bpl_pix = pix0; - } - shiftbpl4(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_lores(); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } } internal_pixel_cnt += 1; internal_pixel_cnt += 1; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } internal_pixel_cnt += 1; internal_pixel_cnt += 1; uae_u32 dpix_val1 = dpix_val0; uae_u8 pix1 = pix0; - uae_u32 dpix_val2 = dpix_val1; - uae_u8 pix2 = pix1; uae_u32 dpix_val3 = dpix_val2; uae_u8 pix3 = pix2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - dpix_val1 = dpix_val0; - dpix_val2 = dpix_val0; - dpix_val3 = dpix_val0; - } - } dtbuf[h][0] = dpix_val0; dtbuf[h][1] = dpix_val1; dtbuf[h][2] = dpix_val2; @@ -16464,9 +34800,6 @@ static void lts_ecs_fm0_n0_p4_ilores_dshres_spr_ntsc(void) *buf1++ = t3; *buf2++ = t3; } - if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl4(); - } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER *debug_dma_dhpos_odd = denise_hcounter; @@ -16489,11 +34822,11 @@ static void lts_ecs_fm0_n0_p4_ilores_dshres_spr_ntsc(void) denise_cck++; } } -static void lts_ecs_fm0_n0_p4_ilores_dshres_spr_ntsc_filtered(void) +static void lts_ecs_fm0_ehb1_p6_ihires_dshres_ntsc_filtered(void) { lts_null(); } -static void lts_ecs_fm0_n1_p4_ilores_dshres_spr_ntsc(void) +static void lts_ecs_fm0_ham0_p6_ihires_dshres_ntsc(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -16504,47 +34837,25 @@ static void lts_ecs_fm0_n1_p4_ilores_dshres_spr_ntsc(void) } int cnt = denise_hcounter << 2; if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl4(); - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0]; - } - last_bpl_pix = pix0; - } - shiftbpl4(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_lores(); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } } internal_pixel_cnt += 1; internal_pixel_cnt += 1; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } internal_pixel_cnt += 1; internal_pixel_cnt += 1; uae_u32 dpix_val1 = dpix_val0; uae_u8 pix1 = pix0; - uae_u32 dpix_val2 = dpix_val1; - uae_u8 pix2 = pix1; uae_u32 dpix_val3 = dpix_val2; uae_u8 pix3 = pix2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - dpix_val1 = dpix_val0; - dpix_val2 = dpix_val0; - dpix_val3 = dpix_val0; - } - } dtbuf[h][0] = dpix_val0; dtbuf[h][1] = dpix_val1; dtbuf[h][2] = dpix_val2; @@ -16590,15 +34901,9 @@ static void lts_ecs_fm0_n1_p4_ilores_dshres_spr_ntsc(void) if (decode_specials_debug) { t3 = decode_denise_specials_debug(t3, cnt + 3); } - #endif - *buf1++ = t3; - *buf2++ = t3; - } - if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl4e(); - } - if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) { - copybpl4o(); + #endif + *buf1++ = t3; + *buf2++ = t3; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -16622,11 +34927,11 @@ static void lts_ecs_fm0_n1_p4_ilores_dshres_spr_ntsc(void) denise_cck++; } } -static void lts_ecs_fm0_n1_p4_ilores_dshres_spr_ntsc_filtered(void) +static void lts_ecs_fm0_ham0_p6_ihires_dshres_ntsc_filtered(void) { lts_null(); } -static void lts_ecs_fm0_dpf0_p4_ilores_dshres_spr_ntsc(void) +static void lts_ecs_fm0_ham1_p6_ihires_dshres_ntsc(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -16637,48 +34942,25 @@ static void lts_ecs_fm0_dpf0_p4_ilores_dshres_spr_ntsc(void) } int cnt = denise_hcounter << 2; if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl4(); - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; - } - shiftbpl4(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_lores(); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } } internal_pixel_cnt += 1; internal_pixel_cnt += 1; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } internal_pixel_cnt += 1; internal_pixel_cnt += 1; uae_u32 dpix_val1 = dpix_val0; uae_u8 pix1 = pix0; - uae_u32 dpix_val2 = dpix_val1; - uae_u8 pix2 = pix1; uae_u32 dpix_val3 = dpix_val2; uae_u8 pix3 = pix2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - dpix_val1 = dpix_val0; - dpix_val2 = dpix_val0; - dpix_val3 = dpix_val0; - } - } dtbuf[h][0] = dpix_val0; dtbuf[h][1] = dpix_val1; dtbuf[h][2] = dpix_val2; @@ -16728,9 +35010,6 @@ static void lts_ecs_fm0_dpf0_p4_ilores_dshres_spr_ntsc(void) *buf1++ = t3; *buf2++ = t3; } - if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl4(); - } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER *debug_dma_dhpos_odd = denise_hcounter; @@ -16753,11 +35032,11 @@ static void lts_ecs_fm0_dpf0_p4_ilores_dshres_spr_ntsc(void) denise_cck++; } } -static void lts_ecs_fm0_dpf0_p4_ilores_dshres_spr_ntsc_filtered(void) +static void lts_ecs_fm0_ham1_p6_ihires_dshres_ntsc_filtered(void) { lts_null(); } -static void lts_ecs_fm0_dpf1_p4_ilores_dshres_spr_ntsc(void) +static void lts_ecs_fm0_n0_p2_ihires_dshres_spr_ntsc(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -16774,14 +35053,13 @@ static void lts_ecs_fm0_dpf1_p4_ilores_dshres_spr_ntsc(void) if (!denise_blank_active) { dpix_val0 = bordercolor; if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl4(); + pix0 = getbpl2(); clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - dpix_val0 = denise_colors.acolors[val0]; + dpix_val0 = denise_colors.acolors[pix0]; } last_bpl_pix = pix0; } - shiftbpl4(); + shiftbpl2(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -16792,12 +35070,22 @@ static void lts_ecs_fm0_dpf1_p4_ilores_dshres_spr_ntsc(void) } internal_pixel_cnt += 1; internal_pixel_cnt += 1; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = getbpl2(); + clxdat |= bplcoltable[pix2]; + dpix_val2 = denise_colors.acolors[pix2]; + } + last_bpl_pix = pix2; + } + shiftbpl2(); internal_pixel_cnt += 1; internal_pixel_cnt += 1; uae_u32 dpix_val1 = dpix_val0; uae_u8 pix1 = pix0; - uae_u32 dpix_val2 = dpix_val1; - uae_u8 pix2 = pix1; uae_u32 dpix_val3 = dpix_val2; uae_u8 pix3 = pix2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { @@ -16805,9 +35093,27 @@ static void lts_ecs_fm0_dpf1_p4_ilores_dshres_spr_ntsc(void) uae_u32 spix0 = denise_render_sprites2(pix0, sv0); if (spix0) { dpix_val0 = denise_colors.acolors[spix0]; - dpix_val1 = dpix_val0; - dpix_val2 = dpix_val0; - dpix_val3 = dpix_val0; + } + } + uae_u32 sv1 = sv0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } + uae_u32 sv2 = sv0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + uae_u32 sv3 = sv0; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; } } dtbuf[h][0] = dpix_val0; @@ -16859,11 +35165,8 @@ static void lts_ecs_fm0_dpf1_p4_ilores_dshres_spr_ntsc(void) *buf1++ = t3; *buf2++ = t3; } - if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl4e(); - } - if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) { - copybpl4o(); + if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { + copybpl2(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -16887,43 +35190,11 @@ static void lts_ecs_fm0_dpf1_p4_ilores_dshres_spr_ntsc(void) denise_cck++; } } -static void lts_ecs_fm0_dpf1_p4_ilores_dshres_spr_ntsc_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb0_p4_ilores_dshres_spr_ntsc(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb0_p4_ilores_dshres_spr_ntsc_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb1_p4_ilores_dshres_spr_ntsc(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb1_p4_ilores_dshres_spr_ntsc_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham0_p4_ilores_dshres_spr_ntsc(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham0_p4_ilores_dshres_spr_ntsc_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham1_p4_ilores_dshres_spr_ntsc(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham1_p4_ilores_dshres_spr_ntsc_filtered(void) +static void lts_ecs_fm0_n0_p2_ihires_dshres_spr_ntsc_filtered(void) { lts_null(); } -static void lts_ecs_fm0_n0_p5_ilores_dshres_spr_ntsc(void) +static void lts_ecs_fm0_n1_p2_ihires_dshres_spr_ntsc(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -16940,16 +35211,13 @@ static void lts_ecs_fm0_n0_p5_ilores_dshres_spr_ntsc(void) if (!denise_blank_active) { dpix_val0 = bordercolor; if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl5(); + pix0 = getbpl2(); clxdat |= bplcoltable[pix0]; - if (decode_specials) { - pix0 = decode_denise_specials(pix0); - } dpix_val0 = denise_colors.acolors[pix0]; } last_bpl_pix = pix0; } - shiftbpl5(); + shiftbpl2(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -16960,12 +35228,22 @@ static void lts_ecs_fm0_n0_p5_ilores_dshres_spr_ntsc(void) } internal_pixel_cnt += 1; internal_pixel_cnt += 1; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = getbpl2(); + clxdat |= bplcoltable[pix2]; + dpix_val2 = denise_colors.acolors[pix2]; + } + last_bpl_pix = pix2; + } + shiftbpl2(); internal_pixel_cnt += 1; internal_pixel_cnt += 1; uae_u32 dpix_val1 = dpix_val0; uae_u8 pix1 = pix0; - uae_u32 dpix_val2 = dpix_val1; - uae_u8 pix2 = pix1; uae_u32 dpix_val3 = dpix_val2; uae_u8 pix3 = pix2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { @@ -16973,9 +35251,27 @@ static void lts_ecs_fm0_n0_p5_ilores_dshres_spr_ntsc(void) uae_u32 spix0 = denise_render_sprites2(pix0, sv0); if (spix0) { dpix_val0 = denise_colors.acolors[spix0]; - dpix_val1 = dpix_val0; - dpix_val2 = dpix_val0; - dpix_val3 = dpix_val0; + } + } + uae_u32 sv1 = sv0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } + uae_u32 sv2 = sv0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + uae_u32 sv3 = sv0; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; } } dtbuf[h][0] = dpix_val0; @@ -17027,8 +35323,11 @@ static void lts_ecs_fm0_n0_p5_ilores_dshres_spr_ntsc(void) *buf1++ = t3; *buf2++ = t3; } - if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl5(); + if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { + copybpl2e(); + } + if (bpldat_copy[1] && (denise_hcounter_cmp & 7) == bplcon1_shift[1]) { + copybpl2o(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -17052,11 +35351,11 @@ static void lts_ecs_fm0_n0_p5_ilores_dshres_spr_ntsc(void) denise_cck++; } } -static void lts_ecs_fm0_n0_p5_ilores_dshres_spr_ntsc_filtered(void) +static void lts_ecs_fm0_n1_p2_ihires_dshres_spr_ntsc_filtered(void) { lts_null(); } -static void lts_ecs_fm0_n1_p5_ilores_dshres_spr_ntsc(void) +static void lts_ecs_fm0_dpf0_p2_ihires_dshres_spr_ntsc(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -17073,16 +35372,14 @@ static void lts_ecs_fm0_n1_p5_ilores_dshres_spr_ntsc(void) if (!denise_blank_active) { dpix_val0 = bordercolor; if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl5(); + pix0 = getbpl2(); clxdat |= bplcoltable[pix0]; - if (decode_specials) { - pix0 = decode_denise_specials(pix0); - } - dpix_val0 = denise_colors.acolors[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + dpix_val0 = denise_colors.acolors[val0]; } last_bpl_pix = pix0; } - shiftbpl5(); + shiftbpl2(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -17093,12 +35390,23 @@ static void lts_ecs_fm0_n1_p5_ilores_dshres_spr_ntsc(void) } internal_pixel_cnt += 1; internal_pixel_cnt += 1; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = getbpl2(); + clxdat |= bplcoltable[pix2]; + uae_u8 val2 = dpf_lookup[pix2]; + dpix_val2 = denise_colors.acolors[val2]; + } + last_bpl_pix = pix2; + } + shiftbpl2(); internal_pixel_cnt += 1; internal_pixel_cnt += 1; uae_u32 dpix_val1 = dpix_val0; uae_u8 pix1 = pix0; - uae_u32 dpix_val2 = dpix_val1; - uae_u8 pix2 = pix1; uae_u32 dpix_val3 = dpix_val2; uae_u8 pix3 = pix2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { @@ -17106,9 +35414,27 @@ static void lts_ecs_fm0_n1_p5_ilores_dshres_spr_ntsc(void) uae_u32 spix0 = denise_render_sprites2(pix0, sv0); if (spix0) { dpix_val0 = denise_colors.acolors[spix0]; - dpix_val1 = dpix_val0; - dpix_val2 = dpix_val0; - dpix_val3 = dpix_val0; + } + } + uae_u32 sv1 = sv0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } + uae_u32 sv2 = sv0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + uae_u32 sv3 = sv0; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; } } dtbuf[h][0] = dpix_val0; @@ -17160,11 +35486,8 @@ static void lts_ecs_fm0_n1_p5_ilores_dshres_spr_ntsc(void) *buf1++ = t3; *buf2++ = t3; } - if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl5e(); - } - if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) { - copybpl5o(); + if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { + copybpl2(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -17188,11 +35511,11 @@ static void lts_ecs_fm0_n1_p5_ilores_dshres_spr_ntsc(void) denise_cck++; } } -static void lts_ecs_fm0_n1_p5_ilores_dshres_spr_ntsc_filtered(void) +static void lts_ecs_fm0_dpf0_p2_ihires_dshres_spr_ntsc_filtered(void) { lts_null(); } -static void lts_ecs_fm0_dpf0_p5_ilores_dshres_spr_ntsc(void) +static void lts_ecs_fm0_dpf1_p2_ihires_dshres_spr_ntsc(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -17209,17 +35532,14 @@ static void lts_ecs_fm0_dpf0_p5_ilores_dshres_spr_ntsc(void) if (!denise_blank_active) { dpix_val0 = bordercolor; if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl5(); + pix0 = getbpl2(); clxdat |= bplcoltable[pix0]; - if (decode_specials) { - pix0 = decode_denise_specials(pix0); - } uae_u8 val0 = dpf_lookup[pix0]; dpix_val0 = denise_colors.acolors[val0]; } last_bpl_pix = pix0; } - shiftbpl5(); + shiftbpl2(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -17230,12 +35550,23 @@ static void lts_ecs_fm0_dpf0_p5_ilores_dshres_spr_ntsc(void) } internal_pixel_cnt += 1; internal_pixel_cnt += 1; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = getbpl2(); + clxdat |= bplcoltable[pix2]; + uae_u8 val2 = dpf_lookup[pix2]; + dpix_val2 = denise_colors.acolors[val2]; + } + last_bpl_pix = pix2; + } + shiftbpl2(); internal_pixel_cnt += 1; internal_pixel_cnt += 1; uae_u32 dpix_val1 = dpix_val0; uae_u8 pix1 = pix0; - uae_u32 dpix_val2 = dpix_val1; - uae_u8 pix2 = pix1; uae_u32 dpix_val3 = dpix_val2; uae_u8 pix3 = pix2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { @@ -17243,9 +35574,27 @@ static void lts_ecs_fm0_dpf0_p5_ilores_dshres_spr_ntsc(void) uae_u32 spix0 = denise_render_sprites2(pix0, sv0); if (spix0) { dpix_val0 = denise_colors.acolors[spix0]; - dpix_val1 = dpix_val0; - dpix_val2 = dpix_val0; - dpix_val3 = dpix_val0; + } + } + uae_u32 sv1 = sv0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } + uae_u32 sv2 = sv0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + uae_u32 sv3 = sv0; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; } } dtbuf[h][0] = dpix_val0; @@ -17297,8 +35646,11 @@ static void lts_ecs_fm0_dpf0_p5_ilores_dshres_spr_ntsc(void) *buf1++ = t3; *buf2++ = t3; } - if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl5(); + if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { + copybpl2e(); + } + if (bpldat_copy[1] && (denise_hcounter_cmp & 7) == bplcon1_shift[1]) { + copybpl2o(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -17322,11 +35674,11 @@ static void lts_ecs_fm0_dpf0_p5_ilores_dshres_spr_ntsc(void) denise_cck++; } } -static void lts_ecs_fm0_dpf0_p5_ilores_dshres_spr_ntsc_filtered(void) +static void lts_ecs_fm0_dpf1_p2_ihires_dshres_spr_ntsc_filtered(void) { lts_null(); } -static void lts_ecs_fm0_dpf1_p5_ilores_dshres_spr_ntsc(void) +static void lts_ecs_fm0_ehb0_p2_ihires_dshres_spr_ntsc(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -17337,51 +35689,25 @@ static void lts_ecs_fm0_dpf1_p5_ilores_dshres_spr_ntsc(void) } int cnt = denise_hcounter << 2; if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl5(); - clxdat |= bplcoltable[pix0]; - if (decode_specials) { - pix0 = decode_denise_specials(pix0); - } - uae_u8 val0 = dpf_lookup[pix0]; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; - } - shiftbpl5(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_lores(); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } } internal_pixel_cnt += 1; internal_pixel_cnt += 1; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } internal_pixel_cnt += 1; internal_pixel_cnt += 1; uae_u32 dpix_val1 = dpix_val0; uae_u8 pix1 = pix0; - uae_u32 dpix_val2 = dpix_val1; - uae_u8 pix2 = pix1; uae_u32 dpix_val3 = dpix_val2; uae_u8 pix3 = pix2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - dpix_val1 = dpix_val0; - dpix_val2 = dpix_val0; - dpix_val3 = dpix_val0; - } - } dtbuf[h][0] = dpix_val0; dtbuf[h][1] = dpix_val1; dtbuf[h][2] = dpix_val2; @@ -17431,12 +35757,6 @@ static void lts_ecs_fm0_dpf1_p5_ilores_dshres_spr_ntsc(void) *buf1++ = t3; *buf2++ = t3; } - if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl5e(); - } - if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) { - copybpl5o(); - } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER *debug_dma_dhpos_odd = denise_hcounter; @@ -17459,27 +35779,11 @@ static void lts_ecs_fm0_dpf1_p5_ilores_dshres_spr_ntsc(void) denise_cck++; } } -static void lts_ecs_fm0_dpf1_p5_ilores_dshres_spr_ntsc_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb0_p5_ilores_dshres_spr_ntsc(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb0_p5_ilores_dshres_spr_ntsc_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb1_p5_ilores_dshres_spr_ntsc(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb1_p5_ilores_dshres_spr_ntsc_filtered(void) +static void lts_ecs_fm0_ehb0_p2_ihires_dshres_spr_ntsc_filtered(void) { lts_null(); } -static void lts_ecs_fm0_ham0_p5_ilores_dshres_spr_ntsc(void) +static void lts_ecs_fm0_ehb1_p2_ihires_dshres_spr_ntsc(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -17490,50 +35794,25 @@ static void lts_ecs_fm0_ham0_p5_ilores_dshres_spr_ntsc(void) } int cnt = denise_hcounter << 2; if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl5(); - clxdat |= bplcoltable[pix0]; - if (decode_specials) { - pix0 = decode_denise_specials(pix0); - } - dpix_val0 = decode_ham_pixel(pix0); - } - last_bpl_pix = pix0; - } - shiftbpl5(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_lores(); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } } internal_pixel_cnt += 1; internal_pixel_cnt += 1; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } internal_pixel_cnt += 1; internal_pixel_cnt += 1; uae_u32 dpix_val1 = dpix_val0; uae_u8 pix1 = pix0; - uae_u32 dpix_val2 = dpix_val1; - uae_u8 pix2 = pix1; uae_u32 dpix_val3 = dpix_val2; uae_u8 pix3 = pix2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - dpix_val1 = dpix_val0; - dpix_val2 = dpix_val0; - dpix_val3 = dpix_val0; - } - } dtbuf[h][0] = dpix_val0; dtbuf[h][1] = dpix_val1; dtbuf[h][2] = dpix_val2; @@ -17583,9 +35862,6 @@ static void lts_ecs_fm0_ham0_p5_ilores_dshres_spr_ntsc(void) *buf1++ = t3; *buf2++ = t3; } - if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl5(); - } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER *debug_dma_dhpos_odd = denise_hcounter; @@ -17608,11 +35884,11 @@ static void lts_ecs_fm0_ham0_p5_ilores_dshres_spr_ntsc(void) denise_cck++; } } -static void lts_ecs_fm0_ham0_p5_ilores_dshres_spr_ntsc_filtered(void) +static void lts_ecs_fm0_ehb1_p2_ihires_dshres_spr_ntsc_filtered(void) { lts_null(); } -static void lts_ecs_fm0_ham1_p5_ilores_dshres_spr_ntsc(void) +static void lts_ecs_fm0_ham0_p2_ihires_dshres_spr_ntsc(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -17623,50 +35899,25 @@ static void lts_ecs_fm0_ham1_p5_ilores_dshres_spr_ntsc(void) } int cnt = denise_hcounter << 2; if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl5(); - clxdat |= bplcoltable[pix0]; - if (decode_specials) { - pix0 = decode_denise_specials(pix0); - } - dpix_val0 = decode_ham_pixel(pix0); - } - last_bpl_pix = pix0; - } - shiftbpl5(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_lores(); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } } internal_pixel_cnt += 1; internal_pixel_cnt += 1; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } internal_pixel_cnt += 1; internal_pixel_cnt += 1; uae_u32 dpix_val1 = dpix_val0; uae_u8 pix1 = pix0; - uae_u32 dpix_val2 = dpix_val1; - uae_u8 pix2 = pix1; uae_u32 dpix_val3 = dpix_val2; uae_u8 pix3 = pix2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - dpix_val1 = dpix_val0; - dpix_val2 = dpix_val0; - dpix_val3 = dpix_val0; - } - } dtbuf[h][0] = dpix_val0; dtbuf[h][1] = dpix_val1; dtbuf[h][2] = dpix_val2; @@ -17716,12 +35967,6 @@ static void lts_ecs_fm0_ham1_p5_ilores_dshres_spr_ntsc(void) *buf1++ = t3; *buf2++ = t3; } - if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl5e(); - } - if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) { - copybpl5o(); - } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER *debug_dma_dhpos_odd = denise_hcounter; @@ -17744,11 +35989,11 @@ static void lts_ecs_fm0_ham1_p5_ilores_dshres_spr_ntsc(void) denise_cck++; } } -static void lts_ecs_fm0_ham1_p5_ilores_dshres_spr_ntsc_filtered(void) +static void lts_ecs_fm0_ham0_p2_ihires_dshres_spr_ntsc_filtered(void) { lts_null(); } -static void lts_ecs_fm0_n0_p6_ilores_dshres_spr_ntsc(void) +static void lts_ecs_fm0_ham1_p2_ihires_dshres_spr_ntsc(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -17759,50 +36004,25 @@ static void lts_ecs_fm0_n0_p6_ilores_dshres_spr_ntsc(void) } int cnt = denise_hcounter << 2; if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl6(); - clxdat |= bplcoltable[pix0]; - if (decode_specials) { - pix0 = decode_denise_specials(pix0); - } - dpix_val0 = denise_colors.acolors[pix0]; - } - last_bpl_pix = pix0; - } - shiftbpl6(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_lores(); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } } internal_pixel_cnt += 1; internal_pixel_cnt += 1; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } internal_pixel_cnt += 1; internal_pixel_cnt += 1; uae_u32 dpix_val1 = dpix_val0; uae_u8 pix1 = pix0; - uae_u32 dpix_val2 = dpix_val1; - uae_u8 pix2 = pix1; uae_u32 dpix_val3 = dpix_val2; uae_u8 pix3 = pix2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - dpix_val1 = dpix_val0; - dpix_val2 = dpix_val0; - dpix_val3 = dpix_val0; - } - } dtbuf[h][0] = dpix_val0; dtbuf[h][1] = dpix_val1; dtbuf[h][2] = dpix_val2; @@ -17852,9 +36072,6 @@ static void lts_ecs_fm0_n0_p6_ilores_dshres_spr_ntsc(void) *buf1++ = t3; *buf2++ = t3; } - if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl6(); - } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER *debug_dma_dhpos_odd = denise_hcounter; @@ -17877,11 +36094,11 @@ static void lts_ecs_fm0_n0_p6_ilores_dshres_spr_ntsc(void) denise_cck++; } } -static void lts_ecs_fm0_n0_p6_ilores_dshres_spr_ntsc_filtered(void) +static void lts_ecs_fm0_ham1_p2_ihires_dshres_spr_ntsc_filtered(void) { lts_null(); } -static void lts_ecs_fm0_n1_p6_ilores_dshres_spr_ntsc(void) +static void lts_ecs_fm0_n0_p4_ihires_dshres_spr_ntsc(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -17898,16 +36115,13 @@ static void lts_ecs_fm0_n1_p6_ilores_dshres_spr_ntsc(void) if (!denise_blank_active) { dpix_val0 = bordercolor; if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl6(); + pix0 = getbpl4(); clxdat |= bplcoltable[pix0]; - if (decode_specials) { - pix0 = decode_denise_specials(pix0); - } dpix_val0 = denise_colors.acolors[pix0]; } last_bpl_pix = pix0; } - shiftbpl6(); + shiftbpl4(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -17916,14 +36130,24 @@ static void lts_ecs_fm0_n1_p6_ilores_dshres_spr_ntsc(void) sv0 = svt; } } - internal_pixel_cnt += 1; - internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = getbpl4(); + clxdat |= bplcoltable[pix2]; + dpix_val2 = denise_colors.acolors[pix2]; + } + last_bpl_pix = pix2; + } + shiftbpl4(); internal_pixel_cnt += 1; internal_pixel_cnt += 1; uae_u32 dpix_val1 = dpix_val0; uae_u8 pix1 = pix0; - uae_u32 dpix_val2 = dpix_val1; - uae_u8 pix2 = pix1; uae_u32 dpix_val3 = dpix_val2; uae_u8 pix3 = pix2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { @@ -17931,9 +36155,27 @@ static void lts_ecs_fm0_n1_p6_ilores_dshres_spr_ntsc(void) uae_u32 spix0 = denise_render_sprites2(pix0, sv0); if (spix0) { dpix_val0 = denise_colors.acolors[spix0]; - dpix_val1 = dpix_val0; - dpix_val2 = dpix_val0; - dpix_val3 = dpix_val0; + } + } + uae_u32 sv1 = sv0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } + uae_u32 sv2 = sv0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + uae_u32 sv3 = sv0; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; } } dtbuf[h][0] = dpix_val0; @@ -17985,11 +36227,8 @@ static void lts_ecs_fm0_n1_p6_ilores_dshres_spr_ntsc(void) *buf1++ = t3; *buf2++ = t3; } - if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl6e(); - } - if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) { - copybpl6o(); + if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { + copybpl4(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -18013,11 +36252,11 @@ static void lts_ecs_fm0_n1_p6_ilores_dshres_spr_ntsc(void) denise_cck++; } } -static void lts_ecs_fm0_n1_p6_ilores_dshres_spr_ntsc_filtered(void) +static void lts_ecs_fm0_n0_p4_ihires_dshres_spr_ntsc_filtered(void) { lts_null(); } -static void lts_ecs_fm0_dpf0_p6_ilores_dshres_spr_ntsc(void) +static void lts_ecs_fm0_n1_p4_ihires_dshres_spr_ntsc(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -18034,17 +36273,13 @@ static void lts_ecs_fm0_dpf0_p6_ilores_dshres_spr_ntsc(void) if (!denise_blank_active) { dpix_val0 = bordercolor; if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl6(); + pix0 = getbpl4(); clxdat |= bplcoltable[pix0]; - if (decode_specials) { - pix0 = decode_denise_specials(pix0); - } - uae_u8 val0 = dpf_lookup[pix0]; - dpix_val0 = denise_colors.acolors[val0]; + dpix_val0 = denise_colors.acolors[pix0]; } last_bpl_pix = pix0; } - shiftbpl6(); + shiftbpl4(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -18055,12 +36290,22 @@ static void lts_ecs_fm0_dpf0_p6_ilores_dshres_spr_ntsc(void) } internal_pixel_cnt += 1; internal_pixel_cnt += 1; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = getbpl4(); + clxdat |= bplcoltable[pix2]; + dpix_val2 = denise_colors.acolors[pix2]; + } + last_bpl_pix = pix2; + } + shiftbpl4(); internal_pixel_cnt += 1; internal_pixel_cnt += 1; uae_u32 dpix_val1 = dpix_val0; uae_u8 pix1 = pix0; - uae_u32 dpix_val2 = dpix_val1; - uae_u8 pix2 = pix1; uae_u32 dpix_val3 = dpix_val2; uae_u8 pix3 = pix2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { @@ -18068,9 +36313,27 @@ static void lts_ecs_fm0_dpf0_p6_ilores_dshres_spr_ntsc(void) uae_u32 spix0 = denise_render_sprites2(pix0, sv0); if (spix0) { dpix_val0 = denise_colors.acolors[spix0]; - dpix_val1 = dpix_val0; - dpix_val2 = dpix_val0; - dpix_val3 = dpix_val0; + } + } + uae_u32 sv1 = sv0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } + uae_u32 sv2 = sv0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + uae_u32 sv3 = sv0; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; } } dtbuf[h][0] = dpix_val0; @@ -18122,8 +36385,11 @@ static void lts_ecs_fm0_dpf0_p6_ilores_dshres_spr_ntsc(void) *buf1++ = t3; *buf2++ = t3; } - if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl6(); + if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { + copybpl4e(); + } + if (bpldat_copy[1] && (denise_hcounter_cmp & 7) == bplcon1_shift[1]) { + copybpl4o(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -18147,11 +36413,11 @@ static void lts_ecs_fm0_dpf0_p6_ilores_dshres_spr_ntsc(void) denise_cck++; } } -static void lts_ecs_fm0_dpf0_p6_ilores_dshres_spr_ntsc_filtered(void) +static void lts_ecs_fm0_n1_p4_ihires_dshres_spr_ntsc_filtered(void) { lts_null(); } -static void lts_ecs_fm0_dpf1_p6_ilores_dshres_spr_ntsc(void) +static void lts_ecs_fm0_dpf0_p4_ihires_dshres_spr_ntsc(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -18168,17 +36434,14 @@ static void lts_ecs_fm0_dpf1_p6_ilores_dshres_spr_ntsc(void) if (!denise_blank_active) { dpix_val0 = bordercolor; if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl6(); + pix0 = getbpl4(); clxdat |= bplcoltable[pix0]; - if (decode_specials) { - pix0 = decode_denise_specials(pix0); - } uae_u8 val0 = dpf_lookup[pix0]; dpix_val0 = denise_colors.acolors[val0]; } last_bpl_pix = pix0; } - shiftbpl6(); + shiftbpl4(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -18189,12 +36452,23 @@ static void lts_ecs_fm0_dpf1_p6_ilores_dshres_spr_ntsc(void) } internal_pixel_cnt += 1; internal_pixel_cnt += 1; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = getbpl4(); + clxdat |= bplcoltable[pix2]; + uae_u8 val2 = dpf_lookup[pix2]; + dpix_val2 = denise_colors.acolors[val2]; + } + last_bpl_pix = pix2; + } + shiftbpl4(); internal_pixel_cnt += 1; internal_pixel_cnt += 1; uae_u32 dpix_val1 = dpix_val0; uae_u8 pix1 = pix0; - uae_u32 dpix_val2 = dpix_val1; - uae_u8 pix2 = pix1; uae_u32 dpix_val3 = dpix_val2; uae_u8 pix3 = pix2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { @@ -18202,9 +36476,27 @@ static void lts_ecs_fm0_dpf1_p6_ilores_dshres_spr_ntsc(void) uae_u32 spix0 = denise_render_sprites2(pix0, sv0); if (spix0) { dpix_val0 = denise_colors.acolors[spix0]; - dpix_val1 = dpix_val0; - dpix_val2 = dpix_val0; - dpix_val3 = dpix_val0; + } + } + uae_u32 sv1 = sv0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } + uae_u32 sv2 = sv0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + uae_u32 sv3 = sv0; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; } } dtbuf[h][0] = dpix_val0; @@ -18256,11 +36548,8 @@ static void lts_ecs_fm0_dpf1_p6_ilores_dshres_spr_ntsc(void) *buf1++ = t3; *buf2++ = t3; } - if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl6e(); - } - if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) { - copybpl6o(); + if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { + copybpl4(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -18284,11 +36573,11 @@ static void lts_ecs_fm0_dpf1_p6_ilores_dshres_spr_ntsc(void) denise_cck++; } } -static void lts_ecs_fm0_dpf1_p6_ilores_dshres_spr_ntsc_filtered(void) +static void lts_ecs_fm0_dpf0_p4_ihires_dshres_spr_ntsc_filtered(void) { lts_null(); } -static void lts_ecs_fm0_ehb0_p6_ilores_dshres_spr_ntsc(void) +static void lts_ecs_fm0_dpf1_p4_ihires_dshres_spr_ntsc(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -18305,21 +36594,14 @@ static void lts_ecs_fm0_ehb0_p6_ilores_dshres_spr_ntsc(void) if (!denise_blank_active) { dpix_val0 = bordercolor; if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl6(); + pix0 = getbpl4(); clxdat |= bplcoltable[pix0]; - if (decode_specials) { - pix0 = decode_denise_specials(pix0); - } - pix0 &= bplehb_mask; - if (pix0 <= 31) { - dpix_val0 = denise_colors.acolors[pix0]; - } else { - dpix_val0 = p_xcolors[(denise_colors.color_regs_ecs[pix0 - 32] >> 1) & 0x777]; - } + uae_u8 val0 = dpf_lookup[pix0]; + dpix_val0 = denise_colors.acolors[val0]; } last_bpl_pix = pix0; } - shiftbpl6(); + shiftbpl4(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -18330,12 +36612,23 @@ static void lts_ecs_fm0_ehb0_p6_ilores_dshres_spr_ntsc(void) } internal_pixel_cnt += 1; internal_pixel_cnt += 1; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = getbpl4(); + clxdat |= bplcoltable[pix2]; + uae_u8 val2 = dpf_lookup[pix2]; + dpix_val2 = denise_colors.acolors[val2]; + } + last_bpl_pix = pix2; + } + shiftbpl4(); internal_pixel_cnt += 1; internal_pixel_cnt += 1; uae_u32 dpix_val1 = dpix_val0; uae_u8 pix1 = pix0; - uae_u32 dpix_val2 = dpix_val1; - uae_u8 pix2 = pix1; uae_u32 dpix_val3 = dpix_val2; uae_u8 pix3 = pix2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { @@ -18343,9 +36636,27 @@ static void lts_ecs_fm0_ehb0_p6_ilores_dshres_spr_ntsc(void) uae_u32 spix0 = denise_render_sprites2(pix0, sv0); if (spix0) { dpix_val0 = denise_colors.acolors[spix0]; - dpix_val1 = dpix_val0; - dpix_val2 = dpix_val0; - dpix_val3 = dpix_val0; + } + } + uae_u32 sv1 = sv0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + } + } + uae_u32 sv2 = sv0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + } + } + uae_u32 sv3 = sv0; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; } } dtbuf[h][0] = dpix_val0; @@ -18397,8 +36708,11 @@ static void lts_ecs_fm0_ehb0_p6_ilores_dshres_spr_ntsc(void) *buf1++ = t3; *buf2++ = t3; } - if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl6(); + if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { + copybpl4e(); + } + if (bpldat_copy[1] && (denise_hcounter_cmp & 7) == bplcon1_shift[1]) { + copybpl4o(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -18422,70 +36736,40 @@ static void lts_ecs_fm0_ehb0_p6_ilores_dshres_spr_ntsc(void) denise_cck++; } } -static void lts_ecs_fm0_ehb0_p6_ilores_dshres_spr_ntsc_filtered(void) +static void lts_ecs_fm0_dpf1_p4_ihires_dshres_spr_ntsc_filtered(void) { lts_null(); } -static void lts_ecs_fm0_ehb1_p6_ilores_dshres_spr_ntsc(void) +static void lts_ecs_fm0_ehb0_p4_ihires_dshres_spr_ntsc(void) { - while (denise_cck < denise_endcycle) { - do_denise_cck(denise_linecnt, denise_startpos, denise_cck); - if (lts_changed) return; - for (int h = 0; h < 2; h++) { - if (h) { - denise_hcounter_next = denise_hcounter_new; - } - int cnt = denise_hcounter << 2; - if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites(cnt + 0); - uae_u8 pix0 = 0; - uae_u32 dpix_val0 = BLANK_COLOR; - if (!denise_blank_active) { - dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl6(); - clxdat |= bplcoltable[pix0]; - if (decode_specials) { - pix0 = decode_denise_specials(pix0); - } - pix0 &= bplehb_mask; - if (pix0 <= 31) { - dpix_val0 = denise_colors.acolors[pix0]; - } else { - dpix_val0 = p_xcolors[(denise_colors.color_regs_ecs[pix0 - 32] >> 1) & 0x777]; - } - } - last_bpl_pix = pix0; + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; } - shiftbpl6(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_lores(); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; } internal_pixel_cnt += 1; internal_pixel_cnt += 1; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } internal_pixel_cnt += 1; internal_pixel_cnt += 1; uae_u32 dpix_val1 = dpix_val0; uae_u8 pix1 = pix0; - uae_u32 dpix_val2 = dpix_val1; - uae_u8 pix2 = pix1; uae_u32 dpix_val3 = dpix_val2; uae_u8 pix3 = pix2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - dpix_val1 = dpix_val0; - dpix_val2 = dpix_val0; - dpix_val3 = dpix_val0; - } - } dtbuf[h][0] = dpix_val0; dtbuf[h][1] = dpix_val1; dtbuf[h][2] = dpix_val2; @@ -18535,12 +36819,6 @@ static void lts_ecs_fm0_ehb1_p6_ilores_dshres_spr_ntsc(void) *buf1++ = t3; *buf2++ = t3; } - if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl6e(); - } - if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) { - copybpl6o(); - } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER *debug_dma_dhpos_odd = denise_hcounter; @@ -18563,11 +36841,11 @@ static void lts_ecs_fm0_ehb1_p6_ilores_dshres_spr_ntsc(void) denise_cck++; } } -static void lts_ecs_fm0_ehb1_p6_ilores_dshres_spr_ntsc_filtered(void) +static void lts_ecs_fm0_ehb0_p4_ihires_dshres_spr_ntsc_filtered(void) { lts_null(); } -static void lts_ecs_fm0_ham0_p6_ilores_dshres_spr_ntsc(void) +static void lts_ecs_fm0_ehb1_p4_ihires_dshres_spr_ntsc(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -18578,50 +36856,25 @@ static void lts_ecs_fm0_ham0_p6_ilores_dshres_spr_ntsc(void) } int cnt = denise_hcounter << 2; if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl6(); - clxdat |= bplcoltable[pix0]; - if (decode_specials) { - pix0 = decode_denise_specials(pix0); - } - dpix_val0 = decode_ham_pixel(pix0); - } - last_bpl_pix = pix0; - } - shiftbpl6(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_lores(); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } } internal_pixel_cnt += 1; internal_pixel_cnt += 1; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } internal_pixel_cnt += 1; internal_pixel_cnt += 1; uae_u32 dpix_val1 = dpix_val0; uae_u8 pix1 = pix0; - uae_u32 dpix_val2 = dpix_val1; - uae_u8 pix2 = pix1; uae_u32 dpix_val3 = dpix_val2; uae_u8 pix3 = pix2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - dpix_val1 = dpix_val0; - dpix_val2 = dpix_val0; - dpix_val3 = dpix_val0; - } - } dtbuf[h][0] = dpix_val0; dtbuf[h][1] = dpix_val1; dtbuf[h][2] = dpix_val2; @@ -18671,9 +36924,6 @@ static void lts_ecs_fm0_ham0_p6_ilores_dshres_spr_ntsc(void) *buf1++ = t3; *buf2++ = t3; } - if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl6(); - } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER *debug_dma_dhpos_odd = denise_hcounter; @@ -18696,11 +36946,11 @@ static void lts_ecs_fm0_ham0_p6_ilores_dshres_spr_ntsc(void) denise_cck++; } } -static void lts_ecs_fm0_ham0_p6_ilores_dshres_spr_ntsc_filtered(void) +static void lts_ecs_fm0_ehb1_p4_ihires_dshres_spr_ntsc_filtered(void) { lts_null(); } -static void lts_ecs_fm0_ham1_p6_ilores_dshres_spr_ntsc(void) +static void lts_ecs_fm0_ham0_p4_ihires_dshres_spr_ntsc(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -18711,50 +36961,25 @@ static void lts_ecs_fm0_ham1_p6_ilores_dshres_spr_ntsc(void) } int cnt = denise_hcounter << 2; if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl6(); - clxdat |= bplcoltable[pix0]; - if (decode_specials) { - pix0 = decode_denise_specials(pix0); - } - dpix_val0 = decode_ham_pixel(pix0); - } - last_bpl_pix = pix0; - } - shiftbpl6(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_lores(); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } } internal_pixel_cnt += 1; internal_pixel_cnt += 1; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } internal_pixel_cnt += 1; internal_pixel_cnt += 1; uae_u32 dpix_val1 = dpix_val0; uae_u8 pix1 = pix0; - uae_u32 dpix_val2 = dpix_val1; - uae_u8 pix2 = pix1; uae_u32 dpix_val3 = dpix_val2; uae_u8 pix3 = pix2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - dpix_val1 = dpix_val0; - dpix_val2 = dpix_val0; - dpix_val3 = dpix_val0; - } - } dtbuf[h][0] = dpix_val0; dtbuf[h][1] = dpix_val1; dtbuf[h][2] = dpix_val2; @@ -18804,12 +37029,6 @@ static void lts_ecs_fm0_ham1_p6_ilores_dshres_spr_ntsc(void) *buf1++ = t3; *buf2++ = t3; } - if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl6e(); - } - if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) { - copybpl6o(); - } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER *debug_dma_dhpos_odd = denise_hcounter; @@ -18832,11 +37051,11 @@ static void lts_ecs_fm0_ham1_p6_ilores_dshres_spr_ntsc(void) denise_cck++; } } -static void lts_ecs_fm0_ham1_p6_ilores_dshres_spr_ntsc_filtered(void) +static void lts_ecs_fm0_ham0_p4_ihires_dshres_spr_ntsc_filtered(void) { lts_null(); } -static void lts_ecs_fm0_n0_p2_ihires_dshres_ntsc(void) +static void lts_ecs_fm0_ham1_p4_ihires_dshres_spr_ntsc(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -18851,28 +37070,14 @@ static void lts_ecs_fm0_n0_p2_ihires_dshres_ntsc(void) uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl2(); - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0]; - } - last_bpl_pix = pix0; } - shiftbpl2(); internal_pixel_cnt += 1; internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = getbpl2(); - clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2]; - } - last_bpl_pix = pix2; } - shiftbpl2(); internal_pixel_cnt += 1; internal_pixel_cnt += 1; uae_u32 dpix_val1 = dpix_val0; @@ -18929,9 +37134,6 @@ static void lts_ecs_fm0_n0_p2_ihires_dshres_ntsc(void) *buf1++ = t3; *buf2++ = t3; } - if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { - copybpl2(); - } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER *debug_dma_dhpos_odd = denise_hcounter; @@ -18954,11 +37156,11 @@ static void lts_ecs_fm0_n0_p2_ihires_dshres_ntsc(void) denise_cck++; } } -static void lts_ecs_fm0_n0_p2_ihires_dshres_ntsc_filtered(void) +static void lts_ecs_fm0_ham1_p4_ihires_dshres_spr_ntsc_filtered(void) { lts_null(); } -static void lts_ecs_fm0_n1_p2_ihires_dshres_ntsc(void) +static void lts_ecs_fm0_n0_p5_ihires_dshres_spr_ntsc(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -18973,28 +37175,14 @@ static void lts_ecs_fm0_n1_p2_ihires_dshres_ntsc(void) uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl2(); - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0]; - } - last_bpl_pix = pix0; } - shiftbpl2(); internal_pixel_cnt += 1; internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = getbpl2(); - clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2]; - } - last_bpl_pix = pix2; } - shiftbpl2(); internal_pixel_cnt += 1; internal_pixel_cnt += 1; uae_u32 dpix_val1 = dpix_val0; @@ -19051,12 +37239,6 @@ static void lts_ecs_fm0_n1_p2_ihires_dshres_ntsc(void) *buf1++ = t3; *buf2++ = t3; } - if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { - copybpl2e(); - } - if (bpldat_copy[1] && (denise_hcounter_cmp & 7) == bplcon1_shift[1]) { - copybpl2o(); - } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER *debug_dma_dhpos_odd = denise_hcounter; @@ -19079,11 +37261,11 @@ static void lts_ecs_fm0_n1_p2_ihires_dshres_ntsc(void) denise_cck++; } } -static void lts_ecs_fm0_n1_p2_ihires_dshres_ntsc_filtered(void) +static void lts_ecs_fm0_n0_p5_ihires_dshres_spr_ntsc_filtered(void) { lts_null(); } -static void lts_ecs_fm0_dpf0_p2_ihires_dshres_ntsc(void) +static void lts_ecs_fm0_n1_p5_ihires_dshres_spr_ntsc(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -19098,30 +37280,14 @@ static void lts_ecs_fm0_dpf0_p2_ihires_dshres_ntsc(void) uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl2(); - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; } - shiftbpl2(); internal_pixel_cnt += 1; internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = getbpl2(); - clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - dpix_val2 = denise_colors.acolors[val2]; - } - last_bpl_pix = pix2; } - shiftbpl2(); internal_pixel_cnt += 1; internal_pixel_cnt += 1; uae_u32 dpix_val1 = dpix_val0; @@ -19178,9 +37344,6 @@ static void lts_ecs_fm0_dpf0_p2_ihires_dshres_ntsc(void) *buf1++ = t3; *buf2++ = t3; } - if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { - copybpl2(); - } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER *debug_dma_dhpos_odd = denise_hcounter; @@ -19203,11 +37366,11 @@ static void lts_ecs_fm0_dpf0_p2_ihires_dshres_ntsc(void) denise_cck++; } } -static void lts_ecs_fm0_dpf0_p2_ihires_dshres_ntsc_filtered(void) +static void lts_ecs_fm0_n1_p5_ihires_dshres_spr_ntsc_filtered(void) { lts_null(); } -static void lts_ecs_fm0_dpf1_p2_ihires_dshres_ntsc(void) +static void lts_ecs_fm0_dpf0_p5_ihires_dshres_spr_ntsc(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -19222,30 +37385,14 @@ static void lts_ecs_fm0_dpf1_p2_ihires_dshres_ntsc(void) uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl2(); - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; } - shiftbpl2(); internal_pixel_cnt += 1; internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = getbpl2(); - clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - dpix_val2 = denise_colors.acolors[val2]; - } - last_bpl_pix = pix2; } - shiftbpl2(); internal_pixel_cnt += 1; internal_pixel_cnt += 1; uae_u32 dpix_val1 = dpix_val0; @@ -19302,12 +37449,6 @@ static void lts_ecs_fm0_dpf1_p2_ihires_dshres_ntsc(void) *buf1++ = t3; *buf2++ = t3; } - if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { - copybpl2e(); - } - if (bpldat_copy[1] && (denise_hcounter_cmp & 7) == bplcon1_shift[1]) { - copybpl2o(); - } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER *debug_dma_dhpos_odd = denise_hcounter; @@ -19330,43 +37471,11 @@ static void lts_ecs_fm0_dpf1_p2_ihires_dshres_ntsc(void) denise_cck++; } } -static void lts_ecs_fm0_dpf1_p2_ihires_dshres_ntsc_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb0_p2_ihires_dshres_ntsc(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb0_p2_ihires_dshres_ntsc_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb1_p2_ihires_dshres_ntsc(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb1_p2_ihires_dshres_ntsc_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham0_p2_ihires_dshres_ntsc(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham0_p2_ihires_dshres_ntsc_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham1_p2_ihires_dshres_ntsc(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham1_p2_ihires_dshres_ntsc_filtered(void) +static void lts_ecs_fm0_dpf0_p5_ihires_dshres_spr_ntsc_filtered(void) { lts_null(); } -static void lts_ecs_fm0_n0_p4_ihires_dshres_ntsc(void) +static void lts_ecs_fm0_dpf1_p5_ihires_dshres_spr_ntsc(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -19381,28 +37490,14 @@ static void lts_ecs_fm0_n0_p4_ihires_dshres_ntsc(void) uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl4(); - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0]; - } - last_bpl_pix = pix0; } - shiftbpl4(); internal_pixel_cnt += 1; internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = getbpl4(); - clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2]; - } - last_bpl_pix = pix2; } - shiftbpl4(); internal_pixel_cnt += 1; internal_pixel_cnt += 1; uae_u32 dpix_val1 = dpix_val0; @@ -19459,9 +37554,6 @@ static void lts_ecs_fm0_n0_p4_ihires_dshres_ntsc(void) *buf1++ = t3; *buf2++ = t3; } - if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { - copybpl4(); - } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER *debug_dma_dhpos_odd = denise_hcounter; @@ -19484,11 +37576,11 @@ static void lts_ecs_fm0_n0_p4_ihires_dshres_ntsc(void) denise_cck++; } } -static void lts_ecs_fm0_n0_p4_ihires_dshres_ntsc_filtered(void) +static void lts_ecs_fm0_dpf1_p5_ihires_dshres_spr_ntsc_filtered(void) { lts_null(); } -static void lts_ecs_fm0_n1_p4_ihires_dshres_ntsc(void) +static void lts_ecs_fm0_ehb0_p5_ihires_dshres_spr_ntsc(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -19503,28 +37595,14 @@ static void lts_ecs_fm0_n1_p4_ihires_dshres_ntsc(void) uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl4(); - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0]; - } - last_bpl_pix = pix0; } - shiftbpl4(); internal_pixel_cnt += 1; internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = getbpl4(); - clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2]; - } - last_bpl_pix = pix2; } - shiftbpl4(); internal_pixel_cnt += 1; internal_pixel_cnt += 1; uae_u32 dpix_val1 = dpix_val0; @@ -19581,12 +37659,6 @@ static void lts_ecs_fm0_n1_p4_ihires_dshres_ntsc(void) *buf1++ = t3; *buf2++ = t3; } - if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { - copybpl4e(); - } - if (bpldat_copy[1] && (denise_hcounter_cmp & 7) == bplcon1_shift[1]) { - copybpl4o(); - } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER *debug_dma_dhpos_odd = denise_hcounter; @@ -19609,11 +37681,11 @@ static void lts_ecs_fm0_n1_p4_ihires_dshres_ntsc(void) denise_cck++; } } -static void lts_ecs_fm0_n1_p4_ihires_dshres_ntsc_filtered(void) +static void lts_ecs_fm0_ehb0_p5_ihires_dshres_spr_ntsc_filtered(void) { lts_null(); } -static void lts_ecs_fm0_dpf0_p4_ihires_dshres_ntsc(void) +static void lts_ecs_fm0_ehb1_p5_ihires_dshres_spr_ntsc(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -19628,30 +37700,14 @@ static void lts_ecs_fm0_dpf0_p4_ihires_dshres_ntsc(void) uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl4(); - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; } - shiftbpl4(); internal_pixel_cnt += 1; internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = getbpl4(); - clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - dpix_val2 = denise_colors.acolors[val2]; - } - last_bpl_pix = pix2; } - shiftbpl4(); internal_pixel_cnt += 1; internal_pixel_cnt += 1; uae_u32 dpix_val1 = dpix_val0; @@ -19708,9 +37764,6 @@ static void lts_ecs_fm0_dpf0_p4_ihires_dshres_ntsc(void) *buf1++ = t3; *buf2++ = t3; } - if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { - copybpl4(); - } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER *debug_dma_dhpos_odd = denise_hcounter; @@ -19733,11 +37786,11 @@ static void lts_ecs_fm0_dpf0_p4_ihires_dshres_ntsc(void) denise_cck++; } } -static void lts_ecs_fm0_dpf0_p4_ihires_dshres_ntsc_filtered(void) +static void lts_ecs_fm0_ehb1_p5_ihires_dshres_spr_ntsc_filtered(void) { lts_null(); } -static void lts_ecs_fm0_dpf1_p4_ihires_dshres_ntsc(void) +static void lts_ecs_fm0_ham0_p5_ihires_dshres_spr_ntsc(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -19752,30 +37805,14 @@ static void lts_ecs_fm0_dpf1_p4_ihires_dshres_ntsc(void) uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl4(); - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; } - shiftbpl4(); internal_pixel_cnt += 1; internal_pixel_cnt += 1; uae_u8 pix2 = 0; uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = getbpl4(); - clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - dpix_val2 = denise_colors.acolors[val2]; - } - last_bpl_pix = pix2; } - shiftbpl4(); internal_pixel_cnt += 1; internal_pixel_cnt += 1; uae_u32 dpix_val1 = dpix_val0; @@ -19832,12 +37869,6 @@ static void lts_ecs_fm0_dpf1_p4_ihires_dshres_ntsc(void) *buf1++ = t3; *buf2++ = t3; } - if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { - copybpl4e(); - } - if (bpldat_copy[1] && (denise_hcounter_cmp & 7) == bplcon1_shift[1]) { - copybpl4o(); - } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER *debug_dma_dhpos_odd = denise_hcounter; @@ -19860,171 +37891,11 @@ static void lts_ecs_fm0_dpf1_p4_ihires_dshres_ntsc(void) denise_cck++; } } -static void lts_ecs_fm0_dpf1_p4_ihires_dshres_ntsc_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb0_p4_ihires_dshres_ntsc(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb0_p4_ihires_dshres_ntsc_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb1_p4_ihires_dshres_ntsc(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb1_p4_ihires_dshres_ntsc_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham0_p4_ihires_dshres_ntsc(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham0_p4_ihires_dshres_ntsc_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham1_p4_ihires_dshres_ntsc(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham1_p4_ihires_dshres_ntsc_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_n0_p5_ihires_dshres_ntsc(void) -{ - lts_null(); -} -static void lts_ecs_fm0_n0_p5_ihires_dshres_ntsc_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_n1_p5_ihires_dshres_ntsc(void) -{ - lts_null(); -} -static void lts_ecs_fm0_n1_p5_ihires_dshres_ntsc_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_dpf0_p5_ihires_dshres_ntsc(void) -{ - lts_null(); -} -static void lts_ecs_fm0_dpf0_p5_ihires_dshres_ntsc_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_dpf1_p5_ihires_dshres_ntsc(void) -{ - lts_null(); -} -static void lts_ecs_fm0_dpf1_p5_ihires_dshres_ntsc_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb0_p5_ihires_dshres_ntsc(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb0_p5_ihires_dshres_ntsc_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb1_p5_ihires_dshres_ntsc(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb1_p5_ihires_dshres_ntsc_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham0_p5_ihires_dshres_ntsc(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham0_p5_ihires_dshres_ntsc_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham1_p5_ihires_dshres_ntsc(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham1_p5_ihires_dshres_ntsc_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_n0_p6_ihires_dshres_ntsc(void) -{ - lts_null(); -} -static void lts_ecs_fm0_n0_p6_ihires_dshres_ntsc_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_n1_p6_ihires_dshres_ntsc(void) -{ - lts_null(); -} -static void lts_ecs_fm0_n1_p6_ihires_dshres_ntsc_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_dpf0_p6_ihires_dshres_ntsc(void) -{ - lts_null(); -} -static void lts_ecs_fm0_dpf0_p6_ihires_dshres_ntsc_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_dpf1_p6_ihires_dshres_ntsc(void) -{ - lts_null(); -} -static void lts_ecs_fm0_dpf1_p6_ihires_dshres_ntsc_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb0_p6_ihires_dshres_ntsc(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb0_p6_ihires_dshres_ntsc_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb1_p6_ihires_dshres_ntsc(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb1_p6_ihires_dshres_ntsc_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham0_p6_ihires_dshres_ntsc(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham0_p6_ihires_dshres_ntsc_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham1_p6_ihires_dshres_ntsc(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham1_p6_ihires_dshres_ntsc_filtered(void) +static void lts_ecs_fm0_ham0_p5_ihires_dshres_spr_ntsc_filtered(void) { lts_null(); } -static void lts_ecs_fm0_n0_p2_ihires_dshres_spr_ntsc(void) +static void lts_ecs_fm0_ham1_p5_ihires_dshres_spr_ntsc(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -20035,26 +37906,10 @@ static void lts_ecs_fm0_n0_p2_ihires_dshres_spr_ntsc(void) } int cnt = denise_hcounter << 2; if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl2(); - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0]; - } - last_bpl_pix = pix0; - } - shiftbpl2(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_lores(); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } } internal_pixel_cnt += 1; internal_pixel_cnt += 1; @@ -20062,14 +37917,7 @@ static void lts_ecs_fm0_n0_p2_ihires_dshres_spr_ntsc(void) uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = getbpl2(); - clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2]; - } - last_bpl_pix = pix2; } - shiftbpl2(); internal_pixel_cnt += 1; internal_pixel_cnt += 1; uae_u32 dpix_val1 = dpix_val0; @@ -20077,33 +37925,6 @@ static void lts_ecs_fm0_n0_p2_ihires_dshres_spr_ntsc(void) uae_u32 dpix_val3 = dpix_val2; uae_u8 pix3 = pix2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - } - } - uae_u32 sv1 = sv0; - if (sv1) { - uae_u32 spix1 = denise_render_sprites2(pix1, sv1); - if (spix1) { - dpix_val1 = denise_colors.acolors[spix1]; - } - } - uae_u32 sv2 = sv0; - if (sv2) { - uae_u32 spix2 = denise_render_sprites2(pix2, sv2); - if (spix2) { - dpix_val2 = denise_colors.acolors[spix2]; - } - } - uae_u32 sv3 = sv0; - if (sv3) { - uae_u32 spix3 = denise_render_sprites2(pix3, sv3); - if (spix3) { - dpix_val3 = denise_colors.acolors[spix3]; - } - } dtbuf[h][0] = dpix_val0; dtbuf[h][1] = dpix_val1; dtbuf[h][2] = dpix_val2; @@ -20153,9 +37974,6 @@ static void lts_ecs_fm0_n0_p2_ihires_dshres_spr_ntsc(void) *buf1++ = t3; *buf2++ = t3; } - if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { - copybpl2(); - } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER *debug_dma_dhpos_odd = denise_hcounter; @@ -20178,11 +37996,11 @@ static void lts_ecs_fm0_n0_p2_ihires_dshres_spr_ntsc(void) denise_cck++; } } -static void lts_ecs_fm0_n0_p2_ihires_dshres_spr_ntsc_filtered(void) +static void lts_ecs_fm0_ham1_p5_ihires_dshres_spr_ntsc_filtered(void) { lts_null(); } -static void lts_ecs_fm0_n1_p2_ihires_dshres_spr_ntsc(void) +static void lts_ecs_fm0_n0_p6_ihires_dshres_spr_ntsc(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -20193,26 +38011,10 @@ static void lts_ecs_fm0_n1_p2_ihires_dshres_spr_ntsc(void) } int cnt = denise_hcounter << 2; if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl2(); - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0]; - } - last_bpl_pix = pix0; - } - shiftbpl2(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_lores(); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } } internal_pixel_cnt += 1; internal_pixel_cnt += 1; @@ -20220,14 +38022,7 @@ static void lts_ecs_fm0_n1_p2_ihires_dshres_spr_ntsc(void) uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = getbpl2(); - clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2]; - } - last_bpl_pix = pix2; } - shiftbpl2(); internal_pixel_cnt += 1; internal_pixel_cnt += 1; uae_u32 dpix_val1 = dpix_val0; @@ -20235,33 +38030,6 @@ static void lts_ecs_fm0_n1_p2_ihires_dshres_spr_ntsc(void) uae_u32 dpix_val3 = dpix_val2; uae_u8 pix3 = pix2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - } - } - uae_u32 sv1 = sv0; - if (sv1) { - uae_u32 spix1 = denise_render_sprites2(pix1, sv1); - if (spix1) { - dpix_val1 = denise_colors.acolors[spix1]; - } - } - uae_u32 sv2 = sv0; - if (sv2) { - uae_u32 spix2 = denise_render_sprites2(pix2, sv2); - if (spix2) { - dpix_val2 = denise_colors.acolors[spix2]; - } - } - uae_u32 sv3 = sv0; - if (sv3) { - uae_u32 spix3 = denise_render_sprites2(pix3, sv3); - if (spix3) { - dpix_val3 = denise_colors.acolors[spix3]; - } - } dtbuf[h][0] = dpix_val0; dtbuf[h][1] = dpix_val1; dtbuf[h][2] = dpix_val2; @@ -20311,12 +38079,6 @@ static void lts_ecs_fm0_n1_p2_ihires_dshres_spr_ntsc(void) *buf1++ = t3; *buf2++ = t3; } - if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { - copybpl2e(); - } - if (bpldat_copy[1] && (denise_hcounter_cmp & 7) == bplcon1_shift[1]) { - copybpl2o(); - } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER *debug_dma_dhpos_odd = denise_hcounter; @@ -20339,11 +38101,11 @@ static void lts_ecs_fm0_n1_p2_ihires_dshres_spr_ntsc(void) denise_cck++; } } -static void lts_ecs_fm0_n1_p2_ihires_dshres_spr_ntsc_filtered(void) +static void lts_ecs_fm0_n0_p6_ihires_dshres_spr_ntsc_filtered(void) { lts_null(); } -static void lts_ecs_fm0_dpf0_p2_ihires_dshres_spr_ntsc(void) +static void lts_ecs_fm0_n1_p6_ihires_dshres_spr_ntsc(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -20354,27 +38116,10 @@ static void lts_ecs_fm0_dpf0_p2_ihires_dshres_spr_ntsc(void) } int cnt = denise_hcounter << 2; if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl2(); - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; - } - shiftbpl2(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_lores(); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } } internal_pixel_cnt += 1; internal_pixel_cnt += 1; @@ -20382,15 +38127,7 @@ static void lts_ecs_fm0_dpf0_p2_ihires_dshres_spr_ntsc(void) uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = getbpl2(); - clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - dpix_val2 = denise_colors.acolors[val2]; - } - last_bpl_pix = pix2; } - shiftbpl2(); internal_pixel_cnt += 1; internal_pixel_cnt += 1; uae_u32 dpix_val1 = dpix_val0; @@ -20398,33 +38135,111 @@ static void lts_ecs_fm0_dpf0_p2_ihires_dshres_spr_ntsc(void) uae_u32 dpix_val3 = dpix_val2; uae_u8 pix3 = pix2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - } + dtbuf[h][0] = dpix_val0; + dtbuf[h][1] = dpix_val1; + dtbuf[h][2] = dpix_val2; + dtbuf[h][3] = dpix_val3; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; } - uae_u32 sv1 = sv0; - if (sv1) { - uae_u32 spix1 = denise_render_sprites2(pix1, sv1); - if (spix1) { - dpix_val1 = denise_colors.acolors[spix1]; - } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); } - uae_u32 sv2 = sv0; - if (sv2) { - uae_u32 spix2 = denise_render_sprites2(pix2, sv2); - if (spix2) { - dpix_val2 = denise_colors.acolors[spix2]; - } + #endif + *buf1++ = t0; + *buf2++ = t0; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dtbuf[h ^ lol][1]; } - uae_u32 sv3 = sv0; - if (sv3) { - uae_u32 spix3 = denise_render_sprites2(pix3, sv3); - if (spix3) { - dpix_val3 = denise_colors.acolors[spix3]; - } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + uae_u32 t2 = 0; + if (!extblank) { + t2 = dtbuf[h ^ lol][2]; } + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + uae_u32 t3 = 0; + if (!extblank) { + t3 = dtbuf[h ^ lol][3]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_n1_p6_ihires_dshres_spr_ntsc_filtered(void) +{ + lts_null(); +} +static void lts_ecs_fm0_dpf0_p6_ihires_dshres_spr_ntsc(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + uae_u8 pix2 = 0; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; + } + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + uae_u32 dpix_val3 = dpix_val2; + uae_u8 pix3 = pix2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; dtbuf[h][1] = dpix_val1; dtbuf[h][2] = dpix_val2; @@ -20474,9 +38289,6 @@ static void lts_ecs_fm0_dpf0_p2_ihires_dshres_spr_ntsc(void) *buf1++ = t3; *buf2++ = t3; } - if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { - copybpl2(); - } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER *debug_dma_dhpos_odd = denise_hcounter; @@ -20499,11 +38311,11 @@ static void lts_ecs_fm0_dpf0_p2_ihires_dshres_spr_ntsc(void) denise_cck++; } } -static void lts_ecs_fm0_dpf0_p2_ihires_dshres_spr_ntsc_filtered(void) +static void lts_ecs_fm0_dpf0_p6_ihires_dshres_spr_ntsc_filtered(void) { lts_null(); } -static void lts_ecs_fm0_dpf1_p2_ihires_dshres_spr_ntsc(void) +static void lts_ecs_fm0_dpf1_p6_ihires_dshres_spr_ntsc(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -20514,27 +38326,10 @@ static void lts_ecs_fm0_dpf1_p2_ihires_dshres_spr_ntsc(void) } int cnt = denise_hcounter << 2; if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl2(); - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; - } - shiftbpl2(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_lores(); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } } internal_pixel_cnt += 1; internal_pixel_cnt += 1; @@ -20542,15 +38337,7 @@ static void lts_ecs_fm0_dpf1_p2_ihires_dshres_spr_ntsc(void) uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = getbpl2(); - clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - dpix_val2 = denise_colors.acolors[val2]; - } - last_bpl_pix = pix2; } - shiftbpl2(); internal_pixel_cnt += 1; internal_pixel_cnt += 1; uae_u32 dpix_val1 = dpix_val0; @@ -20558,33 +38345,6 @@ static void lts_ecs_fm0_dpf1_p2_ihires_dshres_spr_ntsc(void) uae_u32 dpix_val3 = dpix_val2; uae_u8 pix3 = pix2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - } - } - uae_u32 sv1 = sv0; - if (sv1) { - uae_u32 spix1 = denise_render_sprites2(pix1, sv1); - if (spix1) { - dpix_val1 = denise_colors.acolors[spix1]; - } - } - uae_u32 sv2 = sv0; - if (sv2) { - uae_u32 spix2 = denise_render_sprites2(pix2, sv2); - if (spix2) { - dpix_val2 = denise_colors.acolors[spix2]; - } - } - uae_u32 sv3 = sv0; - if (sv3) { - uae_u32 spix3 = denise_render_sprites2(pix3, sv3); - if (spix3) { - dpix_val3 = denise_colors.acolors[spix3]; - } - } dtbuf[h][0] = dpix_val0; dtbuf[h][1] = dpix_val1; dtbuf[h][2] = dpix_val2; @@ -20634,12 +38394,6 @@ static void lts_ecs_fm0_dpf1_p2_ihires_dshres_spr_ntsc(void) *buf1++ = t3; *buf2++ = t3; } - if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { - copybpl2e(); - } - if (bpldat_copy[1] && (denise_hcounter_cmp & 7) == bplcon1_shift[1]) { - copybpl2o(); - } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER *debug_dma_dhpos_odd = denise_hcounter; @@ -20662,43 +38416,11 @@ static void lts_ecs_fm0_dpf1_p2_ihires_dshres_spr_ntsc(void) denise_cck++; } } -static void lts_ecs_fm0_dpf1_p2_ihires_dshres_spr_ntsc_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb0_p2_ihires_dshres_spr_ntsc(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb0_p2_ihires_dshres_spr_ntsc_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb1_p2_ihires_dshres_spr_ntsc(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb1_p2_ihires_dshres_spr_ntsc_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham0_p2_ihires_dshres_spr_ntsc(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham0_p2_ihires_dshres_spr_ntsc_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham1_p2_ihires_dshres_spr_ntsc(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham1_p2_ihires_dshres_spr_ntsc_filtered(void) +static void lts_ecs_fm0_dpf1_p6_ihires_dshres_spr_ntsc_filtered(void) { lts_null(); } -static void lts_ecs_fm0_n0_p4_ihires_dshres_spr_ntsc(void) +static void lts_ecs_fm0_ehb0_p6_ihires_dshres_spr_ntsc(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -20709,26 +38431,10 @@ static void lts_ecs_fm0_n0_p4_ihires_dshres_spr_ntsc(void) } int cnt = denise_hcounter << 2; if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl4(); - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0]; - } - last_bpl_pix = pix0; - } - shiftbpl4(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_lores(); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } } internal_pixel_cnt += 1; internal_pixel_cnt += 1; @@ -20736,14 +38442,7 @@ static void lts_ecs_fm0_n0_p4_ihires_dshres_spr_ntsc(void) uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = getbpl4(); - clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2]; - } - last_bpl_pix = pix2; } - shiftbpl4(); internal_pixel_cnt += 1; internal_pixel_cnt += 1; uae_u32 dpix_val1 = dpix_val0; @@ -20751,33 +38450,6 @@ static void lts_ecs_fm0_n0_p4_ihires_dshres_spr_ntsc(void) uae_u32 dpix_val3 = dpix_val2; uae_u8 pix3 = pix2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - } - } - uae_u32 sv1 = sv0; - if (sv1) { - uae_u32 spix1 = denise_render_sprites2(pix1, sv1); - if (spix1) { - dpix_val1 = denise_colors.acolors[spix1]; - } - } - uae_u32 sv2 = sv0; - if (sv2) { - uae_u32 spix2 = denise_render_sprites2(pix2, sv2); - if (spix2) { - dpix_val2 = denise_colors.acolors[spix2]; - } - } - uae_u32 sv3 = sv0; - if (sv3) { - uae_u32 spix3 = denise_render_sprites2(pix3, sv3); - if (spix3) { - dpix_val3 = denise_colors.acolors[spix3]; - } - } dtbuf[h][0] = dpix_val0; dtbuf[h][1] = dpix_val1; dtbuf[h][2] = dpix_val2; @@ -20827,9 +38499,6 @@ static void lts_ecs_fm0_n0_p4_ihires_dshres_spr_ntsc(void) *buf1++ = t3; *buf2++ = t3; } - if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { - copybpl4(); - } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER *debug_dma_dhpos_odd = denise_hcounter; @@ -20852,11 +38521,11 @@ static void lts_ecs_fm0_n0_p4_ihires_dshres_spr_ntsc(void) denise_cck++; } } -static void lts_ecs_fm0_n0_p4_ihires_dshres_spr_ntsc_filtered(void) +static void lts_ecs_fm0_ehb0_p6_ihires_dshres_spr_ntsc_filtered(void) { lts_null(); } -static void lts_ecs_fm0_n1_p4_ihires_dshres_spr_ntsc(void) +static void lts_ecs_fm0_ehb1_p6_ihires_dshres_spr_ntsc(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -20867,26 +38536,10 @@ static void lts_ecs_fm0_n1_p4_ihires_dshres_spr_ntsc(void) } int cnt = denise_hcounter << 2; if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl4(); - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0]; - } - last_bpl_pix = pix0; - } - shiftbpl4(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_lores(); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } } internal_pixel_cnt += 1; internal_pixel_cnt += 1; @@ -20894,14 +38547,7 @@ static void lts_ecs_fm0_n1_p4_ihires_dshres_spr_ntsc(void) uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = getbpl4(); - clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2]; - } - last_bpl_pix = pix2; } - shiftbpl4(); internal_pixel_cnt += 1; internal_pixel_cnt += 1; uae_u32 dpix_val1 = dpix_val0; @@ -20909,33 +38555,6 @@ static void lts_ecs_fm0_n1_p4_ihires_dshres_spr_ntsc(void) uae_u32 dpix_val3 = dpix_val2; uae_u8 pix3 = pix2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - } - } - uae_u32 sv1 = sv0; - if (sv1) { - uae_u32 spix1 = denise_render_sprites2(pix1, sv1); - if (spix1) { - dpix_val1 = denise_colors.acolors[spix1]; - } - } - uae_u32 sv2 = sv0; - if (sv2) { - uae_u32 spix2 = denise_render_sprites2(pix2, sv2); - if (spix2) { - dpix_val2 = denise_colors.acolors[spix2]; - } - } - uae_u32 sv3 = sv0; - if (sv3) { - uae_u32 spix3 = denise_render_sprites2(pix3, sv3); - if (spix3) { - dpix_val3 = denise_colors.acolors[spix3]; - } - } dtbuf[h][0] = dpix_val0; dtbuf[h][1] = dpix_val1; dtbuf[h][2] = dpix_val2; @@ -20985,12 +38604,6 @@ static void lts_ecs_fm0_n1_p4_ihires_dshres_spr_ntsc(void) *buf1++ = t3; *buf2++ = t3; } - if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { - copybpl4e(); - } - if (bpldat_copy[1] && (denise_hcounter_cmp & 7) == bplcon1_shift[1]) { - copybpl4o(); - } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER *debug_dma_dhpos_odd = denise_hcounter; @@ -21013,11 +38626,11 @@ static void lts_ecs_fm0_n1_p4_ihires_dshres_spr_ntsc(void) denise_cck++; } } -static void lts_ecs_fm0_n1_p4_ihires_dshres_spr_ntsc_filtered(void) +static void lts_ecs_fm0_ehb1_p6_ihires_dshres_spr_ntsc_filtered(void) { lts_null(); } -static void lts_ecs_fm0_dpf0_p4_ihires_dshres_spr_ntsc(void) +static void lts_ecs_fm0_ham0_p6_ihires_dshres_spr_ntsc(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -21028,43 +38641,18 @@ static void lts_ecs_fm0_dpf0_p4_ihires_dshres_spr_ntsc(void) } int cnt = denise_hcounter << 2; if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl4(); - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; - } - shiftbpl4(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_lores(); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } } internal_pixel_cnt += 1; internal_pixel_cnt += 1; uae_u8 pix2 = 0; - uae_u32 dpix_val2 = BLANK_COLOR; - if (!denise_blank_active) { - dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = getbpl4(); - clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - dpix_val2 = denise_colors.acolors[val2]; - } - last_bpl_pix = pix2; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + dpix_val2 = bordercolor; } - shiftbpl4(); internal_pixel_cnt += 1; internal_pixel_cnt += 1; uae_u32 dpix_val1 = dpix_val0; @@ -21072,33 +38660,6 @@ static void lts_ecs_fm0_dpf0_p4_ihires_dshres_spr_ntsc(void) uae_u32 dpix_val3 = dpix_val2; uae_u8 pix3 = pix2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - } - } - uae_u32 sv1 = sv0; - if (sv1) { - uae_u32 spix1 = denise_render_sprites2(pix1, sv1); - if (spix1) { - dpix_val1 = denise_colors.acolors[spix1]; - } - } - uae_u32 sv2 = sv0; - if (sv2) { - uae_u32 spix2 = denise_render_sprites2(pix2, sv2); - if (spix2) { - dpix_val2 = denise_colors.acolors[spix2]; - } - } - uae_u32 sv3 = sv0; - if (sv3) { - uae_u32 spix3 = denise_render_sprites2(pix3, sv3); - if (spix3) { - dpix_val3 = denise_colors.acolors[spix3]; - } - } dtbuf[h][0] = dpix_val0; dtbuf[h][1] = dpix_val1; dtbuf[h][2] = dpix_val2; @@ -21148,9 +38709,6 @@ static void lts_ecs_fm0_dpf0_p4_ihires_dshres_spr_ntsc(void) *buf1++ = t3; *buf2++ = t3; } - if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { - copybpl4(); - } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER *debug_dma_dhpos_odd = denise_hcounter; @@ -21173,11 +38731,11 @@ static void lts_ecs_fm0_dpf0_p4_ihires_dshres_spr_ntsc(void) denise_cck++; } } -static void lts_ecs_fm0_dpf0_p4_ihires_dshres_spr_ntsc_filtered(void) +static void lts_ecs_fm0_ham0_p6_ihires_dshres_spr_ntsc_filtered(void) { lts_null(); } -static void lts_ecs_fm0_dpf1_p4_ihires_dshres_spr_ntsc(void) +static void lts_ecs_fm0_ham1_p6_ihires_dshres_spr_ntsc(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -21188,27 +38746,10 @@ static void lts_ecs_fm0_dpf1_p4_ihires_dshres_spr_ntsc(void) } int cnt = denise_hcounter << 2; if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites(cnt + 0); uae_u8 pix0 = 0; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl4(); - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - dpix_val0 = denise_colors.acolors[val0]; - } - last_bpl_pix = pix0; - } - shiftbpl4(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_lores(); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } } internal_pixel_cnt += 1; internal_pixel_cnt += 1; @@ -21216,15 +38757,7 @@ static void lts_ecs_fm0_dpf1_p4_ihires_dshres_spr_ntsc(void) uae_u32 dpix_val2 = BLANK_COLOR; if (!denise_blank_active) { dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = getbpl4(); - clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - dpix_val2 = denise_colors.acolors[val2]; - } - last_bpl_pix = pix2; } - shiftbpl4(); internal_pixel_cnt += 1; internal_pixel_cnt += 1; uae_u32 dpix_val1 = dpix_val0; @@ -21232,33 +38765,6 @@ static void lts_ecs_fm0_dpf1_p4_ihires_dshres_spr_ntsc(void) uae_u32 dpix_val3 = dpix_val2; uae_u8 pix3 = pix2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - } - } - uae_u32 sv1 = sv0; - if (sv1) { - uae_u32 spix1 = denise_render_sprites2(pix1, sv1); - if (spix1) { - dpix_val1 = denise_colors.acolors[spix1]; - } - } - uae_u32 sv2 = sv0; - if (sv2) { - uae_u32 spix2 = denise_render_sprites2(pix2, sv2); - if (spix2) { - dpix_val2 = denise_colors.acolors[spix2]; - } - } - uae_u32 sv3 = sv0; - if (sv3) { - uae_u32 spix3 = denise_render_sprites2(pix3, sv3); - if (spix3) { - dpix_val3 = denise_colors.acolors[spix3]; - } - } dtbuf[h][0] = dpix_val0; dtbuf[h][1] = dpix_val1; dtbuf[h][2] = dpix_val2; @@ -21308,12 +38814,6 @@ static void lts_ecs_fm0_dpf1_p4_ihires_dshres_spr_ntsc(void) *buf1++ = t3; *buf2++ = t3; } - if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { - copybpl4e(); - } - if (bpldat_copy[1] && (denise_hcounter_cmp & 7) == bplcon1_shift[1]) { - copybpl4o(); - } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER *debug_dma_dhpos_odd = denise_hcounter; @@ -21336,166 +38836,6 @@ static void lts_ecs_fm0_dpf1_p4_ihires_dshres_spr_ntsc(void) denise_cck++; } } -static void lts_ecs_fm0_dpf1_p4_ihires_dshres_spr_ntsc_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb0_p4_ihires_dshres_spr_ntsc(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb0_p4_ihires_dshres_spr_ntsc_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb1_p4_ihires_dshres_spr_ntsc(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb1_p4_ihires_dshres_spr_ntsc_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham0_p4_ihires_dshres_spr_ntsc(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham0_p4_ihires_dshres_spr_ntsc_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham1_p4_ihires_dshres_spr_ntsc(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham1_p4_ihires_dshres_spr_ntsc_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_n0_p5_ihires_dshres_spr_ntsc(void) -{ - lts_null(); -} -static void lts_ecs_fm0_n0_p5_ihires_dshres_spr_ntsc_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_n1_p5_ihires_dshres_spr_ntsc(void) -{ - lts_null(); -} -static void lts_ecs_fm0_n1_p5_ihires_dshres_spr_ntsc_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_dpf0_p5_ihires_dshres_spr_ntsc(void) -{ - lts_null(); -} -static void lts_ecs_fm0_dpf0_p5_ihires_dshres_spr_ntsc_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_dpf1_p5_ihires_dshres_spr_ntsc(void) -{ - lts_null(); -} -static void lts_ecs_fm0_dpf1_p5_ihires_dshres_spr_ntsc_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb0_p5_ihires_dshres_spr_ntsc(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb0_p5_ihires_dshres_spr_ntsc_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb1_p5_ihires_dshres_spr_ntsc(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb1_p5_ihires_dshres_spr_ntsc_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham0_p5_ihires_dshres_spr_ntsc(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham0_p5_ihires_dshres_spr_ntsc_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham1_p5_ihires_dshres_spr_ntsc(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham1_p5_ihires_dshres_spr_ntsc_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_n0_p6_ihires_dshres_spr_ntsc(void) -{ - lts_null(); -} -static void lts_ecs_fm0_n0_p6_ihires_dshres_spr_ntsc_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_n1_p6_ihires_dshres_spr_ntsc(void) -{ - lts_null(); -} -static void lts_ecs_fm0_n1_p6_ihires_dshres_spr_ntsc_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_dpf0_p6_ihires_dshres_spr_ntsc(void) -{ - lts_null(); -} -static void lts_ecs_fm0_dpf0_p6_ihires_dshres_spr_ntsc_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_dpf1_p6_ihires_dshres_spr_ntsc(void) -{ - lts_null(); -} -static void lts_ecs_fm0_dpf1_p6_ihires_dshres_spr_ntsc_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb0_p6_ihires_dshres_spr_ntsc(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb0_p6_ihires_dshres_spr_ntsc_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb1_p6_ihires_dshres_spr_ntsc(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb1_p6_ihires_dshres_spr_ntsc_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham0_p6_ihires_dshres_spr_ntsc(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham0_p6_ihires_dshres_spr_ntsc_filtered(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham1_p6_ihires_dshres_spr_ntsc(void) -{ - lts_null(); -} static void lts_ecs_fm0_ham1_p6_ihires_dshres_spr_ntsc_filtered(void) { lts_null(); diff --git a/linetoscr_ocs_ecs_ntsc_genlock.cpp b/linetoscr_ocs_ecs_ntsc_genlock.cpp index 1de091bc..5cde5a51 100644 --- a/linetoscr_ocs_ecs_ntsc_genlock.cpp +++ b/linetoscr_ocs_ecs_ntsc_genlock.cpp @@ -2089,38 +2089,6 @@ static void lts_ecs_fm0_dpf1_p4_ihires_dlores_ntsc_filtered_genlock(void) } } static void lts_ecs_fm0_ehb0_p4_ihires_dlores_ntsc_genlock(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb0_p4_ihires_dlores_ntsc_filtered_genlock(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb1_p4_ihires_dlores_ntsc_genlock(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb1_p4_ihires_dlores_ntsc_filtered_genlock(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham0_p4_ihires_dlores_ntsc_genlock(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham0_p4_ihires_dlores_ntsc_filtered_genlock(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham1_p4_ihires_dlores_ntsc_genlock(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham1_p4_ihires_dlores_ntsc_filtered_genlock(void) -{ - lts_null(); -} -static void lts_ecs_fm0_n0_p4_ihires_dlores_spr_ntsc_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -2131,29 +2099,12 @@ static void lts_ecs_fm0_n0_p4_ihires_dlores_spr_ntsc_genlock(void) } int cnt = denise_hcounter << 2; if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl4(); - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0]; - gpix0 = get_genlock_transparency(pix0); - } - last_bpl_pix = pix0; - } - shiftbpl4(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_lores(); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } } internal_pixel_cnt += 2; uae_u8 pix1 = 0; @@ -2162,25 +2113,9 @@ static void lts_ecs_fm0_n0_p4_ihires_dlores_spr_ntsc_genlock(void) if (!denise_blank_active) { gpix1 = get_genlock_transparency_border(); dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = getbpl4(); - clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1]; - gpix1 = get_genlock_transparency(pix1); - } - last_bpl_pix = pix1; } - shiftbpl4(); internal_pixel_cnt += 2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - gpix0 = get_genlock_transparency(spix0); - - } - } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; uae_u32 t0 = 0; @@ -2196,9 +2131,6 @@ 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_cmp & 7) == bplcon1_shift[0]) { - copybpl4(); - } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER *debug_dma_dhpos_odd = denise_hcounter; @@ -2221,7 +2153,7 @@ static void lts_ecs_fm0_n0_p4_ihires_dlores_spr_ntsc_genlock(void) denise_cck++; } } -static void lts_ecs_fm0_n0_p4_ihires_dlores_spr_ntsc_filtered_genlock(void) +static void lts_ecs_fm0_ehb0_p4_ihires_dlores_ntsc_filtered_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -2232,29 +2164,12 @@ static void lts_ecs_fm0_n0_p4_ihires_dlores_spr_ntsc_filtered_genlock(void) } int cnt = denise_hcounter << 2; if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl4(); - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0]; - gpix0 = get_genlock_transparency(pix0); - } - last_bpl_pix = pix0; - } - shiftbpl4(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_lores(); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } } internal_pixel_cnt += 2; uae_u8 pix1 = 0; @@ -2263,28 +2178,11 @@ static void lts_ecs_fm0_n0_p4_ihires_dlores_spr_ntsc_filtered_genlock(void) if (!denise_blank_active) { gpix1 = get_genlock_transparency_border(); dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = getbpl4(); - clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1]; - gpix1 = get_genlock_transparency(pix1); - } - last_bpl_pix = pix1; } - shiftbpl4(); internal_pixel_cnt += 2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dpix_val0 = filter_pixel(dpix_val0, dpix_val1); gpix0 = filter_pixel_genlock(gpix0, gpix1); - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - gpix0 = get_genlock_transparency(spix0); - - dpix_val1 = dpix_val0; - } - } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; uae_u32 t0 = 0; @@ -2300,9 +2198,6 @@ 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_cmp & 7) == bplcon1_shift[0]) { - copybpl4(); - } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER *debug_dma_dhpos_odd = denise_hcounter; @@ -2325,7 +2220,7 @@ static void lts_ecs_fm0_n0_p4_ihires_dlores_spr_ntsc_filtered_genlock(void) denise_cck++; } } -static void lts_ecs_fm0_n1_p4_ihires_dlores_spr_ntsc_genlock(void) +static void lts_ecs_fm0_ehb1_p4_ihires_dlores_ntsc_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -2336,29 +2231,12 @@ static void lts_ecs_fm0_n1_p4_ihires_dlores_spr_ntsc_genlock(void) } int cnt = denise_hcounter << 2; if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl4(); - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0]; - gpix0 = get_genlock_transparency(pix0); - } - last_bpl_pix = pix0; - } - shiftbpl4(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_lores(); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } } internal_pixel_cnt += 2; uae_u8 pix1 = 0; @@ -2367,25 +2245,9 @@ static void lts_ecs_fm0_n1_p4_ihires_dlores_spr_ntsc_genlock(void) if (!denise_blank_active) { gpix1 = get_genlock_transparency_border(); dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = getbpl4(); - clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1]; - gpix1 = get_genlock_transparency(pix1); - } - last_bpl_pix = pix1; } - shiftbpl4(); internal_pixel_cnt += 2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - gpix0 = get_genlock_transparency(spix0); - - } - } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; uae_u32 t0 = 0; @@ -2401,12 +2263,6 @@ 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_cmp & 7) == bplcon1_shift[0]) { - copybpl4e(); - } - if (bpldat_copy[1] && (denise_hcounter_cmp & 7) == bplcon1_shift[1]) { - copybpl4o(); - } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER *debug_dma_dhpos_odd = denise_hcounter; @@ -2429,7 +2285,7 @@ static void lts_ecs_fm0_n1_p4_ihires_dlores_spr_ntsc_genlock(void) denise_cck++; } } -static void lts_ecs_fm0_n1_p4_ihires_dlores_spr_ntsc_filtered_genlock(void) +static void lts_ecs_fm0_ehb1_p4_ihires_dlores_ntsc_filtered_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -2440,29 +2296,12 @@ static void lts_ecs_fm0_n1_p4_ihires_dlores_spr_ntsc_filtered_genlock(void) } int cnt = denise_hcounter << 2; if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl4(); - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0]; - gpix0 = get_genlock_transparency(pix0); - } - last_bpl_pix = pix0; - } - shiftbpl4(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_lores(); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } } internal_pixel_cnt += 2; uae_u8 pix1 = 0; @@ -2471,28 +2310,11 @@ static void lts_ecs_fm0_n1_p4_ihires_dlores_spr_ntsc_filtered_genlock(void) if (!denise_blank_active) { gpix1 = get_genlock_transparency_border(); dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = getbpl4(); - clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1]; - gpix1 = get_genlock_transparency(pix1); - } - last_bpl_pix = pix1; } - shiftbpl4(); internal_pixel_cnt += 2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dpix_val0 = filter_pixel(dpix_val0, dpix_val1); gpix0 = filter_pixel_genlock(gpix0, gpix1); - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - gpix0 = get_genlock_transparency(spix0); - - dpix_val1 = dpix_val0; - } - } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; uae_u32 t0 = 0; @@ -2508,12 +2330,6 @@ 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_cmp & 7) == bplcon1_shift[0]) { - copybpl4e(); - } - if (bpldat_copy[1] && (denise_hcounter_cmp & 7) == bplcon1_shift[1]) { - copybpl4o(); - } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER *debug_dma_dhpos_odd = denise_hcounter; @@ -2536,7 +2352,7 @@ static void lts_ecs_fm0_n1_p4_ihires_dlores_spr_ntsc_filtered_genlock(void) denise_cck++; } } -static void lts_ecs_fm0_dpf0_p4_ihires_dlores_spr_ntsc_genlock(void) +static void lts_ecs_fm0_ham0_p4_ihires_dlores_ntsc_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -2547,30 +2363,12 @@ static void lts_ecs_fm0_dpf0_p4_ihires_dlores_spr_ntsc_genlock(void) } int cnt = denise_hcounter << 2; if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl4(); - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - dpix_val0 = denise_colors.acolors[val0]; - gpix0 = get_genlock_transparency(dpf_lookup[pix0]); - } - last_bpl_pix = pix0; - } - shiftbpl4(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_lores(); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } } internal_pixel_cnt += 2; uae_u8 pix1 = 0; @@ -2579,26 +2377,9 @@ static void lts_ecs_fm0_dpf0_p4_ihires_dlores_spr_ntsc_genlock(void) if (!denise_blank_active) { gpix1 = get_genlock_transparency_border(); dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = getbpl4(); - clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - dpix_val1 = denise_colors.acolors[val1]; - gpix1 = get_genlock_transparency(dpf_lookup[pix1]); - } - last_bpl_pix = pix1; } - shiftbpl4(); internal_pixel_cnt += 2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - gpix0 = get_genlock_transparency(spix0); - - } - } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; uae_u32 t0 = 0; @@ -2614,9 +2395,6 @@ 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_cmp & 7) == bplcon1_shift[0]) { - copybpl4(); - } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER *debug_dma_dhpos_odd = denise_hcounter; @@ -2639,7 +2417,7 @@ static void lts_ecs_fm0_dpf0_p4_ihires_dlores_spr_ntsc_genlock(void) denise_cck++; } } -static void lts_ecs_fm0_dpf0_p4_ihires_dlores_spr_ntsc_filtered_genlock(void) +static void lts_ecs_fm0_ham0_p4_ihires_dlores_ntsc_filtered_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -2650,30 +2428,12 @@ static void lts_ecs_fm0_dpf0_p4_ihires_dlores_spr_ntsc_filtered_genlock(void) } int cnt = denise_hcounter << 2; if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl4(); - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - dpix_val0 = denise_colors.acolors[val0]; - gpix0 = get_genlock_transparency(dpf_lookup[pix0]); - } - last_bpl_pix = pix0; - } - shiftbpl4(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_lores(); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } } internal_pixel_cnt += 2; uae_u8 pix1 = 0; @@ -2682,29 +2442,11 @@ static void lts_ecs_fm0_dpf0_p4_ihires_dlores_spr_ntsc_filtered_genlock(void) if (!denise_blank_active) { gpix1 = get_genlock_transparency_border(); dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = getbpl4(); - clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - dpix_val1 = denise_colors.acolors[val1]; - gpix1 = get_genlock_transparency(dpf_lookup[pix1]); - } - last_bpl_pix = pix1; } - shiftbpl4(); internal_pixel_cnt += 2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dpix_val0 = filter_pixel(dpix_val0, dpix_val1); gpix0 = filter_pixel_genlock(gpix0, gpix1); - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - gpix0 = get_genlock_transparency(spix0); - - dpix_val1 = dpix_val0; - } - } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; uae_u32 t0 = 0; @@ -2720,9 +2462,6 @@ 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_cmp & 7) == bplcon1_shift[0]) { - copybpl4(); - } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER *debug_dma_dhpos_odd = denise_hcounter; @@ -2745,7 +2484,7 @@ static void lts_ecs_fm0_dpf0_p4_ihires_dlores_spr_ntsc_filtered_genlock(void) denise_cck++; } } -static void lts_ecs_fm0_dpf1_p4_ihires_dlores_spr_ntsc_genlock(void) +static void lts_ecs_fm0_ham1_p4_ihires_dlores_ntsc_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -2756,30 +2495,12 @@ static void lts_ecs_fm0_dpf1_p4_ihires_dlores_spr_ntsc_genlock(void) } int cnt = denise_hcounter << 2; if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl4(); - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - dpix_val0 = denise_colors.acolors[val0]; - gpix0 = get_genlock_transparency(dpf_lookup[pix0]); - } - last_bpl_pix = pix0; - } - shiftbpl4(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_lores(); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } } internal_pixel_cnt += 2; uae_u8 pix1 = 0; @@ -2788,26 +2509,9 @@ static void lts_ecs_fm0_dpf1_p4_ihires_dlores_spr_ntsc_genlock(void) if (!denise_blank_active) { gpix1 = get_genlock_transparency_border(); dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = getbpl4(); - clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - dpix_val1 = denise_colors.acolors[val1]; - gpix1 = get_genlock_transparency(dpf_lookup[pix1]); - } - last_bpl_pix = pix1; } - shiftbpl4(); internal_pixel_cnt += 2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - gpix0 = get_genlock_transparency(spix0); - - } - } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; uae_u32 t0 = 0; @@ -2823,11 +2527,72 @@ 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_cmp & 7) == bplcon1_shift[0]) { - copybpl4e(); + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ham1_p4_ihires_dlores_ntsc_filtered_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; } - if (bpldat_copy[1] && (denise_hcounter_cmp & 7) == bplcon1_shift[1]) { - copybpl4o(); + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + gpix0 = filter_pixel_genlock(gpix0, gpix1); + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -2851,7 +2616,7 @@ static void lts_ecs_fm0_dpf1_p4_ihires_dlores_spr_ntsc_genlock(void) denise_cck++; } } -static void lts_ecs_fm0_dpf1_p4_ihires_dlores_spr_ntsc_filtered_genlock(void) +static void lts_ecs_fm0_n0_p4_ihires_dlores_spr_ntsc_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -2872,9 +2637,8 @@ static void lts_ecs_fm0_dpf1_p4_ihires_dlores_spr_ntsc_filtered_genlock(void) if (denise_hdiw && bpl1dat_trigger) { pix0 = getbpl4(); clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - dpix_val0 = denise_colors.acolors[val0]; - gpix0 = get_genlock_transparency(dpf_lookup[pix0]); + dpix_val0 = denise_colors.acolors[pix0]; + gpix0 = get_genlock_transparency(pix0); } last_bpl_pix = pix0; } @@ -2897,24 +2661,20 @@ static void lts_ecs_fm0_dpf1_p4_ihires_dlores_spr_ntsc_filtered_genlock(void) if (denise_hdiw && bpl1dat_trigger) { pix1 = getbpl4(); clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - dpix_val1 = denise_colors.acolors[val1]; - gpix1 = get_genlock_transparency(dpf_lookup[pix1]); + dpix_val1 = denise_colors.acolors[pix1]; + gpix1 = get_genlock_transparency(pix1); } last_bpl_pix = pix1; } shiftbpl4(); internal_pixel_cnt += 2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - dpix_val0 = filter_pixel(dpix_val0, dpix_val1); - gpix0 = filter_pixel_genlock(gpix0, gpix1); if (sv0) { uae_u32 spix0 = denise_render_sprites2(pix0, sv0); if (spix0) { dpix_val0 = denise_colors.acolors[spix0]; gpix0 = get_genlock_transparency(spix0); - dpix_val1 = dpix_val0; } } dtbuf[h][0] = dpix_val0; @@ -2933,10 +2693,7 @@ static void lts_ecs_fm0_dpf1_p4_ihires_dlores_spr_ntsc_filtered_genlock(void) *gbuf++ = dtgbuf[h ^ lol][0]; } if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { - copybpl4e(); - } - if (bpldat_copy[1] && (denise_hcounter_cmp & 7) == bplcon1_shift[1]) { - copybpl4o(); + copybpl4(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -2960,39 +2717,7 @@ static void lts_ecs_fm0_dpf1_p4_ihires_dlores_spr_ntsc_filtered_genlock(void) denise_cck++; } } -static void lts_ecs_fm0_ehb0_p4_ihires_dlores_spr_ntsc_genlock(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb0_p4_ihires_dlores_spr_ntsc_filtered_genlock(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb1_p4_ihires_dlores_spr_ntsc_genlock(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb1_p4_ihires_dlores_spr_ntsc_filtered_genlock(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham0_p4_ihires_dlores_spr_ntsc_genlock(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham0_p4_ihires_dlores_spr_ntsc_filtered_genlock(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham1_p4_ihires_dlores_spr_ntsc_genlock(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham1_p4_ihires_dlores_spr_ntsc_filtered_genlock(void) -{ - lts_null(); -} -static void lts_ecs_fm0_n0_p6_ilores_dhires_ntsc_genlock(void) +static void lts_ecs_fm0_n0_p4_ihires_dlores_spr_ntsc_filtered_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -3003,6 +2728,7 @@ static void lts_ecs_fm0_n0_p6_ilores_dhires_ntsc_genlock(void) } int cnt = denise_hcounter << 2; if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; @@ -3010,27 +2736,53 @@ static void lts_ecs_fm0_n0_p6_ilores_dhires_ntsc_genlock(void) gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl6(); + pix0 = getbpl4(); clxdat |= bplcoltable[pix0]; - if (decode_specials) { - pix0 = decode_denise_specials(pix0); - } dpix_val0 = denise_colors.acolors[pix0]; gpix0 = get_genlock_transparency(pix0); } last_bpl_pix = pix0; } - shiftbpl6(); + shiftbpl4(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_lores(); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = getbpl4(); + clxdat |= bplcoltable[pix1]; + dpix_val1 = denise_colors.acolors[pix1]; + gpix1 = get_genlock_transparency(pix1); + } + last_bpl_pix = pix1; + } + shiftbpl4(); internal_pixel_cnt += 2; - uae_u32 dpix_val1 = dpix_val0; - uae_u8 pix1 = pix0; - uae_u8 gpix1 = gpix0; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + gpix0 = filter_pixel_genlock(gpix0, gpix1); + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + dpix_val1 = dpix_val0; + } + } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; - dtbuf[h][1] = dpix_val1; - dtgbuf[h][1] = gpix1; uae_u32 t0 = 0; if (!extblank) { t0 = dtbuf[h ^ lol][0]; @@ -3043,21 +2795,9 @@ static void lts_ecs_fm0_n0_p6_ilores_dhires_ntsc_genlock(void) *buf1++ = t0; *buf2++ = t0; *gbuf++ = dtgbuf[h ^ lol][0]; - uae_u32 t1 = 0; - if (!extblank) { - t1 = dtbuf[h ^ lol][1]; - } - #ifdef DEBUGGER - if (decode_specials_debug) { - t1 = decode_denise_specials_debug(t1, cnt + 2); - } - #endif - *buf1++ = t1; - *buf2++ = t1; - *gbuf++ = dtgbuf[h ^ lol][1]; } - if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl6(); + if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { + copybpl4(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -3081,11 +2821,7 @@ static void lts_ecs_fm0_n0_p6_ilores_dhires_ntsc_genlock(void) denise_cck++; } } -static void lts_ecs_fm0_n0_p6_ilores_dhires_ntsc_filtered_genlock(void) -{ - lts_null(); -} -static void lts_ecs_fm0_n1_p6_ilores_dhires_ntsc_genlock(void) +static void lts_ecs_fm0_n1_p4_ihires_dlores_spr_ntsc_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -3096,6 +2832,7 @@ static void lts_ecs_fm0_n1_p6_ilores_dhires_ntsc_genlock(void) } int cnt = denise_hcounter << 2; if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; @@ -3103,27 +2840,50 @@ static void lts_ecs_fm0_n1_p6_ilores_dhires_ntsc_genlock(void) gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl6(); + pix0 = getbpl4(); clxdat |= bplcoltable[pix0]; - if (decode_specials) { - pix0 = decode_denise_specials(pix0); - } dpix_val0 = denise_colors.acolors[pix0]; gpix0 = get_genlock_transparency(pix0); } last_bpl_pix = pix0; } - shiftbpl6(); - internal_pixel_cnt += 2; - internal_pixel_cnt += 2; - uae_u32 dpix_val1 = dpix_val0; - uae_u8 pix1 = pix0; - uae_u8 gpix1 = gpix0; + shiftbpl4(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_lores(); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = getbpl4(); + clxdat |= bplcoltable[pix1]; + dpix_val1 = denise_colors.acolors[pix1]; + gpix1 = get_genlock_transparency(pix1); + } + last_bpl_pix = pix1; + } + shiftbpl4(); + internal_pixel_cnt += 2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; - dtbuf[h][1] = dpix_val1; - dtgbuf[h][1] = gpix1; uae_u32 t0 = 0; if (!extblank) { t0 = dtbuf[h ^ lol][0]; @@ -3136,24 +2896,12 @@ static void lts_ecs_fm0_n1_p6_ilores_dhires_ntsc_genlock(void) *buf1++ = t0; *buf2++ = t0; *gbuf++ = dtgbuf[h ^ lol][0]; - uae_u32 t1 = 0; - if (!extblank) { - t1 = dtbuf[h ^ lol][1]; - } - #ifdef DEBUGGER - if (decode_specials_debug) { - t1 = decode_denise_specials_debug(t1, cnt + 2); - } - #endif - *buf1++ = t1; - *buf2++ = t1; - *gbuf++ = dtgbuf[h ^ lol][1]; } - if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl6e(); + if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { + copybpl4e(); } - if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) { - copybpl6o(); + if (bpldat_copy[1] && (denise_hcounter_cmp & 7) == bplcon1_shift[1]) { + copybpl4o(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -3177,11 +2925,7 @@ static void lts_ecs_fm0_n1_p6_ilores_dhires_ntsc_genlock(void) denise_cck++; } } -static void lts_ecs_fm0_n1_p6_ilores_dhires_ntsc_filtered_genlock(void) -{ - lts_null(); -} -static void lts_ecs_fm0_dpf0_p6_ilores_dhires_ntsc_genlock(void) +static void lts_ecs_fm0_n1_p4_ihires_dlores_spr_ntsc_filtered_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -3192,6 +2936,7 @@ static void lts_ecs_fm0_dpf0_p6_ilores_dhires_ntsc_genlock(void) } int cnt = denise_hcounter << 2; if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; @@ -3199,28 +2944,53 @@ static void lts_ecs_fm0_dpf0_p6_ilores_dhires_ntsc_genlock(void) gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl6(); + pix0 = getbpl4(); clxdat |= bplcoltable[pix0]; - if (decode_specials) { - pix0 = decode_denise_specials(pix0); - } - uae_u8 val0 = dpf_lookup[pix0]; - dpix_val0 = denise_colors.acolors[val0]; - gpix0 = get_genlock_transparency(dpf_lookup[pix0]); + dpix_val0 = denise_colors.acolors[pix0]; + gpix0 = get_genlock_transparency(pix0); } last_bpl_pix = pix0; } - shiftbpl6(); + shiftbpl4(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_lores(); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = getbpl4(); + clxdat |= bplcoltable[pix1]; + dpix_val1 = denise_colors.acolors[pix1]; + gpix1 = get_genlock_transparency(pix1); + } + last_bpl_pix = pix1; + } + shiftbpl4(); internal_pixel_cnt += 2; - uae_u32 dpix_val1 = dpix_val0; - uae_u8 pix1 = pix0; - uae_u8 gpix1 = gpix0; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + gpix0 = filter_pixel_genlock(gpix0, gpix1); + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + dpix_val1 = dpix_val0; + } + } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; - dtbuf[h][1] = dpix_val1; - dtgbuf[h][1] = gpix1; uae_u32 t0 = 0; if (!extblank) { t0 = dtbuf[h ^ lol][0]; @@ -3233,21 +3003,12 @@ static void lts_ecs_fm0_dpf0_p6_ilores_dhires_ntsc_genlock(void) *buf1++ = t0; *buf2++ = t0; *gbuf++ = dtgbuf[h ^ lol][0]; - uae_u32 t1 = 0; - if (!extblank) { - t1 = dtbuf[h ^ lol][1]; - } - #ifdef DEBUGGER - if (decode_specials_debug) { - t1 = decode_denise_specials_debug(t1, cnt + 2); - } - #endif - *buf1++ = t1; - *buf2++ = t1; - *gbuf++ = dtgbuf[h ^ lol][1]; } - if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl6(); + if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { + copybpl4e(); + } + if (bpldat_copy[1] && (denise_hcounter_cmp & 7) == bplcon1_shift[1]) { + copybpl4o(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -3271,11 +3032,7 @@ static void lts_ecs_fm0_dpf0_p6_ilores_dhires_ntsc_genlock(void) denise_cck++; } } -static void lts_ecs_fm0_dpf0_p6_ilores_dhires_ntsc_filtered_genlock(void) -{ - lts_null(); -} -static void lts_ecs_fm0_dpf1_p6_ilores_dhires_ntsc_genlock(void) +static void lts_ecs_fm0_dpf0_p4_ihires_dlores_spr_ntsc_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -3286,6 +3043,7 @@ static void lts_ecs_fm0_dpf1_p6_ilores_dhires_ntsc_genlock(void) } int cnt = denise_hcounter << 2; if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; @@ -3293,28 +3051,52 @@ static void lts_ecs_fm0_dpf1_p6_ilores_dhires_ntsc_genlock(void) gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl6(); + pix0 = getbpl4(); clxdat |= bplcoltable[pix0]; - if (decode_specials) { - pix0 = decode_denise_specials(pix0); - } uae_u8 val0 = dpf_lookup[pix0]; dpix_val0 = denise_colors.acolors[val0]; gpix0 = get_genlock_transparency(dpf_lookup[pix0]); } last_bpl_pix = pix0; } - shiftbpl6(); + shiftbpl4(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_lores(); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = getbpl4(); + clxdat |= bplcoltable[pix1]; + uae_u8 val1 = dpf_lookup[pix1]; + dpix_val1 = denise_colors.acolors[val1]; + gpix1 = get_genlock_transparency(dpf_lookup[pix1]); + } + last_bpl_pix = pix1; + } + shiftbpl4(); internal_pixel_cnt += 2; - uae_u32 dpix_val1 = dpix_val0; - uae_u8 pix1 = pix0; - uae_u8 gpix1 = gpix0; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; - dtbuf[h][1] = dpix_val1; - dtgbuf[h][1] = gpix1; uae_u32 t0 = 0; if (!extblank) { t0 = dtbuf[h ^ lol][0]; @@ -3327,24 +3109,9 @@ static void lts_ecs_fm0_dpf1_p6_ilores_dhires_ntsc_genlock(void) *buf1++ = t0; *buf2++ = t0; *gbuf++ = dtgbuf[h ^ lol][0]; - uae_u32 t1 = 0; - if (!extblank) { - t1 = dtbuf[h ^ lol][1]; - } - #ifdef DEBUGGER - if (decode_specials_debug) { - t1 = decode_denise_specials_debug(t1, cnt + 2); - } - #endif - *buf1++ = t1; - *buf2++ = t1; - *gbuf++ = dtgbuf[h ^ lol][1]; } - if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl6e(); - } - if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) { - copybpl6o(); + if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { + copybpl4(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -3368,11 +3135,7 @@ static void lts_ecs_fm0_dpf1_p6_ilores_dhires_ntsc_genlock(void) denise_cck++; } } -static void lts_ecs_fm0_dpf1_p6_ilores_dhires_ntsc_filtered_genlock(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb0_p6_ilores_dhires_ntsc_genlock(void) +static void lts_ecs_fm0_dpf0_p4_ihires_dlores_spr_ntsc_filtered_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -3383,6 +3146,7 @@ static void lts_ecs_fm0_ehb0_p6_ilores_dhires_ntsc_genlock(void) } int cnt = denise_hcounter << 2; if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; @@ -3390,32 +3154,55 @@ static void lts_ecs_fm0_ehb0_p6_ilores_dhires_ntsc_genlock(void) gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl6(); + pix0 = getbpl4(); clxdat |= bplcoltable[pix0]; - if (decode_specials) { - pix0 = decode_denise_specials(pix0); - } - pix0 &= bplehb_mask; - if (pix0 <= 31) { - dpix_val0 = denise_colors.acolors[pix0]; - } else { - dpix_val0 = p_xcolors[(denise_colors.color_regs_ecs[pix0 - 32] >> 1) & 0x777]; - } - gpix0 = get_genlock_transparency(pix0 & 31); + uae_u8 val0 = dpf_lookup[pix0]; + dpix_val0 = denise_colors.acolors[val0]; + gpix0 = get_genlock_transparency(dpf_lookup[pix0]); } last_bpl_pix = pix0; } - shiftbpl6(); + shiftbpl4(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_lores(); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = getbpl4(); + clxdat |= bplcoltable[pix1]; + uae_u8 val1 = dpf_lookup[pix1]; + dpix_val1 = denise_colors.acolors[val1]; + gpix1 = get_genlock_transparency(dpf_lookup[pix1]); + } + last_bpl_pix = pix1; + } + shiftbpl4(); internal_pixel_cnt += 2; - uae_u32 dpix_val1 = dpix_val0; - uae_u8 pix1 = pix0; - uae_u8 gpix1 = gpix0; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - dtbuf[h][0] = dpix_val0; - dtgbuf[h][0] = gpix0; - dtbuf[h][1] = dpix_val1; - dtgbuf[h][1] = gpix1; + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + gpix0 = filter_pixel_genlock(gpix0, gpix1); + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + dpix_val1 = dpix_val0; + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; uae_u32 t0 = 0; if (!extblank) { t0 = dtbuf[h ^ lol][0]; @@ -3428,21 +3215,9 @@ static void lts_ecs_fm0_ehb0_p6_ilores_dhires_ntsc_genlock(void) *buf1++ = t0; *buf2++ = t0; *gbuf++ = dtgbuf[h ^ lol][0]; - uae_u32 t1 = 0; - if (!extblank) { - t1 = dtbuf[h ^ lol][1]; - } - #ifdef DEBUGGER - if (decode_specials_debug) { - t1 = decode_denise_specials_debug(t1, cnt + 2); - } - #endif - *buf1++ = t1; - *buf2++ = t1; - *gbuf++ = dtgbuf[h ^ lol][1]; } - if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl6(); + if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { + copybpl4(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -3466,11 +3241,7 @@ static void lts_ecs_fm0_ehb0_p6_ilores_dhires_ntsc_genlock(void) denise_cck++; } } -static void lts_ecs_fm0_ehb0_p6_ilores_dhires_ntsc_filtered_genlock(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb1_p6_ilores_dhires_ntsc_genlock(void) +static void lts_ecs_fm0_dpf1_p4_ihires_dlores_spr_ntsc_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -3481,6 +3252,7 @@ static void lts_ecs_fm0_ehb1_p6_ilores_dhires_ntsc_genlock(void) } int cnt = denise_hcounter << 2; if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; @@ -3488,32 +3260,52 @@ static void lts_ecs_fm0_ehb1_p6_ilores_dhires_ntsc_genlock(void) gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl6(); + pix0 = getbpl4(); clxdat |= bplcoltable[pix0]; - if (decode_specials) { - pix0 = decode_denise_specials(pix0); - } - pix0 &= bplehb_mask; - if (pix0 <= 31) { - dpix_val0 = denise_colors.acolors[pix0]; - } else { - dpix_val0 = p_xcolors[(denise_colors.color_regs_ecs[pix0 - 32] >> 1) & 0x777]; - } - gpix0 = get_genlock_transparency(pix0 & 31); + uae_u8 val0 = dpf_lookup[pix0]; + dpix_val0 = denise_colors.acolors[val0]; + gpix0 = get_genlock_transparency(dpf_lookup[pix0]); } last_bpl_pix = pix0; } - shiftbpl6(); + shiftbpl4(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_lores(); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = getbpl4(); + clxdat |= bplcoltable[pix1]; + uae_u8 val1 = dpf_lookup[pix1]; + dpix_val1 = denise_colors.acolors[val1]; + gpix1 = get_genlock_transparency(dpf_lookup[pix1]); + } + last_bpl_pix = pix1; + } + shiftbpl4(); internal_pixel_cnt += 2; - uae_u32 dpix_val1 = dpix_val0; - uae_u8 pix1 = pix0; - uae_u8 gpix1 = gpix0; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; - dtbuf[h][1] = dpix_val1; - dtgbuf[h][1] = gpix1; uae_u32 t0 = 0; if (!extblank) { t0 = dtbuf[h ^ lol][0]; @@ -3526,24 +3318,12 @@ static void lts_ecs_fm0_ehb1_p6_ilores_dhires_ntsc_genlock(void) *buf1++ = t0; *buf2++ = t0; *gbuf++ = dtgbuf[h ^ lol][0]; - uae_u32 t1 = 0; - if (!extblank) { - t1 = dtbuf[h ^ lol][1]; - } - #ifdef DEBUGGER - if (decode_specials_debug) { - t1 = decode_denise_specials_debug(t1, cnt + 2); - } - #endif - *buf1++ = t1; - *buf2++ = t1; - *gbuf++ = dtgbuf[h ^ lol][1]; } - if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl6e(); + if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { + copybpl4e(); } - if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) { - copybpl6o(); + if (bpldat_copy[1] && (denise_hcounter_cmp & 7) == bplcon1_shift[1]) { + copybpl4o(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -3567,11 +3347,7 @@ static void lts_ecs_fm0_ehb1_p6_ilores_dhires_ntsc_genlock(void) denise_cck++; } } -static void lts_ecs_fm0_ehb1_p6_ilores_dhires_ntsc_filtered_genlock(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham0_p6_ilores_dhires_ntsc_genlock(void) +static void lts_ecs_fm0_dpf1_p4_ihires_dlores_spr_ntsc_filtered_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -3582,6 +3358,7 @@ static void lts_ecs_fm0_ham0_p6_ilores_dhires_ntsc_genlock(void) } int cnt = denise_hcounter << 2; if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; @@ -3589,27 +3366,55 @@ static void lts_ecs_fm0_ham0_p6_ilores_dhires_ntsc_genlock(void) gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl6(); + pix0 = getbpl4(); clxdat |= bplcoltable[pix0]; - if (decode_specials) { - pix0 = decode_denise_specials(pix0); - } - dpix_val0 = decode_ham_pixel(pix0); - gpix0 = get_genlock_transparency(pix0 & 15); + uae_u8 val0 = dpf_lookup[pix0]; + dpix_val0 = denise_colors.acolors[val0]; + gpix0 = get_genlock_transparency(dpf_lookup[pix0]); } last_bpl_pix = pix0; } - shiftbpl6(); + shiftbpl4(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_lores(); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = getbpl4(); + clxdat |= bplcoltable[pix1]; + uae_u8 val1 = dpf_lookup[pix1]; + dpix_val1 = denise_colors.acolors[val1]; + gpix1 = get_genlock_transparency(dpf_lookup[pix1]); + } + last_bpl_pix = pix1; + } + shiftbpl4(); internal_pixel_cnt += 2; - uae_u32 dpix_val1 = dpix_val0; - uae_u8 pix1 = pix0; - uae_u8 gpix1 = gpix0; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + gpix0 = filter_pixel_genlock(gpix0, gpix1); + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + dpix_val1 = dpix_val0; + } + } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; - dtbuf[h][1] = dpix_val1; - dtgbuf[h][1] = gpix1; uae_u32 t0 = 0; if (!extblank) { t0 = dtbuf[h ^ lol][0]; @@ -3622,21 +3427,12 @@ static void lts_ecs_fm0_ham0_p6_ilores_dhires_ntsc_genlock(void) *buf1++ = t0; *buf2++ = t0; *gbuf++ = dtgbuf[h ^ lol][0]; - uae_u32 t1 = 0; - if (!extblank) { - t1 = dtbuf[h ^ lol][1]; - } - #ifdef DEBUGGER - if (decode_specials_debug) { - t1 = decode_denise_specials_debug(t1, cnt + 2); - } - #endif - *buf1++ = t1; - *buf2++ = t1; - *gbuf++ = dtgbuf[h ^ lol][1]; } - if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl6(); + if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { + copybpl4e(); + } + if (bpldat_copy[1] && (denise_hcounter_cmp & 7) == bplcon1_shift[1]) { + copybpl4o(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -3660,11 +3456,7 @@ static void lts_ecs_fm0_ham0_p6_ilores_dhires_ntsc_genlock(void) denise_cck++; } } -static void lts_ecs_fm0_ham0_p6_ilores_dhires_ntsc_filtered_genlock(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham1_p6_ilores_dhires_ntsc_genlock(void) +static void lts_ecs_fm0_ehb0_p4_ihires_dlores_spr_ntsc_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -3681,28 +3473,19 @@ static void lts_ecs_fm0_ham1_p6_ilores_dhires_ntsc_genlock(void) if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl6(); - clxdat |= bplcoltable[pix0]; - if (decode_specials) { - pix0 = decode_denise_specials(pix0); - } - dpix_val0 = decode_ham_pixel(pix0); - gpix0 = get_genlock_transparency(pix0 & 15); - } - last_bpl_pix = pix0; } - shiftbpl6(); internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } internal_pixel_cnt += 2; - uae_u32 dpix_val1 = dpix_val0; - uae_u8 pix1 = pix0; - uae_u8 gpix1 = gpix0; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; - dtbuf[h][1] = dpix_val1; - dtgbuf[h][1] = gpix1; uae_u32 t0 = 0; if (!extblank) { t0 = dtbuf[h ^ lol][0]; @@ -3715,24 +3498,6 @@ static void lts_ecs_fm0_ham1_p6_ilores_dhires_ntsc_genlock(void) *buf1++ = t0; *buf2++ = t0; *gbuf++ = dtgbuf[h ^ lol][0]; - uae_u32 t1 = 0; - if (!extblank) { - t1 = dtbuf[h ^ lol][1]; - } - #ifdef DEBUGGER - if (decode_specials_debug) { - t1 = decode_denise_specials_debug(t1, cnt + 2); - } - #endif - *buf1++ = t1; - *buf2++ = t1; - *gbuf++ = dtgbuf[h ^ lol][1]; - } - if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl6e(); - } - if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) { - copybpl6o(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -3756,11 +3521,7 @@ static void lts_ecs_fm0_ham1_p6_ilores_dhires_ntsc_genlock(void) denise_cck++; } } -static void lts_ecs_fm0_ham1_p6_ilores_dhires_ntsc_filtered_genlock(void) -{ - lts_null(); -} -static void lts_ecs_fm0_n0_p6_ilores_dhires_spr_ntsc_genlock(void) +static void lts_ecs_fm0_ehb0_p4_ihires_dlores_spr_ntsc_filtered_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -3771,52 +3532,27 @@ static void lts_ecs_fm0_n0_p6_ilores_dhires_spr_ntsc_genlock(void) } int cnt = denise_hcounter << 2; if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl6(); - clxdat |= bplcoltable[pix0]; - if (decode_specials) { - pix0 = decode_denise_specials(pix0); - } - dpix_val0 = denise_colors.acolors[pix0]; - gpix0 = get_genlock_transparency(pix0); - } - last_bpl_pix = pix0; - } - shiftbpl6(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_lores(); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } } internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } internal_pixel_cnt += 2; - uae_u32 dpix_val1 = dpix_val0; - uae_u8 pix1 = pix0; - uae_u8 gpix1 = gpix0; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - gpix0 = get_genlock_transparency(spix0); - - dpix_val1 = dpix_val0; - } - } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + gpix0 = filter_pixel_genlock(gpix0, gpix1); dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; - dtbuf[h][1] = dpix_val1; - dtgbuf[h][1] = gpix1; uae_u32 t0 = 0; if (!extblank) { t0 = dtbuf[h ^ lol][0]; @@ -3829,21 +3565,6 @@ static void lts_ecs_fm0_n0_p6_ilores_dhires_spr_ntsc_genlock(void) *buf1++ = t0; *buf2++ = t0; *gbuf++ = dtgbuf[h ^ lol][0]; - uae_u32 t1 = 0; - if (!extblank) { - t1 = dtbuf[h ^ lol][1]; - } - #ifdef DEBUGGER - if (decode_specials_debug) { - t1 = decode_denise_specials_debug(t1, cnt + 2); - } - #endif - *buf1++ = t1; - *buf2++ = t1; - *gbuf++ = dtgbuf[h ^ lol][1]; - } - if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl6(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -3867,11 +3588,7 @@ static void lts_ecs_fm0_n0_p6_ilores_dhires_spr_ntsc_genlock(void) denise_cck++; } } -static void lts_ecs_fm0_n0_p6_ilores_dhires_spr_ntsc_filtered_genlock(void) -{ - lts_null(); -} -static void lts_ecs_fm0_n1_p6_ilores_dhires_spr_ntsc_genlock(void) +static void lts_ecs_fm0_ehb1_p4_ihires_dlores_spr_ntsc_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -3882,52 +3599,25 @@ static void lts_ecs_fm0_n1_p6_ilores_dhires_spr_ntsc_genlock(void) } int cnt = denise_hcounter << 2; if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl6(); - clxdat |= bplcoltable[pix0]; - if (decode_specials) { - pix0 = decode_denise_specials(pix0); - } - dpix_val0 = denise_colors.acolors[pix0]; - gpix0 = get_genlock_transparency(pix0); - } - last_bpl_pix = pix0; - } - shiftbpl6(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_lores(); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } } internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } internal_pixel_cnt += 2; - uae_u32 dpix_val1 = dpix_val0; - uae_u8 pix1 = pix0; - uae_u8 gpix1 = gpix0; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - gpix0 = get_genlock_transparency(spix0); - - dpix_val1 = dpix_val0; - } - } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; - dtbuf[h][1] = dpix_val1; - dtgbuf[h][1] = gpix1; uae_u32 t0 = 0; if (!extblank) { t0 = dtbuf[h ^ lol][0]; @@ -3940,24 +3630,6 @@ static void lts_ecs_fm0_n1_p6_ilores_dhires_spr_ntsc_genlock(void) *buf1++ = t0; *buf2++ = t0; *gbuf++ = dtgbuf[h ^ lol][0]; - uae_u32 t1 = 0; - if (!extblank) { - t1 = dtbuf[h ^ lol][1]; - } - #ifdef DEBUGGER - if (decode_specials_debug) { - t1 = decode_denise_specials_debug(t1, cnt + 2); - } - #endif - *buf1++ = t1; - *buf2++ = t1; - *gbuf++ = dtgbuf[h ^ lol][1]; - } - if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl6e(); - } - if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) { - copybpl6o(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -3981,11 +3653,7 @@ static void lts_ecs_fm0_n1_p6_ilores_dhires_spr_ntsc_genlock(void) denise_cck++; } } -static void lts_ecs_fm0_n1_p6_ilores_dhires_spr_ntsc_filtered_genlock(void) -{ - lts_null(); -} -static void lts_ecs_fm0_dpf0_p6_ilores_dhires_spr_ntsc_genlock(void) +static void lts_ecs_fm0_ehb1_p4_ihires_dlores_spr_ntsc_filtered_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -3996,53 +3664,27 @@ static void lts_ecs_fm0_dpf0_p6_ilores_dhires_spr_ntsc_genlock(void) } int cnt = denise_hcounter << 2; if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl6(); - clxdat |= bplcoltable[pix0]; - if (decode_specials) { - pix0 = decode_denise_specials(pix0); - } - uae_u8 val0 = dpf_lookup[pix0]; - dpix_val0 = denise_colors.acolors[val0]; - gpix0 = get_genlock_transparency(dpf_lookup[pix0]); - } - last_bpl_pix = pix0; - } - shiftbpl6(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_lores(); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } } internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } internal_pixel_cnt += 2; - uae_u32 dpix_val1 = dpix_val0; - uae_u8 pix1 = pix0; - uae_u8 gpix1 = gpix0; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - gpix0 = get_genlock_transparency(spix0); - - dpix_val1 = dpix_val0; - } - } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + gpix0 = filter_pixel_genlock(gpix0, gpix1); dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; - dtbuf[h][1] = dpix_val1; - dtgbuf[h][1] = gpix1; uae_u32 t0 = 0; if (!extblank) { t0 = dtbuf[h ^ lol][0]; @@ -4055,21 +3697,6 @@ static void lts_ecs_fm0_dpf0_p6_ilores_dhires_spr_ntsc_genlock(void) *buf1++ = t0; *buf2++ = t0; *gbuf++ = dtgbuf[h ^ lol][0]; - uae_u32 t1 = 0; - if (!extblank) { - t1 = dtbuf[h ^ lol][1]; - } - #ifdef DEBUGGER - if (decode_specials_debug) { - t1 = decode_denise_specials_debug(t1, cnt + 2); - } - #endif - *buf1++ = t1; - *buf2++ = t1; - *gbuf++ = dtgbuf[h ^ lol][1]; - } - if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl6(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -4093,11 +3720,7 @@ static void lts_ecs_fm0_dpf0_p6_ilores_dhires_spr_ntsc_genlock(void) denise_cck++; } } -static void lts_ecs_fm0_dpf0_p6_ilores_dhires_spr_ntsc_filtered_genlock(void) -{ - lts_null(); -} -static void lts_ecs_fm0_dpf1_p6_ilores_dhires_spr_ntsc_genlock(void) +static void lts_ecs_fm0_ham0_p4_ihires_dlores_spr_ntsc_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -4108,53 +3731,25 @@ static void lts_ecs_fm0_dpf1_p6_ilores_dhires_spr_ntsc_genlock(void) } int cnt = denise_hcounter << 2; if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl6(); - clxdat |= bplcoltable[pix0]; - if (decode_specials) { - pix0 = decode_denise_specials(pix0); - } - uae_u8 val0 = dpf_lookup[pix0]; - dpix_val0 = denise_colors.acolors[val0]; - gpix0 = get_genlock_transparency(dpf_lookup[pix0]); - } - last_bpl_pix = pix0; - } - shiftbpl6(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_lores(); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } } internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } internal_pixel_cnt += 2; - uae_u32 dpix_val1 = dpix_val0; - uae_u8 pix1 = pix0; - uae_u8 gpix1 = gpix0; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - gpix0 = get_genlock_transparency(spix0); - - dpix_val1 = dpix_val0; - } - } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; - dtbuf[h][1] = dpix_val1; - dtgbuf[h][1] = gpix1; uae_u32 t0 = 0; if (!extblank) { t0 = dtbuf[h ^ lol][0]; @@ -4167,24 +3762,6 @@ static void lts_ecs_fm0_dpf1_p6_ilores_dhires_spr_ntsc_genlock(void) *buf1++ = t0; *buf2++ = t0; *gbuf++ = dtgbuf[h ^ lol][0]; - uae_u32 t1 = 0; - if (!extblank) { - t1 = dtbuf[h ^ lol][1]; - } - #ifdef DEBUGGER - if (decode_specials_debug) { - t1 = decode_denise_specials_debug(t1, cnt + 2); - } - #endif - *buf1++ = t1; - *buf2++ = t1; - *gbuf++ = dtgbuf[h ^ lol][1]; - } - if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl6e(); - } - if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) { - copybpl6o(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -4208,11 +3785,7 @@ static void lts_ecs_fm0_dpf1_p6_ilores_dhires_spr_ntsc_genlock(void) denise_cck++; } } -static void lts_ecs_fm0_dpf1_p6_ilores_dhires_spr_ntsc_filtered_genlock(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb0_p6_ilores_dhires_spr_ntsc_genlock(void) +static void lts_ecs_fm0_ham0_p4_ihires_dlores_spr_ntsc_filtered_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -4223,57 +3796,27 @@ static void lts_ecs_fm0_ehb0_p6_ilores_dhires_spr_ntsc_genlock(void) } int cnt = denise_hcounter << 2; if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl6(); - clxdat |= bplcoltable[pix0]; - if (decode_specials) { - pix0 = decode_denise_specials(pix0); - } - pix0 &= bplehb_mask; - if (pix0 <= 31) { - dpix_val0 = denise_colors.acolors[pix0]; - } else { - dpix_val0 = p_xcolors[(denise_colors.color_regs_ecs[pix0 - 32] >> 1) & 0x777]; - } - gpix0 = get_genlock_transparency(pix0 & 31); - } - last_bpl_pix = pix0; - } - shiftbpl6(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_lores(); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } } internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } internal_pixel_cnt += 2; - uae_u32 dpix_val1 = dpix_val0; - uae_u8 pix1 = pix0; - uae_u8 gpix1 = gpix0; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - gpix0 = get_genlock_transparency(spix0); - - dpix_val1 = dpix_val0; - } - } + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + gpix0 = filter_pixel_genlock(gpix0, gpix1); dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; - dtbuf[h][1] = dpix_val1; - dtgbuf[h][1] = gpix1; uae_u32 t0 = 0; if (!extblank) { t0 = dtbuf[h ^ lol][0]; @@ -4286,21 +3829,6 @@ static void lts_ecs_fm0_ehb0_p6_ilores_dhires_spr_ntsc_genlock(void) *buf1++ = t0; *buf2++ = t0; *gbuf++ = dtgbuf[h ^ lol][0]; - uae_u32 t1 = 0; - if (!extblank) { - t1 = dtbuf[h ^ lol][1]; - } - #ifdef DEBUGGER - if (decode_specials_debug) { - t1 = decode_denise_specials_debug(t1, cnt + 2); - } - #endif - *buf1++ = t1; - *buf2++ = t1; - *gbuf++ = dtgbuf[h ^ lol][1]; - } - if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl6(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -4324,11 +3852,7 @@ static void lts_ecs_fm0_ehb0_p6_ilores_dhires_spr_ntsc_genlock(void) denise_cck++; } } -static void lts_ecs_fm0_ehb0_p6_ilores_dhires_spr_ntsc_filtered_genlock(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb1_p6_ilores_dhires_spr_ntsc_genlock(void) +static void lts_ecs_fm0_ham1_p4_ihires_dlores_spr_ntsc_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -4339,57 +3863,25 @@ static void lts_ecs_fm0_ehb1_p6_ilores_dhires_spr_ntsc_genlock(void) } int cnt = denise_hcounter << 2; if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl6(); - clxdat |= bplcoltable[pix0]; - if (decode_specials) { - pix0 = decode_denise_specials(pix0); - } - pix0 &= bplehb_mask; - if (pix0 <= 31) { - dpix_val0 = denise_colors.acolors[pix0]; - } else { - dpix_val0 = p_xcolors[(denise_colors.color_regs_ecs[pix0 - 32] >> 1) & 0x777]; - } - gpix0 = get_genlock_transparency(pix0 & 31); - } - last_bpl_pix = pix0; - } - shiftbpl6(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_lores(); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } } internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } internal_pixel_cnt += 2; - uae_u32 dpix_val1 = dpix_val0; - uae_u8 pix1 = pix0; - uae_u8 gpix1 = gpix0; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - gpix0 = get_genlock_transparency(spix0); - - dpix_val1 = dpix_val0; - } - } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; - dtbuf[h][1] = dpix_val1; - dtgbuf[h][1] = gpix1; uae_u32 t0 = 0; if (!extblank) { t0 = dtbuf[h ^ lol][0]; @@ -4402,24 +3894,73 @@ static void lts_ecs_fm0_ehb1_p6_ilores_dhires_spr_ntsc_genlock(void) *buf1++ = t0; *buf2++ = t0; *gbuf++ = dtgbuf[h ^ lol][0]; - uae_u32 t1 = 0; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ham1_p4_ihires_dlores_spr_ntsc_filtered_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dpix_val0 = filter_pixel(dpix_val0, dpix_val1); + gpix0 = filter_pixel_genlock(gpix0, gpix1); + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + uae_u32 t0 = 0; if (!extblank) { - t1 = dtbuf[h ^ lol][1]; + t0 = dtbuf[h ^ lol][0]; } #ifdef DEBUGGER if (decode_specials_debug) { - t1 = decode_denise_specials_debug(t1, cnt + 2); + t0 = decode_denise_specials_debug(t0, cnt + 0); } #endif - *buf1++ = t1; - *buf2++ = t1; - *gbuf++ = dtgbuf[h ^ lol][1]; - } - if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { - copybpl6e(); - } - if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) { - copybpl6o(); + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -4443,11 +3984,7 @@ static void lts_ecs_fm0_ehb1_p6_ilores_dhires_spr_ntsc_genlock(void) denise_cck++; } } -static void lts_ecs_fm0_ehb1_p6_ilores_dhires_spr_ntsc_filtered_genlock(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham0_p6_ilores_dhires_spr_ntsc_genlock(void) +static void lts_ecs_fm0_n0_p6_ilores_dhires_ntsc_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -4458,7 +3995,6 @@ static void lts_ecs_fm0_ham0_p6_ilores_dhires_spr_ntsc_genlock(void) } int cnt = denise_hcounter << 2; if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; @@ -4471,35 +4007,18 @@ static void lts_ecs_fm0_ham0_p6_ilores_dhires_spr_ntsc_genlock(void) if (decode_specials) { pix0 = decode_denise_specials(pix0); } - dpix_val0 = decode_ham_pixel(pix0); - gpix0 = get_genlock_transparency(pix0 & 15); + dpix_val0 = denise_colors.acolors[pix0]; + gpix0 = get_genlock_transparency(pix0); } last_bpl_pix = pix0; } shiftbpl6(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_lores(); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } - } internal_pixel_cnt += 2; internal_pixel_cnt += 2; uae_u32 dpix_val1 = dpix_val0; uae_u8 pix1 = pix0; uae_u8 gpix1 = gpix0; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - gpix0 = get_genlock_transparency(spix0); - - dpix_val1 = dpix_val0; - } - } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; dtbuf[h][1] = dpix_val1; @@ -4554,11 +4073,11 @@ static void lts_ecs_fm0_ham0_p6_ilores_dhires_spr_ntsc_genlock(void) denise_cck++; } } -static void lts_ecs_fm0_ham0_p6_ilores_dhires_spr_ntsc_filtered_genlock(void) +static void lts_ecs_fm0_n0_p6_ilores_dhires_ntsc_filtered_genlock(void) { lts_null(); } -static void lts_ecs_fm0_ham1_p6_ilores_dhires_spr_ntsc_genlock(void) +static void lts_ecs_fm0_n1_p6_ilores_dhires_ntsc_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -4569,7 +4088,6 @@ static void lts_ecs_fm0_ham1_p6_ilores_dhires_spr_ntsc_genlock(void) } int cnt = denise_hcounter << 2; if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; @@ -4582,35 +4100,18 @@ static void lts_ecs_fm0_ham1_p6_ilores_dhires_spr_ntsc_genlock(void) if (decode_specials) { pix0 = decode_denise_specials(pix0); } - dpix_val0 = decode_ham_pixel(pix0); - gpix0 = get_genlock_transparency(pix0 & 15); + dpix_val0 = denise_colors.acolors[pix0]; + gpix0 = get_genlock_transparency(pix0); } last_bpl_pix = pix0; } shiftbpl6(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_lores(); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } - } internal_pixel_cnt += 2; internal_pixel_cnt += 2; uae_u32 dpix_val1 = dpix_val0; uae_u8 pix1 = pix0; uae_u8 gpix1 = gpix0; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - gpix0 = get_genlock_transparency(spix0); - - dpix_val1 = dpix_val0; - } - } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; dtbuf[h][1] = dpix_val1; @@ -4668,11 +4169,11 @@ static void lts_ecs_fm0_ham1_p6_ilores_dhires_spr_ntsc_genlock(void) denise_cck++; } } -static void lts_ecs_fm0_ham1_p6_ilores_dhires_spr_ntsc_filtered_genlock(void) +static void lts_ecs_fm0_n1_p6_ilores_dhires_ntsc_filtered_genlock(void) { lts_null(); } -static void lts_ecs_fm0_n0_p4_ihires_dhires_ntsc_genlock(void) +static void lts_ecs_fm0_dpf0_p6_ilores_dhires_ntsc_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -4690,31 +4191,23 @@ static void lts_ecs_fm0_n0_p4_ihires_dhires_ntsc_genlock(void) gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl4(); + pix0 = getbpl6(); clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0]; - gpix0 = get_genlock_transparency(pix0); + if (decode_specials) { + pix0 = decode_denise_specials(pix0); + } + uae_u8 val0 = dpf_lookup[pix0]; + dpix_val0 = denise_colors.acolors[val0]; + gpix0 = get_genlock_transparency(dpf_lookup[pix0]); } last_bpl_pix = pix0; } - shiftbpl4(); + shiftbpl6(); internal_pixel_cnt += 2; - uae_u8 pix1 = 0; - uae_u8 gpix1 = 0xff; - uae_u32 dpix_val1 = BLANK_COLOR; - if (!denise_blank_active) { - gpix1 = get_genlock_transparency_border(); - dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = getbpl4(); - clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1]; - gpix1 = get_genlock_transparency(pix1); - } - last_bpl_pix = pix1; - } - shiftbpl4(); internal_pixel_cnt += 2; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + uae_u8 gpix1 = gpix0; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; @@ -4745,8 +4238,8 @@ 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_cmp & 7) == bplcon1_shift[0]) { - copybpl4(); + if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { + copybpl6(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -4770,11 +4263,11 @@ static void lts_ecs_fm0_n0_p4_ihires_dhires_ntsc_genlock(void) denise_cck++; } } -static void lts_ecs_fm0_n0_p4_ihires_dhires_ntsc_filtered_genlock(void) +static void lts_ecs_fm0_dpf0_p6_ilores_dhires_ntsc_filtered_genlock(void) { lts_null(); } -static void lts_ecs_fm0_n1_p4_ihires_dhires_ntsc_genlock(void) +static void lts_ecs_fm0_dpf1_p6_ilores_dhires_ntsc_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -4792,31 +4285,23 @@ static void lts_ecs_fm0_n1_p4_ihires_dhires_ntsc_genlock(void) gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl4(); + pix0 = getbpl6(); clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0]; - gpix0 = get_genlock_transparency(pix0); + if (decode_specials) { + pix0 = decode_denise_specials(pix0); + } + uae_u8 val0 = dpf_lookup[pix0]; + dpix_val0 = denise_colors.acolors[val0]; + gpix0 = get_genlock_transparency(dpf_lookup[pix0]); } last_bpl_pix = pix0; } - shiftbpl4(); + shiftbpl6(); internal_pixel_cnt += 2; - uae_u8 pix1 = 0; - uae_u8 gpix1 = 0xff; - uae_u32 dpix_val1 = BLANK_COLOR; - if (!denise_blank_active) { - gpix1 = get_genlock_transparency_border(); - dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = getbpl4(); - clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1]; - gpix1 = get_genlock_transparency(pix1); - } - last_bpl_pix = pix1; - } - shiftbpl4(); internal_pixel_cnt += 2; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + uae_u8 gpix1 = gpix0; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; @@ -4847,11 +4332,11 @@ 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_cmp & 7) == bplcon1_shift[0]) { - copybpl4e(); + if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { + copybpl6e(); } - if (bpldat_copy[1] && (denise_hcounter_cmp & 7) == bplcon1_shift[1]) { - copybpl4o(); + if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) { + copybpl6o(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -4875,11 +4360,11 @@ static void lts_ecs_fm0_n1_p4_ihires_dhires_ntsc_genlock(void) denise_cck++; } } -static void lts_ecs_fm0_n1_p4_ihires_dhires_ntsc_filtered_genlock(void) +static void lts_ecs_fm0_dpf1_p6_ilores_dhires_ntsc_filtered_genlock(void) { lts_null(); } -static void lts_ecs_fm0_dpf0_p4_ihires_dhires_ntsc_genlock(void) +static void lts_ecs_fm0_ehb0_p6_ilores_dhires_ntsc_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -4897,33 +4382,27 @@ static void lts_ecs_fm0_dpf0_p4_ihires_dhires_ntsc_genlock(void) gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl4(); + pix0 = getbpl6(); clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - dpix_val0 = denise_colors.acolors[val0]; - gpix0 = get_genlock_transparency(dpf_lookup[pix0]); + if (decode_specials) { + pix0 = decode_denise_specials(pix0); + } + pix0 &= bplehb_mask; + if (pix0 <= 31) { + dpix_val0 = denise_colors.acolors[pix0]; + } else { + dpix_val0 = p_xcolors[(denise_colors.color_regs_ecs[pix0 - 32] >> 1) & 0x777]; + } + gpix0 = get_genlock_transparency(pix0 & 31); } last_bpl_pix = pix0; } - shiftbpl4(); + shiftbpl6(); internal_pixel_cnt += 2; - uae_u8 pix1 = 0; - uae_u8 gpix1 = 0xff; - uae_u32 dpix_val1 = BLANK_COLOR; - if (!denise_blank_active) { - gpix1 = get_genlock_transparency_border(); - dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = getbpl4(); - clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - dpix_val1 = denise_colors.acolors[val1]; - gpix1 = get_genlock_transparency(dpf_lookup[pix1]); - } - last_bpl_pix = pix1; - } - shiftbpl4(); internal_pixel_cnt += 2; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + uae_u8 gpix1 = gpix0; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; @@ -4954,8 +4433,8 @@ 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_cmp & 7) == bplcon1_shift[0]) { - copybpl4(); + if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { + copybpl6(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -4979,11 +4458,11 @@ static void lts_ecs_fm0_dpf0_p4_ihires_dhires_ntsc_genlock(void) denise_cck++; } } -static void lts_ecs_fm0_dpf0_p4_ihires_dhires_ntsc_filtered_genlock(void) +static void lts_ecs_fm0_ehb0_p6_ilores_dhires_ntsc_filtered_genlock(void) { lts_null(); } -static void lts_ecs_fm0_dpf1_p4_ihires_dhires_ntsc_genlock(void) +static void lts_ecs_fm0_ehb1_p6_ilores_dhires_ntsc_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -5001,33 +4480,27 @@ static void lts_ecs_fm0_dpf1_p4_ihires_dhires_ntsc_genlock(void) gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl4(); + pix0 = getbpl6(); clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - dpix_val0 = denise_colors.acolors[val0]; - gpix0 = get_genlock_transparency(dpf_lookup[pix0]); + if (decode_specials) { + pix0 = decode_denise_specials(pix0); + } + pix0 &= bplehb_mask; + if (pix0 <= 31) { + dpix_val0 = denise_colors.acolors[pix0]; + } else { + dpix_val0 = p_xcolors[(denise_colors.color_regs_ecs[pix0 - 32] >> 1) & 0x777]; + } + gpix0 = get_genlock_transparency(pix0 & 31); } last_bpl_pix = pix0; } - shiftbpl4(); + shiftbpl6(); internal_pixel_cnt += 2; - uae_u8 pix1 = 0; - uae_u8 gpix1 = 0xff; - uae_u32 dpix_val1 = BLANK_COLOR; - if (!denise_blank_active) { - gpix1 = get_genlock_transparency_border(); - dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = getbpl4(); - clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - dpix_val1 = denise_colors.acolors[val1]; - gpix1 = get_genlock_transparency(dpf_lookup[pix1]); - } - last_bpl_pix = pix1; - } - shiftbpl4(); internal_pixel_cnt += 2; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + uae_u8 gpix1 = gpix0; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; @@ -5058,11 +4531,11 @@ 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_cmp & 7) == bplcon1_shift[0]) { - copybpl4e(); + if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { + copybpl6e(); } - if (bpldat_copy[1] && (denise_hcounter_cmp & 7) == bplcon1_shift[1]) { - copybpl4o(); + if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) { + copybpl6o(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -5086,43 +4559,11 @@ static void lts_ecs_fm0_dpf1_p4_ihires_dhires_ntsc_genlock(void) denise_cck++; } } -static void lts_ecs_fm0_dpf1_p4_ihires_dhires_ntsc_filtered_genlock(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb0_p4_ihires_dhires_ntsc_genlock(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb0_p4_ihires_dhires_ntsc_filtered_genlock(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb1_p4_ihires_dhires_ntsc_genlock(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb1_p4_ihires_dhires_ntsc_filtered_genlock(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham0_p4_ihires_dhires_ntsc_genlock(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham0_p4_ihires_dhires_ntsc_filtered_genlock(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham1_p4_ihires_dhires_ntsc_genlock(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham1_p4_ihires_dhires_ntsc_filtered_genlock(void) +static void lts_ecs_fm0_ehb1_p6_ilores_dhires_ntsc_filtered_genlock(void) { lts_null(); } -static void lts_ecs_fm0_n0_p4_ihires_dhires_spr_ntsc_genlock(void) +static void lts_ecs_fm0_ham0_p6_ilores_dhires_ntsc_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -5133,7 +4574,6 @@ static void lts_ecs_fm0_n0_p4_ihires_dhires_spr_ntsc_genlock(void) } int cnt = denise_hcounter << 2; if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; @@ -5141,57 +4581,23 @@ static void lts_ecs_fm0_n0_p4_ihires_dhires_spr_ntsc_genlock(void) gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl4(); + pix0 = getbpl6(); clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0]; - gpix0 = get_genlock_transparency(pix0); + if (decode_specials) { + pix0 = decode_denise_specials(pix0); + } + dpix_val0 = decode_ham_pixel(pix0); + gpix0 = get_genlock_transparency(pix0 & 15); } last_bpl_pix = pix0; } - shiftbpl4(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_lores(); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } - } + shiftbpl6(); internal_pixel_cnt += 2; - uae_u8 pix1 = 0; - uae_u8 gpix1 = 0xff; - uae_u32 dpix_val1 = BLANK_COLOR; - if (!denise_blank_active) { - gpix1 = get_genlock_transparency_border(); - dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = getbpl4(); - clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1]; - gpix1 = get_genlock_transparency(pix1); - } - last_bpl_pix = pix1; - } - shiftbpl4(); internal_pixel_cnt += 2; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + uae_u8 gpix1 = gpix0; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - gpix0 = get_genlock_transparency(spix0); - - } - } - uae_u32 sv1 = sv0; - if (sv1) { - uae_u32 spix1 = denise_render_sprites2(pix1, sv1); - if (spix1) { - dpix_val1 = denise_colors.acolors[spix1]; - gpix1 = get_genlock_transparency(spix1); - - } - } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; dtbuf[h][1] = dpix_val1; @@ -5221,8 +4627,8 @@ 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_cmp & 7) == bplcon1_shift[0]) { - copybpl4(); + if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { + copybpl6(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -5246,11 +4652,11 @@ static void lts_ecs_fm0_n0_p4_ihires_dhires_spr_ntsc_genlock(void) denise_cck++; } } -static void lts_ecs_fm0_n0_p4_ihires_dhires_spr_ntsc_filtered_genlock(void) +static void lts_ecs_fm0_ham0_p6_ilores_dhires_ntsc_filtered_genlock(void) { lts_null(); } -static void lts_ecs_fm0_n1_p4_ihires_dhires_spr_ntsc_genlock(void) +static void lts_ecs_fm0_ham1_p6_ilores_dhires_ntsc_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -5261,7 +4667,6 @@ static void lts_ecs_fm0_n1_p4_ihires_dhires_spr_ntsc_genlock(void) } int cnt = denise_hcounter << 2; if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; @@ -5269,14 +4674,114 @@ static void lts_ecs_fm0_n1_p4_ihires_dhires_spr_ntsc_genlock(void) gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl4(); + pix0 = getbpl6(); clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0]; - gpix0 = get_genlock_transparency(pix0); - } - last_bpl_pix = pix0; - } - shiftbpl4(); + if (decode_specials) { + pix0 = decode_denise_specials(pix0); + } + dpix_val0 = decode_ham_pixel(pix0); + gpix0 = get_genlock_transparency(pix0 & 15); + } + last_bpl_pix = pix0; + } + shiftbpl6(); + internal_pixel_cnt += 2; + internal_pixel_cnt += 2; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + uae_u8 gpix1 = gpix0; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][1] = dpix_val1; + dtgbuf[h][1] = gpix1; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dtbuf[h ^ lol][1]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = dtgbuf[h ^ lol][1]; + } + if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { + copybpl6e(); + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ham1_p6_ilores_dhires_ntsc_filtered_genlock(void) +{ + lts_null(); +} +static void lts_ecs_fm0_n0_p6_ilores_dhires_spr_ntsc_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl6(); + clxdat |= bplcoltable[pix0]; + if (decode_specials) { + pix0 = decode_denise_specials(pix0); + } + dpix_val0 = denise_colors.acolors[pix0]; + gpix0 = get_genlock_transparency(pix0); + } + last_bpl_pix = pix0; + } + shiftbpl6(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -5286,22 +4791,10 @@ static void lts_ecs_fm0_n1_p4_ihires_dhires_spr_ntsc_genlock(void) } } internal_pixel_cnt += 2; - uae_u8 pix1 = 0; - uae_u8 gpix1 = 0xff; - uae_u32 dpix_val1 = BLANK_COLOR; - if (!denise_blank_active) { - gpix1 = get_genlock_transparency_border(); - dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = getbpl4(); - clxdat |= bplcoltable[pix1]; - dpix_val1 = denise_colors.acolors[pix1]; - gpix1 = get_genlock_transparency(pix1); - } - last_bpl_pix = pix1; - } - shiftbpl4(); internal_pixel_cnt += 2; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + uae_u8 gpix1 = gpix0; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { uae_u32 spix0 = denise_render_sprites2(pix0, sv0); @@ -5309,15 +4802,7 @@ static void lts_ecs_fm0_n1_p4_ihires_dhires_spr_ntsc_genlock(void) dpix_val0 = denise_colors.acolors[spix0]; gpix0 = get_genlock_transparency(spix0); - } - } - uae_u32 sv1 = sv0; - if (sv1) { - uae_u32 spix1 = denise_render_sprites2(pix1, sv1); - if (spix1) { - dpix_val1 = denise_colors.acolors[spix1]; - gpix1 = get_genlock_transparency(spix1); - + dpix_val1 = dpix_val0; } } dtbuf[h][0] = dpix_val0; @@ -5349,11 +4834,8 @@ 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_cmp & 7) == bplcon1_shift[0]) { - copybpl4e(); - } - if (bpldat_copy[1] && (denise_hcounter_cmp & 7) == bplcon1_shift[1]) { - copybpl4o(); + if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { + copybpl6(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -5377,11 +4859,11 @@ static void lts_ecs_fm0_n1_p4_ihires_dhires_spr_ntsc_genlock(void) denise_cck++; } } -static void lts_ecs_fm0_n1_p4_ihires_dhires_spr_ntsc_filtered_genlock(void) +static void lts_ecs_fm0_n0_p6_ilores_dhires_spr_ntsc_filtered_genlock(void) { lts_null(); } -static void lts_ecs_fm0_dpf0_p4_ihires_dhires_spr_ntsc_genlock(void) +static void lts_ecs_fm0_n1_p6_ilores_dhires_spr_ntsc_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -5400,15 +4882,17 @@ static void lts_ecs_fm0_dpf0_p4_ihires_dhires_spr_ntsc_genlock(void) gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl4(); + pix0 = getbpl6(); clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - dpix_val0 = denise_colors.acolors[val0]; - gpix0 = get_genlock_transparency(dpf_lookup[pix0]); + if (decode_specials) { + pix0 = decode_denise_specials(pix0); + } + dpix_val0 = denise_colors.acolors[pix0]; + gpix0 = get_genlock_transparency(pix0); } last_bpl_pix = pix0; } - shiftbpl4(); + shiftbpl6(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -5418,23 +4902,10 @@ static void lts_ecs_fm0_dpf0_p4_ihires_dhires_spr_ntsc_genlock(void) } } internal_pixel_cnt += 2; - uae_u8 pix1 = 0; - uae_u8 gpix1 = 0xff; - uae_u32 dpix_val1 = BLANK_COLOR; - if (!denise_blank_active) { - gpix1 = get_genlock_transparency_border(); - dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = getbpl4(); - clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - dpix_val1 = denise_colors.acolors[val1]; - gpix1 = get_genlock_transparency(dpf_lookup[pix1]); - } - last_bpl_pix = pix1; - } - shiftbpl4(); internal_pixel_cnt += 2; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + uae_u8 gpix1 = gpix0; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { uae_u32 spix0 = denise_render_sprites2(pix0, sv0); @@ -5442,15 +4913,7 @@ static void lts_ecs_fm0_dpf0_p4_ihires_dhires_spr_ntsc_genlock(void) dpix_val0 = denise_colors.acolors[spix0]; gpix0 = get_genlock_transparency(spix0); - } - } - uae_u32 sv1 = sv0; - if (sv1) { - uae_u32 spix1 = denise_render_sprites2(pix1, sv1); - if (spix1) { - dpix_val1 = denise_colors.acolors[spix1]; - gpix1 = get_genlock_transparency(spix1); - + dpix_val1 = dpix_val0; } } dtbuf[h][0] = dpix_val0; @@ -5482,8 +4945,11 @@ 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_cmp & 7) == bplcon1_shift[0]) { - copybpl4(); + if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { + copybpl6e(); + } + if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) { + copybpl6o(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -5507,11 +4973,11 @@ static void lts_ecs_fm0_dpf0_p4_ihires_dhires_spr_ntsc_genlock(void) denise_cck++; } } -static void lts_ecs_fm0_dpf0_p4_ihires_dhires_spr_ntsc_filtered_genlock(void) +static void lts_ecs_fm0_n1_p6_ilores_dhires_spr_ntsc_filtered_genlock(void) { lts_null(); } -static void lts_ecs_fm0_dpf1_p4_ihires_dhires_spr_ntsc_genlock(void) +static void lts_ecs_fm0_dpf0_p6_ilores_dhires_spr_ntsc_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -5530,15 +4996,18 @@ static void lts_ecs_fm0_dpf1_p4_ihires_dhires_spr_ntsc_genlock(void) gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl4(); + pix0 = getbpl6(); clxdat |= bplcoltable[pix0]; + if (decode_specials) { + pix0 = decode_denise_specials(pix0); + } uae_u8 val0 = dpf_lookup[pix0]; dpix_val0 = denise_colors.acolors[val0]; gpix0 = get_genlock_transparency(dpf_lookup[pix0]); } last_bpl_pix = pix0; } - shiftbpl4(); + shiftbpl6(); uae_u32 sv0 = 0; if (denise_spr_nr_armeds) { uae_u32 svt; @@ -5548,23 +5017,10 @@ static void lts_ecs_fm0_dpf1_p4_ihires_dhires_spr_ntsc_genlock(void) } } internal_pixel_cnt += 2; - uae_u8 pix1 = 0; - uae_u8 gpix1 = 0xff; - uae_u32 dpix_val1 = BLANK_COLOR; - if (!denise_blank_active) { - gpix1 = get_genlock_transparency_border(); - dpix_val1 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix1 = getbpl4(); - clxdat |= bplcoltable[pix1]; - uae_u8 val1 = dpf_lookup[pix1]; - dpix_val1 = denise_colors.acolors[val1]; - gpix1 = get_genlock_transparency(dpf_lookup[pix1]); - } - last_bpl_pix = pix1; - } - shiftbpl4(); internal_pixel_cnt += 2; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + uae_u8 gpix1 = gpix0; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { if (sv0) { uae_u32 spix0 = denise_render_sprites2(pix0, sv0); @@ -5572,21 +5028,3221 @@ static void lts_ecs_fm0_dpf1_p4_ihires_dhires_spr_ntsc_genlock(void) dpix_val0 = denise_colors.acolors[spix0]; gpix0 = get_genlock_transparency(spix0); + dpix_val1 = dpix_val0; } } - uae_u32 sv1 = sv0; - if (sv1) { - uae_u32 spix1 = denise_render_sprites2(pix1, sv1); - if (spix1) { - dpix_val1 = denise_colors.acolors[spix1]; - gpix1 = get_genlock_transparency(spix1); - + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][1] = dpix_val1; + dtgbuf[h][1] = gpix1; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dtbuf[h ^ lol][1]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = dtgbuf[h ^ lol][1]; + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_dpf0_p6_ilores_dhires_spr_ntsc_filtered_genlock(void) +{ + lts_null(); +} +static void lts_ecs_fm0_dpf1_p6_ilores_dhires_spr_ntsc_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl6(); + clxdat |= bplcoltable[pix0]; + if (decode_specials) { + pix0 = decode_denise_specials(pix0); + } + uae_u8 val0 = dpf_lookup[pix0]; + dpix_val0 = denise_colors.acolors[val0]; + gpix0 = get_genlock_transparency(dpf_lookup[pix0]); + } + last_bpl_pix = pix0; + } + shiftbpl6(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_lores(); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + internal_pixel_cnt += 2; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + uae_u8 gpix1 = gpix0; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + dpix_val1 = dpix_val0; + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][1] = dpix_val1; + dtgbuf[h][1] = gpix1; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dtbuf[h ^ lol][1]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = dtgbuf[h ^ lol][1]; + } + if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { + copybpl6e(); + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_dpf1_p6_ilores_dhires_spr_ntsc_filtered_genlock(void) +{ + lts_null(); +} +static void lts_ecs_fm0_ehb0_p6_ilores_dhires_spr_ntsc_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl6(); + clxdat |= bplcoltable[pix0]; + if (decode_specials) { + pix0 = decode_denise_specials(pix0); + } + pix0 &= bplehb_mask; + if (pix0 <= 31) { + dpix_val0 = denise_colors.acolors[pix0]; + } else { + dpix_val0 = p_xcolors[(denise_colors.color_regs_ecs[pix0 - 32] >> 1) & 0x777]; + } + gpix0 = get_genlock_transparency(pix0 & 31); + } + last_bpl_pix = pix0; + } + shiftbpl6(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_lores(); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + internal_pixel_cnt += 2; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + uae_u8 gpix1 = gpix0; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + dpix_val1 = dpix_val0; + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][1] = dpix_val1; + dtgbuf[h][1] = gpix1; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dtbuf[h ^ lol][1]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = dtgbuf[h ^ lol][1]; + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ehb0_p6_ilores_dhires_spr_ntsc_filtered_genlock(void) +{ + lts_null(); +} +static void lts_ecs_fm0_ehb1_p6_ilores_dhires_spr_ntsc_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl6(); + clxdat |= bplcoltable[pix0]; + if (decode_specials) { + pix0 = decode_denise_specials(pix0); + } + pix0 &= bplehb_mask; + if (pix0 <= 31) { + dpix_val0 = denise_colors.acolors[pix0]; + } else { + dpix_val0 = p_xcolors[(denise_colors.color_regs_ecs[pix0 - 32] >> 1) & 0x777]; + } + gpix0 = get_genlock_transparency(pix0 & 31); + } + last_bpl_pix = pix0; + } + shiftbpl6(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_lores(); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + internal_pixel_cnt += 2; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + uae_u8 gpix1 = gpix0; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + dpix_val1 = dpix_val0; + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][1] = dpix_val1; + dtgbuf[h][1] = gpix1; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dtbuf[h ^ lol][1]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = dtgbuf[h ^ lol][1]; + } + if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { + copybpl6e(); + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ehb1_p6_ilores_dhires_spr_ntsc_filtered_genlock(void) +{ + lts_null(); +} +static void lts_ecs_fm0_ham0_p6_ilores_dhires_spr_ntsc_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl6(); + clxdat |= bplcoltable[pix0]; + if (decode_specials) { + pix0 = decode_denise_specials(pix0); + } + dpix_val0 = decode_ham_pixel(pix0); + gpix0 = get_genlock_transparency(pix0 & 15); + } + last_bpl_pix = pix0; + } + shiftbpl6(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_lores(); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + internal_pixel_cnt += 2; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + uae_u8 gpix1 = gpix0; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + dpix_val1 = dpix_val0; + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][1] = dpix_val1; + dtgbuf[h][1] = gpix1; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dtbuf[h ^ lol][1]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = dtgbuf[h ^ lol][1]; + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ham0_p6_ilores_dhires_spr_ntsc_filtered_genlock(void) +{ + lts_null(); +} +static void lts_ecs_fm0_ham1_p6_ilores_dhires_spr_ntsc_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl6(); + clxdat |= bplcoltable[pix0]; + if (decode_specials) { + pix0 = decode_denise_specials(pix0); + } + dpix_val0 = decode_ham_pixel(pix0); + gpix0 = get_genlock_transparency(pix0 & 15); + } + last_bpl_pix = pix0; + } + shiftbpl6(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_lores(); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + internal_pixel_cnt += 2; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + uae_u8 gpix1 = gpix0; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + dpix_val1 = dpix_val0; + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][1] = dpix_val1; + dtgbuf[h][1] = gpix1; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dtbuf[h ^ lol][1]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = dtgbuf[h ^ lol][1]; + } + if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { + copybpl6e(); + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ham1_p6_ilores_dhires_spr_ntsc_filtered_genlock(void) +{ + lts_null(); +} +static void lts_ecs_fm0_n0_p4_ihires_dhires_ntsc_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl4(); + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0]; + gpix0 = get_genlock_transparency(pix0); + } + last_bpl_pix = pix0; + } + shiftbpl4(); + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = getbpl4(); + clxdat |= bplcoltable[pix1]; + dpix_val1 = denise_colors.acolors[pix1]; + gpix1 = get_genlock_transparency(pix1); + } + last_bpl_pix = pix1; + } + shiftbpl4(); + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][1] = dpix_val1; + dtgbuf[h][1] = gpix1; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dtbuf[h ^ lol][1]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = dtgbuf[h ^ lol][1]; + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_n0_p4_ihires_dhires_ntsc_filtered_genlock(void) +{ + lts_null(); +} +static void lts_ecs_fm0_n1_p4_ihires_dhires_ntsc_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl4(); + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0]; + gpix0 = get_genlock_transparency(pix0); + } + last_bpl_pix = pix0; + } + shiftbpl4(); + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = getbpl4(); + clxdat |= bplcoltable[pix1]; + dpix_val1 = denise_colors.acolors[pix1]; + gpix1 = get_genlock_transparency(pix1); + } + last_bpl_pix = pix1; + } + shiftbpl4(); + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][1] = dpix_val1; + dtgbuf[h][1] = gpix1; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dtbuf[h ^ lol][1]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = dtgbuf[h ^ lol][1]; + } + if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { + copybpl4e(); + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_n1_p4_ihires_dhires_ntsc_filtered_genlock(void) +{ + lts_null(); +} +static void lts_ecs_fm0_dpf0_p4_ihires_dhires_ntsc_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl4(); + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + dpix_val0 = denise_colors.acolors[val0]; + gpix0 = get_genlock_transparency(dpf_lookup[pix0]); + } + last_bpl_pix = pix0; + } + shiftbpl4(); + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = getbpl4(); + clxdat |= bplcoltable[pix1]; + uae_u8 val1 = dpf_lookup[pix1]; + dpix_val1 = denise_colors.acolors[val1]; + gpix1 = get_genlock_transparency(dpf_lookup[pix1]); + } + last_bpl_pix = pix1; + } + shiftbpl4(); + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][1] = dpix_val1; + dtgbuf[h][1] = gpix1; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dtbuf[h ^ lol][1]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = dtgbuf[h ^ lol][1]; + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_dpf0_p4_ihires_dhires_ntsc_filtered_genlock(void) +{ + lts_null(); +} +static void lts_ecs_fm0_dpf1_p4_ihires_dhires_ntsc_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl4(); + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + dpix_val0 = denise_colors.acolors[val0]; + gpix0 = get_genlock_transparency(dpf_lookup[pix0]); + } + last_bpl_pix = pix0; + } + shiftbpl4(); + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = getbpl4(); + clxdat |= bplcoltable[pix1]; + uae_u8 val1 = dpf_lookup[pix1]; + dpix_val1 = denise_colors.acolors[val1]; + gpix1 = get_genlock_transparency(dpf_lookup[pix1]); + } + last_bpl_pix = pix1; + } + shiftbpl4(); + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][1] = dpix_val1; + dtgbuf[h][1] = gpix1; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dtbuf[h ^ lol][1]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = dtgbuf[h ^ lol][1]; + } + if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { + copybpl4e(); + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_dpf1_p4_ihires_dhires_ntsc_filtered_genlock(void) +{ + lts_null(); +} +static void lts_ecs_fm0_ehb0_p4_ihires_dhires_ntsc_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][1] = dpix_val1; + dtgbuf[h][1] = gpix1; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dtbuf[h ^ lol][1]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = dtgbuf[h ^ lol][1]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ehb0_p4_ihires_dhires_ntsc_filtered_genlock(void) +{ + lts_null(); +} +static void lts_ecs_fm0_ehb1_p4_ihires_dhires_ntsc_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][1] = dpix_val1; + dtgbuf[h][1] = gpix1; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dtbuf[h ^ lol][1]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = dtgbuf[h ^ lol][1]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ehb1_p4_ihires_dhires_ntsc_filtered_genlock(void) +{ + lts_null(); +} +static void lts_ecs_fm0_ham0_p4_ihires_dhires_ntsc_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][1] = dpix_val1; + dtgbuf[h][1] = gpix1; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dtbuf[h ^ lol][1]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = dtgbuf[h ^ lol][1]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ham0_p4_ihires_dhires_ntsc_filtered_genlock(void) +{ + lts_null(); +} +static void lts_ecs_fm0_ham1_p4_ihires_dhires_ntsc_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][1] = dpix_val1; + dtgbuf[h][1] = gpix1; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dtbuf[h ^ lol][1]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = dtgbuf[h ^ lol][1]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ham1_p4_ihires_dhires_ntsc_filtered_genlock(void) +{ + lts_null(); +} +static void lts_ecs_fm0_n0_p4_ihires_dhires_spr_ntsc_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl4(); + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0]; + gpix0 = get_genlock_transparency(pix0); + } + last_bpl_pix = pix0; + } + shiftbpl4(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_lores(); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = getbpl4(); + clxdat |= bplcoltable[pix1]; + dpix_val1 = denise_colors.acolors[pix1]; + gpix1 = get_genlock_transparency(pix1); + } + last_bpl_pix = pix1; + } + shiftbpl4(); + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + uae_u32 sv1 = sv0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + gpix1 = get_genlock_transparency(spix1); + + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][1] = dpix_val1; + dtgbuf[h][1] = gpix1; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dtbuf[h ^ lol][1]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = dtgbuf[h ^ lol][1]; + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_n0_p4_ihires_dhires_spr_ntsc_filtered_genlock(void) +{ + lts_null(); +} +static void lts_ecs_fm0_n1_p4_ihires_dhires_spr_ntsc_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl4(); + clxdat |= bplcoltable[pix0]; + dpix_val0 = denise_colors.acolors[pix0]; + gpix0 = get_genlock_transparency(pix0); + } + last_bpl_pix = pix0; + } + shiftbpl4(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_lores(); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = getbpl4(); + clxdat |= bplcoltable[pix1]; + dpix_val1 = denise_colors.acolors[pix1]; + gpix1 = get_genlock_transparency(pix1); + } + last_bpl_pix = pix1; + } + shiftbpl4(); + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + uae_u32 sv1 = sv0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + gpix1 = get_genlock_transparency(spix1); + + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][1] = dpix_val1; + dtgbuf[h][1] = gpix1; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dtbuf[h ^ lol][1]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = dtgbuf[h ^ lol][1]; + } + if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { + copybpl4e(); + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_n1_p4_ihires_dhires_spr_ntsc_filtered_genlock(void) +{ + lts_null(); +} +static void lts_ecs_fm0_dpf0_p4_ihires_dhires_spr_ntsc_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl4(); + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + dpix_val0 = denise_colors.acolors[val0]; + gpix0 = get_genlock_transparency(dpf_lookup[pix0]); + } + last_bpl_pix = pix0; + } + shiftbpl4(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_lores(); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = getbpl4(); + clxdat |= bplcoltable[pix1]; + uae_u8 val1 = dpf_lookup[pix1]; + dpix_val1 = denise_colors.acolors[val1]; + gpix1 = get_genlock_transparency(dpf_lookup[pix1]); + } + last_bpl_pix = pix1; + } + shiftbpl4(); + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + uae_u32 sv1 = sv0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + gpix1 = get_genlock_transparency(spix1); + + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][1] = dpix_val1; + dtgbuf[h][1] = gpix1; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dtbuf[h ^ lol][1]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = dtgbuf[h ^ lol][1]; + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_dpf0_p4_ihires_dhires_spr_ntsc_filtered_genlock(void) +{ + lts_null(); +} +static void lts_ecs_fm0_dpf1_p4_ihires_dhires_spr_ntsc_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites(cnt + 0); + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl4(); + clxdat |= bplcoltable[pix0]; + uae_u8 val0 = dpf_lookup[pix0]; + dpix_val0 = denise_colors.acolors[val0]; + gpix0 = get_genlock_transparency(dpf_lookup[pix0]); + } + last_bpl_pix = pix0; + } + shiftbpl4(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_lores(); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix1 = getbpl4(); + clxdat |= bplcoltable[pix1]; + uae_u8 val1 = dpf_lookup[pix1]; + dpix_val1 = denise_colors.acolors[val1]; + gpix1 = get_genlock_transparency(dpf_lookup[pix1]); + } + last_bpl_pix = pix1; + } + shiftbpl4(); + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + uae_u32 sv1 = sv0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + gpix1 = get_genlock_transparency(spix1); + + } + } + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][1] = dpix_val1; + dtgbuf[h][1] = gpix1; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dtbuf[h ^ lol][1]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = dtgbuf[h ^ lol][1]; + } + if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { + copybpl4e(); + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_dpf1_p4_ihires_dhires_spr_ntsc_filtered_genlock(void) +{ + lts_null(); +} +static void lts_ecs_fm0_ehb0_p4_ihires_dhires_spr_ntsc_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][1] = dpix_val1; + dtgbuf[h][1] = gpix1; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dtbuf[h ^ lol][1]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = dtgbuf[h ^ lol][1]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ehb0_p4_ihires_dhires_spr_ntsc_filtered_genlock(void) +{ + lts_null(); +} +static void lts_ecs_fm0_ehb1_p4_ihires_dhires_spr_ntsc_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][1] = dpix_val1; + dtgbuf[h][1] = gpix1; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dtbuf[h ^ lol][1]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = dtgbuf[h ^ lol][1]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ehb1_p4_ihires_dhires_spr_ntsc_filtered_genlock(void) +{ + lts_null(); +} +static void lts_ecs_fm0_ham0_p4_ihires_dhires_spr_ntsc_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][1] = dpix_val1; + dtgbuf[h][1] = gpix1; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dtbuf[h ^ lol][1]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = dtgbuf[h ^ lol][1]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ham0_p4_ihires_dhires_spr_ntsc_filtered_genlock(void) +{ + lts_null(); +} +static void lts_ecs_fm0_ham1_p4_ihires_dhires_spr_ntsc_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + } + internal_pixel_cnt += 2; + uae_u8 pix1 = 0; + uae_u8 gpix1 = 0xff; + uae_u32 dpix_val1 = BLANK_COLOR; + if (!denise_blank_active) { + gpix1 = get_genlock_transparency_border(); + dpix_val1 = bordercolor; + } + internal_pixel_cnt += 2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][1] = dpix_val1; + dtgbuf[h][1] = gpix1; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dtbuf[h ^ lol][1]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 2); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = dtgbuf[h ^ lol][1]; + } + sprites_hidden = sprites_hidden2; + #ifdef DEBUGGER + *debug_dma_dhpos_odd = denise_hcounter; + #endif + denise_hcounter_cmp++; + denise_hcounter_cmp &= 511; + denise_hcounter++; + denise_hcounter &= 511; + denise_hcounter_next++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ham1_p4_ihires_dhires_spr_ntsc_filtered_genlock(void) +{ + lts_null(); +} +static void lts_ecs_fm0_n0_p6_ilores_dshres_ntsc_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl6(); + clxdat |= bplcoltable[pix0]; + if (decode_specials) { + pix0 = decode_denise_specials(pix0); + } + dpix_val0 = denise_colors.acolors[pix0]; + gpix0 = get_genlock_transparency(pix0); + } + last_bpl_pix = pix0; + } + shiftbpl6(); + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + uae_u8 gpix1 = gpix0; + uae_u32 dpix_val2 = dpix_val1; + uae_u8 pix2 = pix1; + uae_u8 gpix2 = gpix1; + uae_u32 dpix_val3 = dpix_val2; + uae_u8 pix3 = pix2; + uae_u8 gpix3 = gpix2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][1] = dpix_val1; + dtgbuf[h][1] = gpix1; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + dtbuf[h][3] = dpix_val3; + dtgbuf[h][3] = gpix3; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dtbuf[h ^ lol][1]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = dtgbuf[h ^ lol][1]; + uae_u32 t2 = 0; + if (!extblank) { + t2 = dtbuf[h ^ lol][2]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + uae_u32 t3 = 0; + if (!extblank) { + t3 = dtbuf[h ^ lol][3]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + *gbuf++ = dtgbuf[h ^ lol][3]; + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_n0_p6_ilores_dshres_ntsc_filtered_genlock(void) +{ + lts_null(); +} +static void lts_ecs_fm0_n1_p6_ilores_dshres_ntsc_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl6(); + clxdat |= bplcoltable[pix0]; + if (decode_specials) { + pix0 = decode_denise_specials(pix0); + } + dpix_val0 = denise_colors.acolors[pix0]; + gpix0 = get_genlock_transparency(pix0); + } + last_bpl_pix = pix0; + } + shiftbpl6(); + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + uae_u8 gpix1 = gpix0; + uae_u32 dpix_val2 = dpix_val1; + uae_u8 pix2 = pix1; + uae_u8 gpix2 = gpix1; + uae_u32 dpix_val3 = dpix_val2; + uae_u8 pix3 = pix2; + uae_u8 gpix3 = gpix2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][1] = dpix_val1; + dtgbuf[h][1] = gpix1; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + dtbuf[h][3] = dpix_val3; + dtgbuf[h][3] = gpix3; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dtbuf[h ^ lol][1]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = dtgbuf[h ^ lol][1]; + uae_u32 t2 = 0; + if (!extblank) { + t2 = dtbuf[h ^ lol][2]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + uae_u32 t3 = 0; + if (!extblank) { + t3 = dtbuf[h ^ lol][3]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + *gbuf++ = dtgbuf[h ^ lol][3]; + } + if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { + copybpl6e(); + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_n1_p6_ilores_dshres_ntsc_filtered_genlock(void) +{ + lts_null(); +} +static void lts_ecs_fm0_dpf0_p6_ilores_dshres_ntsc_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl6(); + clxdat |= bplcoltable[pix0]; + if (decode_specials) { + pix0 = decode_denise_specials(pix0); + } + uae_u8 val0 = dpf_lookup[pix0]; + dpix_val0 = denise_colors.acolors[val0]; + gpix0 = get_genlock_transparency(dpf_lookup[pix0]); + } + last_bpl_pix = pix0; + } + shiftbpl6(); + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + uae_u8 gpix1 = gpix0; + uae_u32 dpix_val2 = dpix_val1; + uae_u8 pix2 = pix1; + uae_u8 gpix2 = gpix1; + uae_u32 dpix_val3 = dpix_val2; + uae_u8 pix3 = pix2; + uae_u8 gpix3 = gpix2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][1] = dpix_val1; + dtgbuf[h][1] = gpix1; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + dtbuf[h][3] = dpix_val3; + dtgbuf[h][3] = gpix3; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dtbuf[h ^ lol][1]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = dtgbuf[h ^ lol][1]; + uae_u32 t2 = 0; + if (!extblank) { + t2 = dtbuf[h ^ lol][2]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + uae_u32 t3 = 0; + if (!extblank) { + t3 = dtbuf[h ^ lol][3]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + *gbuf++ = dtgbuf[h ^ lol][3]; + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_dpf0_p6_ilores_dshres_ntsc_filtered_genlock(void) +{ + lts_null(); +} +static void lts_ecs_fm0_dpf1_p6_ilores_dshres_ntsc_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl6(); + clxdat |= bplcoltable[pix0]; + if (decode_specials) { + pix0 = decode_denise_specials(pix0); + } + uae_u8 val0 = dpf_lookup[pix0]; + dpix_val0 = denise_colors.acolors[val0]; + gpix0 = get_genlock_transparency(dpf_lookup[pix0]); + } + last_bpl_pix = pix0; + } + shiftbpl6(); + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + uae_u8 gpix1 = gpix0; + uae_u32 dpix_val2 = dpix_val1; + uae_u8 pix2 = pix1; + uae_u8 gpix2 = gpix1; + uae_u32 dpix_val3 = dpix_val2; + uae_u8 pix3 = pix2; + uae_u8 gpix3 = gpix2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][1] = dpix_val1; + dtgbuf[h][1] = gpix1; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + dtbuf[h][3] = dpix_val3; + dtgbuf[h][3] = gpix3; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dtbuf[h ^ lol][1]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = dtgbuf[h ^ lol][1]; + uae_u32 t2 = 0; + if (!extblank) { + t2 = dtbuf[h ^ lol][2]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + uae_u32 t3 = 0; + if (!extblank) { + t3 = dtbuf[h ^ lol][3]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + *gbuf++ = dtgbuf[h ^ lol][3]; + } + if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { + copybpl6e(); + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_dpf1_p6_ilores_dshres_ntsc_filtered_genlock(void) +{ + lts_null(); +} +static void lts_ecs_fm0_ehb0_p6_ilores_dshres_ntsc_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl6(); + clxdat |= bplcoltable[pix0]; + if (decode_specials) { + pix0 = decode_denise_specials(pix0); + } + pix0 &= bplehb_mask; + if (pix0 <= 31) { + dpix_val0 = denise_colors.acolors[pix0]; + } else { + dpix_val0 = p_xcolors[(denise_colors.color_regs_ecs[pix0 - 32] >> 1) & 0x777]; + } + gpix0 = get_genlock_transparency(pix0 & 31); + } + last_bpl_pix = pix0; + } + shiftbpl6(); + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + uae_u8 gpix1 = gpix0; + uae_u32 dpix_val2 = dpix_val1; + uae_u8 pix2 = pix1; + uae_u8 gpix2 = gpix1; + uae_u32 dpix_val3 = dpix_val2; + uae_u8 pix3 = pix2; + uae_u8 gpix3 = gpix2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][1] = dpix_val1; + dtgbuf[h][1] = gpix1; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + dtbuf[h][3] = dpix_val3; + dtgbuf[h][3] = gpix3; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dtbuf[h ^ lol][1]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = dtgbuf[h ^ lol][1]; + uae_u32 t2 = 0; + if (!extblank) { + t2 = dtbuf[h ^ lol][2]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + uae_u32 t3 = 0; + if (!extblank) { + t3 = dtbuf[h ^ lol][3]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + *gbuf++ = dtgbuf[h ^ lol][3]; + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ehb0_p6_ilores_dshres_ntsc_filtered_genlock(void) +{ + lts_null(); +} +static void lts_ecs_fm0_ehb1_p6_ilores_dshres_ntsc_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl6(); + clxdat |= bplcoltable[pix0]; + if (decode_specials) { + pix0 = decode_denise_specials(pix0); + } + pix0 &= bplehb_mask; + if (pix0 <= 31) { + dpix_val0 = denise_colors.acolors[pix0]; + } else { + dpix_val0 = p_xcolors[(denise_colors.color_regs_ecs[pix0 - 32] >> 1) & 0x777]; + } + gpix0 = get_genlock_transparency(pix0 & 31); + } + last_bpl_pix = pix0; + } + shiftbpl6(); + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + uae_u8 gpix1 = gpix0; + uae_u32 dpix_val2 = dpix_val1; + uae_u8 pix2 = pix1; + uae_u8 gpix2 = gpix1; + uae_u32 dpix_val3 = dpix_val2; + uae_u8 pix3 = pix2; + uae_u8 gpix3 = gpix2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][1] = dpix_val1; + dtgbuf[h][1] = gpix1; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + dtbuf[h][3] = dpix_val3; + dtgbuf[h][3] = gpix3; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dtbuf[h ^ lol][1]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = dtgbuf[h ^ lol][1]; + uae_u32 t2 = 0; + if (!extblank) { + t2 = dtbuf[h ^ lol][2]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + uae_u32 t3 = 0; + if (!extblank) { + t3 = dtbuf[h ^ lol][3]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + *gbuf++ = dtgbuf[h ^ lol][3]; + } + if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { + copybpl6e(); + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ehb1_p6_ilores_dshres_ntsc_filtered_genlock(void) +{ + lts_null(); +} +static void lts_ecs_fm0_ham0_p6_ilores_dshres_ntsc_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl6(); + clxdat |= bplcoltable[pix0]; + if (decode_specials) { + pix0 = decode_denise_specials(pix0); + } + dpix_val0 = decode_ham_pixel(pix0); + gpix0 = get_genlock_transparency(pix0 & 15); + } + last_bpl_pix = pix0; + } + shiftbpl6(); + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + uae_u8 gpix1 = gpix0; + uae_u32 dpix_val2 = dpix_val1; + uae_u8 pix2 = pix1; + uae_u8 gpix2 = gpix1; + uae_u32 dpix_val3 = dpix_val2; + uae_u8 pix3 = pix2; + uae_u8 gpix3 = gpix2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + dtbuf[h][0] = dpix_val0; + dtgbuf[h][0] = gpix0; + dtbuf[h][1] = dpix_val1; + dtgbuf[h][1] = gpix1; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + dtbuf[h][3] = dpix_val3; + dtgbuf[h][3] = gpix3; + uae_u32 t0 = 0; + if (!extblank) { + t0 = dtbuf[h ^ lol][0]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t0 = decode_denise_specials_debug(t0, cnt + 0); + } + #endif + *buf1++ = t0; + *buf2++ = t0; + *gbuf++ = dtgbuf[h ^ lol][0]; + uae_u32 t1 = 0; + if (!extblank) { + t1 = dtbuf[h ^ lol][1]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t1 = decode_denise_specials_debug(t1, cnt + 1); + } + #endif + *buf1++ = t1; + *buf2++ = t1; + *gbuf++ = dtgbuf[h ^ lol][1]; + uae_u32 t2 = 0; + if (!extblank) { + t2 = dtbuf[h ^ lol][2]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + uae_u32 t3 = 0; + if (!extblank) { + t3 = dtbuf[h ^ lol][3]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + *gbuf++ = dtgbuf[h ^ lol][3]; + } + 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++; + denise_hcounter_next &= 511; + } + denise_pixtotal++; + if (denise_pixtotal == 0) { + internal_pixel_start_cnt = internal_pixel_cnt; + } + denise_hcounter = denise_hcounter_new; + if (denise_accurate_mode) { + denise_hcounter_cmp = denise_hcounter_new; + } + denise_cck++; + } +} +static void lts_ecs_fm0_ham0_p6_ilores_dshres_ntsc_filtered_genlock(void) +{ + lts_null(); +} +static void lts_ecs_fm0_ham1_p6_ilores_dshres_ntsc_genlock(void) +{ + while (denise_cck < denise_endcycle) { + do_denise_cck(denise_linecnt, denise_startpos, denise_cck); + if (lts_changed) return; + for (int h = 0; h < 2; h++) { + if (h) { + denise_hcounter_next = denise_hcounter_new; + } + int cnt = denise_hcounter << 2; + if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + uae_u8 pix0 = 0; + uae_u8 gpix0 = 0xff; + uae_u32 dpix_val0 = BLANK_COLOR; + if (!denise_blank_active) { + gpix0 = get_genlock_transparency_border(); + dpix_val0 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix0 = getbpl6(); + clxdat |= bplcoltable[pix0]; + if (decode_specials) { + pix0 = decode_denise_specials(pix0); } + dpix_val0 = decode_ham_pixel(pix0); + gpix0 = get_genlock_transparency(pix0 & 15); } + last_bpl_pix = pix0; + } + shiftbpl6(); + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + uae_u8 gpix1 = gpix0; + uae_u32 dpix_val2 = dpix_val1; + uae_u8 pix2 = pix1; + uae_u8 gpix2 = gpix1; + uae_u32 dpix_val3 = dpix_val2; + uae_u8 pix3 = pix2; + uae_u8 gpix3 = gpix2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; dtbuf[h][1] = dpix_val1; dtgbuf[h][1] = gpix1; + dtbuf[h][2] = dpix_val2; + dtgbuf[h][2] = gpix2; + dtbuf[h][3] = dpix_val3; + dtgbuf[h][3] = gpix3; uae_u32 t0 = 0; if (!extblank) { t0 = dtbuf[h ^ lol][0]; @@ -5605,18 +8261,42 @@ static void lts_ecs_fm0_dpf1_p4_ihires_dhires_spr_ntsc_genlock(void) } #ifdef DEBUGGER if (decode_specials_debug) { - t1 = decode_denise_specials_debug(t1, cnt + 2); + t1 = decode_denise_specials_debug(t1, cnt + 1); } #endif *buf1++ = t1; *buf2++ = t1; *gbuf++ = dtgbuf[h ^ lol][1]; + uae_u32 t2 = 0; + if (!extblank) { + t2 = dtbuf[h ^ lol][2]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t2 = decode_denise_specials_debug(t2, cnt + 2); + } + #endif + *buf1++ = t2; + *buf2++ = t2; + *gbuf++ = dtgbuf[h ^ lol][2]; + uae_u32 t3 = 0; + if (!extblank) { + t3 = dtbuf[h ^ lol][3]; + } + #ifdef DEBUGGER + if (decode_specials_debug) { + t3 = decode_denise_specials_debug(t3, cnt + 3); + } + #endif + *buf1++ = t3; + *buf2++ = t3; + *gbuf++ = dtgbuf[h ^ lol][3]; } - if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { - copybpl4e(); + if (bpldat_copy[0] && (denise_hcounter_cmp & 15) == bplcon1_shift[0]) { + copybpl6e(); } - if (bpldat_copy[1] && (denise_hcounter_cmp & 7) == bplcon1_shift[1]) { - copybpl4o(); + if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) { + copybpl6o(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -5640,43 +8320,11 @@ static void lts_ecs_fm0_dpf1_p4_ihires_dhires_spr_ntsc_genlock(void) denise_cck++; } } -static void lts_ecs_fm0_dpf1_p4_ihires_dhires_spr_ntsc_filtered_genlock(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb0_p4_ihires_dhires_spr_ntsc_genlock(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb0_p4_ihires_dhires_spr_ntsc_filtered_genlock(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb1_p4_ihires_dhires_spr_ntsc_genlock(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb1_p4_ihires_dhires_spr_ntsc_filtered_genlock(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham0_p4_ihires_dhires_spr_ntsc_genlock(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham0_p4_ihires_dhires_spr_ntsc_filtered_genlock(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham1_p4_ihires_dhires_spr_ntsc_genlock(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham1_p4_ihires_dhires_spr_ntsc_filtered_genlock(void) +static void lts_ecs_fm0_ham1_p6_ilores_dshres_ntsc_filtered_genlock(void) { lts_null(); } -static void lts_ecs_fm0_n0_p6_ilores_dshres_ntsc_genlock(void) +static void lts_ecs_fm0_n0_p6_ilores_dshres_spr_ntsc_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -5687,6 +8335,7 @@ static void lts_ecs_fm0_n0_p6_ilores_dshres_ntsc_genlock(void) } int cnt = denise_hcounter << 2; if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; @@ -5705,6 +8354,14 @@ static void lts_ecs_fm0_n0_p6_ilores_dshres_ntsc_genlock(void) last_bpl_pix = pix0; } shiftbpl6(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_lores(); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } internal_pixel_cnt += 1; internal_pixel_cnt += 1; internal_pixel_cnt += 1; @@ -5719,6 +8376,17 @@ static void lts_ecs_fm0_n0_p6_ilores_dshres_ntsc_genlock(void) uae_u8 pix3 = pix2; uae_u8 gpix3 = gpix2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + dpix_val1 = dpix_val0; + dpix_val2 = dpix_val0; + dpix_val3 = dpix_val0; + } + } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; dtbuf[h][1] = dpix_val1; @@ -5801,11 +8469,11 @@ static void lts_ecs_fm0_n0_p6_ilores_dshres_ntsc_genlock(void) denise_cck++; } } -static void lts_ecs_fm0_n0_p6_ilores_dshres_ntsc_filtered_genlock(void) +static void lts_ecs_fm0_n0_p6_ilores_dshres_spr_ntsc_filtered_genlock(void) { lts_null(); } -static void lts_ecs_fm0_n1_p6_ilores_dshres_ntsc_genlock(void) +static void lts_ecs_fm0_n1_p6_ilores_dshres_spr_ntsc_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -5816,6 +8484,7 @@ static void lts_ecs_fm0_n1_p6_ilores_dshres_ntsc_genlock(void) } int cnt = denise_hcounter << 2; if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; @@ -5834,6 +8503,14 @@ static void lts_ecs_fm0_n1_p6_ilores_dshres_ntsc_genlock(void) last_bpl_pix = pix0; } shiftbpl6(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_lores(); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } internal_pixel_cnt += 1; internal_pixel_cnt += 1; internal_pixel_cnt += 1; @@ -5848,6 +8525,17 @@ static void lts_ecs_fm0_n1_p6_ilores_dshres_ntsc_genlock(void) uae_u8 pix3 = pix2; uae_u8 gpix3 = gpix2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + dpix_val1 = dpix_val0; + dpix_val2 = dpix_val0; + dpix_val3 = dpix_val0; + } + } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; dtbuf[h][1] = dpix_val1; @@ -5933,11 +8621,11 @@ static void lts_ecs_fm0_n1_p6_ilores_dshres_ntsc_genlock(void) denise_cck++; } } -static void lts_ecs_fm0_n1_p6_ilores_dshres_ntsc_filtered_genlock(void) +static void lts_ecs_fm0_n1_p6_ilores_dshres_spr_ntsc_filtered_genlock(void) { lts_null(); } -static void lts_ecs_fm0_dpf0_p6_ilores_dshres_ntsc_genlock(void) +static void lts_ecs_fm0_dpf0_p6_ilores_dshres_spr_ntsc_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -5948,6 +8636,7 @@ static void lts_ecs_fm0_dpf0_p6_ilores_dshres_ntsc_genlock(void) } int cnt = denise_hcounter << 2; if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; @@ -5967,6 +8656,14 @@ static void lts_ecs_fm0_dpf0_p6_ilores_dshres_ntsc_genlock(void) last_bpl_pix = pix0; } shiftbpl6(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_lores(); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } internal_pixel_cnt += 1; internal_pixel_cnt += 1; internal_pixel_cnt += 1; @@ -5981,6 +8678,17 @@ static void lts_ecs_fm0_dpf0_p6_ilores_dshres_ntsc_genlock(void) uae_u8 pix3 = pix2; uae_u8 gpix3 = gpix2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + dpix_val1 = dpix_val0; + dpix_val2 = dpix_val0; + dpix_val3 = dpix_val0; + } + } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; dtbuf[h][1] = dpix_val1; @@ -6063,11 +8771,11 @@ static void lts_ecs_fm0_dpf0_p6_ilores_dshres_ntsc_genlock(void) denise_cck++; } } -static void lts_ecs_fm0_dpf0_p6_ilores_dshres_ntsc_filtered_genlock(void) +static void lts_ecs_fm0_dpf0_p6_ilores_dshres_spr_ntsc_filtered_genlock(void) { lts_null(); } -static void lts_ecs_fm0_dpf1_p6_ilores_dshres_ntsc_genlock(void) +static void lts_ecs_fm0_dpf1_p6_ilores_dshres_spr_ntsc_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -6078,6 +8786,7 @@ static void lts_ecs_fm0_dpf1_p6_ilores_dshres_ntsc_genlock(void) } int cnt = denise_hcounter << 2; if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; @@ -6097,6 +8806,14 @@ static void lts_ecs_fm0_dpf1_p6_ilores_dshres_ntsc_genlock(void) last_bpl_pix = pix0; } shiftbpl6(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_lores(); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } internal_pixel_cnt += 1; internal_pixel_cnt += 1; internal_pixel_cnt += 1; @@ -6111,6 +8828,17 @@ static void lts_ecs_fm0_dpf1_p6_ilores_dshres_ntsc_genlock(void) uae_u8 pix3 = pix2; uae_u8 gpix3 = gpix2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + dpix_val1 = dpix_val0; + dpix_val2 = dpix_val0; + dpix_val3 = dpix_val0; + } + } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; dtbuf[h][1] = dpix_val1; @@ -6196,11 +8924,11 @@ static void lts_ecs_fm0_dpf1_p6_ilores_dshres_ntsc_genlock(void) denise_cck++; } } -static void lts_ecs_fm0_dpf1_p6_ilores_dshres_ntsc_filtered_genlock(void) +static void lts_ecs_fm0_dpf1_p6_ilores_dshres_spr_ntsc_filtered_genlock(void) { lts_null(); } -static void lts_ecs_fm0_ehb0_p6_ilores_dshres_ntsc_genlock(void) +static void lts_ecs_fm0_ehb0_p6_ilores_dshres_spr_ntsc_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -6211,6 +8939,7 @@ static void lts_ecs_fm0_ehb0_p6_ilores_dshres_ntsc_genlock(void) } int cnt = denise_hcounter << 2; if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; @@ -6234,6 +8963,14 @@ static void lts_ecs_fm0_ehb0_p6_ilores_dshres_ntsc_genlock(void) last_bpl_pix = pix0; } shiftbpl6(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_lores(); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } internal_pixel_cnt += 1; internal_pixel_cnt += 1; internal_pixel_cnt += 1; @@ -6248,6 +8985,17 @@ static void lts_ecs_fm0_ehb0_p6_ilores_dshres_ntsc_genlock(void) uae_u8 pix3 = pix2; uae_u8 gpix3 = gpix2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + dpix_val1 = dpix_val0; + dpix_val2 = dpix_val0; + dpix_val3 = dpix_val0; + } + } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; dtbuf[h][1] = dpix_val1; @@ -6330,11 +9078,11 @@ static void lts_ecs_fm0_ehb0_p6_ilores_dshres_ntsc_genlock(void) denise_cck++; } } -static void lts_ecs_fm0_ehb0_p6_ilores_dshres_ntsc_filtered_genlock(void) +static void lts_ecs_fm0_ehb0_p6_ilores_dshres_spr_ntsc_filtered_genlock(void) { lts_null(); } -static void lts_ecs_fm0_ehb1_p6_ilores_dshres_ntsc_genlock(void) +static void lts_ecs_fm0_ehb1_p6_ilores_dshres_spr_ntsc_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -6345,6 +9093,7 @@ static void lts_ecs_fm0_ehb1_p6_ilores_dshres_ntsc_genlock(void) } int cnt = denise_hcounter << 2; if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; @@ -6368,6 +9117,14 @@ static void lts_ecs_fm0_ehb1_p6_ilores_dshres_ntsc_genlock(void) last_bpl_pix = pix0; } shiftbpl6(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_lores(); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } internal_pixel_cnt += 1; internal_pixel_cnt += 1; internal_pixel_cnt += 1; @@ -6382,6 +9139,17 @@ static void lts_ecs_fm0_ehb1_p6_ilores_dshres_ntsc_genlock(void) uae_u8 pix3 = pix2; uae_u8 gpix3 = gpix2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + dpix_val1 = dpix_val0; + dpix_val2 = dpix_val0; + dpix_val3 = dpix_val0; + } + } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; dtbuf[h][1] = dpix_val1; @@ -6467,11 +9235,11 @@ static void lts_ecs_fm0_ehb1_p6_ilores_dshres_ntsc_genlock(void) denise_cck++; } } -static void lts_ecs_fm0_ehb1_p6_ilores_dshres_ntsc_filtered_genlock(void) +static void lts_ecs_fm0_ehb1_p6_ilores_dshres_spr_ntsc_filtered_genlock(void) { lts_null(); } -static void lts_ecs_fm0_ham0_p6_ilores_dshres_ntsc_genlock(void) +static void lts_ecs_fm0_ham0_p6_ilores_dshres_spr_ntsc_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -6482,6 +9250,7 @@ static void lts_ecs_fm0_ham0_p6_ilores_dshres_ntsc_genlock(void) } int cnt = denise_hcounter << 2; if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; @@ -6497,9 +9266,17 @@ static void lts_ecs_fm0_ham0_p6_ilores_dshres_ntsc_genlock(void) dpix_val0 = decode_ham_pixel(pix0); gpix0 = get_genlock_transparency(pix0 & 15); } - last_bpl_pix = pix0; + last_bpl_pix = pix0; + } + shiftbpl6(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_lores(); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } } - shiftbpl6(); internal_pixel_cnt += 1; internal_pixel_cnt += 1; internal_pixel_cnt += 1; @@ -6514,6 +9291,17 @@ static void lts_ecs_fm0_ham0_p6_ilores_dshres_ntsc_genlock(void) uae_u8 pix3 = pix2; uae_u8 gpix3 = gpix2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + dpix_val1 = dpix_val0; + dpix_val2 = dpix_val0; + dpix_val3 = dpix_val0; + } + } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; dtbuf[h][1] = dpix_val1; @@ -6596,11 +9384,11 @@ static void lts_ecs_fm0_ham0_p6_ilores_dshres_ntsc_genlock(void) denise_cck++; } } -static void lts_ecs_fm0_ham0_p6_ilores_dshres_ntsc_filtered_genlock(void) +static void lts_ecs_fm0_ham0_p6_ilores_dshres_spr_ntsc_filtered_genlock(void) { lts_null(); } -static void lts_ecs_fm0_ham1_p6_ilores_dshres_ntsc_genlock(void) +static void lts_ecs_fm0_ham1_p6_ilores_dshres_spr_ntsc_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -6611,6 +9399,7 @@ static void lts_ecs_fm0_ham1_p6_ilores_dshres_ntsc_genlock(void) } int cnt = denise_hcounter << 2; if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; @@ -6629,6 +9418,14 @@ static void lts_ecs_fm0_ham1_p6_ilores_dshres_ntsc_genlock(void) last_bpl_pix = pix0; } shiftbpl6(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_lores(); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } internal_pixel_cnt += 1; internal_pixel_cnt += 1; internal_pixel_cnt += 1; @@ -6643,6 +9440,17 @@ static void lts_ecs_fm0_ham1_p6_ilores_dshres_ntsc_genlock(void) uae_u8 pix3 = pix2; uae_u8 gpix3 = gpix2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + dpix_val1 = dpix_val0; + dpix_val2 = dpix_val0; + dpix_val3 = dpix_val0; + } + } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; dtbuf[h][1] = dpix_val1; @@ -6728,11 +9536,11 @@ static void lts_ecs_fm0_ham1_p6_ilores_dshres_ntsc_genlock(void) denise_cck++; } } -static void lts_ecs_fm0_ham1_p6_ilores_dshres_ntsc_filtered_genlock(void) +static void lts_ecs_fm0_ham1_p6_ilores_dshres_spr_ntsc_filtered_genlock(void) { lts_null(); } -static void lts_ecs_fm0_n0_p6_ilores_dshres_spr_ntsc_genlock(void) +static void lts_ecs_fm0_n0_p4_ihires_dshres_ntsc_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -6743,7 +9551,6 @@ static void lts_ecs_fm0_n0_p6_ilores_dshres_spr_ntsc_genlock(void) } int cnt = denise_hcounter << 2; if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; @@ -6751,50 +9558,40 @@ static void lts_ecs_fm0_n0_p6_ilores_dshres_spr_ntsc_genlock(void) gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl6(); + pix0 = getbpl4(); clxdat |= bplcoltable[pix0]; - if (decode_specials) { - pix0 = decode_denise_specials(pix0); - } dpix_val0 = denise_colors.acolors[pix0]; gpix0 = get_genlock_transparency(pix0); } last_bpl_pix = pix0; } - shiftbpl6(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_lores(); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } - } + shiftbpl4(); internal_pixel_cnt += 1; internal_pixel_cnt += 1; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = getbpl4(); + clxdat |= bplcoltable[pix2]; + dpix_val2 = denise_colors.acolors[pix2]; + gpix2 = get_genlock_transparency(pix2); + } + last_bpl_pix = pix2; + } + shiftbpl4(); internal_pixel_cnt += 1; internal_pixel_cnt += 1; uae_u32 dpix_val1 = dpix_val0; uae_u8 pix1 = pix0; uae_u8 gpix1 = gpix0; - uae_u32 dpix_val2 = dpix_val1; - uae_u8 pix2 = pix1; - uae_u8 gpix2 = gpix1; uae_u32 dpix_val3 = dpix_val2; uae_u8 pix3 = pix2; uae_u8 gpix3 = gpix2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - gpix0 = get_genlock_transparency(spix0); - - dpix_val1 = dpix_val0; - dpix_val2 = dpix_val0; - dpix_val3 = dpix_val0; - } - } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; dtbuf[h][1] = dpix_val1; @@ -6852,8 +9649,8 @@ 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_cmp & 15) == bplcon1_shift[0]) { - copybpl6(); + if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { + copybpl4(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -6877,11 +9674,11 @@ static void lts_ecs_fm0_n0_p6_ilores_dshres_spr_ntsc_genlock(void) denise_cck++; } } -static void lts_ecs_fm0_n0_p6_ilores_dshres_spr_ntsc_filtered_genlock(void) +static void lts_ecs_fm0_n0_p4_ihires_dshres_ntsc_filtered_genlock(void) { lts_null(); } -static void lts_ecs_fm0_n1_p6_ilores_dshres_spr_ntsc_genlock(void) +static void lts_ecs_fm0_n1_p4_ihires_dshres_ntsc_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -6892,7 +9689,6 @@ static void lts_ecs_fm0_n1_p6_ilores_dshres_spr_ntsc_genlock(void) } int cnt = denise_hcounter << 2; if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; @@ -6900,50 +9696,40 @@ static void lts_ecs_fm0_n1_p6_ilores_dshres_spr_ntsc_genlock(void) gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl6(); + pix0 = getbpl4(); clxdat |= bplcoltable[pix0]; - if (decode_specials) { - pix0 = decode_denise_specials(pix0); - } dpix_val0 = denise_colors.acolors[pix0]; gpix0 = get_genlock_transparency(pix0); } last_bpl_pix = pix0; } - shiftbpl6(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_lores(); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } - } + shiftbpl4(); internal_pixel_cnt += 1; internal_pixel_cnt += 1; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = getbpl4(); + clxdat |= bplcoltable[pix2]; + dpix_val2 = denise_colors.acolors[pix2]; + gpix2 = get_genlock_transparency(pix2); + } + last_bpl_pix = pix2; + } + shiftbpl4(); internal_pixel_cnt += 1; internal_pixel_cnt += 1; uae_u32 dpix_val1 = dpix_val0; uae_u8 pix1 = pix0; uae_u8 gpix1 = gpix0; - uae_u32 dpix_val2 = dpix_val1; - uae_u8 pix2 = pix1; - uae_u8 gpix2 = gpix1; uae_u32 dpix_val3 = dpix_val2; uae_u8 pix3 = pix2; uae_u8 gpix3 = gpix2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - gpix0 = get_genlock_transparency(spix0); - - dpix_val1 = dpix_val0; - dpix_val2 = dpix_val0; - dpix_val3 = dpix_val0; - } - } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; dtbuf[h][1] = dpix_val1; @@ -7001,11 +9787,11 @@ 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_cmp & 15) == bplcon1_shift[0]) { - copybpl6e(); + if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { + copybpl4e(); } - if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) { - copybpl6o(); + if (bpldat_copy[1] && (denise_hcounter_cmp & 7) == bplcon1_shift[1]) { + copybpl4o(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -7029,11 +9815,11 @@ static void lts_ecs_fm0_n1_p6_ilores_dshres_spr_ntsc_genlock(void) denise_cck++; } } -static void lts_ecs_fm0_n1_p6_ilores_dshres_spr_ntsc_filtered_genlock(void) +static void lts_ecs_fm0_n1_p4_ihires_dshres_ntsc_filtered_genlock(void) { lts_null(); } -static void lts_ecs_fm0_dpf0_p6_ilores_dshres_spr_ntsc_genlock(void) +static void lts_ecs_fm0_dpf0_p4_ihires_dshres_ntsc_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -7044,7 +9830,6 @@ static void lts_ecs_fm0_dpf0_p6_ilores_dshres_spr_ntsc_genlock(void) } int cnt = denise_hcounter << 2; if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; @@ -7052,51 +9837,42 @@ static void lts_ecs_fm0_dpf0_p6_ilores_dshres_spr_ntsc_genlock(void) gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl6(); + pix0 = getbpl4(); clxdat |= bplcoltable[pix0]; - if (decode_specials) { - pix0 = decode_denise_specials(pix0); - } uae_u8 val0 = dpf_lookup[pix0]; dpix_val0 = denise_colors.acolors[val0]; gpix0 = get_genlock_transparency(dpf_lookup[pix0]); } last_bpl_pix = pix0; } - shiftbpl6(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_lores(); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } - } + shiftbpl4(); internal_pixel_cnt += 1; internal_pixel_cnt += 1; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = getbpl4(); + clxdat |= bplcoltable[pix2]; + uae_u8 val2 = dpf_lookup[pix2]; + dpix_val2 = denise_colors.acolors[val2]; + gpix2 = get_genlock_transparency(dpf_lookup[pix2]); + } + last_bpl_pix = pix2; + } + shiftbpl4(); internal_pixel_cnt += 1; internal_pixel_cnt += 1; uae_u32 dpix_val1 = dpix_val0; uae_u8 pix1 = pix0; uae_u8 gpix1 = gpix0; - uae_u32 dpix_val2 = dpix_val1; - uae_u8 pix2 = pix1; - uae_u8 gpix2 = gpix1; uae_u32 dpix_val3 = dpix_val2; uae_u8 pix3 = pix2; uae_u8 gpix3 = gpix2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - gpix0 = get_genlock_transparency(spix0); - - dpix_val1 = dpix_val0; - dpix_val2 = dpix_val0; - dpix_val3 = dpix_val0; - } - } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; dtbuf[h][1] = dpix_val1; @@ -7154,8 +9930,8 @@ 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_cmp & 15) == bplcon1_shift[0]) { - copybpl6(); + if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { + copybpl4(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -7179,11 +9955,11 @@ static void lts_ecs_fm0_dpf0_p6_ilores_dshres_spr_ntsc_genlock(void) denise_cck++; } } -static void lts_ecs_fm0_dpf0_p6_ilores_dshres_spr_ntsc_filtered_genlock(void) +static void lts_ecs_fm0_dpf0_p4_ihires_dshres_ntsc_filtered_genlock(void) { lts_null(); } -static void lts_ecs_fm0_dpf1_p6_ilores_dshres_spr_ntsc_genlock(void) +static void lts_ecs_fm0_dpf1_p4_ihires_dshres_ntsc_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -7194,7 +9970,6 @@ static void lts_ecs_fm0_dpf1_p6_ilores_dshres_spr_ntsc_genlock(void) } int cnt = denise_hcounter << 2; if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; @@ -7202,51 +9977,42 @@ static void lts_ecs_fm0_dpf1_p6_ilores_dshres_spr_ntsc_genlock(void) gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl6(); + pix0 = getbpl4(); clxdat |= bplcoltable[pix0]; - if (decode_specials) { - pix0 = decode_denise_specials(pix0); - } uae_u8 val0 = dpf_lookup[pix0]; dpix_val0 = denise_colors.acolors[val0]; gpix0 = get_genlock_transparency(dpf_lookup[pix0]); } last_bpl_pix = pix0; } - shiftbpl6(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_lores(); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } - } + shiftbpl4(); internal_pixel_cnt += 1; internal_pixel_cnt += 1; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + if (denise_hdiw && bpl1dat_trigger) { + pix2 = getbpl4(); + clxdat |= bplcoltable[pix2]; + uae_u8 val2 = dpf_lookup[pix2]; + dpix_val2 = denise_colors.acolors[val2]; + gpix2 = get_genlock_transparency(dpf_lookup[pix2]); + } + last_bpl_pix = pix2; + } + shiftbpl4(); internal_pixel_cnt += 1; internal_pixel_cnt += 1; uae_u32 dpix_val1 = dpix_val0; uae_u8 pix1 = pix0; uae_u8 gpix1 = gpix0; - uae_u32 dpix_val2 = dpix_val1; - uae_u8 pix2 = pix1; - uae_u8 gpix2 = gpix1; uae_u32 dpix_val3 = dpix_val2; uae_u8 pix3 = pix2; uae_u8 gpix3 = gpix2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - gpix0 = get_genlock_transparency(spix0); - - dpix_val1 = dpix_val0; - dpix_val2 = dpix_val0; - dpix_val3 = dpix_val0; - } - } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; dtbuf[h][1] = dpix_val1; @@ -7304,11 +10070,11 @@ 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_cmp & 15) == bplcon1_shift[0]) { - copybpl6e(); + if (bpldat_copy[0] && (denise_hcounter_cmp & 7) == bplcon1_shift[0]) { + copybpl4e(); } - if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) { - copybpl6o(); + if (bpldat_copy[1] && (denise_hcounter_cmp & 7) == bplcon1_shift[1]) { + copybpl4o(); } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER @@ -7332,11 +10098,11 @@ static void lts_ecs_fm0_dpf1_p6_ilores_dshres_spr_ntsc_genlock(void) denise_cck++; } } -static void lts_ecs_fm0_dpf1_p6_ilores_dshres_spr_ntsc_filtered_genlock(void) +static void lts_ecs_fm0_dpf1_p4_ihires_dshres_ntsc_filtered_genlock(void) { lts_null(); } -static void lts_ecs_fm0_ehb0_p6_ilores_dshres_spr_ntsc_genlock(void) +static void lts_ecs_fm0_ehb0_p4_ihires_dshres_ntsc_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -7347,63 +10113,31 @@ static void lts_ecs_fm0_ehb0_p6_ilores_dshres_spr_ntsc_genlock(void) } int cnt = denise_hcounter << 2; if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl6(); - clxdat |= bplcoltable[pix0]; - if (decode_specials) { - pix0 = decode_denise_specials(pix0); - } - pix0 &= bplehb_mask; - if (pix0 <= 31) { - dpix_val0 = denise_colors.acolors[pix0]; - } else { - dpix_val0 = p_xcolors[(denise_colors.color_regs_ecs[pix0 - 32] >> 1) & 0x777]; - } - gpix0 = get_genlock_transparency(pix0 & 31); - } - last_bpl_pix = pix0; - } - shiftbpl6(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_lores(); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } } internal_pixel_cnt += 1; internal_pixel_cnt += 1; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } internal_pixel_cnt += 1; internal_pixel_cnt += 1; uae_u32 dpix_val1 = dpix_val0; uae_u8 pix1 = pix0; uae_u8 gpix1 = gpix0; - uae_u32 dpix_val2 = dpix_val1; - uae_u8 pix2 = pix1; - uae_u8 gpix2 = gpix1; uae_u32 dpix_val3 = dpix_val2; uae_u8 pix3 = pix2; uae_u8 gpix3 = gpix2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - gpix0 = get_genlock_transparency(spix0); - - dpix_val1 = dpix_val0; - dpix_val2 = dpix_val0; - dpix_val3 = dpix_val0; - } - } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; dtbuf[h][1] = dpix_val1; @@ -7461,9 +10195,6 @@ 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_cmp & 15) == bplcon1_shift[0]) { - copybpl6(); - } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER *debug_dma_dhpos_odd = denise_hcounter; @@ -7486,11 +10217,11 @@ static void lts_ecs_fm0_ehb0_p6_ilores_dshres_spr_ntsc_genlock(void) denise_cck++; } } -static void lts_ecs_fm0_ehb0_p6_ilores_dshres_spr_ntsc_filtered_genlock(void) +static void lts_ecs_fm0_ehb0_p4_ihires_dshres_ntsc_filtered_genlock(void) { lts_null(); } -static void lts_ecs_fm0_ehb1_p6_ilores_dshres_spr_ntsc_genlock(void) +static void lts_ecs_fm0_ehb1_p4_ihires_dshres_ntsc_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -7501,63 +10232,31 @@ static void lts_ecs_fm0_ehb1_p6_ilores_dshres_spr_ntsc_genlock(void) } int cnt = denise_hcounter << 2; if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl6(); - clxdat |= bplcoltable[pix0]; - if (decode_specials) { - pix0 = decode_denise_specials(pix0); - } - pix0 &= bplehb_mask; - if (pix0 <= 31) { - dpix_val0 = denise_colors.acolors[pix0]; - } else { - dpix_val0 = p_xcolors[(denise_colors.color_regs_ecs[pix0 - 32] >> 1) & 0x777]; - } - gpix0 = get_genlock_transparency(pix0 & 31); - } - last_bpl_pix = pix0; - } - shiftbpl6(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_lores(); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } } internal_pixel_cnt += 1; internal_pixel_cnt += 1; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } internal_pixel_cnt += 1; internal_pixel_cnt += 1; uae_u32 dpix_val1 = dpix_val0; uae_u8 pix1 = pix0; uae_u8 gpix1 = gpix0; - uae_u32 dpix_val2 = dpix_val1; - uae_u8 pix2 = pix1; - uae_u8 gpix2 = gpix1; uae_u32 dpix_val3 = dpix_val2; uae_u8 pix3 = pix2; uae_u8 gpix3 = gpix2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - gpix0 = get_genlock_transparency(spix0); - - dpix_val1 = dpix_val0; - dpix_val2 = dpix_val0; - dpix_val3 = dpix_val0; - } - } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; dtbuf[h][1] = dpix_val1; @@ -7615,12 +10314,6 @@ 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_cmp & 15) == bplcon1_shift[0]) { - copybpl6e(); - } - if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) { - copybpl6o(); - } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER *debug_dma_dhpos_odd = denise_hcounter; @@ -7643,11 +10336,11 @@ static void lts_ecs_fm0_ehb1_p6_ilores_dshres_spr_ntsc_genlock(void) denise_cck++; } } -static void lts_ecs_fm0_ehb1_p6_ilores_dshres_spr_ntsc_filtered_genlock(void) +static void lts_ecs_fm0_ehb1_p4_ihires_dshres_ntsc_filtered_genlock(void) { lts_null(); } -static void lts_ecs_fm0_ham0_p6_ilores_dshres_spr_ntsc_genlock(void) +static void lts_ecs_fm0_ham0_p4_ihires_dshres_ntsc_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -7658,58 +10351,31 @@ static void lts_ecs_fm0_ham0_p6_ilores_dshres_spr_ntsc_genlock(void) } int cnt = denise_hcounter << 2; if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl6(); - clxdat |= bplcoltable[pix0]; - if (decode_specials) { - pix0 = decode_denise_specials(pix0); - } - dpix_val0 = decode_ham_pixel(pix0); - gpix0 = get_genlock_transparency(pix0 & 15); - } - last_bpl_pix = pix0; - } - shiftbpl6(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_lores(); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } } internal_pixel_cnt += 1; internal_pixel_cnt += 1; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } internal_pixel_cnt += 1; internal_pixel_cnt += 1; uae_u32 dpix_val1 = dpix_val0; uae_u8 pix1 = pix0; uae_u8 gpix1 = gpix0; - uae_u32 dpix_val2 = dpix_val1; - uae_u8 pix2 = pix1; - uae_u8 gpix2 = gpix1; uae_u32 dpix_val3 = dpix_val2; uae_u8 pix3 = pix2; uae_u8 gpix3 = gpix2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - gpix0 = get_genlock_transparency(spix0); - - dpix_val1 = dpix_val0; - dpix_val2 = dpix_val0; - dpix_val3 = dpix_val0; - } - } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; dtbuf[h][1] = dpix_val1; @@ -7767,9 +10433,6 @@ 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_cmp & 15) == bplcon1_shift[0]) { - copybpl6(); - } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER *debug_dma_dhpos_odd = denise_hcounter; @@ -7792,11 +10455,11 @@ static void lts_ecs_fm0_ham0_p6_ilores_dshres_spr_ntsc_genlock(void) denise_cck++; } } -static void lts_ecs_fm0_ham0_p6_ilores_dshres_spr_ntsc_filtered_genlock(void) +static void lts_ecs_fm0_ham0_p4_ihires_dshres_ntsc_filtered_genlock(void) { lts_null(); } -static void lts_ecs_fm0_ham1_p6_ilores_dshres_spr_ntsc_genlock(void) +static void lts_ecs_fm0_ham1_p4_ihires_dshres_ntsc_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -7807,58 +10470,31 @@ static void lts_ecs_fm0_ham1_p6_ilores_dshres_spr_ntsc_genlock(void) } int cnt = denise_hcounter << 2; if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl6(); - clxdat |= bplcoltable[pix0]; - if (decode_specials) { - pix0 = decode_denise_specials(pix0); - } - dpix_val0 = decode_ham_pixel(pix0); - gpix0 = get_genlock_transparency(pix0 & 15); - } - last_bpl_pix = pix0; - } - shiftbpl6(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_lores(); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } } internal_pixel_cnt += 1; internal_pixel_cnt += 1; + uae_u8 pix2 = 0; + uae_u8 gpix2 = 0xff; + uae_u32 dpix_val2 = BLANK_COLOR; + if (!denise_blank_active) { + gpix2 = get_genlock_transparency_border(); + dpix_val2 = bordercolor; + } internal_pixel_cnt += 1; internal_pixel_cnt += 1; uae_u32 dpix_val1 = dpix_val0; uae_u8 pix1 = pix0; uae_u8 gpix1 = gpix0; - uae_u32 dpix_val2 = dpix_val1; - uae_u8 pix2 = pix1; - uae_u8 gpix2 = gpix1; uae_u32 dpix_val3 = dpix_val2; uae_u8 pix3 = pix2; uae_u8 gpix3 = gpix2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - gpix0 = get_genlock_transparency(spix0); - - dpix_val1 = dpix_val0; - dpix_val2 = dpix_val0; - dpix_val3 = dpix_val0; - } - } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; dtbuf[h][1] = dpix_val1; @@ -7916,12 +10552,6 @@ 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_cmp & 15) == bplcon1_shift[0]) { - copybpl6e(); - } - if (bpldat_copy[1] && (denise_hcounter_cmp & 15) == bplcon1_shift[1]) { - copybpl6o(); - } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER *debug_dma_dhpos_odd = denise_hcounter; @@ -7944,11 +10574,11 @@ static void lts_ecs_fm0_ham1_p6_ilores_dshres_spr_ntsc_genlock(void) denise_cck++; } } -static void lts_ecs_fm0_ham1_p6_ilores_dshres_spr_ntsc_filtered_genlock(void) +static void lts_ecs_fm0_ham1_p4_ihires_dshres_ntsc_filtered_genlock(void) { lts_null(); } -static void lts_ecs_fm0_n0_p4_ihires_dshres_ntsc_genlock(void) +static void lts_ecs_fm0_n0_p4_ihires_dshres_spr_ntsc_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -7959,6 +10589,7 @@ static void lts_ecs_fm0_n0_p4_ihires_dshres_ntsc_genlock(void) } int cnt = denise_hcounter << 2; if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; @@ -7974,6 +10605,14 @@ static void lts_ecs_fm0_n0_p4_ihires_dshres_ntsc_genlock(void) last_bpl_pix = pix0; } shiftbpl4(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_lores(); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } internal_pixel_cnt += 1; internal_pixel_cnt += 1; uae_u8 pix2 = 0; @@ -8000,6 +10639,41 @@ static void lts_ecs_fm0_n0_p4_ihires_dshres_ntsc_genlock(void) uae_u8 pix3 = pix2; uae_u8 gpix3 = gpix2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + uae_u32 sv1 = sv0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + gpix1 = get_genlock_transparency(spix1); + + } + } + uae_u32 sv2 = sv0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } + uae_u32 sv3 = sv0; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + gpix3 = get_genlock_transparency(spix3); + + } + } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; dtbuf[h][1] = dpix_val1; @@ -8082,11 +10756,11 @@ static void lts_ecs_fm0_n0_p4_ihires_dshres_ntsc_genlock(void) denise_cck++; } } -static void lts_ecs_fm0_n0_p4_ihires_dshres_ntsc_filtered_genlock(void) +static void lts_ecs_fm0_n0_p4_ihires_dshres_spr_ntsc_filtered_genlock(void) { lts_null(); } -static void lts_ecs_fm0_n1_p4_ihires_dshres_ntsc_genlock(void) +static void lts_ecs_fm0_n1_p4_ihires_dshres_spr_ntsc_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -8097,6 +10771,7 @@ static void lts_ecs_fm0_n1_p4_ihires_dshres_ntsc_genlock(void) } int cnt = denise_hcounter << 2; if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; @@ -8112,6 +10787,14 @@ static void lts_ecs_fm0_n1_p4_ihires_dshres_ntsc_genlock(void) last_bpl_pix = pix0; } shiftbpl4(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_lores(); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } internal_pixel_cnt += 1; internal_pixel_cnt += 1; uae_u8 pix2 = 0; @@ -8138,6 +10821,41 @@ static void lts_ecs_fm0_n1_p4_ihires_dshres_ntsc_genlock(void) uae_u8 pix3 = pix2; uae_u8 gpix3 = gpix2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + uae_u32 sv1 = sv0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + gpix1 = get_genlock_transparency(spix1); + + } + } + uae_u32 sv2 = sv0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } + uae_u32 sv3 = sv0; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + gpix3 = get_genlock_transparency(spix3); + + } + } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; dtbuf[h][1] = dpix_val1; @@ -8223,11 +10941,11 @@ static void lts_ecs_fm0_n1_p4_ihires_dshres_ntsc_genlock(void) denise_cck++; } } -static void lts_ecs_fm0_n1_p4_ihires_dshres_ntsc_filtered_genlock(void) +static void lts_ecs_fm0_n1_p4_ihires_dshres_spr_ntsc_filtered_genlock(void) { lts_null(); } -static void lts_ecs_fm0_dpf0_p4_ihires_dshres_ntsc_genlock(void) +static void lts_ecs_fm0_dpf0_p4_ihires_dshres_spr_ntsc_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -8238,6 +10956,7 @@ static void lts_ecs_fm0_dpf0_p4_ihires_dshres_ntsc_genlock(void) } int cnt = denise_hcounter << 2; if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; @@ -8254,6 +10973,14 @@ static void lts_ecs_fm0_dpf0_p4_ihires_dshres_ntsc_genlock(void) last_bpl_pix = pix0; } shiftbpl4(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_lores(); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } internal_pixel_cnt += 1; internal_pixel_cnt += 1; uae_u8 pix2 = 0; @@ -8281,6 +11008,41 @@ static void lts_ecs_fm0_dpf0_p4_ihires_dshres_ntsc_genlock(void) uae_u8 pix3 = pix2; uae_u8 gpix3 = gpix2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + uae_u32 sv1 = sv0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + gpix1 = get_genlock_transparency(spix1); + + } + } + uae_u32 sv2 = sv0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } + uae_u32 sv3 = sv0; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + gpix3 = get_genlock_transparency(spix3); + + } + } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; dtbuf[h][1] = dpix_val1; @@ -8363,11 +11125,11 @@ static void lts_ecs_fm0_dpf0_p4_ihires_dshres_ntsc_genlock(void) denise_cck++; } } -static void lts_ecs_fm0_dpf0_p4_ihires_dshres_ntsc_filtered_genlock(void) +static void lts_ecs_fm0_dpf0_p4_ihires_dshres_spr_ntsc_filtered_genlock(void) { lts_null(); } -static void lts_ecs_fm0_dpf1_p4_ihires_dshres_ntsc_genlock(void) +static void lts_ecs_fm0_dpf1_p4_ihires_dshres_spr_ntsc_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -8378,6 +11140,7 @@ static void lts_ecs_fm0_dpf1_p4_ihires_dshres_ntsc_genlock(void) } int cnt = denise_hcounter << 2; if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; + matchsprites(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; @@ -8394,6 +11157,14 @@ static void lts_ecs_fm0_dpf1_p4_ihires_dshres_ntsc_genlock(void) last_bpl_pix = pix0; } shiftbpl4(); + uae_u32 sv0 = 0; + if (denise_spr_nr_armeds) { + uae_u32 svt; + svt = denise_render_sprites_lores(); + if (!denise_sprite_blank_active && !sprites_hidden) { + sv0 = svt; + } + } internal_pixel_cnt += 1; internal_pixel_cnt += 1; uae_u8 pix2 = 0; @@ -8421,6 +11192,41 @@ static void lts_ecs_fm0_dpf1_p4_ihires_dshres_ntsc_genlock(void) uae_u8 pix3 = pix2; uae_u8 gpix3 = gpix2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { + if (sv0) { + uae_u32 spix0 = denise_render_sprites2(pix0, sv0); + if (spix0) { + dpix_val0 = denise_colors.acolors[spix0]; + gpix0 = get_genlock_transparency(spix0); + + } + } + uae_u32 sv1 = sv0; + if (sv1) { + uae_u32 spix1 = denise_render_sprites2(pix1, sv1); + if (spix1) { + dpix_val1 = denise_colors.acolors[spix1]; + gpix1 = get_genlock_transparency(spix1); + + } + } + uae_u32 sv2 = sv0; + if (sv2) { + uae_u32 spix2 = denise_render_sprites2(pix2, sv2); + if (spix2) { + dpix_val2 = denise_colors.acolors[spix2]; + gpix2 = get_genlock_transparency(spix2); + + } + } + uae_u32 sv3 = sv0; + if (sv3) { + uae_u32 spix3 = denise_render_sprites2(pix3, sv3); + if (spix3) { + dpix_val3 = denise_colors.acolors[spix3]; + gpix3 = get_genlock_transparency(spix3); + + } + } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; dtbuf[h][1] = dpix_val1; @@ -8506,43 +11312,11 @@ static void lts_ecs_fm0_dpf1_p4_ihires_dshres_ntsc_genlock(void) denise_cck++; } } -static void lts_ecs_fm0_dpf1_p4_ihires_dshres_ntsc_filtered_genlock(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb0_p4_ihires_dshres_ntsc_genlock(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb0_p4_ihires_dshres_ntsc_filtered_genlock(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb1_p4_ihires_dshres_ntsc_genlock(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb1_p4_ihires_dshres_ntsc_filtered_genlock(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham0_p4_ihires_dshres_ntsc_genlock(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham0_p4_ihires_dshres_ntsc_filtered_genlock(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham1_p4_ihires_dshres_ntsc_genlock(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham1_p4_ihires_dshres_ntsc_filtered_genlock(void) +static void lts_ecs_fm0_dpf1_p4_ihires_dshres_spr_ntsc_filtered_genlock(void) { lts_null(); } -static void lts_ecs_fm0_n0_p4_ihires_dshres_spr_ntsc_genlock(void) +static void lts_ecs_fm0_ehb0_p4_ihires_dshres_spr_ntsc_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -8553,29 +11327,12 @@ static void lts_ecs_fm0_n0_p4_ihires_dshres_spr_ntsc_genlock(void) } int cnt = denise_hcounter << 2; if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl4(); - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0]; - gpix0 = get_genlock_transparency(pix0); - } - last_bpl_pix = pix0; - } - shiftbpl4(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_lores(); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } } internal_pixel_cnt += 1; internal_pixel_cnt += 1; @@ -8585,59 +11342,16 @@ static void lts_ecs_fm0_n0_p4_ihires_dshres_spr_ntsc_genlock(void) if (!denise_blank_active) { gpix2 = get_genlock_transparency_border(); dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = getbpl4(); - clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2]; - gpix2 = get_genlock_transparency(pix2); - } - last_bpl_pix = pix2; - } - shiftbpl4(); - internal_pixel_cnt += 1; - internal_pixel_cnt += 1; - uae_u32 dpix_val1 = dpix_val0; - uae_u8 pix1 = pix0; - uae_u8 gpix1 = gpix0; - uae_u32 dpix_val3 = dpix_val2; - uae_u8 pix3 = pix2; - uae_u8 gpix3 = gpix2; - if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - gpix0 = get_genlock_transparency(spix0); - - } - } - uae_u32 sv1 = sv0; - if (sv1) { - uae_u32 spix1 = denise_render_sprites2(pix1, sv1); - if (spix1) { - dpix_val1 = denise_colors.acolors[spix1]; - gpix1 = get_genlock_transparency(spix1); - - } - } - uae_u32 sv2 = sv0; - if (sv2) { - uae_u32 spix2 = denise_render_sprites2(pix2, sv2); - if (spix2) { - dpix_val2 = denise_colors.acolors[spix2]; - gpix2 = get_genlock_transparency(spix2); - - } - } - uae_u32 sv3 = sv0; - if (sv3) { - uae_u32 spix3 = denise_render_sprites2(pix3, sv3); - if (spix3) { - dpix_val3 = denise_colors.acolors[spix3]; - gpix3 = get_genlock_transparency(spix3); - - } - } + } + internal_pixel_cnt += 1; + internal_pixel_cnt += 1; + uae_u32 dpix_val1 = dpix_val0; + uae_u8 pix1 = pix0; + uae_u8 gpix1 = gpix0; + uae_u32 dpix_val3 = dpix_val2; + uae_u8 pix3 = pix2; + uae_u8 gpix3 = gpix2; + if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; dtbuf[h][1] = dpix_val1; @@ -8695,9 +11409,6 @@ 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_cmp & 7) == bplcon1_shift[0]) { - copybpl4(); - } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER *debug_dma_dhpos_odd = denise_hcounter; @@ -8720,11 +11431,11 @@ static void lts_ecs_fm0_n0_p4_ihires_dshres_spr_ntsc_genlock(void) denise_cck++; } } -static void lts_ecs_fm0_n0_p4_ihires_dshres_spr_ntsc_filtered_genlock(void) +static void lts_ecs_fm0_ehb0_p4_ihires_dshres_spr_ntsc_filtered_genlock(void) { lts_null(); } -static void lts_ecs_fm0_n1_p4_ihires_dshres_spr_ntsc_genlock(void) +static void lts_ecs_fm0_ehb1_p4_ihires_dshres_spr_ntsc_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -8735,29 +11446,12 @@ static void lts_ecs_fm0_n1_p4_ihires_dshres_spr_ntsc_genlock(void) } int cnt = denise_hcounter << 2; if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl4(); - clxdat |= bplcoltable[pix0]; - dpix_val0 = denise_colors.acolors[pix0]; - gpix0 = get_genlock_transparency(pix0); - } - last_bpl_pix = pix0; - } - shiftbpl4(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_lores(); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } } internal_pixel_cnt += 1; internal_pixel_cnt += 1; @@ -8767,15 +11461,7 @@ static void lts_ecs_fm0_n1_p4_ihires_dshres_spr_ntsc_genlock(void) if (!denise_blank_active) { gpix2 = get_genlock_transparency_border(); dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = getbpl4(); - clxdat |= bplcoltable[pix2]; - dpix_val2 = denise_colors.acolors[pix2]; - gpix2 = get_genlock_transparency(pix2); - } - last_bpl_pix = pix2; } - shiftbpl4(); internal_pixel_cnt += 1; internal_pixel_cnt += 1; uae_u32 dpix_val1 = dpix_val0; @@ -8785,41 +11471,6 @@ static void lts_ecs_fm0_n1_p4_ihires_dshres_spr_ntsc_genlock(void) uae_u8 pix3 = pix2; uae_u8 gpix3 = gpix2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - gpix0 = get_genlock_transparency(spix0); - - } - } - uae_u32 sv1 = sv0; - if (sv1) { - uae_u32 spix1 = denise_render_sprites2(pix1, sv1); - if (spix1) { - dpix_val1 = denise_colors.acolors[spix1]; - gpix1 = get_genlock_transparency(spix1); - - } - } - uae_u32 sv2 = sv0; - if (sv2) { - uae_u32 spix2 = denise_render_sprites2(pix2, sv2); - if (spix2) { - dpix_val2 = denise_colors.acolors[spix2]; - gpix2 = get_genlock_transparency(spix2); - - } - } - uae_u32 sv3 = sv0; - if (sv3) { - uae_u32 spix3 = denise_render_sprites2(pix3, sv3); - if (spix3) { - dpix_val3 = denise_colors.acolors[spix3]; - gpix3 = get_genlock_transparency(spix3); - - } - } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; dtbuf[h][1] = dpix_val1; @@ -8877,12 +11528,6 @@ 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_cmp & 7) == bplcon1_shift[0]) { - copybpl4e(); - } - if (bpldat_copy[1] && (denise_hcounter_cmp & 7) == bplcon1_shift[1]) { - copybpl4o(); - } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER *debug_dma_dhpos_odd = denise_hcounter; @@ -8905,11 +11550,11 @@ static void lts_ecs_fm0_n1_p4_ihires_dshres_spr_ntsc_genlock(void) denise_cck++; } } -static void lts_ecs_fm0_n1_p4_ihires_dshres_spr_ntsc_filtered_genlock(void) +static void lts_ecs_fm0_ehb1_p4_ihires_dshres_spr_ntsc_filtered_genlock(void) { lts_null(); } -static void lts_ecs_fm0_dpf0_p4_ihires_dshres_spr_ntsc_genlock(void) +static void lts_ecs_fm0_ham0_p4_ihires_dshres_spr_ntsc_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -8920,30 +11565,12 @@ static void lts_ecs_fm0_dpf0_p4_ihires_dshres_spr_ntsc_genlock(void) } int cnt = denise_hcounter << 2; if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl4(); - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - dpix_val0 = denise_colors.acolors[val0]; - gpix0 = get_genlock_transparency(dpf_lookup[pix0]); - } - last_bpl_pix = pix0; - } - shiftbpl4(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_lores(); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } } internal_pixel_cnt += 1; internal_pixel_cnt += 1; @@ -8953,16 +11580,7 @@ static void lts_ecs_fm0_dpf0_p4_ihires_dshres_spr_ntsc_genlock(void) if (!denise_blank_active) { gpix2 = get_genlock_transparency_border(); dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = getbpl4(); - clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - dpix_val2 = denise_colors.acolors[val2]; - gpix2 = get_genlock_transparency(dpf_lookup[pix2]); - } - last_bpl_pix = pix2; } - shiftbpl4(); internal_pixel_cnt += 1; internal_pixel_cnt += 1; uae_u32 dpix_val1 = dpix_val0; @@ -8972,41 +11590,6 @@ static void lts_ecs_fm0_dpf0_p4_ihires_dshres_spr_ntsc_genlock(void) uae_u8 pix3 = pix2; uae_u8 gpix3 = gpix2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - gpix0 = get_genlock_transparency(spix0); - - } - } - uae_u32 sv1 = sv0; - if (sv1) { - uae_u32 spix1 = denise_render_sprites2(pix1, sv1); - if (spix1) { - dpix_val1 = denise_colors.acolors[spix1]; - gpix1 = get_genlock_transparency(spix1); - - } - } - uae_u32 sv2 = sv0; - if (sv2) { - uae_u32 spix2 = denise_render_sprites2(pix2, sv2); - if (spix2) { - dpix_val2 = denise_colors.acolors[spix2]; - gpix2 = get_genlock_transparency(spix2); - - } - } - uae_u32 sv3 = sv0; - if (sv3) { - uae_u32 spix3 = denise_render_sprites2(pix3, sv3); - if (spix3) { - dpix_val3 = denise_colors.acolors[spix3]; - gpix3 = get_genlock_transparency(spix3); - - } - } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; dtbuf[h][1] = dpix_val1; @@ -9064,9 +11647,6 @@ 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_cmp & 7) == bplcon1_shift[0]) { - copybpl4(); - } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER *debug_dma_dhpos_odd = denise_hcounter; @@ -9089,11 +11669,11 @@ static void lts_ecs_fm0_dpf0_p4_ihires_dshres_spr_ntsc_genlock(void) denise_cck++; } } -static void lts_ecs_fm0_dpf0_p4_ihires_dshres_spr_ntsc_filtered_genlock(void) +static void lts_ecs_fm0_ham0_p4_ihires_dshres_spr_ntsc_filtered_genlock(void) { lts_null(); } -static void lts_ecs_fm0_dpf1_p4_ihires_dshres_spr_ntsc_genlock(void) +static void lts_ecs_fm0_ham1_p4_ihires_dshres_spr_ntsc_genlock(void) { while (denise_cck < denise_endcycle) { do_denise_cck(denise_linecnt, denise_startpos, denise_cck); @@ -9104,30 +11684,12 @@ static void lts_ecs_fm0_dpf1_p4_ihires_dshres_spr_ntsc_genlock(void) } int cnt = denise_hcounter << 2; if (checkhorizontal1_ecs(denise_hcounter, denise_hcounter_next, h)) continue; - matchsprites(cnt + 0); uae_u8 pix0 = 0; uae_u8 gpix0 = 0xff; uae_u32 dpix_val0 = BLANK_COLOR; if (!denise_blank_active) { gpix0 = get_genlock_transparency_border(); dpix_val0 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix0 = getbpl4(); - clxdat |= bplcoltable[pix0]; - uae_u8 val0 = dpf_lookup[pix0]; - dpix_val0 = denise_colors.acolors[val0]; - gpix0 = get_genlock_transparency(dpf_lookup[pix0]); - } - last_bpl_pix = pix0; - } - shiftbpl4(); - uae_u32 sv0 = 0; - if (denise_spr_nr_armeds) { - uae_u32 svt; - svt = denise_render_sprites_lores(); - if (!denise_sprite_blank_active && !sprites_hidden) { - sv0 = svt; - } } internal_pixel_cnt += 1; internal_pixel_cnt += 1; @@ -9137,16 +11699,7 @@ static void lts_ecs_fm0_dpf1_p4_ihires_dshres_spr_ntsc_genlock(void) if (!denise_blank_active) { gpix2 = get_genlock_transparency_border(); dpix_val2 = bordercolor; - if (denise_hdiw && bpl1dat_trigger) { - pix2 = getbpl4(); - clxdat |= bplcoltable[pix2]; - uae_u8 val2 = dpf_lookup[pix2]; - dpix_val2 = denise_colors.acolors[val2]; - gpix2 = get_genlock_transparency(dpf_lookup[pix2]); - } - last_bpl_pix = pix2; } - shiftbpl4(); internal_pixel_cnt += 1; internal_pixel_cnt += 1; uae_u32 dpix_val1 = dpix_val0; @@ -9156,41 +11709,6 @@ static void lts_ecs_fm0_dpf1_p4_ihires_dshres_spr_ntsc_genlock(void) uae_u8 pix3 = pix2; uae_u8 gpix3 = gpix2; if (denise_pixtotal >= 0 && denise_pixtotal < denise_pixtotal_max) { - if (sv0) { - uae_u32 spix0 = denise_render_sprites2(pix0, sv0); - if (spix0) { - dpix_val0 = denise_colors.acolors[spix0]; - gpix0 = get_genlock_transparency(spix0); - - } - } - uae_u32 sv1 = sv0; - if (sv1) { - uae_u32 spix1 = denise_render_sprites2(pix1, sv1); - if (spix1) { - dpix_val1 = denise_colors.acolors[spix1]; - gpix1 = get_genlock_transparency(spix1); - - } - } - uae_u32 sv2 = sv0; - if (sv2) { - uae_u32 spix2 = denise_render_sprites2(pix2, sv2); - if (spix2) { - dpix_val2 = denise_colors.acolors[spix2]; - gpix2 = get_genlock_transparency(spix2); - - } - } - uae_u32 sv3 = sv0; - if (sv3) { - uae_u32 spix3 = denise_render_sprites2(pix3, sv3); - if (spix3) { - dpix_val3 = denise_colors.acolors[spix3]; - gpix3 = get_genlock_transparency(spix3); - - } - } dtbuf[h][0] = dpix_val0; dtgbuf[h][0] = gpix0; dtbuf[h][1] = dpix_val1; @@ -9248,12 +11766,6 @@ 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_cmp & 7) == bplcon1_shift[0]) { - copybpl4e(); - } - if (bpldat_copy[1] && (denise_hcounter_cmp & 7) == bplcon1_shift[1]) { - copybpl4o(); - } sprites_hidden = sprites_hidden2; #ifdef DEBUGGER *debug_dma_dhpos_odd = denise_hcounter; @@ -9276,38 +11788,6 @@ static void lts_ecs_fm0_dpf1_p4_ihires_dshres_spr_ntsc_genlock(void) denise_cck++; } } -static void lts_ecs_fm0_dpf1_p4_ihires_dshres_spr_ntsc_filtered_genlock(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb0_p4_ihires_dshres_spr_ntsc_genlock(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb0_p4_ihires_dshres_spr_ntsc_filtered_genlock(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb1_p4_ihires_dshres_spr_ntsc_genlock(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ehb1_p4_ihires_dshres_spr_ntsc_filtered_genlock(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham0_p4_ihires_dshres_spr_ntsc_genlock(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham0_p4_ihires_dshres_spr_ntsc_filtered_genlock(void) -{ - lts_null(); -} -static void lts_ecs_fm0_ham1_p4_ihires_dshres_spr_ntsc_genlock(void) -{ - lts_null(); -} static void lts_ecs_fm0_ham1_p4_ihires_dshres_spr_ntsc_filtered_genlock(void) { lts_null(); -- 2.47.3